Created
December 17, 2024 21:29
-
-
Save gmbeard/3c58c41b379fb71c6e899da195ea454f to your computer and use it in GitHub Desktop.
Allows modification of how `./xbps-src` resolves the versions of dependencies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This change allows you to you to modify how `./xbps-src` resolves the | |
versions of dependencies. | |
For all packages listed in `etc/repover`, xbps-src will use the binary | |
repository version when resolved as a depdencency, even if the srcpkg | |
version is greater. The pkgs must be listed one per line, and without the | |
version number. | |
**NOTE**: The use-case for this is pretty niche. You probably don't | |
want to do this. The author's use-case for this was that they wanted to | |
build their own python module, but the current srcpkg version of Python | |
was greater than the repo version, so the resulting binpkg was unusable | |
on their system. | |
diff --git a/etc/repover b/etc/repover | |
new file mode 100644 | |
index 00000000000..4277280d6b6 | |
--- a/etc/repover | |
+++ b/etc/repover | |
@@ -0,0 +1,9 @@ | |
+python3 | |
+python3-build | |
+python3-devel | |
+python3-filt_core | |
+python3-installer | |
+python3-packaging | |
+python3-parsing | |
+python3-setuptools | |
+python3-wheel | |
diff --git a/common/xbps-src/shutils/build_dependencies.sh b/common/xbps-src/shutils/build_dependencies.sh | |
index 0815e776726..8c612ff5310 100644 | |
--- a/common/xbps-src/shutils/build_dependencies.sh | |
+++ b/common/xbps-src/shutils/build_dependencies.sh | |
@@ -1,5 +1,11 @@ | |
# vim: set ts=4 sw=4 et: | |
# | |
+checkver_override() { | |
+ local pkg="$1" | |
+ [ -r "${XBPS_DISTDIR}/etc/repover" ] && \ | |
+ grep -E "^${pkg}\b" "${XBPS_DISTDIR}/etc/repover" >/dev/null | |
+} | |
+ | |
setup_pkg_depends() { | |
local pkg="$1" out="$2" with_subpkgs="$3" j _rpkgname _depname _pkgname foo _deps collected | |
@@ -186,6 +192,11 @@ install_pkg_deps() { | |
msg_error "$pkgver: host dependency '$f' does not exist!\n" | |
done | |
while read -r _depname _deprepover _depver _subpkg _repourl; do | |
+ if checkver_override ${_subpkg}; then | |
+ echo " [host] ${_subpkg}: using repover override version ${_deprepover}" | |
+ _depver=${_deprepover} | |
+ fi | |
+ | |
_vpkg=${_subpkg}-${_depver} | |
# binary package found in a repo | |
if [[ ${_depver} == ${_deprepover} ]]; then | |
@@ -236,6 +247,11 @@ install_pkg_deps() { | |
msg_error "$pkgver: check dependency '$f' does not exist!\n" | |
done | |
while read -r _depname _deprepover _depver _subpkg _repourl; do | |
+ if checkver_override ${_subpkg}; then | |
+ echo " [check] ${_subpkg}: using repover override version ${_deprepover}" | |
+ _depver=${_deprepover} | |
+ fi | |
+ | |
_vpkg=${_subpkg}-${_depver} | |
# binary package found in a repo | |
if [[ ${_depver} == ${_deprepover} ]]; then | |
@@ -286,6 +302,11 @@ install_pkg_deps() { | |
msg_error "$pkgver: target dependency '$f' does not exist!\n" | |
done | |
while read -r _depname _deprepover _depver _subpkg _repourl; do | |
+ if checkver_override ${_subpkg}; then | |
+ echo " [target] ${_subpkg}: using repover override version ${_deprepover}" | |
+ _depver=${_deprepover} | |
+ fi | |
+ | |
_vpkg=${_subpkg}-${_depver} | |
# binary package found in a repo | |
if [[ ${_depver} == ${_deprepover} ]]; then | |
@@ -335,6 +356,11 @@ install_pkg_deps() { | |
msg_error "$pkgver: target dependency '$f' does not exist!\n" | |
done | |
while read -r _depname _deprepover _depver _subpkg _repourl; do | |
+ if checkver_override ${_subpkg}; then | |
+ echo " [runtime] ${_subpkg}: using repover override version ${_deprepover}" | |
+ _depver=${_deprepover} | |
+ fi | |
+ | |
_vpkg=${_subpkg}-${_depver} | |
# binary package found in a repo | |
if [[ ${_depver} == ${_deprepover} ]]; then | |
diff --git a/.gitignore b/.gitignore | |
index e91ff787554..5b0fca8ce08 100644 | |
--- a/.gitignore | |
+++ b/.gitignore | |
@@ -23,3 +23,4 @@ etc/conf.* | |
etc/virtual | |
etc/xbps.d/custom | |
etc/repo-keys | |
+etc/repover |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment