#!/usr/bin/sh #---------------------------------------------------------------------------- # /usr/bin/rpmbuild - wrapper to call rpmbuild (in.rpmbuild) # # Creation : 2013-03-14 holbru # Last update: $Id$ # # Copyright (c) 2015-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #exec 2>/tmp/rpmbuild-trace$$.log #set -x # --------------------------------------------------------------------------- # search in $pkgconfig # --------------------------------------------------------------------------- search_pkgconfig() { __pack=$( echo ${_pack} | sed 's/pkgconfig(//; s/)//' ) if ! pkg-config --exists ${__pack} then write_printout fi } # --------------------------------------------------------------------------- # search for perl # --------------------------------------------------------------------------- search_perl() { __pack=$( echo ${_pack} | sed 's/perl(//; s/)//' ) if perl -e "use ${__pack};" 2>&1 | grep -q "Can't locate" then write_printout fi } # --------------------------------------------------------------------------- # search for python # --------------------------------------------------------------------------- search_python() { if echo "${_pack}" | grep -q 'python_module' then py_pack=$(echo ${_pack} | cut -d ' ' -f2 | sed 's/}//; s/devel/dev/' | tr [:upper:] [:lower:]) __pack=python${py_inst}-${py_pack} installed=$(eisman check ${__pack}) if [ "${installed}" != "installed" ] then __pack=python3-${py_pack} installed=$(eisman check ${__pack}) if [ "${installed}" != "installed" ] then write_printout fi fi elif echo "${_pack}" | grep -q 'python3-' then py_pack=$(echo ${_pack} | cut -d '-' -f2- | cut -d ' ' -f1 | sed 's/}//; s/devel/dev/' | tr [:upper:] [:lower:]) __pack=python${py_inst}-${py_pack} installed=$(eisman check ${__pack}) if [ "${installed}" != "installed" ] then __pack=python3-${py_pack} installed=$(eisman check ${__pack}) if [ "${installed}" != "installed" ] then write_printout fi fi fi } # --------------------------------------------------------------------------- # search for camke modules # --------------------------------------------------------------------------- search_cmake() { __pack=$( echo ${_pack} | sed 's/cmake(//; s/)//' ) if ! ls -d /usr/lib${lib64}/cmake/${__pack} >/dev/null 2>&1 then if ! ls -d /usr/share/cmake/${__pack} >/dev/null 2>&1 then write_printout fi fi } # --------------------------------------------------------------------------- # search for flavor # --------------------------------------------------------------------------- search_flavor() { flavor=$(grep -E 'define +flavor' ${_file} | cut -d' ' -f3) lua_pack=$(echo ${_pack} | cut -d'-' -f2 | sed 's/devel/dev/') __pack=${flavor}-${lua_pack} if ! grep -q -R "${__pack}$" /usr/share/rpm/provides/ then _pack=${__pack} search_package fi } # --------------------------------------------------------------------------- # search in $packages # --------------------------------------------------------------------------- search_package() { installed=$(eisman check "$(echo "${_pack}" | tr [:upper:] [:lower:])") if [ "${installed}" != "installed" ] then search_libpackage fi } # --------------------------------------------------------------------------- # search also in lib$packages # --------------------------------------------------------------------------- search_libpackage() { installed=$(eisman check "lib${_pack}") if [ "${installed}" != "installed" ] then search_executable fi } # --------------------------------------------------------------------------- # search for $executable # --------------------------------------------------------------------------- search_executable() { __pack=$( which ${_pack} 2>/dev/null ) if [ -z "${__pack}" ] then write_printout fi } # --------------------------------------------------------------------------- # write printout # --------------------------------------------------------------------------- write_printout() { echo " ${_pack}" >> ${_tmp_file} } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- PARA=${*} _nodeps=false while [ ${#} -gt 0 ] do case ${1} in --nodeps) _nodeps=true ;; *.spec) _file="${1}" __nodeps='--nodeps' ;; esac shift done if [ -n "${_file}" ] then # set arch if [ "$(arch)" = "x86_64" ] then lib64=64 fi # get python version py_inst=$(ls /usr/bin/python3.* | sed 's|.*python||; s|\.||; s|-config||' | uniq) _tmp_file=$( mktemp -t .XXXXXXXXXXXXXX ) if ! ${_nodeps} then gawk '/^BuildRequires:/ {$1=""; print $0}' ${_file} | cut -d'>' -f1 | while read _pack do if ! grep -q -R "${_pack}$" /usr/share/rpm/provides/ then case "${_pack}" in pkgconfig\(*) search_pkgconfig ;; perl\(*) search_perl ;; cmake\(*) search_cmake ;; *python*) search_python ;; *flavor*) search_flavor ;; *) # others _pack=$(echo ${_pack} | sed 's/devel/dev/; s/.*openssl-dev/libopenssl-3-dev/; s/libssl-dev/libopenssl-3-dev/; s/gcc-c++/gcc-cpp/; s/c++_compiler/gcc-cpp/; s/pkgconfig$/pkg-config/; s/gettext-dev/gettext-tools/; s/libjpeg-dev/libjpeg8-dev/; s/mysql-dev/libmariadb-dev/; s/postgresql-dev/libpq5-dev/') search_package ;; esac fi done fi if [ -s ${_tmp_file} ] then echo echo 'The following packages where missing, please solve that first.' echo cat ${_tmp_file} echo rm -f ${_tmp_file} exit 1 fi rm -f ${_tmp_file} fi # --------------------------------------------------------------------------- # exec bin # --------------------------------------------------------------------------- exec /usr/bin/in.rpmbuild ${__nodeps} $( echo ${PARA} | sed "s|'||g" ) # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------