aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorEnno Boland <gottox@voidlinux.eu>2018-05-29 11:16:20 +0000
committerEnno Boland <g@s01.de>2018-06-05 07:22:30 +0000
commit3b1f5272b95ec89ea331767d8c7a8143c43b24ae (patch)
tree5121e31f4fa5a160bc24d777bcb1e03e05a9f95e /common
parentf3d4dc20d7be229c156b75cdebc04e6349004f9b (diff)
downloadvoid-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar.gz
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar.bz2
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar.lz
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar.xz
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.tar.zst
void-packages-3b1f5272b95ec89ea331767d8c7a8143c43b24ae.zip
common/hooks: add hook to check python dependencies
Diffstat (limited to 'common')
-rw-r--r--common/hooks/pre-pkg/07-python-requires.sh52
1 files changed, 52 insertions, 0 deletions
diff --git a/common/hooks/pre-pkg/07-python-requires.sh b/common/hooks/pre-pkg/07-python-requires.sh
new file mode 100644
index 00000000000..007fa4aac7d
--- /dev/null
+++ b/common/hooks/pre-pkg/07-python-requires.sh
@@ -0,0 +1,52 @@
+# This hook executes the following tasks:
+# - checks if python requires are satisfied
+
+hook() {
+ local requires= pver= req= reqname= modules= module= cmp=;
+
+ if [ -e "$wrksrc/requirements.txt" ]; then
+ requires=$(grep -v "^#.*" "$wrksrc/requirements.txt")
+ elif [ -e "$wrksrc/setup.py" ]; then
+ pver=${python_versions%% *}
+ requires=$( ( cd "$wrksrc"; python$pver -c 'import setup; print("\n".join(setup.params["install_requires"]))') )
+ else
+ return 0
+ fi
+
+ # reads all dependencies and creates a list of modules
+ modules=$(for dep in $depends; do
+ (
+ local _name=
+
+ setup_pkg "$dep" "$XBPS_CROSS_BUILD" ignore-problems
+ if [ -h "$XBPS_SRCPKGDIR/${pkgname}" ]; then
+ "${pkgname}_package"
+ fi
+
+ printf "%s:%s:" ${pkgname}-${version}_${revision} "$pkgname"
+ for _name in ${pycompile_module}; do
+ _name="${_name//\//.}"
+ printf "%s:" "${_name%.py}"
+ done
+ echo
+ )
+ done)
+
+ # checks if all requires are satisfied by the depending modules
+ for i in $requires; do
+ req=${i/;*/}
+ if ! reqname="$($XBPS_UHELPER_CMD getpkgdepname "${req}")"; then
+ reqname=$_tmpreq
+ fi
+
+ if ! module=$(echo "$modules" | grep ":$reqname:"); then
+ msg_warn "Python Dependency $req not found\n"
+ msg_warn " Full pattern: ${i}\n"
+ continue
+ fi
+ cmp=$(echo "$req" | sed "s/[^<>=]*/$($XBPS_UHELPER_CMD getpkgname "${module%%:*}")/")
+ if $XBPS_UHELPER_CMD pkgmatch "${module%%:*}" "$cmp"; then
+ msg_warn "Python Dependency version mismatch: $cmp => ${module%%:*}\n"
+ fi
+ done
+}