diff --git a/sysutils/debootstrap/Makefile b/sysutils/debootstrap/Makefile index 331caf5869d6..3ce842903a5d 100644 --- a/sysutils/debootstrap/Makefile +++ b/sysutils/debootstrap/Makefile @@ -1,47 +1,48 @@ PORTNAME= debootstrap PORTVERSION= ${DEB_VERSION}n${DEB_NMU} -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= sysutils MASTER_SITES= DEBIAN -DISTNAME= ${PORTNAME}_${DEB_VERSION}+nmu${DEB_NMU} +DISTNAME= ${PORTNAME}_${DEB_VERSION}+nmu${DEB_NMU}+${DEB_REVISION} MAINTAINER= nc@FreeBSD.org COMMENT= Install Debian or Ubuntu base system into a directory WWW= https://wiki.debian.org/Debootstrap LICENSE= MIT LICENSE_FILE= ${WRKSRC}/debian/copyright -RUN_DEPENDS= wget:ftp/wget \ +RUN_DEPENDS= ${LOCALBASE}/share/keyrings/ubuntu-archive-keyring.gpg:security/ubuntu-keyring \ bash:shells/bash \ - pcregrep:devel/pcre \ gpgv2:security/gnupg \ gtar:archivers/gtar \ - ${LOCALBASE}/share/keyrings/ubuntu-archive-keyring.gpg:security/ubuntu-keyring + pcre2grep:devel/pcre2 \ + wget:ftp/wget USES= gmake perl5 USE_PERL5= run MAKE_ENV= DATADIR="${DATADIR}" NO_ARCH= yes NO_BUILD= yes WRKSRC= ${WRKDIR}/${PORTNAME} # The +nmu suffix used by debian for "non maintainer uploads" of a Debian # native package doesn't play well with our versioning DEB_VERSION= 1.0.128 DEB_NMU= 2 +DEB_REVISION= deb12u2 post-patch: @${REINPLACE_CMD} \ -e 's,%%DATADIR%%,${DATADIR},g' \ -e 's,%%LOCALBASE%%,${LOCALBASE},g' \ ${WRKSRC}/debootstrap @${FIND} ${WRKSRC}/scripts -type f | \ ${XARGS} ${REINPLACE_CMD} -e 's,/usr/share/keyrings,${LOCALBASE}/share/keyrings,g' post-install: ${INSTALL_MAN} ${WRKSRC}/debootstrap.8 \ ${STAGEDIR}${PREFIX}/share/man/man8/debootstrap.8 .include diff --git a/sysutils/debootstrap/distinfo b/sysutils/debootstrap/distinfo index 54933414c156..05c2a782e36a 100644 --- a/sysutils/debootstrap/distinfo +++ b/sysutils/debootstrap/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1677148183 -SHA256 (debootstrap_1.0.128+nmu2.tar.gz) = 528523228d93a31c9e0cd4eb932977ea8ceec2bfbf8db1103bec2397cc7434fa -SIZE (debootstrap_1.0.128+nmu2.tar.gz) = 82266 +TIMESTAMP = 1756305131 +SHA256 (debootstrap_1.0.128+nmu2+deb12u2.tar.gz) = c5ff2803461978d1b5fd965ae64ea5aabef94c3126793a58e8f9a4a92c00db96 +SIZE (debootstrap_1.0.128+nmu2+deb12u2.tar.gz) = 86623 diff --git a/sysutils/debootstrap/files/patch-functions b/sysutils/debootstrap/files/patch-functions index 1fbffa87489c..f79f29c1e5d6 100644 --- a/sysutils/debootstrap/files/patch-functions +++ b/sysutils/debootstrap/files/patch-functions @@ -1,72 +1,72 @@ ---- functions.orig 2022-10-18 22:48:32 UTC +--- functions.orig 2024-12-29 18:30:24 UTC +++ functions @@ -658,7 +658,7 @@ download_release_sig () { info RELEASESIG "Checking Release signature" # Don't worry about the exit status from gpgv; parsing the output will # take care of that. - (gpgv --status-fd 1 --keyring "$KEYRING" --ignore-time-conflict \ + (gpgv2 --status-fd 1 --keyring "$KEYRING" --ignore-time-conflict \ "$relsigdest" "$reldest" || true) | read_gpg_status progress 100 100 DOWNRELSIG "Downloading Release file signature" fi @@ -978,7 +978,7 @@ extract_dpkg_deb_field () { extract_dpkg_deb_data () { local pkg="$1" - dpkg-deb --fsys-tarfile "$pkg" | tar $EXTRACT_DEB_TAR_OPTIONS -xf - || error 1 FILEEXIST "Tried to extract package, but file already exists. Exit..." + dpkg-deb --fsys-tarfile "$pkg" | gtar $EXTRACT_DEB_TAR_OPTIONS -xf - || error 1 FILEEXIST "Tried to extract package, but file already exists. Exit..." } # Raw .deb extractors @@ -998,7 +998,7 @@ extract_ar_deb_field () { if in_path $cat_cmd; then ar -p "$pkg" "$tarball" | $cat_cmd | - tar -O -xf - control ./control 2>/dev/null | + gtar -O -xf - control ./control 2>/dev/null | grep -i "^$field:" | sed -e 's/[^:]*: *//' | head -n 1 else error 1 UNPACKCMDUNVL "Extracting %s requires the %s command, which is not available" "$pkg" "$cat_cmd" @@ -1020,7 +1020,7 @@ extract_ar_deb_data () { esac if in_path "$cat_cmd"; then - ar -p "$pkg" "$tarball" | "$cat_cmd" | tar $EXTRACT_DEB_TAR_OPTIONS -xf - + ar -p "$pkg" "$tarball" | "$cat_cmd" | gtar $EXTRACT_DEB_TAR_OPTIONS -xf - else error 1 UNPACKCMDUNVL "Extracting %s requires the %s command, which is not available" "$pkg" "$cat_cmd" fi -@@ -1515,7 +1515,7 @@ while (read STDIN, $x, 1) { +@@ -1614,7 +1614,7 @@ while (read STDIN, $x, 1) { }' "$@" elif [ "$1" = "GETDEPS" ]; then local pkgdest="$2"; shift; shift -LC_ALL=C grep "$gropt" '^$|^Package:|^Depends:|^Pre-Depends:' $pkgdest | perl -e ' -+LC_ALL=C pcregrep '^$|^Package:|^Depends:|^Pre-Depends:' $pkgdest | perl -e ' ++LC_ALL=C pcre2grep '^$|^Package:|^Depends:|^Pre-Depends:' $pkgdest | perl -e ' %seen = map { $_ => 1 } @ARGV; while () { if (/^Package: (.*)$/) { -@@ -1543,13 +1543,13 @@ while () { +@@ -1642,13 +1642,13 @@ while () { local m="$2" local p="$3" shift; shift; shift - LC_ALL=C grep "$gropt" '^$|^Architecture:|^Filename:|^MD5sum:|^Package:|^Priority:|^SHA256:|^Size:|^Version:|^Depends:|^Pre-Depends:' "$p" | pkgdetails_field 1 Package: "$m" "$@" -+ LC_ALL=C pcregrep '^$|^Architecture:|^Filename:|^MD5sum:|^Package:|^Priority:|^SHA256:|^Size:|^Version:|^Depends:|^Pre-Depends:' "$p" | pkgdetails_field 1 Package: "$m" "$@" ++ LC_ALL=C pcre2grep '^$|^Architecture:|^Filename:|^MD5sum:|^Package:|^Priority:|^SHA256:|^Size:|^Version:|^Depends:|^Pre-Depends:' "$p" | pkgdetails_field 1 Package: "$m" "$@" elif [ "$1" = "FIELD" ]; then local f="$2" local m="$3" local p="$4" shift; shift; shift; shift - LC_ALL=C grep "$gropt" '^$|^Package:|^Priority:' "$p" | pkgdetails_field 0 "$f" "$m" "$@" -+ LC_ALL=C pcregrep '^$|^Package:|^Priority:' "$p" | pkgdetails_field 0 "$f" "$m" "$@" ++ LC_ALL=C pcre2grep '^$|^Package:|^Priority:' "$p" | pkgdetails_field 0 "$f" "$m" "$@" elif [ "$1" = "STANZAS" ]; then local pkgdest="$2"; shift; shift perl -e ' -@@ -1706,7 +1706,7 @@ read_gpg_status () { +@@ -1805,7 +1805,7 @@ read_gpg_status () { elif [ "$unkkey" ]; then error 1 UNKNOWNRELSIG "Release signed by unknown key (key id %s)\n The specified keyring $KEYRING may be incorrect or out of date.\n You can find the latest Debian release key at https://ftp-master.debian.org/keys.html" "$unkkey" else - error 1 SIGCHECK "Error executing gpgv to check Release signature" + error 1 SIGCHECK "Error executing gpgv2 to check Release signature" fi } diff --git a/sysutils/debootstrap/files/patch-scripts_debian-common b/sysutils/debootstrap/files/patch-scripts_debian-common index 0eb7c31d2064..6424f188f2f6 100644 --- a/sysutils/debootstrap/files/patch-scripts_debian-common +++ b/sysutils/debootstrap/files/patch-scripts_debian-common @@ -1,37 +1,40 @@ ---- scripts/debian-common.orig 2023-02-08 17:55:01 UTC +--- scripts/debian-common.orig 2025-08-27 14:48:00 UTC +++ scripts/debian-common -@@ -215,10 +215,21 @@ echo \"Warning: Fake start-stop-daemon called, doing n +@@ -220,10 +220,24 @@ echo \"Warning: Fake start-stop-daemon called, doing n predep=$(without "$(without "$(resolve_deps $predep)" "$required")" "$done_predeps") # XXX: progress is tricky due to how dpkg_progress works # -- cjwatson 2009-07-29 + # This step sometimes fails due to some missing functionality in Linuxulator. Just ignore it. + set +e p; smallyes '' | in_target dpkg --force-overwrite --force-confold --skip-same-version --install $(debfor $predep) + rc=$? base=$(without "$base" "$predep") done_predeps="$done_predeps $predep" + + if [ $rc != 0 ]; then + warning FREEBSD_00 "Applying FreeBSD-specific workaround..." + # ... for "Failed to mount /etc/machine-id: Bad address" with Focal. + in_target truncate -s0 /var/lib/dpkg/info/systemd.postinst ++ # Fix "Failed to take /etc/passwd lock: Invalid argument" error ++ # See: https://github.com/microsoft/WSL/issues/10397#issuecomment-1780132430 ++ in_target ln -sf /bin/echo /bin/systemd-sysusers + in_target dpkg --configure systemd + fi + set -e done if [ -n "$base" ]; then -@@ -237,6 +248,12 @@ echo \"Warning: Fake start-stop-daemon called, doing n +@@ -242,6 +256,12 @@ echo \"Warning: Fake start-stop-daemon called, doing n mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon" rm -f "$TARGET/usr/sbin/policy-rc.d" + + echo \ +"# Workaround for Linuxulator missing mremap(2) support; without it, +# apt(8) fails like this: +# E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. +APT::Cache-Start 251658240;" >> "$TARGET/etc/apt/apt.conf.d/00freebsd" progress $bases $bases CONFBASE "Configuring base system" info BASESUCCESS "Base system installed successfully."