#!/bin/bash set -e versionsUniq() { tr ' ' '\n' | \ sed 's|^python$|python>=0|' | \ sort -rV | \ sed 's@^\([^<=>]*\)\(\(>=\|=\|<\)[0-9.]*\)$@\1\2 \1@' | \ sed 's|^\(\S*\)$|\1 \1|' | \ uniq -f1 "$@" | \ awk '{print $1}' | \ sed 's|^python>=0$|python|' | \ sort | \ grep -v '^\s*$' } ladePkgbuild() { paket="$1" if [[ "${paket}" != "python-"* ]] then return 1 fi cd "$(dirname "${me}")" cd "${paket}" makepkg -f --verifysource . PKGBUILD } versteheRequirements() { archiv="${_pkgname}-${pkgver}.tar.gz" [ -r "${archiv}" ] || archiv="${_pkgname}-${pkgver}.tgz" if [ ! -r "${archiv}" ]; then >&2 echo "Kann Quelldatei nicht finden!" return 2 fi unset meta echo "setup.py lesen ..." meta="$( { tar -Oxzf "${archiv}" "${_pkgname}-${pkgver}/setup.py" | \ sed -n "$( for wasAusgeben in "${!metaRegexe[@]}"; do printf '/^\\s*%s = \[/{\n' \ "${metaRegexe["${wasAusgeben}"]}" printf ' :%s\n' \ "${wasAusgeben}" printf ' $! N\n' printf ' s/^\(\\s*\\S\\+\\s*=\\s*\\[[^]#]*\\)\\(#.*\\)\\?\\n/\\1 /\n' printf ' t %s\n' \ "${wasAusgeben}" printf ' s/\\s//g\n' printf ' s/^%s=\[//\n' \ "${metaRegexe["${wasAusgeben}"]}" printf ' s/\]$//\n' printf ' s/\\s*%%[^"'"'"']*["'"'"']//g\n' printf ' s/,/\\n/g\n' printf ' s/["'"'"']//g\n' printf ' s/^/%s:/\n' \ "${wasAusgeben}" printf ' P\n' printf ' D\n' printf '}\n' done )" { tar -Oxzf "${archiv}" "${_pkgname}-${pkgver}/requirements.txt" tar -tzf "${archiv}" | \ grep '^.*/.*/requirements.txt' | \ xargs -r tar -Oxzf "${archiv}" } | \ sed ' /^[a-zA-Z]/! d s/==/=/ s/\s*\([<=>]\+\)\s*/\1/ s/\s*[#;].*$// /^$/d /^numpydoc\s*\([<>=].*\)\?$/d s,^https\?:.*/mysql-connector-python-[^/]*$,mysql-connector, s/^/_depends:/ ' } | \ tr '[:upper:]' '[:lower:]' | \ sort -u )" for wasAusgeben in "${!metaRegexe[@]}"; do metaInfos["${wasAusgeben}"]=$( printf '%s\n' "${meta}" | \ sed -n ' s/^'"${wasAusgeben}"':// T y/ /\n/ p ' | \ sed ' /^cython\($\|[<>=]\)\|^python-/! s/^/python-/ /[^<>]=/ s/=/>=/ ' ) done for wasAusgeben in "${!metaRegexe[@]}"; do eval 'tmp=("${'${wasAusgeben}'[@]}")' pkgBuild["${wasAusgeben}"]=$( echo "${tmp[@]}" | \ tr " '" '\n\n' | \ grep -v '^$' | \ sort -u ) if [ -z "${pkgBuild["${wasAusgeben}"]}" ] && \ [ "${wasAusgeben}" == "_depends" ]; then pkgBuild["${wasAusgeben}"]="python" fi metaYml["${wasAusgeben}"]="${metaInfos["${wasAusgeben}"]}" if [ -z "${metaYml["${wasAusgeben}"]}" ] && \ [ "${wasAusgeben}" == "_depends" ]; then metaYml["${wasAusgeben}"]="python" fi if [ "${wasAusgeben}" == "_makedepends" ]; then metaYml["${wasAusgeben}"]=$( { { { { echo "${metaYml["${wasAusgeben}"]}" echo "${metaYml["_depends"]}" } | \ versionsUniq echo "${metaYml["_depends"]}" } | \ sort | \ uniq -d | \ sed 'p' echo "${metaYml["${wasAusgeben}"]}" } | \ versionsUniq -u echo "${pkgBuild["${wasAusgeben}"]}" | \ grep '^\s*\(cython\|python-setuptools\)\($\|[<>=]\)' } | \ versionsUniq ) fi if [ "${wasAusgeben}" == "_checkdepends" ]; then metaYml["${wasAusgeben}"]=$( { { { { echo "${metaYml["${wasAusgeben}"]}" echo "${metaYml["_depends"]}" } | \ versionsUniq echo "${metaYml["_depends"]}" } | \ sort | \ uniq -d | \ sed 'p' echo "${metaYml["${wasAusgeben}"]}" } | \ versionsUniq -u echo "${pkgBuild["${wasAusgeben}"]}" | \ grep '^\s*\(python-nose\)\($\|[<>=]\)' } | \ versionsUniq ) fi done echo "... fertig" } declare -A metaInfos declare -A metaRegexe declare -A metaSubst declare -A metaYml declare -A pkgBuild metaRegexe["_depends"]="install_requires" metaSubst["_depends"]=true metaRegexe["_makedepends"]="setup_requires" metaSubst["_makedepends"]=true metaRegexe["_checkdepends"]="test_requires" metaSubst["_checkdepends"]=true