From 5ccae148997a797ee292567f06897206d01fa7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Mon, 23 Aug 2021 19:11:13 +0200 Subject: [PATCH 1/2] common/hooks: simplify setting arch for binpkg setup_pkg always export XBPS_TARGET_MACHINE --- common/hooks/do-pkg/00-gen-pkg.sh | 10 +--------- common/hooks/post-pkg/00-register-pkg.sh | 9 +-------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/common/hooks/do-pkg/00-gen-pkg.sh b/common/hooks/do-pkg/00-gen-pkg.sh index f0b70c8eebb8..cfe0238839d8 100644 --- a/common/hooks/do-pkg/00-gen-pkg.sh +++ b/common/hooks/do-pkg/00-gen-pkg.sh @@ -104,15 +104,7 @@ hook() { local arch= binpkg= repo= _pkgver= _desc= _pkgn= _pkgv= _provides= \ _replaces= _reverts= f= found_dbg_subpkg= - if [ -n "$XBPS_TARGET_MACHINE" ]; then - arch=$XBPS_TARGET_MACHINE - else - arch=$XBPS_MACHINE - fi - if [ -z "$XBPS_CROSS_BUILD" -a -n "$XBPS_ARCH" -a "$XBPS_ARCH" != "$XBPS_TARGET_MACHINE" ]; then - arch=${XBPS_ARCH} - fi - + arch=$XBPS_TARGET_MACHINE binpkg=${pkgver}.${arch}.xbps if [ -n "$repository" ]; then diff --git a/common/hooks/post-pkg/00-register-pkg.sh b/common/hooks/post-pkg/00-register-pkg.sh index ce641cfc850c..67b7209b2728 100644 --- a/common/hooks/post-pkg/00-register-pkg.sh +++ b/common/hooks/post-pkg/00-register-pkg.sh @@ -13,19 +13,12 @@ registerpkg() { hook() { local arch= binpkg= pkgdir= - if [ -n "$XBPS_TARGET_MACHINE" ]; then - arch=$XBPS_TARGET_MACHINE - else - arch=$XBPS_MACHINE - fi - if [ -z "$XBPS_CROSS_BUILD" -a -n "$XBPS_ARCH" -a "$XBPS_ARCH" != "$XBPS_TARGET_MACHINE" ]; then - arch=${XBPS_ARCH} - fi if [ -n "$repository" ]; then pkgdir=$XBPS_REPOSITORY/$repository else pkgdir=$XBPS_REPOSITORY fi + arch=$XBPS_TARGET_MACHINE binpkg=${pkgver}.${arch}.xbps binpkg32=${pkgname}-32bit-${version}_${revision}.x86_64.xbps binpkg_dbg=${pkgname}-dbg-${version}_${revision}.${arch}.xbps From e1cbefc62d5b52076a37e20da60e83b2318a33ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Wed, 18 Aug 2021 01:05:00 +0200 Subject: [PATCH 2/2] xbps-src: overwrite packages in local repo --- README.md | 12 ++++++------ common/hooks/do-pkg/00-gen-pkg.sh | 6 ------ common/xbps-src/libexec/build.sh | 8 +++++--- common/xbps-src/shutils/pkgtarget.sh | 13 +++++++++++++ etc/defaults.conf | 6 ++++++ xbps-src | 3 ++- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 320365ef921a..567434991c27 100644 --- a/README.md +++ b/README.md @@ -343,15 +343,15 @@ Each time a binary package is created, a package signature must be created with ### Rebuilding and overwriting existing local packages -If for whatever reason a package has been built and it is available in your local repository -and you have to rebuild it without bumping its `version` or `revision` fields, it is possible -to accomplish this task easily with `xbps-src`: +Packages are overwritten on every build to make getting package with changed build options easy. +To make xbps-src preserve first package build with with given version and revision, +same as in official void repository, set `XBPS_PRESERVE_PKGS=yes` in `etc/conf` file. - $ ./xbps-src -f pkg xbps +Reinstalling a package in your target `rootdir` can be easily done too: -Reinstalling this package in your target `rootdir` can be easily done too: + $ xbps-install --repository=/path/to/local/repo -yf xbps-0.25_1 - $ xbps-install --repository=/path/to/local/repo -yff xbps-0.25_1 +Using `-f` flag twice will overwrite configuration files. > Please note that the `package expression` must be properly defined to explicitly pick up the package from the desired repository. diff --git a/common/hooks/do-pkg/00-gen-pkg.sh b/common/hooks/do-pkg/00-gen-pkg.sh index cfe0238839d8..e1280e9b0006 100644 --- a/common/hooks/do-pkg/00-gen-pkg.sh +++ b/common/hooks/do-pkg/00-gen-pkg.sh @@ -18,12 +18,6 @@ genpkg() { sleep 1 done - # Don't overwrite existing binpkgs by default, skip them. - if [ -f $pkgdir/$binpkg -a -z "$XBPS_BUILD_FORCEMODE" ]; then - msg_normal "${pkgver}: skipping existing $binpkg pkg...\n" - return 0 - fi - # Lock binpkg trap "rm -f '$_pkglock'" ERR EXIT touch -f "$_pkglock" diff --git a/common/xbps-src/libexec/build.sh b/common/xbps-src/libexec/build.sh index 3ac5a962d15d..70fd9cffb655 100755 --- a/common/xbps-src/libexec/build.sh +++ b/common/xbps-src/libexec/build.sh @@ -35,6 +35,8 @@ esac setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD readonly SOURCEPKG="$sourcepkg" +check_existing_pkg + show_pkg_build_options check_pkg_arch $XBPS_CROSS_BUILD @@ -107,15 +109,15 @@ cut -d: -f 1,2 ${XBPS_STATEDIR}/.${sourcepkg}_register_pkg | sort -u | \ if [ -n "${arch}" ]; then msg_normal "Registering new packages to $repo ($arch)\n" XBPS_TARGET_ARCH=${arch} $XBPS_RINDEX_CMD \ - ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} ${XBPS_BUILD_FORCEMODE:+-f} -a ${paths} + ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} -f -a ${paths} else msg_normal "Registering new packages to $repo\n" if [ -n "$XBPS_CROSS_BUILD" ]; then $XBPS_RINDEX_XCMD ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} \ - ${XBPS_BUILD_FORCEMODE:+-f} -a ${paths} + -f -a ${paths} else $XBPS_RINDEX_CMD ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} \ - ${XBPS_BUILD_FORCEMODE:+-f} -a ${paths} + -f -a ${paths} fi fi done diff --git a/common/xbps-src/shutils/pkgtarget.sh b/common/xbps-src/shutils/pkgtarget.sh index 13430b3157f7..06fbcd844cc0 100644 --- a/common/xbps-src/shutils/pkgtarget.sh +++ b/common/xbps-src/shutils/pkgtarget.sh @@ -1,5 +1,18 @@ # vim: set ts=4 sw=4 et: +check_existing_pkg() { + local arch= curpkg= + if [ -z "$XBPS_PRESERVE_PKGS" ] || [ "$XBPS_BUILD_FORCEMODE" ]; then + return + fi + arch=$XBPS_TARGET_MACHINE + curpkg=$XBPS_REPOSITORY/$repository/$pkgver.$arch.xbps + if [ -e $curpkg ]; then + msg_warn "$pkgver: skipping build due to existing $curpkg\n" + exit 0 + fi +} + check_pkg_arch() { local cross="$1" _arch f match nonegation diff --git a/etc/defaults.conf b/etc/defaults.conf index 6147954a18af..58369e95cbcd 100644 --- a/etc/defaults.conf +++ b/etc/defaults.conf @@ -147,3 +147,9 @@ XBPS_SUCMD="sudo /bin/sh -c" # meant as safeguard against users casually destroying their systems # #XBPS_ALLOW_CHROOT_BREAKOUT=yes + +# [OPTIONAL] +# Skip building package if it exists in local repository, emitting warning. +# When unset, newly build package overwrites the older one. +# +#XBPS_PRESERVE_PKGS=yes diff --git a/xbps-src b/xbps-src index 7fe0ac55ffd8..ff249015ed02 100755 --- a/xbps-src +++ b/xbps-src @@ -638,7 +638,8 @@ export XBPS_SHUTILSDIR XBPS_CROSSPFDIR XBPS_TRIGGERSDIR \ XBPS_DESTDIR XBPS_MACHINE XBPS_TEMP_MASTERDIR XBPS_BINPKG_EXISTS \ XBPS_LIBEXECDIR XBPS_DISTDIR XBPS_DISTFILES_MIRROR XBPS_ALLOW_RESTRICTED \ XBPS_USE_GIT_COMMIT_DATE XBPS_PKG_COMPTYPE XBPS_REPO_COMPTYPE \ - XBPS_BUILDHELPERDIR XBPS_USE_BUILD_MTIME XBPS_BUILD_ENVIRONMENT + XBPS_BUILDHELPERDIR XBPS_USE_BUILD_MTIME XBPS_BUILD_ENVIRONMENT \ + XBPS_PRESERVE_PKGS for i in REPOSITORY DESTDIR BUILDDIR SRCDISTDIR; do eval val="\$XBPS_$i"