From 3616424576e25c3cbe5083e47ebfa2be131120d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Wed, 3 May 2017 07:03:20 +0000 Subject: [PATCH] build script updated for mingw-build --- COPYING | 2 +- ChangeLog | 11 ++ INSTALL | 2 +- ax_check_qt.m4 | 39 +++-- ax_init_standard_project.m4 | 290 +++++++++++++++++++++++++++++++++++- bootstrap.sh | 103 ++++++++++--- build-in-docker.sh | 32 ++-- resolve-debbuilddeps.sh | 14 +- resolve-rpmbuilddeps.sh | 36 ++++- rpmsign.exp | 14 ++ 10 files changed, 488 insertions(+), 55 deletions(-) create mode 100755 rpmsign.exp diff --git a/COPYING b/COPYING index caeca07..88798ab 120000 --- a/COPYING +++ b/COPYING @@ -1 +1 @@ -/usr/share/automake-1.14/COPYING \ No newline at end of file +/usr/share/automake-1.15/COPYING \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index 10bc756..d8648b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2017-03-17 15:54 + + * [r207] COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4, + bootstrap.sh, build-in-docker.conf, build-in-docker.sh, + configure.ac, debian, debian/changelog.in[ADD], + debian/compat[ADD], debian/control.in[ADD], debian/docs[ADD], + debian/proxyface-dev.install[ADD], debian/proxyface.install[ADD], + debian/rules[ADD], resolve-debbuilddeps.sh, + resolve-rpmbuilddeps.sh: + updated build system + 2016-10-18 07:58 * [r206] ChangeLog, ax_init_standard_project.m4, bootstrap.sh, diff --git a/INSTALL b/INSTALL index f812f5a..ddcdb76 120000 --- a/INSTALL +++ b/INSTALL @@ -1 +1 @@ -/usr/share/automake-1.14/INSTALL \ No newline at end of file +/usr/share/automake-1.15/INSTALL \ No newline at end of file diff --git a/ax_check_qt.m4 b/ax_check_qt.m4 index af3a238..7ba286f 100644 --- a/ax_check_qt.m4 +++ b/ax_check_qt.m4 @@ -51,18 +51,33 @@ AC_DEFUN([AX_CXX_QT_TOOL], [ PKG_PROG_PKG_CONFIG - if test -z "$HAVE_$1"; then + if test -z "${HAVE_$1}"; then HAVE_$1=1 AC_MSG_CHECKING([for $2]) AC_ARG_VAR([$1], [path to Qt tool $2]) - $1=${$1:-$(${PKG_CONFIG} --variable=$2_location Qt5Core)} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2-qt5} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2} - $1=${$1:-$(${PKG_CONFIG} --variable=$2_location QtCore)} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2-qt4} - if ! which "${$1%% *}" > /dev/null; then - if which "$2-qt5" > /dev/null; then + for package in Qt5Core QtCore; do + if test -x "${$1}"; then + break + fi + tool=$(${PKG_CONFIG} --variable=$2_location $package 2> /dev/null) + if test -x "${tool}"; then + $1="${tool}" + break + fi + tool=$(${PKG_CONFIG} --variable=host_bins $package 2> /dev/null) + if test -n "$tool"; then + for name in $2 $2-qt5 $2-qt4; do + if test -x "${tool}/${name}"; then + $1="${tool}/${name}" + break + fi + done + fi + done + if ! test -x "${$1}"; then + if which "$2" > /dev/null; then + $1=$2 + elif which "$2-qt5" > /dev/null; then $1=$2-qt5 elif which "$2" > /dev/null; then $1=$2 @@ -70,15 +85,15 @@ AC_DEFUN([AX_CXX_QT_TOOL], [ $1=$2-qt4 else HAVE_$1=0 - $1="" + unset $1 fi fi AC_SUBST($1) AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) if test $HAVE_$1 -eq 1; then - AC_MSG_RESULT([$$1]) + AC_MSG_RESULT([$$1]) else - AC_MSG_RESULT([not found]) + AC_MSG_RESULT([not found]) fi fi ]) diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4 index b54f205..8ce3d18 100644 --- a/ax_init_standard_project.m4 +++ b/ax_init_standard_project.m4 @@ -500,6 +500,12 @@ maintainer-clean-html-targets: EOF ]) +# use this in configure.ac to support HTML data for webservers +AC_DEFUN([AX_BUILD_HTML_NPM], [ + AC_CONFIG_FILES([html/package.json]) + AX_BUILD_HTML +]) + # use this in configure.ac to support C++ libraries AC_DEFUN([AX_USE_LIBTOOL], [ # libtool versioning @@ -564,7 +570,7 @@ AC_DEFUN([AX_USE_RPM_PACKAGING], [ EXTRA_DIST += \${PACKAGE_NAME}.spec.in rpm: dist rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec - rpmsign --define "_gpg_name \${PACKAGER}" --addsign RPMS/*/*.rpm SRPMS/*.rpm + ./rpmsign.exp "\${PACKAGER}" "\{PASSWORD}" RPMS/*/*.rpm SRPMS/*.rpm clean-rpm-targets: -rm -rf BUILD BUILDROOT RPMS SPECS SRPMS distclean-rpm-targets: @@ -796,6 +802,120 @@ AC_DEFUN([AX_PKG_REQUIRE], [ AC_MSG_ERROR([Feature $1 not found please install module $secondpar]) fi fi + AX_DEB_DEPEND([${$1_found}]) + AX_RPM_DEPEND([${$1_found}]) + [$1]_CPPFLAGS="${$1_CFLAGS}" + [$1]_CXXFLAGS="${$1_CFLAGS}" + AC_SUBST([$1]_CPPFLAGS) + AC_SUBST([$1]_CXXFLAGS) + if test "${optional_flags/manualflags/}" = "${optional_flags}"; then + CPPFLAGS+=" ${$1_CPPFLAGS}" + CXXFLAGS+=" ${$1_CXXFLAGS}" + LIBS+=" ${$1_LIBS}" + AC_MSG_NOTICE([Adding flags for $1]) + else + AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) + fi +]) + +# require a specific development package, with fallback: test for a header +# - parameter: +# $1 = unique id (no special characters) +# $2 = module name (optional, if different from id) +# $3 = a header file to find (optional) +# $4 = alternative module names (space separated, optional) +# $5 = optional flags: +# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged +# +# uses PKG_CHECK_MODULES to test for a module +# then, if given, looks for the header file +# if header file is not found, searches in alternative modules +# sets all flags, so that the module can be used everywhere +# fails if not found +AC_DEFUN([AX_PKG_REQUIRE_DEV], [ + PKG_PROG_PKG_CONFIG + optional_flags="$5" + $1_found=no + secondpar="m4_default([$2], [$1])" + PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ + $1_found=$secondpar + PKG_REQUIREMENTS+=" $secondpar" + ], [ + if test -n "$4"; then + AC_MSG_WARN([Recommended package $secondpar for feature $1 not installed, trying $4]) + for pkg in $4; do + PKG_CHECK_MODULES([$1], [$pkg], [ + PKG_REQUIREMENTS+=" $pkg" + $1_found=$pkg + break; + ], [ + AC_MSG_WARN([Recommended package $pkg for feature $1 not installed]) + ]) + done + fi + ]) + AC_SUBST(CPPFLAGS) + AC_SUBST(CXXFLAGS) + AC_SUBST(PKG_REQUIREMENTS) + if test -n "$3"; then + if test "${$1_found}" = "no"; then + tmp_package="yes" + else + tmp_package=${$1_found} + fi + $1_found=no + old_CPPFLAGS=${CPPFLAGS} + CPPFLAGS=" ${$1_CFLAGS} ${CPPFLAGS}" + AC_CHECK_HEADER([$3], [ + $1_found=${tmp_package} + ], [ + for x in ${$1_CFLAGS}; do + AC_MSG_NOTICE([search for $3 in ${x[#]-I}]) + for f in $(find ${x[#]-I} -name "$3" 2> /dev/null); do + if test -f "$f"; then + $1_found=${tmp_package} + $1_CFLAGS+=" -I${f%/*}" + AC_MSG_NOTICE([added path ${f%/*}]) + break; + fi + done + if test "${$1_found}" != "no"; then + break; + fi + done + if test "${$1_found}" = "no"; then + tmp_includedir=$(${PKG_CONFIG} --variable=includedir $tmp_package) + for x in ${tmp_includedir}; do + AC_MSG_NOTICE([search for $3 in $x]) + for f in $(find ${x} -name "$3" 2> /dev/null); do + if test -f "$f"; then + $1_found=${tmp_package} + $1_CFLAGS+=" -I${f%/*}" + AC_MSG_NOTICE([added path ${f%/*}]) + break; + fi + done + if test "${$1_found}" != "no"; then + break; + fi + done + fi + ]) + CPPFLAGS=${old_CPPFLAGS} + fi + if test "${$1_found}" = "no"; then + if test -n "$3"; then + if test -n "$4"; then + AC_MSG_ERROR([Feature $1 not found, need header $3 in modules $secondpar or $4]) + else + AC_MSG_ERROR([Feature $1 not found, need header $3 in module $secondpar]) + fi + else + AC_MSG_ERROR([Feature $1 not found please install module $secondpar]) + fi + fi + AX_DEB_BUILD_DEPEND([${$1_found}-dev]) + AX_RPM_BUILD_DEPEND([${$1_found}-devel]) [$1]_CPPFLAGS="${$1_CFLAGS}" [$1]_CXXFLAGS="${$1_CFLAGS}" AC_SUBST([$1]_CPPFLAGS) @@ -845,6 +965,52 @@ AC_DEFUN([AX_PKG_CHECK], [ ], [ HAVE_$1=0 ]) + AX_DEB_BUILD_DEPEND(m4_default([$2], [$1])) + AX_RPM_BUILD_DEPEND(m4_default([$2], [$1])) + AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) + AC_SUBST(HAVE_$1) + AC_SUBST(CPPFLAGS) + AC_SUBST(CXXFLAGS) + AC_SUBST(PKG_REQUIREMENTS) +]) + +# check if a specific development package exists +# - parameter: +# $1 = unique id (no special characters) +# $2 = module name (optional, if different from id) +# $3 = optional flags: +# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged +# +# uses PKG_CHECK_MODULES to test for a module +# sets automake conditional HAVE_$1 to 0 (not found) or 1 (found) +# sets all flags, so that the module can be used everywhere +AC_DEFUN([AX_PKG_CHECK_DEV], [ + optional_flags="$3" + PKG_PROG_PKG_CONFIG + PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ + HAVE_$1=1 + [$1]_CPPFLAGS="${$1_CFLAGS}" + [$1]_CXXFLAGS="${$1_CFLAGS}" + AC_SUBST([$1]_CPPFLAGS) + AC_SUBST([$1]_CXXFLAGS) + if test "${optional_flags/manualflags/}" = "${optional_flags}"; then + CPPFLAGS+=" ${$1_CPPFLAGS}" + CXXFLAGS+=" ${$1_CXXFLAGS}" + LIBS+=" ${$1_LIBS}" + AC_MSG_NOTICE([Adding flags for $1]) + else + AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) + fi + if test -z "$PKG_REQUIREMENTS"; then + PKG_REQUIREMENTS="m4_default([$2], [$1])" + else + PKG_REQUIREMENTS="${PKG_REQUIREMENTS}, m4_default([$2], [$1])" + fi + ], [ + HAVE_$1=0 + ]) + AX_DEB_BUILD_DEPEND(m4_default([$2], [$1])-dev) + AX_RPM_BUILD_DEPEND(m4_default([$2], [$1])-devel) AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) AC_SUBST(HAVE_$1) AC_SUBST(CPPFLAGS) @@ -1012,3 +1178,125 @@ AC_DEFUN([AX_DEB_RESOLVE], [ AC_SUBST(DEB_SECTION) AC_SUBST(DEB_DEPEND_IFEXISTS) ]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @RPM_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_DEPEND_IFEXISTS], [ + pkg="$1" + + if (test -x /usr/bin/zypper && zypper search -x "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg" 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}" + fi +]) + +# require package in .spec.in append @RPM_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_BUILD_DEPEND], [ + pkg="$1" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}" +]) + +# require package in .spec.in append @RPM_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_DEPEND], [ + pkg="$1" + if test -z "${RPM_DEPEND}"; then + RPM_DEPEND="${pkg}" + else + RPM_DEPEND="${RPM_DEPEND}, ${pkg}" + fi +]) + +# require package in debian/control.in append @DEB_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_GROUP], [ + pkg="$1" + RPM_GROUP="${pkg}" +]) + +# call after setting rpmian dependencies +AC_DEFUN([AX_RPM_RESOLVE], [ + AC_SUBST(RPM_BUILD_DEPEND) + AC_SUBST(RPM_DEPEND) + AC_SUBST(RPM_GROUP) + AC_SUBST(RPM_DEPEND_IFEXISTS) +]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @ALL_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND_IFEXISTS], [ + pkg="$1" + if test -n "$(apt-cache policy -q ${pkg} 2> /dev/null)"; then + DEB_DEPEND_IFEXISTS="${DEB_DEPEND_IFEXISTS}, ${pkg}" + fi + if (test -x /usr/bin/zypper && zypper search -x "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg" 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}" + fi +]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @ALL_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND_IFEXISTS_DEV], [ + pkg="$1" + if test -n "$(apt-cache policy -q ${pkg}-dev 2> /dev/null)"; then + DEB_DEPEND_IFEXISTS="${DEB_DEPEND_IFEXISTS}, ${pkg}-dev" + fi + if (test -x /usr/bin/zypper && zypper search -x "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg"-devel 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}-devel" + fi +]) + +# require package in .spec.in append @ALL_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_BUILD_DEPEND], [ + pkg="$1" + DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg}" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}" +]) + +# require package in .spec.in append @ALL_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_BUILD_DEPEND_DEV], [ + pkg="$1" + DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg}-dev" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}-devel" +]) + +# require package in .spec.in append @ALL_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND], [ + pkg="$1" + DEB_DEPEND="${DEB_DEPEND}, ${pkg}" + if test -z "${RPM_DEPEND}"; then + RPM_DEPEND="${pkg}" + else + RPM_DEPEND="${RPM_DEPEND}, ${pkg}" + fi +]) + +AC_DEFUN([AX_OUTPUT], [ + AX_DEB_RESOLVE + AX_RPM_RESOLVE + AC_OUTPUT +]) diff --git a/bootstrap.sh b/bootstrap.sh index cdf1165..1559eac 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -134,6 +134,7 @@ GENERATED FILES * resolve-rpmbuilddeps.sh - script to install RPM package dependencies * build-in-docker.sh - script to build the project encapsulated in a docker container * build-in-docker.conf - additional configuration for build-in-docker.sh + * rpmsign.exp - script for signing rpms unattended * build-resource-file.sh - build resource.qrc file from a resource directory * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle @@ -148,7 +149,8 @@ GENERATED FILES * src/version.hxx - if you enabled AX_USE_CXX * src/version.cxx - if you enabled AX_USE_CXX * etc/makefile.am - if you enable AX_USE_ETC - * html/makefile.am - if you enabled AX_BUILD_HTML + * html/makefile.am - if you enabled AX_BUILD_HTML or AX_BUILD_HTML_NPM + * html/package.json.in - if you enabled AX_BUILD_HTML_NPM * scripts/makefile.am - if you enabled AX_USE_SCRIPTS * nodejs/makefile.am - if you add AX_USE_NODEJS * nodejs/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS @@ -223,7 +225,7 @@ FILE DEPENDENCIES configuration a dependent, i.e.: * test/makefile.am depends on AX_USE_LIBTOOL - * html/makefile.am depends on AX_BUILD_HTML + * html/makefile.am depends on AX_BUILD_HTML or AX_BUILD_HTML_NPM * doc/doxyfile.in depends on AX_BUILD_EXAMPLES * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_PERLDOC, AX_USE_CPPUNIT AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL @@ -374,7 +376,7 @@ run() { testtag() { local IFS="|" - egrep -q '^ *'"($*)" configure.ac + egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac } contains() { @@ -538,6 +540,7 @@ copy makefile_test.inc.am copy resolve-debbuilddeps.sh copy resolve-rpmbuilddeps.sh copy build-in-docker.sh +copy rpmsign.exp copy build-resource-file.sh copy sql-to-dot.sed copy mac-create-app-bundle.sh @@ -583,6 +586,7 @@ AX_INIT_STANDARD_PROJECT #AX_BUILD_TEST #AX_BUILD_EXAMPLES #AX_BUILD_HTML +#AX_BUILD_HTML_NPM # qt features, uncomment, what you need: #AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) @@ -590,7 +594,7 @@ AX_INIT_STANDARD_PROJECT #AX_QT_NO_KEYWORDS # create output -AC_OUTPUT +AX_OUTPUT EOF PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac) @@ -1081,7 +1085,9 @@ to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service < Description=$(head -1 README) [Service] -ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} > /var/log/${PACKAGE_NAME}.log +ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} +StandardOutput=journal +StandardError=journal Restart=on-abort [Install] @@ -1280,11 +1286,59 @@ LDADD = -l${PACKAGE_NAME#lib} MAINTAINERCLEANFILES = makefile.in EOF -to --condition AX_BUILD_HTML html/makefile.am <&2 exit 1 @@ -231,7 +236,7 @@ if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then fi docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}" case $mode in - (deb|apt) + (deb|apt|win) if [[ "${img}" =~ "ubuntu" ]]; then docker exec ${DOCKER_ID} locale-gen ${LANG} docker exec ${DOCKER_ID} update-locale LANG=${LANG} @@ -277,7 +282,12 @@ gpgcheck=0 EOF fi INSTALL_TOOL=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo yum install -y) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo urpmi --auto)) - docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget /usr/bin/lsb_release + if test "$INSTALL_TOOL" = "urpmi --auto"; then + LSB_RELEASE=lsb-release + else + LSB_RELEASE=/usr/bin/lsb_release + fi + docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget $LSB_RELEASE i=0 for key in "${keys[@]}"; do wget -Orpm-key "$key" @@ -291,14 +301,10 @@ EOF done docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh ;; - (win) - if [[ "${img}" =~ "ubuntu" ]]; then - docker exec ${DOCKER_ID} locale-gen ${LANG} - docker exec ${DOCKER_ID} update-locale LANG=${LANG} - fi - docker exec ${DOCKER_ID} apt-get update ${OPTIONS} - docker exec ${DOCKER_ID} apt-get install -y mingw-w64 - docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh - ;; esac -docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} ${flags[@]} +FLAGS=() +for f in "${flags[@]}"; do + FLAGS+=($(ifthenelse "$f" "echo 'ARG'")) +done + +docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} "${FLAGS[@]}" diff --git a/resolve-debbuilddeps.sh b/resolve-debbuilddeps.sh index 30b0a5d..4358e29 100755 --- a/resolve-debbuilddeps.sh +++ b/resolve-debbuilddeps.sh @@ -35,16 +35,24 @@ TO_INSTALL= DEPS= if test -e debian/control.in -a ! -e debian/control; then - for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do + for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do if test -n "$(${DO} apt-cache policy -q ${f})" && ((! $(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}")); then DEPS+=" ${f}" fi done - for f in $(sed -n 's, *AX_DEB_BUILD_DEPEND(\([^)]*\)).*,\1,p' configure.ac); do + for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do + if test -n "$(${DO} apt-cache policy -q ${f}-dev)" && ((! $(${DO} apt-cache policy ${f}-dev 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}-dev")); then + DEPS+=" ${f}-dev" + fi + done + for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do DEPS+=" ${f}" done + for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}-dev" + done trap "rm debian/control" INT TERM EXIT - sed 's,@\(DEB_DEPEND_IFEXISTS\|DEB_BUILD_DEPEND\|DEB_DEPEND\)@,,g' debian/control.in | \ + sed 's,@\(\(ALL\|DEB\)_DEPEND_IFEXISTS\|\(ALL\|DEB\)_BUILD_DEPEND\|\(ALL\|DEB\)_DEPEND\)@,,g' debian/control.in | \ sed 's,@[^@]*@, dummytext,g' > debian/control fi diff --git a/resolve-rpmbuilddeps.sh b/resolve-rpmbuilddeps.sh index 1ed2408..dd565a6 100755 --- a/resolve-rpmbuilddeps.sh +++ b/resolve-rpmbuilddeps.sh @@ -15,10 +15,39 @@ SCHROOTNAME="$1" PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac) TRAP_CMD= +DEPS= +for f in BUILD BUILDROOT RPMS SPECS SRPMS; do + if ! test -d $f; then + TRAP_CMD+="rm -rf $f;" + mkdir $f + fi +done if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then + for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do + if (test -x /usr/bin/zypper && zypper search -x "$f" 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$f" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$f" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$f" 1>&2 > /dev/null); then + DEPS+=" ${f}" + fi + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do + if (test -x /usr/bin/zypper && zypper search -x "$f"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$f"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$f"-devel 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$f"-devel 1>&2 > /dev/null); then + DEPS+=" ${f}-devel" + fi + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}" + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}-devel" + done TRAP_CMD+="rm ${PACKAGE_NAME}.spec;" trap "${TRAP_CMD}" INT TERM EXIT - sed 's,@RPM_DEPEND_IFEXISTS@,,g' ${PACKAGE_NAME}.spec.in | \ + sed 's,@\(\(ALL\|RPM\)_DEPEND_IFEXISTS\|\(ALL\|RPM\)_BUILD_DEPEND\|\(ALL\|RPM\)_DEPEND\)@,,g' ${PACKAGE_NAME}.spec.in | \ sed 's,@[^@]*@, dummytext,g' > ${PACKAGE_NAME}.spec fi @@ -32,13 +61,14 @@ fi if test -n "${SCHROOTNAME}"; then FILES=$(LANG= schroot -c ${SCHROOTNAME} -- rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') if test -n "${FILES}"; then - schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES} + schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES} ${DEPS} fi else FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') if test -n "${FILES}"; then - ${INSTALL_TOOL} ${FILES} + ${INSTALL_TOOL} ${FILES} ${DEPS} fi fi + echo "**** Success: All Dependencies Resolved" diff --git a/rpmsign.exp b/rpmsign.exp new file mode 100755 index 0000000..dc29d94 --- /dev/null +++ b/rpmsign.exp @@ -0,0 +1,14 @@ +#!/usr/bin/expect -f + +set key [lindex $argv 0] +set password [lindex $argv 1] +set files [lrange $argv 2 end] + +### rpm-sign.exp -- Sign RPMs by sending the passphrase. +spawn rpmsign --define "_gpg_name $key" --addsign {*}$files +expect { + "Enter pass phrase: " { + send -- "$password\r" + exp_continue + } eof +}