From: Chocimier <Chocimier@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: [PR PATCH] xbps-src: overwrite packages in local repo
Date: Wed, 18 Aug 2021 01:11:01 +0200 [thread overview]
Message-ID: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-32560@inbox.vuxu.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
There is a new pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org overwrite
https://github.com/void-linux/void-packages/pull/32560
xbps-src: overwrite packages in local repo
A better default than wasting cycles and confusing people why xbps-install -f didn't work.
Builder needs non-default behavior.
@void-linux/pkg-committers
A patch file from https://github.com/void-linux/void-packages/pull/32560.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-overwrite-32560.patch --]
[-- Type: text/x-diff, Size: 5791 bytes --]
From 489955532f00d8e8a947deaa868a2aadf0b9d2c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Wed, 18 Aug 2021 01:05:00 +0200
Subject: [PATCH] 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 | 19 +++++++++++++++++++
etc/defaults.conf | 6 ++++++
xbps-src | 3 ++-
6 files changed, 38 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
<a name="rebuilding"></a>
### 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 f0b70c8eebb8..f0d9aadd2b76 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..af79371b5395 100644
--- a/common/xbps-src/shutils/pkgtarget.sh
+++ b/common/xbps-src/shutils/pkgtarget.sh
@@ -1,5 +1,24 @@
# vim: set ts=4 sw=4 et:
+check_existing_pkg() {
+ if [ -z "$XBPS_PRESERVE_PKGS" ]; then
+ return
+ fi
+ 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
+ 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"
next reply other threads:[~2021-08-17 23:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-17 23:11 Chocimier [this message]
2021-08-18 2:49 ` [PR REVIEW] " ericonr
2021-08-23 18:03 ` [PR PATCH] [Updated] " Chocimier
2021-08-23 18:19 ` Chocimier
2021-08-23 18:26 ` Chocimier
2021-08-30 17:18 ` [PR PATCH] [Updated] " Chocimier
2021-08-30 17:33 ` Chocimier
2021-09-06 20:37 ` Chocimier
2021-09-08 20:36 ` Chocimier
2021-09-13 21:03 ` [PR PATCH] [Updated] " Chocimier
2021-09-13 21:04 ` [PR PATCH] [Merged]: " Chocimier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-32560@inbox.vuxu.org \
--to=chocimier@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).