improvements for deb and rpm docker builds

master
Marc Wäckerlin 8 years ago
parent 10afa15d5f
commit 64168e00bc
  1. 21
      scripts/ax_check_qt.m4
  2. 84
      scripts/ax_init_standard_project.m4
  3. 50
      scripts/resolve-debbuilddeps.sh
  4. 53
      scripts/resolve-rpmbuilddeps.sh

@ -230,6 +230,7 @@ AC_DEFUN([AX_CHECK_QT], [
AC_SUBST(CXXFLAGS) AC_SUBST(CXXFLAGS)
AC_SUBST(PKG_REQUIREMENTS) AC_SUBST(PKG_REQUIREMENTS)
AX_ADDITIONAL_QT_RULES_HACK=' AX_ADDITIONAL_QT_RULES_HACK='
#### Begin: Appended by $0
LANGUAGE_FILE_BASE ?= translations LANGUAGE_FILE_BASE ?= translations
@ -241,7 +242,6 @@ moc_%.cxx: %.hxx
qrc_%.cxx: %.qrc qrc_%.cxx: %.qrc
$(RCC) -o [$][@] -name ${<:%.qrc=%} $< $(RCC) -o [$][@] -name ${<:%.qrc=%} $<
AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK)
#%.qrc: % #%.qrc: %
# cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@] # cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@]
@ -249,12 +249,15 @@ qrc_%.cxx: %.qrc
%.qm: %.ts %.qm: %.ts
${LRELEASE} $< -qm [$][@] ${LRELEASE} $< -qm [$][@]
%.ts: ${LANGUAGE_FILES:%=%} %.ts: ${LANGUAGE_FILES}
${LUPDATE} -no-obsolete \ ${LUPDATE} -no-obsolete \
-target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ -target-language [$]{@:${LANGUAGE_FILE_BASE}_%.ts=%} \
-ts [$][@] $< [$][^] \
-ts [$][@]
']) #### End: $0
'
])
AC_DEFUN([AX_REQUIRE_QT], [ AC_DEFUN([AX_REQUIRE_QT], [
AX_CHECK_QT([$1], [$2], [$3], [$4]) AX_CHECK_QT([$1], [$2], [$3], [$4])
@ -269,3 +272,11 @@ AC_DEFUN([AX_REQUIRE_QT], [
AC_DEFUN([AX_QT_NO_KEYWORDS], [ AC_DEFUN([AX_QT_NO_KEYWORDS], [
CPPFLAGS+=" -DQT_NO_KEYWORDS" CPPFLAGS+=" -DQT_NO_KEYWORDS"
]) ])
AC_DEFUN([AX_INIT_QT], [
test -f src/makefile.in && cat >> src/makefile.in <<EOF
#### HERE
${AX_ADDITIONAL_QT_RULES_HACK}
#### WE ARE
EOF
])

@ -718,12 +718,10 @@ EOF
# $5 = optional flags: # $5 = optional flags:
# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged # manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged
# $6 = optional parameters, allowed are (evaluated in this order): # $6 = optional parameters, allowed are (evaluated in this order):
# - RPM_DIST_PKG=<name> # - DEV_RPM_DIST_PKG=<name>
# special name for the RPM package # special name for the RPM development package
# - DEB_DIST_PKG=<name> # - DEV_DEB_DIST_PKG=<name>
# special name for the debian package # special name for the debian development package
# - DIST_PKG=<name>
# if the name of the package is different
# - DEV_DIST_PKG=<name> # - DEV_DIST_PKG=<name>
# if the name of the development package is different # if the name of the development package is different
# #
@ -735,11 +733,6 @@ EOF
AC_DEFUN([AX_PKG_REQUIRE], [ AC_DEFUN([AX_PKG_REQUIRE], [
PKG_PROG_PKG_CONFIG PKG_PROG_PKG_CONFIG
optional_flags="$5" optional_flags="$5"
$6
if test -n "$DEV_DIST_PKG"; then
DEV_DEB_DIST_PKG=${DEV_DIST_PKG}-dev
DEV_RPM_DIST_PKG=${DEV_DIST_PKG}-devel
fi
$1_found=no $1_found=no
secondpar="m4_default([$2], [$1])" secondpar="m4_default([$2], [$1])"
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
@ -819,10 +812,6 @@ AC_DEFUN([AX_PKG_REQUIRE], [
AC_MSG_ERROR([Feature $1 not found please install module $secondpar]) AC_MSG_ERROR([Feature $1 not found please install module $secondpar])
fi fi
fi fi
AX_DEB_BUILD_DEPEND([${DEV_DEB_DIST_PKG:-${DEB_DIST_PKG:-${DIST_PKG:-${$1_found}-dev}}}])
AX_RPM_BUILD_DEPEND([${DEV_RPM_DIST_PKG:-${RPM_DIST_PKG:-${DIST_PKG:-${$1_found}-devel}}}])
AX_DEB_DEPEND([${DEB_DIST_PKG:-${DIST_PKG:-${$1_found}}}])
AX_RPM_DEPEND([${RPM_DIST_PKG:-${DIST_PKG:-${$1_found}}}])
[$1]_CPPFLAGS="${$1_CFLAGS}" [$1]_CPPFLAGS="${$1_CFLAGS}"
[$1]_CXXFLAGS="${$1_CFLAGS}" [$1]_CXXFLAGS="${$1_CFLAGS}"
AC_SUBST([$1]_CPPFLAGS) AC_SUBST([$1]_CPPFLAGS)
@ -835,6 +824,33 @@ AC_DEFUN([AX_PKG_REQUIRE], [
else else
AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS])
fi fi
DEV_DEB_DIST_PKG=
DEV_RPM_DIST_PKG=
DEV_DIST_PKG=
pkg=m4_default([$2], [$1])
$6
dep_pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
rpm_pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
if test -n "$4"; then
for f in $pkg $4; do
if test -n "$(apt-cache policy -q ${f}-dev 2> /dev/null)"; then
deb_pkg=${f}-dev
break
fi
done
for f in $pkg $4; do
if (test -x /usr/bin/zypper && zypper search -x "${f}-devel" 1>&2 > /dev/n ull) || \
(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
rpm_pkg=${f}-devel
break
fi
done
fi
AX_DEB_BUILD_DEPEND([$deb_pkg])
AX_RPM_BUILD_DEPEND([$rpm_pkg])
]) ])
# check if a specific package exists # check if a specific package exists
@ -844,12 +860,10 @@ AC_DEFUN([AX_PKG_REQUIRE], [
# $3 = optional flags: # $3 = optional flags:
# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged # manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged
# $4 = optional parameters, allowed are (evaluated in this order): # $4 = optional parameters, allowed are (evaluated in this order):
# - RPM_DIST_PKG=<name> # - DEV_RPM_DIST_PKG=<name>
# special name for the RPM package # special name for the RPM development package
# - DEB_DIST_PKG=<name> # - DEV_DEB_DIST_PKG=<name>
# special name for the debian package # special name for the debian development package
# - DIST_PKG=<name>
# if the name of the package is different
# - DEV_DIST_PKG=<name> # - DEV_DIST_PKG=<name>
# if the name of the development package is different # if the name of the development package is different
# #
@ -858,11 +872,6 @@ AC_DEFUN([AX_PKG_REQUIRE], [
# sets all flags, so that the module can be used everywhere # sets all flags, so that the module can be used everywhere
AC_DEFUN([AX_PKG_CHECK], [ AC_DEFUN([AX_PKG_CHECK], [
optional_flags="$3" optional_flags="$3"
$4
if test -n "$DEV_DIST_PKG"; then
DEV_DEB_DIST_PKG=${DEV_DIST_PKG}-dev
DEV_RPM_DIST_PKG=${DEV_DIST_PKG}-devel
fi
PKG_PROG_PKG_CONFIG PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
HAVE_$1=1 HAVE_$1=1
@ -886,15 +895,29 @@ AC_DEFUN([AX_PKG_CHECK], [
], [ ], [
HAVE_$1=0 HAVE_$1=0
]) ])
AX_DEB_BUILD_DEPEND([${DEV_DEB_DIST_PKG:-${DEB_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])-dev}}}])
AX_RPM_BUILD_DEPEND([${DEV_RPM_DIST_PKG:-${RPM_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])-devel}}}])
AX_DEB_DEPEND([${DEB_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])}}])
AX_RPM_DEPEND([${RPM_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])}}])
AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1)
AC_SUBST(HAVE_$1) AC_SUBST(HAVE_$1)
AC_SUBST(CPPFLAGS) AC_SUBST(CPPFLAGS)
AC_SUBST(CXXFLAGS) AC_SUBST(CXXFLAGS)
AC_SUBST(PKG_REQUIREMENTS) AC_SUBST(PKG_REQUIREMENTS)
DEV_DEB_DIST_PKG=
DEV_RPM_DIST_PKG=
DEV_DIST_PKG=
pkg=m4_default([$2], [$1])
$4
dep_pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
rpm_pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
if test -n "$(apt-cache policy -q ${deb_pkg} 2> /dev/null)"; then
AX_DEB_BUILD_DEPEND([$deb_pkg])
fi
if (test -x /usr/bin/zypper && zypper search -x "$rpm_pkg" 1>&2 > /dev/n ull) || \
(test -x /usr/bin/dnf && dnf list -q "$rpm_pkg" 1>&2 > /dev/null) || \
(test -x /usr/bin/yum && yum list -q "$rpm_pkg" 1>&2 > /dev/null) || \
(test -x /usr/sbin/urpmq && urpmq "$rpm_pkg" 1>&2 > /dev/null); then
AX_RPM_BUILD_DEPEND([$rpm_pkg])
fi
)
]) ])
# make sure, a specific header exists # make sure, a specific header exists
@ -1179,4 +1202,5 @@ AC_DEFUN([AX_OUTPUT], [
AX_DEB_RESOLVE AX_DEB_RESOLVE
AX_RPM_RESOLVE AX_RPM_RESOLVE
AC_OUTPUT AC_OUTPUT
AX_INIT_QT
]) ])

@ -35,13 +35,56 @@ TO_INSTALL=
DEPS= DEPS=
if test -e debian/control.in -a ! -e debian/control; then if test -e debian/control.in -a ! -e debian/control; then
function pkg_exists() {
test -n "$(${DO} apt-cache policy -q ${1})" \
&& ((! $(${DO} apt-cache policy ${1} 2>&1 \
| grep -q 'N: Unable to locate package')) \
&& (! ${DO} dpkg -l "${1}" 1>&2 > /dev/null))
}
function AX_PKG_CHECK() {
local DEV_DEB_DIST_PKG=
local DEV_DIST_PKG=
local pkg=
eval $4
if test -z "$2"; then
pkg=$1
else
pkg=$2
fi
pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
if pkg_exists "${pkg}"; then
echo $pkg
fi
}
function AX_PKG_REQUIRE() {
local DEV_DEB_DIST_PKG=
local DEV_DIST_PKG=
local pkg=
eval $6
if test -z "$2"; then
pkg=$1
else
pkg=$2
fi
if test -n "$4"; then
for f in $pkg $4; do
if pkg_exists "${f}-dev"; then
pkg=$f
break
fi
done
fi
echo ${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
}
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_REQUIRE/{s,^ *\(AX_PKG_REQUIRE\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_CHECK/{s,^ *\(AX_PKG_CHECK\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,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 if pkg_exists "${f}"; then
DEPS+=" ${f}" DEPS+=" ${f}"
fi fi
done done
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,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 if pkg_exists "${f}-dev"; then
DEPS+=" ${f}-dev" DEPS+=" ${f}-dev"
fi fi
done done
@ -57,10 +100,11 @@ if test -e debian/control.in -a ! -e debian/control; then
fi fi
install dpkg-dev install dpkg-dev
DEPS+=" $(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')" DEPS+=" $(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')"
for pa in ${DEPS}; do for pa in ${DEPS}; do
if test ${pa//|/} = ${pa}; then if test "${pa//|/}" = "${pa}"; then
TO_INSTALL+=" ${pa}" TO_INSTALL+=" ${pa}"
continue; continue;
fi fi

@ -23,19 +23,56 @@ for f in BUILD BUILDROOT RPMS SPECS SRPMS; do
fi fi
done done
if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then
function pkg_exists() {
(test -x /usr/bin/zypper && zypper search -x "$1" 1>&2 > /dev/null) || \
(test -x /usr/bin/dnf && dnf list -q "$1" 1>&2 > /dev/null) || \
(test -x /usr/bin/yum && yum list -q "$1" 1>&2 > /dev/null) || \
(test -x /usr/sbin/urpmq && urpmq "$1" 1>&2 > /dev/null)
}
function AX_PKG_CHECK() {
local DEV_RPM_DIST_PKG=
local DEV_DIST_PKG=
local pkg=
eval $4
if test -z "$2"; then
pkg=$1
else
pkg=$2
fi
pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
if pkg_exists "${pkg}"; then
echo ${pkg}
fi
}
function AX_PKG_REQUIRE() {
local DEV_RPM_DIST_PKG=
local DEV_DIST_PKG=
local pkg=
eval $6
if test -z "$2"; then
pkg=$1
else
pkg=$2
fi
if test -n "$4"; then
for f in $pkg $4; do
if pkg_exists "${f}-devel"; then
pkg=$f
break
fi
done
fi
echo ${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
}
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_REQUIRE/{s,^ *\(AX_PKG_REQUIRE\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_CHECK/{s,^ *\(AX_PKG_CHECK\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do 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) || \ if pkg_exists "${f}"; then
(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}" DEPS+=" ${f}"
fi fi
done done
for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do 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) || \ if pkg_exists "${f}-devel"; then
(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" DEPS+=" ${f}-devel"
fi fi
done done

Loading…
Cancel
Save