diff options
author | Enno Boland <gottox@voidlinux.eu> | 2018-05-29 11:16:20 +0000 |
---|---|---|
committer | Enno Boland <g@s01.de> | 2018-06-05 07:22:30 +0000 |
commit | 3b1f5272b95ec89ea331767d8c7a8143c43b24ae (patch) | |
tree | 5121e31f4fa5a160bc24d777bcb1e03e05a9f95e | |
parent | f3d4dc20d7be229c156b75cdebc04e6349004f9b (diff) | |
download | void-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
-rw-r--r-- | common/hooks/pre-pkg/07-python-requires.sh | 52 |
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 +} |