Re: RELENG tarballs

"Mars G. Miro" <[email protected]>
Newsgroups gmane.os.freebsd.security.general
Message-ID <[email protected]>
Hi All

	The reason I asked the question is because it is something related to 
the SECURITY / RELENG branches where the security fixes for a RELEASE 
are committed.

	I could not grab them from cgit.freebsd.org as a source tarball. I now 
recall that previously you need csup/cvsup/svn to get RELENG_X_X.

	Grabbing them from github and gitlab via https also has some changes in 
contrib/libfido2, if you diff it from a RELEASE from the official ISOs 
-- I think these are CI/CD stuff from these outfits.

	That being said I had another machine that has git and just grabbed it 
from git.freebsd.org instead.

	Thanks.


On 8/13/26 01:42, Ralph Becker-Szendy wrote:
> Gentlemen: The place for such elementary questions about how to use FreeBSD is not the security mailing list. There is a perfectly fine forum at forums.freebsd.org, which is more structured, and suitable for user-level questions. If the signal-to-noise on the security mailing list suffers, a few undesirable things might happen: People might unsubscribe, and not be informed about real security issues. The list may have to be moderated, delaying urgent and valid concerns, and using more volunteer effort.
> 
> Sorry for being such a spoil sport; I left the list itself out of this e-mail to keep it quieter.
> 
> Ralph
> 
>> On Aug 12, 2026, at 10:33 AM, Dimitar Dimitrov <[email protected]> wrote:
>>
>> Or, you can use something like this:
>> This is how I make custom tar.gz archives to update my machines.
>>
>> arca:~ # cat ./build-release.sh
>> #!/bin/sh
>> set -eu
>>
>> if [ "$(id -u)" -ne 0 ]; then
>>      printf '%s\n' "Error: this script must be run as root." >&2
>>
>>      exit 1
>> fi
>>
>> usage() {
>>      printf "Usage: %s <KERNCONF> <FREEBSD-VERSION>\n" "$0"
>>
>>      exit 1
>> }
>>
>> case $# in
>>      2)
>> KERNEL="$1"
>> VERSION="$2"
>> ;;
>>      *)
>> usage
>> ;;
>> esac
>>
>> sysctl hw.acpi.cpu.cx_lowest=C1
>>
>> SRC="/usr/src"
>>
>> {
>>      cd "$SRC" || exit 1
>>      if ! git checkout "releng/$VERSION"; then
>>          printf "Branch releng/%s didn't exist. Exiting..." "$VERSION"
>>
>>          exit 1
>>      fi
>>
>>      eval "$(sh $SRC/sys/conf/newvers.sh -V REVISION)"
>>      eval "$(sh $SRC/sys/conf/newvers.sh -V BRANCH)"
>>
>>      printf "Branch is releng/%s with kernel: %s\n" "$VERSION" "$KERNEL"
>>
>>      git pull
>> }
>>
>> if [ "$VERSION" != "$REVISION" ]; then
>>      printf "The branch releng/%s of %s is different from releng/%s\n" "$REVISION" "$SRC" "$VERSION"
>>      printf "Action: git checkout releng/%s and try again\n" "$VERSION"
>>
>>      exit 1
>> fi
>>
>> for ds in "stage/builder/$REVISION/archives" "stage/builder/$REVISION/world"; do
>>      if ! zfs list "$ds" > /dev/null 2>&1; then
>>          printf "Error: ZFS dataset %s does not exist\n" "$ds" >&2
>>
>>          exit 1
>>      fi
>> done
>>
>> KERNDIR="/root/kernels"
>> WORLD_DIR="/stage/builder/${REVISION}/world"
>> CLEANUP_LIST="$WORLD_DIR/REMOVE_LIST-$REVISION-$BRANCH.txt"
>> ARCHIVE="/stage/builder/${REVISION}/archives/FreeBSD-$REVISION-$BRANCH-$KERNEL-$(date +%Y%m%d)-world.tar.gz"
>> ETC_ARCHIVE="/stage/builder/${REVISION}/archives/FreeBSD-$REVISION-$BRANCH-$KERNEL-$(date +%Y%m%d)-etc.tar.gz"
>> CONF_DIR="/root/src-configs"
>> SRCCONF_FILE="$CONF_DIR/src-$KERNEL.conf"
>>
>> if [ ! -f "$SRCCONF_FILE" ]; then
>>      printf "Error: SRCCONF file '%s' not found.\n" "$SRCCONF_FILE" >&2
>>
>>      exit 1
>> fi
>>
>> status=""
>> [ -d "$KERNDIR" ] && status="D"
>> [ -f "$KERNDIR/$KERNEL" ] && status="${status}F"
>>
>> case "$status" in
>>      DF)
>>          ;;
>>      D)
>>          printf "Error: Kernel config '%s' not found in '%s'\n" "$KERNEL" "$KERNDIR" >&2
>>
>>          exit 1
>>          ;;
>>      *)
>>          printf "Error: Kernel directory '%s' does not exist or is inaccessible\n" "$KERNDIR" >&2
>>
>>          exit 1
>>          ;;
>> esac
>>
>>
>> if [ ! -d "$WORLD_DIR" ]; then
>> printf "Directory %s didn't exist\n" "$WORLD_DIR"
>>
>> exit 1
>> fi
>>
>> chflags -R noschg "$WORLD_DIR"
>>
>> rm -rf "${WORLD_DIR:?}"/*
>>
>> cd "$SRC" || exit 1
>>
>> NCPU=$(sysctl -n hw.ncpu)
>>
>> make cleanworld cleankernel KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR"
>>
>> make -j"$NCPU" buildworld buildkernel KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR" SRCCONF="$SRCCONF_FILE"
>>
>> printf "===> Installing world, kernel and distribution to %s\n" "$WORLD_DIR"
>> make installworld installkernel DESTDIR="$WORLD_DIR" KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR" SRCCONF="$SRCCONF_FILE"
>>
>> etcupdate build -s /usr/src -M "-j$NCPU SRCCONF=$SRCCONF_FILE KERNCONF=$KERNEL KERNCONFDIR=$KERNDIR" "$ETC_ARCHIVE"
>> make list-old-files list-old-libs list-old-dirs SRCCONF="$SRCCONF_FILE" > "$CLEANUP_LIST"
>>
>> printf "===> Creating archive: %s\n" "$ARCHIVE"
>> tar -cf "${ARCHIVE}" -a -p -C "$WORLD_DIR" .
>>
>> printf "===> Generating SHA256 checksum...\n"
>> sha256 -q "${ARCHIVE}" > "${ARCHIVE}.sha256"
>> sha256 -q "${ETC_ARCHIVE}" > "${ETC_ARCHIVE}.sha256"
>>
>> du -h "${ARCHIVE}"
>> du -h "${ETC_ARCHIVE}"
>>
>> printf "DONE. Copy both %s and .sha256 to your flash drive.\n" "$(basename "${ARCHIVE}")"
>>
>> sysctl hw.acpi.cpu.cx_lowest=C2
>>
>> arca:~ # cat upgrade-from-source.sh
>> #!/bin/sh
>>
>> if [ "$(id -u)" -ne 0 ]; then
>> printf '%s\n' "Error: this script must be run as root." >&2
>> exit 1
>> fi
>>
>> usage() {
>> printf "Usage: %s <BUILDTAR> <BUILDDIST>\n" "$0"
>> exit 1
>> }
>>
>> case $# in
>> 2)
>> TAR="$1"
>> ETC="$2"
>> ;;
>> *)
>> usage
>> ;;
>> esac
>>
>> zfs mount -a
>> zfs set readonly=off zroot
>>
>> if [ -d /boot/kernel ]; then
>> cp -a /boot/kernel /boot/kernel.old
>> fi
>>
>> for f in /usr/bin/* /lib/* /libexec/ld-elf.so.1 /sbin/init /var/empty; do
>>      if [ -f "$f" ]; then
>>          chflags noschg "$f"
>>      elif [ -d "$f" ]; then
>>          chflags -R noschg "$f"
>>      fi
>> done
>>
>> tar -xzpf "$TAR" -C /
>> etcupdate -p -t "$ETC"
>>
>> arca:~ # cat delete-old.sh
>> #!/bin/sh
>>
>> set -eu
>>
>> # must run as root
>> if [ "$(id -u)" -ne 0 ]; then
>>    printf '%s\n' "Error: this script must be run as root." >&2
>>    exit 1
>> fi
>>
>> FILENAME="${1:-}"
>>
>> if [ -z "$FILENAME" ]; then
>>      printf "Usage: %s REMOVE_LIST_filename\n" "$0"
>>      exit 1
>> fi
>>
>> case "$FILENAME" in
>>      REMOVE_LIST*)
>>          ;;
>>      *)
>>          printf "Error: Filename '%s' must start with 'REMOVE_LIST'\n" "$FILENAME"
>>          exit 1
>>          ;;
>> esac
>>
>> if [ ! -f "$FILENAME" ]; then
>>      printf "File '%s' not found.\n" "$FILENAME"
>>      exit 1
>> fi
>>
>> sed -i '' '/^usr\/include/d' "$FILENAME"
>>
>> while IFS= read -r raw_target; do
>>      [ -z "$raw_target" ] && continue
>>
>>      case "$raw_target" in
>>          /*) target="$raw_target" ;;
>>          *)  target="/$raw_target" ;;
>>      esac
>>
>>      if [ -f "$target" ]; then
>>          if ! rm -f "$target" > /dev/null 2>&1; then
>>              chflags noschg "$target"
>>              rm -f "$target"
>>              echo "Deleting file: $target"
>>          else
>>              echo "Deleting file: $target"
>>          fi
>>      elif [ -d "$target" ]; then
>>          if ! rm -rf "$target" > /dev/null 2>&1; then
>>              chflags -R noschg "$target"
>>              rm -rf "$target"
>>              echo "Deleting directory: $target"
>>          else
>>              echo "Deleting directory: $target"
>>          fi
>>      fi
>> done < "$FILENAME"
>>
>> DISCLAIMER: This may or may not cover your use case. You must validate the logic before starting those scripts!
>>
>> On Wed, Aug 12, 2026 at 5:12 PM Dimitar Dimitrov <[email protected] <mailto:[email protected]>> wrote:
>>> Hello,
>>> check `man release`
>>> Cheers,
>>>
>>> Dimitar
>>>
>>> On Wed, Aug 12, 2026 at 5:05 PM Mars G. Miro <[email protected] <mailto:[email protected]>> wrote:
>>>> Hi All
>>>>
>>>>          Is there a tarball of the RELENG branches (e.g. 15.1-RELEASE-p2) aside
>>>> from obtaining it via git/github/gitlab/freebsd-update ?
>>>>
>>>>          Thanks.
>>>> 
-- 
cheers
mars
----
Putt's Law:
	Technology is dominated by two types of people:
		Those who understand what they do not manage.
		Those who manage what they do not understand.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.