updated build system
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2017-05-12 13:51
|
||||||
|
|
||||||
|
* [r113] ChangeLog, nodejs/package.json.in:
|
||||||
|
newer OpenPGP.js has support for key signing
|
||||||
|
|
||||||
2017-05-11 14:59
|
2017-05-11 14:59
|
||||||
|
|
||||||
* [r112] nodejs/client/safechat.js, nodejs/makefile.am,
|
* [r112] nodejs/client/safechat.js, nodejs/makefile.am,
|
||||||
|
@@ -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,13 @@ 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], [
|
||||||
|
if test -n "${AX_ADDITIONAL_QT_RULES_HACK}"; then
|
||||||
|
for f in $(find test examples src -name makefile.in); do
|
||||||
|
test -f "$f" && cat >> "$f" <<EOF
|
||||||
|
${AX_ADDITIONAL_QT_RULES_HACK}
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
@@ -90,7 +90,7 @@ dnl refers to ${prefix}. Thus we have to use `eval' twice.
|
|||||||
# $3 = filename of makefile.in
|
# $3 = filename of makefile.in
|
||||||
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
||||||
sh_add_makefile_target_dep() {
|
sh_add_makefile_target_dep() {
|
||||||
sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${srcdir}/${3}"
|
sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'"${1}"':.*$/& '"${2}"'/' "${srcdir}/${3}"
|
||||||
if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then
|
if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then
|
||||||
echo "${1}: ${2}" >> "${srcdir}/${3}"
|
echo "${1}: ${2}" >> "${srcdir}/${3}"
|
||||||
fi
|
fi
|
||||||
@@ -171,7 +171,7 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
|||||||
AX_SUBST(HOME)
|
AX_SUBST(HOME)
|
||||||
if test -f README.md; then
|
if test -f README.md; then
|
||||||
README=$(tail -n +3 README.md)
|
README=$(tail -n +3 README.md)
|
||||||
DESCRIPTION=$(head -1 README.md)
|
DESCRIPTION=$(head -1 README.md | sed 's,^#\+ *,,;s, *#\+$,,')
|
||||||
else
|
else
|
||||||
README=$(tail -n +3 README)
|
README=$(tail -n +3 README)
|
||||||
DESCRIPTION=$(head -1 README)
|
DESCRIPTION=$(head -1 README)
|
||||||
@@ -225,6 +225,9 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
|||||||
VENDOR=$((lsb_release -is 2>/dev/null || echo unknown) | tr ' ' '_')
|
VENDOR=$((lsb_release -is 2>/dev/null || echo unknown) | tr ' ' '_')
|
||||||
AX_SUBST(VENDOR)
|
AX_SUBST(VENDOR)
|
||||||
DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null)
|
DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null)
|
||||||
|
if test "${DISTRO}" = "n/a"; then
|
||||||
|
DISTRO="${VENDOR}_$(lsb_release -sr 2>/dev/null | tr ' ' '_')"
|
||||||
|
fi
|
||||||
AX_SUBST(DISTRO)
|
AX_SUBST(DISTRO)
|
||||||
ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm))
|
ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm))
|
||||||
AX_SUBST(ARCH)
|
AX_SUBST(ARCH)
|
||||||
@@ -453,6 +456,12 @@ AC_DEFUN([AX_USE_NODEJS], [
|
|||||||
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
|
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
|
||||||
AC_CONFIG_FILES([nodejs/package.json])
|
AC_CONFIG_FILES([nodejs/package.json])
|
||||||
AC_CONFIG_FILES([nodejs/makefile])
|
AC_CONFIG_FILES([nodejs/makefile])
|
||||||
|
if test -z "${DEB_SECTION}"; then
|
||||||
|
AX_DEB_SECTION([web])
|
||||||
|
fi
|
||||||
|
if test -z "${RPM_GROUP}"; then
|
||||||
|
AX_RPM_GROUP([Applications/Internet])
|
||||||
|
fi
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-nodejs-targets], [nodejs/makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-nodejs-targets], [nodejs/makefile.in])
|
||||||
test -f nodejs/makefile.in && cat >> nodejs/makefile.in <<EOF
|
test -f nodejs/makefile.in && cat >> nodejs/makefile.in <<EOF
|
||||||
#### Begin: Appended by $0
|
#### Begin: Appended by $0
|
||||||
@@ -491,6 +500,12 @@ EOF
|
|||||||
# use this in configure.ac to support HTML data for webservers
|
# use this in configure.ac to support HTML data for webservers
|
||||||
AC_DEFUN([AX_BUILD_HTML], [
|
AC_DEFUN([AX_BUILD_HTML], [
|
||||||
AC_CONFIG_FILES([html/makefile])
|
AC_CONFIG_FILES([html/makefile])
|
||||||
|
if test -z "${DEB_SECTION}"; then
|
||||||
|
AX_DEB_SECTION([web])
|
||||||
|
fi
|
||||||
|
if test -z "${RPM_GROUP}"; then
|
||||||
|
AX_RPM_GROUP([Applications/Internet])
|
||||||
|
fi
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-html-targets], [html/makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-html-targets], [html/makefile.in])
|
||||||
test -f html/makefile.in && cat >> html/makefile.in <<EOF
|
test -f html/makefile.in && cat >> html/makefile.in <<EOF
|
||||||
#### Begin: Appended by $0
|
#### Begin: Appended by $0
|
||||||
@@ -518,6 +533,12 @@ AC_DEFUN([AX_USE_LIBTOOL], [
|
|||||||
AC_SUBST(LIB_VERSION)
|
AC_SUBST(LIB_VERSION)
|
||||||
AC_PROG_LIBTOOL
|
AC_PROG_LIBTOOL
|
||||||
AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc])
|
AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc])
|
||||||
|
if test -z "${DEB_SECTION}"; then
|
||||||
|
AX_DEB_SECTION([devel])
|
||||||
|
fi
|
||||||
|
if test -z "${RPM_GROUP}"; then
|
||||||
|
AX_RPM_GROUP([Development/Libraries])
|
||||||
|
fi
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-libtool-pkg], [src/makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-libtool-pkg], [src/makefile.in])
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-data-am], [src/makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-data-am], [src/makefile.in])
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-data-am], [uninstall-data-libtool-pkg], [src/makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-data-am], [uninstall-data-libtool-pkg], [src/makefile.in])
|
||||||
@@ -535,7 +556,11 @@ EOF
|
|||||||
])
|
])
|
||||||
|
|
||||||
# use this in configure.ac to support debian packages
|
# use this in configure.ac to support debian packages
|
||||||
|
# - $1: optional debian package section
|
||||||
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
|
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
|
||||||
|
if test -n "$1"; then
|
||||||
|
AX_DEB_SECTION([$1])
|
||||||
|
fi
|
||||||
if test -f README.md; then
|
if test -f README.md; then
|
||||||
README_DEB=$(tail -n +3 README.md | sed -e 's/^ *$/./g' -e 's/^/ /g')
|
README_DEB=$(tail -n +3 README.md | sed -e 's/^ *$/./g' -e 's/^/ /g')
|
||||||
else
|
else
|
||||||
@@ -553,6 +578,7 @@ clean-debian-targets:
|
|||||||
-rm -rf \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.{dsc,tar.gz} \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}*.changes \$\$(sed -n 's,Package: \(.*\),\1_${PACKAGE_VERSION}~${DISTRO}.${BUILD_NUMBER}*.deb,p;' debian/control)
|
-rm -rf \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.{dsc,tar.gz} \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}*.changes \$\$(sed -n 's,Package: \(.*\),\1_${PACKAGE_VERSION}~${DISTRO}.${BUILD_NUMBER}*.deb,p;' debian/control)
|
||||||
deb: distdir
|
deb: distdir
|
||||||
cd \${PACKAGE_NAME}-\${PACKAGE_VERSION} && ( export CFLAGS="\${CFLAGS}"; export CPPFLAGS="\${CPPFLAGS}"; export CXXFLAGS="\${CXXFLAGS}"; export LDFLAGS="\${LDFLAGS}"; export DEB_CFLAGS_APPEND="\${CFLAGS}"; export DEB_CPPFLAGS_APPEND="\${CPPFLAGS}"; export DEB_CXXFLAGS_APPEND="\${CXXFLAGS}"; export DEB_LDFLAGS_APPEND="\${LDFLAGS}"; dpkg-buildpackage )
|
cd \${PACKAGE_NAME}-\${PACKAGE_VERSION} && ( export CFLAGS="\${CFLAGS}"; export CPPFLAGS="\${CPPFLAGS}"; export CXXFLAGS="\${CXXFLAGS}"; export LDFLAGS="\${LDFLAGS}"; export DEB_CFLAGS_APPEND="\${CFLAGS}"; export DEB_CPPFLAGS_APPEND="\${CPPFLAGS}"; export DEB_CXXFLAGS_APPEND="\${CXXFLAGS}"; export DEB_LDFLAGS_APPEND="\${LDFLAGS}"; dpkg-buildpackage )
|
||||||
|
gpg --verify \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.dsc
|
||||||
distclean-debian-targets:
|
distclean-debian-targets:
|
||||||
-rm debian/changelog debian/control
|
-rm debian/changelog debian/control
|
||||||
#### End: $0
|
#### End: $0
|
||||||
@@ -560,7 +586,11 @@ EOF
|
|||||||
])
|
])
|
||||||
|
|
||||||
# use this in configure.ac to support RPM packages
|
# use this in configure.ac to support RPM packages
|
||||||
|
# - $1: optional rpm package group
|
||||||
AC_DEFUN([AX_USE_RPM_PACKAGING], [
|
AC_DEFUN([AX_USE_RPM_PACKAGING], [
|
||||||
|
if test -n "$1"; then
|
||||||
|
AX_RPM_GROUP([$1])
|
||||||
|
fi
|
||||||
AC_CONFIG_FILES([${PACKAGE_NAME}.spec])
|
AC_CONFIG_FILES([${PACKAGE_NAME}.spec])
|
||||||
#AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
#AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
||||||
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
||||||
@@ -594,7 +624,7 @@ AC_DEFUN([AX_USE_DOXYGEN], [
|
|||||||
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
|
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
|
||||||
AC_CHECK_PROG(have_dot, dot, yes, no)
|
AC_CHECK_PROG(have_dot, dot, yes, no)
|
||||||
AC_CHECK_PROG(have_mscgen, mscgen, yes, no)
|
AC_CHECK_PROG(have_mscgen, mscgen, yes, no)
|
||||||
AM_CONDITIONAL(NEED_PLANTUML, test "$have_doxygen" = "yes" -a "1.8.11" != $((echo "1.8.11"; doxygen -v) | sort -V | head -1))
|
AM_CONDITIONAL(NEED_PLANTUML, test "$have_doxygen" = "yes" -a "1.8.11" != $((echo "1.8.11"; doxygen -v 2>/dev/null) | sort -V | head -1))
|
||||||
PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf
|
PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf
|
||||||
AC_SUBST(PDF_DOC)
|
AC_SUBST(PDF_DOC)
|
||||||
if test "$have_doxygen" = "no"; then
|
if test "$have_doxygen" = "no"; then
|
||||||
@@ -714,6 +744,13 @@ EOF
|
|||||||
# $4 = alternative module names (space separated, optional)
|
# $4 = alternative module names (space separated, optional)
|
||||||
# $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):
|
||||||
|
# - DEV_RPM_DIST_PKG=<name>
|
||||||
|
# special name for the RPM development package
|
||||||
|
# - DEV_DEB_DIST_PKG=<name>
|
||||||
|
# special name for the debian development package
|
||||||
|
# - DEV_DIST_PKG=<name>
|
||||||
|
# if the name of the development package is different
|
||||||
#
|
#
|
||||||
# uses PKG_CHECK_MODULES to test for a module
|
# uses PKG_CHECK_MODULES to test for a module
|
||||||
# then, if given, looks for the header file
|
# then, if given, looks for the header file
|
||||||
@@ -802,8 +839,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_DEPEND([${$1_found}])
|
|
||||||
AX_RPM_DEPEND([${$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)
|
||||||
@@ -816,118 +851,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=
|
||||||
# require a specific development package, with fallback: test for a header
|
DEV_RPM_DIST_PKG=
|
||||||
# - parameter:
|
DEV_DIST_PKG=
|
||||||
# $1 = unique id (no special characters)
|
pkg=m4_default([$2], [$1])
|
||||||
# $2 = module name (optional, if different from id)
|
$6
|
||||||
# $3 = a header file to find (optional)
|
dep_pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
||||||
# $4 = alternative module names (space separated, optional)
|
rpm_pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
|
||||||
# $5 = optional flags:
|
if test -n "$4"; then
|
||||||
# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged
|
for f in $pkg $4; do
|
||||||
#
|
if test -n "$(apt-cache policy -q ${f}-dev 2> /dev/null)"; then
|
||||||
# uses PKG_CHECK_MODULES to test for a module
|
deb_pkg=${f}-dev
|
||||||
# then, if given, looks for the header file
|
break
|
||||||
# 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
|
fi
|
||||||
])
|
done
|
||||||
CPPFLAGS=${old_CPPFLAGS}
|
for f in $pkg $4; do
|
||||||
fi
|
if (test -x /usr/bin/zypper && zypper search -x "${f}-devel" 1>&2 > /dev/null) || \
|
||||||
if test "${$1_found}" = "no"; then
|
(test -x /usr/bin/dnf && dnf list -q "${f}-devel" 1>&2 > /dev/null) || \
|
||||||
if test -n "$3"; then
|
(test -x /usr/bin/yum && yum list -q "${f}-devel" 1>&2 > /dev/null) || \
|
||||||
if test -n "$4"; then
|
(test -x /usr/sbin/urpmq && urpmq "${f}-devel" 1>&2 > /dev/null); then
|
||||||
AC_MSG_ERROR([Feature $1 not found, need header $3 in modules $secondpar or $4])
|
rpm_pkg=${f}-devel
|
||||||
else
|
break
|
||||||
AC_MSG_ERROR([Feature $1 not found, need header $3 in module $secondpar])
|
|
||||||
fi
|
fi
|
||||||
else
|
done
|
||||||
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)
|
|
||||||
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
|
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
|
||||||
@@ -936,6 +886,13 @@ AC_DEFUN([AX_PKG_REQUIRE_DEV], [
|
|||||||
# $2 = module name (optional, if different from id)
|
# $2 = module name (optional, if different from id)
|
||||||
# $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):
|
||||||
|
# - DEV_RPM_DIST_PKG=<name>
|
||||||
|
# special name for the RPM development package
|
||||||
|
# - DEV_DEB_DIST_PKG=<name>
|
||||||
|
# special name for the debian development package
|
||||||
|
# - DEV_DIST_PKG=<name>
|
||||||
|
# if the name of the development package is different
|
||||||
#
|
#
|
||||||
# uses PKG_CHECK_MODULES to test for a module
|
# uses PKG_CHECK_MODULES to test for a module
|
||||||
# sets automake conditional HAVE_$1 to 0 (not found) or 1 (found)
|
# sets automake conditional HAVE_$1 to 0 (not found) or 1 (found)
|
||||||
@@ -965,57 +922,28 @@ AC_DEFUN([AX_PKG_CHECK], [
|
|||||||
], [
|
], [
|
||||||
HAVE_$1=0
|
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)
|
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/null) || \
|
||||||
|
(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
|
||||||
@@ -1278,8 +1206,8 @@ AC_DEFUN([AX_ALL_BUILD_DEPEND], [
|
|||||||
# $1 = package name
|
# $1 = package name
|
||||||
AC_DEFUN([AX_ALL_BUILD_DEPEND_DEV], [
|
AC_DEFUN([AX_ALL_BUILD_DEPEND_DEV], [
|
||||||
pkg="$1"
|
pkg="$1"
|
||||||
DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg}-dev"
|
DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg// /-dev}-dev"
|
||||||
RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}-devel"
|
RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg// /-devel}-devel"
|
||||||
])
|
])
|
||||||
|
|
||||||
# require package in .spec.in append @ALL_DEPEND@ to Depends
|
# require package in .spec.in append @ALL_DEPEND@ to Depends
|
||||||
@@ -1295,8 +1223,11 @@ AC_DEFUN([AX_ALL_DEPEND], [
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# finish configuration - to be called instead of AC_OUTPUT
|
||||||
AC_DEFUN([AX_OUTPUT], [
|
AC_DEFUN([AX_OUTPUT], [
|
||||||
|
AX_INIT_QT
|
||||||
AX_DEB_RESOLVE
|
AX_DEB_RESOLVE
|
||||||
AX_RPM_RESOLVE
|
AX_RPM_RESOLVE
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
AC_MSG_NOTICE([configured for ${PACKAGE_NAME}-${VERSION}])
|
||||||
])
|
])
|
||||||
|
440
bootstrap.sh
440
bootstrap.sh
@@ -31,8 +31,9 @@ while test $# -gt 0; do
|
|||||||
(--configure|-c) configure=1;;
|
(--configure|-c) configure=1;;
|
||||||
(--docker|-d) docker=1;;
|
(--docker|-d) docker=1;;
|
||||||
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
|
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
|
||||||
(--all|-a) shift; configure=1; build=1; buildtarget+=" all";;
|
(--all|-a) configure=1; build=1; buildtarget+=" all";;
|
||||||
(--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
|
(--install|-i) configure=1; build=1; buildtarget+=" all install";;
|
||||||
|
(--clean) configure=1; build=1; buildtarget+=" maintainer-clean";;
|
||||||
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
|
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
|
||||||
(--overwrite|-o) overwrite=1;;
|
(--overwrite|-o) overwrite=1;;
|
||||||
(--rebuild|-r) rebuild=1;;
|
(--rebuild|-r) rebuild=1;;
|
||||||
@@ -53,6 +54,7 @@ OPTIONS
|
|||||||
--docker, -d build and run tests in a docker instance
|
--docker, -d build and run tests in a docker instance
|
||||||
--build, -b build, also call ./configure && make distcheck
|
--build, -b build, also call ./configure && make distcheck
|
||||||
--all, -a same as -b, but make target all
|
--all, -a same as -b, but make target all
|
||||||
|
--install, -i same as -a, but add make install
|
||||||
--clean same as -b, but make target maintainer-clean
|
--clean same as -b, but make target maintainer-clean
|
||||||
--target, -t <target> same as -b, but specify target instead of distcheck
|
--target, -t <target> same as -b, but specify target instead of distcheck
|
||||||
--overwrite, -o overwrite all basic files (bootstrap.sh, m4-macros)
|
--overwrite, -o overwrite all basic files (bootstrap.sh, m4-macros)
|
||||||
@@ -86,7 +88,7 @@ DESCRIPTION
|
|||||||
${DEFAULT_PROJECT_NAME} as the project name for your project in
|
${DEFAULT_PROJECT_NAME} as the project name for your project in
|
||||||
${PROJECT_PATH}. In the first run, you should call ${MY_NAME} from a
|
${PROJECT_PATH}. In the first run, you should call ${MY_NAME} from a
|
||||||
checked out the bootstrap-build-environment from
|
checked out the bootstrap-build-environment from
|
||||||
https://dev.marc.waeckerlin.org/, and the path from where you call
|
https://mrw.sh/, and the path from where you call
|
||||||
${MY_NAME} (which is actually ${PROJECT_PATH}) should be the path to
|
${MY_NAME} (which is actually ${PROJECT_PATH}) should be the path to
|
||||||
your newly created project. Please note that your project must be a
|
your newly created project. Please note that your project must be a
|
||||||
checked out subversion or git repository, since this build
|
checked out subversion or git repository, since this build
|
||||||
@@ -96,7 +98,7 @@ DESCRIPTION
|
|||||||
subversion on https:/path/to/your/new-project:
|
subversion on https:/path/to/your/new-project:
|
||||||
|
|
||||||
cd ~/svn
|
cd ~/svn
|
||||||
svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\
|
svn co https://svn.mrw.sh/bootstrap-build-environment/trunk \\
|
||||||
bootstrap-build-environment
|
bootstrap-build-environment
|
||||||
svn co https:/path/to/your/new-project/trunk new-project
|
svn co https:/path/to/your/new-project/trunk new-project
|
||||||
cd new-project
|
cd new-project
|
||||||
@@ -106,7 +108,7 @@ DESCRIPTION
|
|||||||
git on https:/path/to/your/new-project:
|
git on https:/path/to/your/new-project:
|
||||||
|
|
||||||
cd ~/svn
|
cd ~/svn
|
||||||
svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\
|
svn co https://svn.mrw.sh/bootstrap-build-environment/trunk \\
|
||||||
bootstrap-build-environment
|
bootstrap-build-environment
|
||||||
cd ~/git
|
cd ~/git
|
||||||
git clone https:/path/to/your/new-project
|
git clone https:/path/to/your/new-project
|
||||||
@@ -138,10 +140,12 @@ GENERATED FILES
|
|||||||
* build-resource-file.sh - build resource.qrc file from a resource directory
|
* 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
|
* 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
|
* mac-create-app-bundle.sh - script to create apple mac os-x app-bundle
|
||||||
|
* dependency-graph.sh - script to draw project dependencies
|
||||||
|
* template.sh - generic template for bash scripts
|
||||||
* test/runtests.sh - template file to run test scripts, i.e. docker based
|
* test/runtests.sh - template file to run test scripts, i.e. docker based
|
||||||
* AUTHORS - replace your name in AUTHORS before first run
|
* AUTHORS - replace your name in AUTHORS before first run
|
||||||
* NEWS - empty file add your project's news
|
* NEWS - empty file add your project's news
|
||||||
* README - add project description (first line is header, followed by an empty line)
|
* README (or README.md) - add project description (first line: header, followed by empty line)
|
||||||
* configure.ac - global configuration file template
|
* configure.ac - global configuration file template
|
||||||
* makefile.am - global makefile template
|
* makefile.am - global makefile template
|
||||||
* ${DEFAULT_PROJECT_NAME}.desktop.in - linux desktop file
|
* ${DEFAULT_PROJECT_NAME}.desktop.in - linux desktop file
|
||||||
@@ -300,26 +304,110 @@ EOF
|
|||||||
shift;
|
shift;
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -en "\e[1m-> checking:\e[0m for version control system ..."
|
# check if stdout is a terminal...
|
||||||
|
if test -t 1; then
|
||||||
|
|
||||||
|
# see if it supports colors...
|
||||||
|
ncolors=$(tput colors)
|
||||||
|
|
||||||
|
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||||
|
bold="$(tput bold)"
|
||||||
|
underline="$(tput smul)"
|
||||||
|
standout="$(tput smso)"
|
||||||
|
normal="$(tput sgr0)"
|
||||||
|
black="$(tput setaf 0)"
|
||||||
|
red="$(tput setaf 1)"
|
||||||
|
green="$(tput setaf 2)"
|
||||||
|
yellow="$(tput setaf 3)"
|
||||||
|
blue="$(tput setaf 4)"
|
||||||
|
magenta="$(tput setaf 5)"
|
||||||
|
cyan="$(tput setaf 6)"
|
||||||
|
white="$(tput setaf 7)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
notice() {
|
||||||
|
echo "${yellow}→ notice: ${bold}$*${normal}"
|
||||||
|
}
|
||||||
|
|
||||||
|
running() {
|
||||||
|
echo -n "${bold}${blue}→ running: ${bold}${white}$*${normal} … "
|
||||||
|
}
|
||||||
|
|
||||||
|
checking() {
|
||||||
|
echo -n "${bold}${blue}→ checking: ${bold}${white}$*${normal} … "
|
||||||
|
}
|
||||||
|
|
||||||
|
generating() {
|
||||||
|
echo -n "${bold}${blue}→ generating: ${bold}${white}$*${normal} … "
|
||||||
|
}
|
||||||
|
|
||||||
|
configuring() {
|
||||||
|
echo -n "${bold}${blue}→ configuring ${bold}${white}$1${normal}:"
|
||||||
|
shift
|
||||||
|
echo -n "${white}$*${normal} … "
|
||||||
|
}
|
||||||
|
|
||||||
|
ignored() {
|
||||||
|
echo "${bold}${yellow}ignored $*${normal}"
|
||||||
|
}
|
||||||
|
|
||||||
|
success() {
|
||||||
|
echo "${bold}${green}success $*${normal}"
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo "${bold}${red}→ error: $1${normal}"
|
||||||
|
shift
|
||||||
|
if test -n "$*"; then
|
||||||
|
echo "${bold}$*${normal}"
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
run() {
|
||||||
|
check=1
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(--no-check) check=0;;
|
||||||
|
(*) break;;
|
||||||
|
esac
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
running $*
|
||||||
|
result=$($* 2>&1)
|
||||||
|
res=$?
|
||||||
|
if test $res -ne 0; then
|
||||||
|
if test $check -eq 1; then
|
||||||
|
error "Failed with return code: $res" "$result"
|
||||||
|
else
|
||||||
|
ignored
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
success
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checking for version control system
|
||||||
VCS=""
|
VCS=""
|
||||||
VCSDEPENDS=""
|
VCSDEPENDS=""
|
||||||
for path in . .. ../.. ../../..; do
|
for path in . .. ../.. ../../..; do
|
||||||
if test -d ${path}/.svn; then
|
if test -d ${path}/.svn; then
|
||||||
VCS="svn"
|
VCS="svn"
|
||||||
VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
|
VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
|
||||||
VCSDEPENDS_RPM="subversion,"
|
VCSDEPENDS_RPM="subversion, "
|
||||||
echo -e " \e[32msuccess\e[0m detected ${VCS}"
|
success detected ${VCS}
|
||||||
break
|
break
|
||||||
elif test -d ${path}/.git; then
|
elif test -d ${path}/.git; then
|
||||||
VCS="git"
|
VCS="git"
|
||||||
VCSDEPENDS_DEB="git2cl, git,"
|
VCSDEPENDS_DEB="git2cl, git,"
|
||||||
VCSDEPENDS_RPM="git,"
|
VCSDEPENDS_RPM="git, "
|
||||||
echo -e " \e[32msuccess\e[0m detected ${VCS}"
|
success detected ${VCS}
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if test -z "$VCS"; then
|
if test -z "$VCS"; then
|
||||||
echo -e " \e[33mignored\e[0m"
|
ignored
|
||||||
fi
|
fi
|
||||||
|
|
||||||
HEADER='## @id '"\$Id\$"'
|
HEADER='## @id '"\$Id\$"'
|
||||||
@@ -347,38 +435,6 @@ CHEADER='/** @id '"\$Id\$"'
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
notice() {
|
|
||||||
echo -e "\e[1;33m$*\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
run() {
|
|
||||||
check=1
|
|
||||||
while test $# -gt 0; do
|
|
||||||
case "$1" in
|
|
||||||
(--no-check) check=0;;
|
|
||||||
(*) break;;
|
|
||||||
esac
|
|
||||||
shift;
|
|
||||||
done
|
|
||||||
echo -en "\e[1m-> running:\e[0m $* ..."
|
|
||||||
result=$($* 2>&1)
|
|
||||||
res=$?
|
|
||||||
if test $res -ne 0; then
|
|
||||||
if test $check -eq 1; then
|
|
||||||
echo -e " \e[31merror\e[0m"
|
|
||||||
echo -e "\e[1m*** Failed with return code: $res\e[0m"
|
|
||||||
if test -n "$result"; then
|
|
||||||
echo "$result"
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo -e " \e[33mignored\e[0m"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -e " \e[32msuccess\e[0m"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
testtag() {
|
testtag() {
|
||||||
local IFS="|"
|
local IFS="|"
|
||||||
egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac
|
egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac
|
||||||
@@ -431,18 +487,13 @@ to() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
checkdir "$(dirname ${1})"
|
checkdir "$(dirname ${1})"
|
||||||
echo -en "\e[1m-> generating:\e[0m $1 ..."
|
generating $1
|
||||||
result=$(cat > "$1" 2>&1)
|
result=$(cat > "$1" 2>&1)
|
||||||
res=$?
|
res=$?
|
||||||
if test $res -ne 0; then
|
if test $res -ne 0; then
|
||||||
echo -e " \e[31merror\e[0m"
|
error "Failed with return code: $res" "$result"
|
||||||
echo -e "\e[1m*** Failed with return code: $res\e[0m"
|
|
||||||
if test -n "$result"; then
|
|
||||||
echo "$result"
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
else
|
else
|
||||||
echo -e " \e[32msuccess\e[0m"
|
success
|
||||||
fi
|
fi
|
||||||
run chmod $mode $1
|
run chmod $mode $1
|
||||||
if test $exists -eq 0; then
|
if test $exists -eq 0; then
|
||||||
@@ -484,24 +535,20 @@ copy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
doxyreplace() {
|
doxyreplace() {
|
||||||
echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
|
configuring doxyfile $1
|
||||||
if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then
|
if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then
|
||||||
echo -e " \e[32msuccess\e[0m"
|
success
|
||||||
else
|
else
|
||||||
echo -e " \e[31merror\e[0m"
|
error $0 $*
|
||||||
echo -e "\e[1m**** command: $0 $*\e[0m"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
doxyadd() {
|
doxyadd() {
|
||||||
echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
|
configuring doxyfile $1
|
||||||
if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then
|
if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then
|
||||||
echo -e " \e[32msuccess\e[0m"
|
success
|
||||||
else
|
else
|
||||||
echo -e " \e[31merror\e[0m"
|
error $0 $*
|
||||||
echo -e "\e[1m**** command: $0 $*\e[0m"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,13 +559,18 @@ vcs2cl() {
|
|||||||
else
|
else
|
||||||
touch "ChangeLog"
|
touch "ChangeLog"
|
||||||
fi
|
fi
|
||||||
|
if test -x $(which timeout); then
|
||||||
|
local TIMEOUT="timeout 10"
|
||||||
|
else
|
||||||
|
local TIMEOUT=
|
||||||
|
fi
|
||||||
if test -x $(which ${VCS}2cl); then
|
if test -x $(which ${VCS}2cl); then
|
||||||
if test "${VCS}" = "git"; then
|
if test "${VCS}" = "git"; then
|
||||||
${VCS}2cl > ChangeLog
|
$TIMEOUT ${VCS}2cl || true > ChangeLog
|
||||||
elif test "${VCS}" = "svn"; then
|
elif test "${VCS}" = "svn"; then
|
||||||
${VCS}2cl --break-before-msg -a -i
|
$TIMEOUT ${VCS}2cl --break-before-msg -a -i || true
|
||||||
elif test -n "${VCS}"; then
|
elif test -n "${VCS}"; then
|
||||||
${VCS}2cl
|
$TIMEOUT ${VCS}2cl || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if test $exists -eq 0; then
|
if test $exists -eq 0; then
|
||||||
@@ -549,6 +601,8 @@ copy rpmsign.exp
|
|||||||
copy build-resource-file.sh
|
copy build-resource-file.sh
|
||||||
copy sql-to-dot.sed
|
copy sql-to-dot.sed
|
||||||
copy mac-create-app-bundle.sh
|
copy mac-create-app-bundle.sh
|
||||||
|
copy dependency-graph.sh
|
||||||
|
copy template.sh
|
||||||
AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1)
|
AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1)
|
||||||
if test -z "${AUTHOR}"; then
|
if test -z "${AUTHOR}"; then
|
||||||
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
|
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
|
||||||
@@ -559,11 +613,18 @@ EOF
|
|||||||
to NEWS <<EOF && notice "please edit NEWS"
|
to NEWS <<EOF && notice "please edit NEWS"
|
||||||
$(date) created ${DEFAULT_PROJECT_NAME}
|
$(date) created ${DEFAULT_PROJECT_NAME}
|
||||||
EOF
|
EOF
|
||||||
to README <<EOF && notice "please edit README"
|
if test -e README.md; then
|
||||||
|
README=README.md
|
||||||
|
else
|
||||||
|
README=README
|
||||||
|
to README <<EOF && notice "please edit README"
|
||||||
|
|
||||||
${DEFAULT_PROJECT_NAME}
|
${DEFAULT_PROJECT_NAME}
|
||||||
|
|
||||||
add description for ${DEFAULT_PROJECT_NAME}
|
add description for ${DEFAULT_PROJECT_NAME}
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
|
DESCRIPTION=$(head -1 $README | sed 's,^#\+ *,,;s, *#\+$,,')
|
||||||
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0
|
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0
|
||||||
${HEADER}# default is generated from AUTHORS and project name
|
${HEADER}# default is generated from AUTHORS and project name
|
||||||
PROJECT_URL=
|
PROJECT_URL=
|
||||||
@@ -1031,24 +1092,25 @@ to --condition AX_USE_NODEJS nodejs/etc/${PACKAGE_NAME}.json <<EOF
|
|||||||
"foo": ["sha256", "fcde2b2edxx56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"]
|
"foo": ["sha256", "fcde2b2edxx56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"]
|
||||||
},
|
},
|
||||||
"ldap": {
|
"ldap": {
|
||||||
"url": "ldap://dev.marc.waeckerlin.org",
|
"url": "ldap://your.ldap.host",
|
||||||
"adminDn": "cn=tmp,ou=system,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org",
|
"adminDn": "cn=tmp,ou=system,ou=people,dc=your,dc=ldap,dc=host",
|
||||||
"adminPassword": "secret",
|
"adminPassword": "secret",
|
||||||
"searchBase": "ou=person,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org",
|
"searchBase": "ou=person,ou=people,dc=your,dc=ldap,dc=host",
|
||||||
"searchFilter": "(uid={{username}})"
|
"searchFilter": "(uid={{username}})"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
PACKAGE_NAME_UPPER=$(echo ${PACKAGE_NAME} | tr '+[:lower:]' 'X[:upper:]' | tr -cd '[[:alnum:]]._-')
|
||||||
to --condition AX_USE_NODEJS nodejs/etc/default/${PACKAGE_NAME} <<EOF
|
to --condition AX_USE_NODEJS nodejs/etc/default/${PACKAGE_NAME} <<EOF
|
||||||
#EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
|
#EXEC_${PACKAGE_NAME_UPPER}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
|
||||||
#${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME^^}.log"
|
#${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
|
||||||
#${PACKAGE_NAME^^}="${PACKAGE_NAME}"
|
#${PACKAGE_NAME_UPPER}="${PACKAGE_NAME}"
|
||||||
#${PACKAGE_NAME^^}_PORT="8888"
|
#${PACKAGE_NAME_UPPER}_PORT="8888"
|
||||||
EOF
|
EOF
|
||||||
to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF
|
to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF
|
||||||
#!upstart
|
#!upstart
|
||||||
description "$(head -1 README)"
|
description "$DESCRIPTION"
|
||||||
author "$(head -1 AUTHORS)"
|
author "$(head -1 AUTHORS)"
|
||||||
|
|
||||||
start on (local-filesystems and net-device-up)
|
start on (local-filesystems and net-device-up)
|
||||||
@@ -1060,35 +1122,35 @@ script
|
|||||||
echo \$\$ > /var/run/${PACKAGE_NAME}.pid
|
echo \$\$ > /var/run/${PACKAGE_NAME}.pid
|
||||||
# there are some useful defaults
|
# there are some useful defaults
|
||||||
# do not edit this file, overwrite values in /etc/default/${PACKAGE_NAME}
|
# do not edit this file, overwrite values in /etc/default/${PACKAGE_NAME}
|
||||||
EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
|
EXEC_${PACKAGE_NAME_UPPER}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
|
||||||
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
|
${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
|
||||||
${PACKAGE_NAME^^}_USER="${PACKAGE_NAME}"
|
${PACKAGE_NAME_UPPER}_USER="${PACKAGE_NAME}"
|
||||||
${PACKAGE_NAME^^}_PORT=""
|
${PACKAGE_NAME_UPPER}_PORT=""
|
||||||
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
||||||
if test -n "\${${PACKAGE_NAME^^}_USER}"; then
|
if test -n "\${${PACKAGE_NAME_UPPER}_USER}"; then
|
||||||
exec sudo -u "\${${PACKAGE_NAME^^}_USER}" \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
|
exec sudo -u "\${${PACKAGE_NAME_UPPER}_USER}" \${EXEC_${PACKAGE_NAME_UPPER}} \${${PACKAGE_NAME_UPPER}_PORT} >> \${${PACKAGE_NAME_UPPER}_LOG} 2>&1
|
||||||
else
|
else
|
||||||
exec \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
|
exec \${EXEC_${PACKAGE_NAME_UPPER}} \${${PACKAGE_NAME_UPPER}_PORT} >> \${${PACKAGE_NAME_UPPER}_LOG} 2>&1
|
||||||
fi
|
fi
|
||||||
end script
|
end script
|
||||||
|
|
||||||
pre-start script
|
pre-start script
|
||||||
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
|
${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
|
||||||
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
||||||
# Date format same as (new Date()).toISOString() for consistency
|
# Date format same as (new Date()).toISOString() for consistency
|
||||||
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME^^}_LOG}
|
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME_UPPER}_LOG}
|
||||||
end script
|
end script
|
||||||
|
|
||||||
pre-stop script
|
pre-stop script
|
||||||
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
|
${PACKAGE_NAME_UPPER}_LOG="/var/log/${PACKAGE_NAME}.log"
|
||||||
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
|
||||||
rm /var/run/${PACKAGE_NAME}.pid
|
rm /var/run/${PACKAGE_NAME}.pid
|
||||||
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME^^}_LOG}
|
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME_UPPER}_LOG}
|
||||||
end script
|
end script
|
||||||
EOF
|
EOF
|
||||||
to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF
|
to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=$(head -1 README)
|
Description=$DESCRIPTION
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}
|
ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}
|
||||||
@@ -1216,11 +1278,11 @@ to --condition AX_USE_NODEJS nodejs/views/index.ejs <<EOF
|
|||||||
<link href="stylesheets/style.css" rel="stylesheet" type="text/css" />
|
<link href="stylesheets/style.css" rel="stylesheet" type="text/css" />
|
||||||
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
|
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
|
||||||
<script type="text/javascript" src="javascripts/${PACKAGE_NAME}.js"></script>
|
<script type="text/javascript" src="javascripts/${PACKAGE_NAME}.js"></script>
|
||||||
<title>$(head -1 README)</title>
|
<title>$DESCRIPTION</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1>$(head -1 README)</h1>
|
<h1>$DESCRIPTION</h1>
|
||||||
<p>generated by bootstrap, please edit</p>
|
<p>generated by bootstrap, please edit</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1290,6 +1352,9 @@ ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
|
|||||||
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
|
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
|
||||||
LDADD = -l${PACKAGE_NAME#lib}
|
LDADD = -l${PACKAGE_NAME#lib}
|
||||||
|
|
||||||
|
exampledir = ${docdir}/examples
|
||||||
|
example_DATA =
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
MAINTAINERCLEANFILES = makefile.in
|
||||||
EOF
|
EOF
|
||||||
to --condition AX_BUILD_HTML_NPM html/package.json.in <<EOF
|
to --condition AX_BUILD_HTML_NPM html/package.json.in <<EOF
|
||||||
@@ -1568,7 +1633,7 @@ EOF2
|
|||||||
EOF
|
EOF
|
||||||
to debian/docs <<EOF
|
to debian/docs <<EOF
|
||||||
NEWS
|
NEWS
|
||||||
README
|
$README
|
||||||
EOF
|
EOF
|
||||||
to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF
|
to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF
|
||||||
usr/lib/lib*.so.*
|
usr/lib/lib*.so.*
|
||||||
@@ -1603,7 +1668,7 @@ to --condition AX_USE_RPM_PACKAGING ${PACKAGE_NAME}.spec.in <<EOF
|
|||||||
Summary: @DESCRIPTION@
|
Summary: @DESCRIPTION@
|
||||||
Name: @PACKAGE_NAME@
|
Name: @PACKAGE_NAME@
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Release: @BUILD_NUMBER@%{?dist}
|
Release: @BUILD_NUMBER@.@DISTRO@
|
||||||
License: LGPL
|
License: LGPL
|
||||||
Group: $(if testtag AX_USE_LIBTOOL; then
|
Group: $(if testtag AX_USE_LIBTOOL; then
|
||||||
echo Development/Libraries/C++;
|
echo Development/Libraries/C++;
|
||||||
@@ -1613,62 +1678,54 @@ fi)
|
|||||||
$(if testtag AX_RPM_DEPEND; then echo "Requires: @RPM_DEPEND@"; fi)
|
$(if testtag AX_RPM_DEPEND; then echo "Requires: @RPM_DEPEND@"; fi)
|
||||||
Source0: %{name}-%{version}.tar.gz
|
Source0: %{name}-%{version}.tar.gz
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
BuildRequires: gnupg, expect, ${VCSDEPENDS_RPM} make, automake, autoconf, rpm-build$(
|
BuildRequires: which, pkgconfig, pandoc, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, autoconf, rpm-build$(
|
||||||
if testtag AX_USE_CXX; then
|
if testtag AX_USE_CXX; then
|
||||||
echo -n ", binutils-devel, gcc-c++"
|
echo -n ", binutils-devel, gcc-c++"
|
||||||
fi
|
fi
|
||||||
if testtag AX_USE_LIBTOOL; then
|
if testtag AX_USE_CPPUNIT; then
|
||||||
echo -n ", libtool";
|
echo -n ", cppunit-devel"
|
||||||
fi
|
fi
|
||||||
if testtag AX_USE_DOXYGEN; then
|
if testtag AX_USE_DOXYGEN; then
|
||||||
echo -n ", doxygen, java-openjdk";
|
echo -n ", doxygen, graphviz, java-openjdk";
|
||||||
fi
|
fi
|
||||||
if testtag AX_USE_PERLDOC; then
|
if testtag AX_USE_PERLDOC; then
|
||||||
echo -n ", libpod-tree-perl";
|
echo -n ", libpod-tree-perl";
|
||||||
fi
|
fi
|
||||||
) @RPM_BUILD_DEPEND@ @RPM_DEPEND_IFEXISTS@
|
) @RPM_BUILD_DEPEND@ @RPM_DEPEND_IFEXISTS@
|
||||||
%if 0%{?fedora} != 20
|
|
||||||
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi)
|
#### os dependent definitions ####
|
||||||
%endif
|
%if 0%{?suse_version} || 0%{?sles_version}
|
||||||
%if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} || 0%{?mageia}
|
BuildRequires: lsb-release$(
|
||||||
BuildRequires: which, pkgconfig$(
|
if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT; then
|
||||||
if testtag AX_USE_LIBTOOL; then
|
echo -n ", libqt5-qtbase-devel, libqt5-qttools, libqt5-linguist-devel, libQt5WebKit5-devel libqt5-qtwebengine-devel libQt5WebKitWidgets-devel";
|
||||||
echo -n ", cppunit-devel"
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
%if 0%{?rhel} > 6 || 0%{?rhl} > 6 || 0%{?centos} > 6 || 0%{?fedora} || 0%{?mageia}
|
|
||||||
BuildRequires: rpm-sign
|
|
||||||
%endif
|
|
||||||
%if 0%{?mageia}
|
|
||||||
BuildRequires: gnupg, lsb-release$(
|
|
||||||
if testtag AX_USE_LIBTOOL; then
|
|
||||||
echo -n ", libltdl-devel"
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
%else
|
|
||||||
BuildRequires: gpg, redhat-lsb$(
|
|
||||||
if testtag AX_USE_LIBTOOL; then
|
|
||||||
echo -n ", libtool-ltdl-devel"
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
%endif
|
|
||||||
%if ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} )
|
|
||||||
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: mscgen"; fi)
|
|
||||||
$(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools, qt5-qtwebkit-devel"; fi)
|
|
||||||
%else
|
|
||||||
$(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt-devel"; fi)
|
|
||||||
%endif
|
|
||||||
%else%if 0%{?suse_version} || 0%{?sles_version}
|
|
||||||
BuildRequires: pkg-config, lsb-release$(
|
|
||||||
if testtag AX_USE_CPPUNIT; then
|
|
||||||
echo -n ", libcppunit-devel";
|
|
||||||
fi)
|
fi)
|
||||||
%if 0%{?suse_version} < 1200 || 0%{?sles_version} < 1200
|
|
||||||
$(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt4-devel, qt4-x11-tools, libQtWebKit-devel"; fi)
|
|
||||||
%else
|
%else
|
||||||
$(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt5-qtbase-devel, libqt5-qttools, libQt5WebKit5-devel"; fi)
|
$(
|
||||||
|
if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT; then
|
||||||
|
echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools-devel, qt5-qtwebkit-devel";
|
||||||
|
fi)
|
||||||
|
%if 0%{?mageia}
|
||||||
|
BuildRequires: rpm-sign, lsb-release
|
||||||
|
%else
|
||||||
|
BuildRequires: rpm-sign, redhat-lsb
|
||||||
|
%global debug_package %{nil}
|
||||||
%endif
|
%endif
|
||||||
%endif%endif
|
%endif
|
||||||
|
$(
|
||||||
|
if testtag AX_USE_DOXYGEN; then cat <<EOS
|
||||||
|
%if ! 0%{?centos}
|
||||||
|
BuildRequires: mscgen
|
||||||
|
%endif
|
||||||
|
EOS
|
||||||
|
fi
|
||||||
|
if testtag AX_USE_LIBTOOL; then cat <<EOS
|
||||||
|
%if 0%{?mageia}
|
||||||
|
BuildRequires: libtool, libltdl-devel
|
||||||
|
%else
|
||||||
|
BuildRequires: libtool, libtool-ltdl-devel
|
||||||
|
%endif
|
||||||
|
EOS
|
||||||
|
fi)
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@README@
|
@README@
|
||||||
@@ -1701,25 +1758,20 @@ rm -rf \$RPM_BUILD_ROOT
|
|||||||
$(if testtag AX_USE_LIBTOOL; then
|
$(if testtag AX_USE_LIBTOOL; then
|
||||||
echo '/usr/%_lib/*.so.*'
|
echo '/usr/%_lib/*.so.*'
|
||||||
else
|
else
|
||||||
echo '/usr/bin/*'
|
echo '/usr/bin'
|
||||||
echo '/usr/share/applications/*'
|
echo '/usr/share/applications'
|
||||||
fi)
|
fi)
|
||||||
$(if testtag AX_USE_NODEJS AX_BUILD_HTML AX_BUILD_HTML_NPM; then
|
/usr/share/@PACKAGE_NAME@
|
||||||
echo '/usr/share/@PACKAGE_NAME@'
|
$(if testtag AX_USE_ETC; then
|
||||||
|
|
||||||
|
cat <<EOF2
|
||||||
|
%config
|
||||||
|
/etc/*
|
||||||
|
|
||||||
|
EOF2
|
||||||
fi)
|
fi)
|
||||||
%doc
|
%doc
|
||||||
$(if testtag AX_USE_LIBTOOL; then
|
/usr/share/doc
|
||||||
cat <<EOF2
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/AUTHORS
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/COPYING
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/ChangeLog
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/INSTALL
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/NEWS
|
|
||||||
/usr/share/doc/packages/@PACKAGE_NAME@/README
|
|
||||||
EOF2
|
|
||||||
else
|
|
||||||
echo '/usr/share'
|
|
||||||
fi)
|
|
||||||
|
|
||||||
$(if testtag AX_USE_LIBTOOL; then
|
$(if testtag AX_USE_LIBTOOL; then
|
||||||
cat <<EOF2
|
cat <<EOF2
|
||||||
@@ -1789,7 +1841,18 @@ $(case "$VCS" in
|
|||||||
esac)
|
esac)
|
||||||
fi
|
fi
|
||||||
aclocal
|
aclocal
|
||||||
$(if testtag AX_USE_LIBTOOL; then echo libtoolize --force; fi)
|
$(if testtag AX_USE_LIBTOOL; then
|
||||||
|
cat <<EOF1
|
||||||
|
if which libtoolize > /dev/null; then
|
||||||
|
run libtoolize --force;
|
||||||
|
elif which glibtoolize > /dev/null; then
|
||||||
|
run glibtoolize --force;
|
||||||
|
else
|
||||||
|
echo "error: libtoolize not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
EOF1
|
||||||
|
fi)
|
||||||
automake -a
|
automake -a
|
||||||
autoconf
|
autoconf
|
||||||
EOF
|
EOF
|
||||||
@@ -1798,15 +1861,24 @@ ${HEADER}SUBDIRS =${SUBDIRS}
|
|||||||
|
|
||||||
desktopdir = \${datadir}/applications
|
desktopdir = \${datadir}/applications
|
||||||
desktop_DATA = @PACKAGE_DESKTOP@
|
desktop_DATA = @PACKAGE_DESKTOP@
|
||||||
dist_pkgdata_DATA = @PACKAGE_ICON@ ax_check_qt.m4 bootstrap.sh \\
|
dist_pkgdata_DATA = @PACKAGE_ICON@
|
||||||
resolve-rpmbuilddeps.sh autogen.sh \\
|
dist_noinst_DATA = ax_check_qt.m4 bootstrap.sh \\
|
||||||
|
resolve-rpmbuilddeps.sh autogen.sh \\
|
||||||
ax_cxx_compile_stdcxx_11.m4 build-in-docker.sh \\
|
ax_cxx_compile_stdcxx_11.m4 build-in-docker.sh \\
|
||||||
build-resource-file.sh \\
|
build-resource-file.sh \\
|
||||||
ax_init_standard_project.m4 \\
|
ax_init_standard_project.m4 \\
|
||||||
mac-create-app-bundle.sh resolve-debbuilddeps.sh \\
|
mac-create-app-bundle.sh resolve-debbuilddeps.sh \\
|
||||||
|
dependency-graph.sh template.sh \\
|
||||||
sql-to-dot.sed
|
sql-to-dot.sed
|
||||||
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
dist_doc_DATA = AUTHORS NEWS $README COPYING INSTALL ChangeLog
|
||||||
|
$(if test -e README.md -a ! -e README; then
|
||||||
|
cat <<EOF2
|
||||||
|
|
||||||
|
README: README.md
|
||||||
|
|
||||||
|
CLEANFILES = README
|
||||||
|
EOF2
|
||||||
|
fi)
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
MAINTAINERCLEANFILES = makefile.in
|
||||||
EOF
|
EOF
|
||||||
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF
|
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF
|
||||||
@@ -1825,39 +1897,49 @@ Requires: @PKG_REQUIREMENTS@
|
|||||||
EOF
|
EOF
|
||||||
to build-in-docker.conf <<EOF
|
to build-in-docker.conf <<EOF
|
||||||
${HEADER}# Use Ubuntu Universe Repository
|
${HEADER}# Use Ubuntu Universe Repository
|
||||||
repos+=("Ubuntu:::universe")
|
repos+=("ubuntu:::universe")
|
||||||
|
|
||||||
# Use Marc Wäckerlin's Repository, see https://dev.marc.waeckerlin.org
|
# Use Marc Wäckerlin's Repository, see https://repository.mrw.sh
|
||||||
repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository")
|
repos+=("debian|ubuntu:::https://repository.mrw.sh:::https://repository.mrw.sh/@DISTRIBUTOR@/marc-waeckerlin.repo")
|
||||||
repos+=("openSUSE:::https://dev.marc.waeckerlin.org/repository/opensuse/marc-waeckerlin.repo")
|
keys+=("https://repository.mrw.sh/PublicKey")
|
||||||
repos+=("Fedora:::https://dev.marc.waeckerlin.org/repository/fedora/marc-waeckerlin.repo")
|
|
||||||
repos+=("CentOS:::https://dev.marc.waeckerlin.org/repository/centos/marc-waeckerlin.repo")
|
# centos requires epel-release for some packages, such as Qt WebKit
|
||||||
keys+=("https://dev.marc.waeckerlin.org/repository/PublicKey")
|
packages+=("centos:::epel-release")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
#### Cleanup If Makefile Exists ####
|
#### Cleanup If Makefile Exists ####
|
||||||
if test -f makefile; then
|
if test -f makefile; then
|
||||||
run --no-check make distclean
|
run --no-check make maintainer-clean
|
||||||
fi
|
|
||||||
|
|
||||||
#### Bootstrap Before Configure ####
|
|
||||||
run --no-check vcs2cl
|
|
||||||
run aclocal
|
|
||||||
if testtag AX_USE_LIBTOOL; then run libtoolize --force; fi
|
|
||||||
run automake -a
|
|
||||||
run autoconf
|
|
||||||
|
|
||||||
#### Run Configure If User Requires ####
|
|
||||||
if test "$configure" -eq 1; then
|
|
||||||
./configure $* || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
#### Run Make If User Requires ####
|
|
||||||
if test "$build" -eq 1; then
|
|
||||||
make $buildtarget || exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#### Build In Docker If User Requires ####
|
#### Build In Docker If User Requires ####
|
||||||
if test "$docker" -eq 1; then
|
if test "$docker" -eq 1; then
|
||||||
./build-in-docker.sh || exit 1
|
./build-in-docker.sh $buildtarget $* || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
#### Bootstrap Before Configure ####
|
||||||
|
run --no-check vcs2cl
|
||||||
|
run aclocal
|
||||||
|
if testtag AX_USE_LIBTOOL; then
|
||||||
|
if which libtoolize > /dev/null; then
|
||||||
|
run libtoolize --force;
|
||||||
|
elif which glibtoolize > /dev/null; then
|
||||||
|
run glibtoolize --force;
|
||||||
|
else
|
||||||
|
error libtoolize not found
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
run automake -a
|
||||||
|
run autoconf
|
||||||
|
|
||||||
|
#### Run Configure If User Requires ####
|
||||||
|
if test "$configure" -eq 1; then
|
||||||
|
./configure $* || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#### Run Make If User Requires ####
|
||||||
|
if test "$build" -eq 1; then
|
||||||
|
make $buildtarget || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@@ -7,9 +7,10 @@ if test "${arch}" = "amd64"; then
|
|||||||
myarch="amd64|i386"
|
myarch="amd64|i386"
|
||||||
fi
|
fi
|
||||||
mode="deb"
|
mode="deb"
|
||||||
img="ubuntu:latest"
|
img="mwaeckerlin/ubuntu:latest"
|
||||||
repos=()
|
repos=()
|
||||||
keys=()
|
keys=()
|
||||||
|
dns=()
|
||||||
envs=("-e LANG=${LANG}" "-e HOME=${HOME}" "-e TERM=xterm" "-e DEBIAN_FRONTEND=noninteractive" "-e DEBCONF_NONINTERACTIVE_SEEN=true")
|
envs=("-e LANG=${LANG}" "-e HOME=${HOME}" "-e TERM=xterm" "-e DEBIAN_FRONTEND=noninteractive" "-e DEBCONF_NONINTERACTIVE_SEEN=true")
|
||||||
dirs=("-v $(pwd):/workdir" "-v ${HOME}/.gnupg:${HOME}/.gnupg")
|
dirs=("-v $(pwd):/workdir" "-v ${HOME}/.gnupg:${HOME}/.gnupg")
|
||||||
packages=()
|
packages=()
|
||||||
@@ -41,6 +42,7 @@ while test $# -gt 0; do
|
|||||||
echo " -f, --flag <flag> add flag to ./bootstrap.sh or ./configure"
|
echo " -f, --flag <flag> add flag to ./bootstrap.sh or ./configure"
|
||||||
echo " -r, --repo <url> add given apt repository"
|
echo " -r, --repo <url> add given apt repository"
|
||||||
echo " -k, --key <url> add public key from url"
|
echo " -k, --key <url> add public key from url"
|
||||||
|
echo " -n, --dns <ip> add ip as dns server"
|
||||||
echo " -e, --env <var>=<val> set environment variable in docker"
|
echo " -e, --env <var>=<val> set environment variable in docker"
|
||||||
echo " -d, --dir <dir> access given directory read only"
|
echo " -d, --dir <dir> access given directory read only"
|
||||||
echo " -p, --package <pkg> install extra debian packages"
|
echo " -p, --package <pkg> install extra debian packages"
|
||||||
@@ -73,8 +75,8 @@ while test $# -gt 0; do
|
|||||||
echo " -e ANDROID_HOME=/opt/local/android \\"
|
echo " -e ANDROID_HOME=/opt/local/android \\"
|
||||||
echo " -d /opt/local/android \\"
|
echo " -d /opt/local/android \\"
|
||||||
echo " -r universe \\"
|
echo " -r universe \\"
|
||||||
echo " -r https://dev.marc.waeckerlin.org/repository \\"
|
echo " -r https://repository.mrw.sh \\"
|
||||||
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey \\"
|
echo " -k https://repository.mrw.sh/PublicKey \\"
|
||||||
echo " -p mrw-c++"
|
echo " -p mrw-c++"
|
||||||
echo
|
echo
|
||||||
exit 0
|
exit 0
|
||||||
@@ -82,15 +84,15 @@ while test $# -gt 0; do
|
|||||||
(-m|--mode) shift;
|
(-m|--mode) shift;
|
||||||
mode="$1"
|
mode="$1"
|
||||||
case "$mode" in
|
case "$mode" in
|
||||||
(deb|apt) img="ubuntu:latest";;
|
(deb|apt) img="mwaeckerlin/ubuntu:latest";;
|
||||||
(rpm|zypper) img="opensuse:latest";;
|
(rpm|zypper) img="opensuse:latest";;
|
||||||
(yum) img="centos:latest";;
|
(yum) img="centos:latest";;
|
||||||
(dnf) img="fedora:latest";;
|
(dnf) img="fedora:latest";;
|
||||||
(win)
|
(win)
|
||||||
img="ubuntu:latest"; host="${host:---host=i686-w64-mingw32}"
|
img="mwaeckerlin/ubuntu:latest"; host="${host:---host=i686-w64-mingw32}"
|
||||||
targets="all install"
|
targets="all install"
|
||||||
flags+=("--prefix=/workdir/usr")
|
flags+=("--prefix=/workdir/usr")
|
||||||
packages1=("mingw-w64")
|
packages+=("mingw-w64")
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
echo "**** ERROR: unknown mode '$1', try --help" 1>&2
|
echo "**** ERROR: unknown mode '$1', try --help" 1>&2
|
||||||
@@ -128,6 +130,9 @@ while test $# -gt 0; do
|
|||||||
(-e|--env) shift;
|
(-e|--env) shift;
|
||||||
envs+=("-e $1")
|
envs+=("-e $1")
|
||||||
;;
|
;;
|
||||||
|
(-n|--dns) shift;
|
||||||
|
dns+=("--dns $1")
|
||||||
|
;;
|
||||||
(-d|--dirs) shift;
|
(-d|--dirs) shift;
|
||||||
dirs+=("-v $1:$1:ro")
|
dirs+=("-v $1:$1:ro")
|
||||||
;;
|
;;
|
||||||
@@ -172,7 +177,8 @@ function traperror() {
|
|||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
if [ "$wait" -eq 1 ]; then
|
if [ "$wait" -eq 1 ]; then
|
||||||
echo " ... now you can access the docker container:"
|
echo " ... now you can access the docker container as root or user:"
|
||||||
|
echo " docker exec -it ${DOCKER_ID} bash"
|
||||||
echo " docker exec -u $(id -u) -it ${DOCKER_ID} bash"
|
echo " docker exec -u $(id -u) -it ${DOCKER_ID} bash"
|
||||||
echo -n " ... press enter to cleanup: "
|
echo -n " ... press enter to cleanup: "
|
||||||
read
|
read
|
||||||
@@ -185,13 +191,7 @@ function traperror() {
|
|||||||
exit $e
|
exit $e
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [ "$wait" -eq 1 ]; then
|
echo -n "SUCCESS ... cleanup docker: "
|
||||||
echo " ... now you can access the docker container:"
|
|
||||||
echo " docker exec -u $(id -u) -it ${DOCKER_ID} bash"
|
|
||||||
echo -n " ... press enter to cleanup: "
|
|
||||||
read
|
|
||||||
fi
|
|
||||||
echo -n " SUCCESS ... cleanup docker: "
|
|
||||||
docker rm -f "${DOCKER_ID}"
|
docker rm -f "${DOCKER_ID}"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
@@ -200,21 +200,27 @@ function ifthenelse() {
|
|||||||
arg="$1"
|
arg="$1"
|
||||||
shift
|
shift
|
||||||
cmd="$*"
|
cmd="$*"
|
||||||
|
DISTRIBUTOR=$(docker exec ${DOCKER_ID} lsb_release -si | sed 's, .*,,' | tr [:upper:] [:lower:])
|
||||||
|
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -cs)
|
||||||
|
ARCH=$((docker exec ${DOCKER_ID} which dpkg > /dev/null 2> /dev/null && docker exec ${DOCKER_ID} dpkg --print-architecture) || echo amd64)
|
||||||
if test "${arg/:::/}" = "${arg}"; then
|
if test "${arg/:::/}" = "${arg}"; then
|
||||||
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg}}"
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||||
else
|
else
|
||||||
os="${arg%%:::*}"
|
os="${arg%%:::*}"
|
||||||
thenpart="${arg#*:::}"
|
thenpart="${arg#*:::}"
|
||||||
if test "${thenpart/:::/}" = "${thenpart}"; then
|
elsepart=
|
||||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
|
if test "${thenpart/:::/}" != "${thenpart}"; then
|
||||||
else
|
|
||||||
elsepart="${thenpart##*:::}"
|
elsepart="${thenpart##*:::}"
|
||||||
thenpart="${thenpart%:::*}"
|
thenpart="${thenpart%%:::*}"
|
||||||
|
fi
|
||||||
|
if [[ "${DISTRIBUTOR}-${CODENAME}-${ARCH}" =~ ${os} ]]; then
|
||||||
if test -n "${thenpart}"; then
|
if test -n "${thenpart}"; then
|
||||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${thenpart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||||
else
|
fi
|
||||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
|
else
|
||||||
fi
|
if test -n "${elsepart}"; then
|
||||||
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${elsepart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -222,7 +228,7 @@ function ifthenelse() {
|
|||||||
set -x
|
set -x
|
||||||
|
|
||||||
docker pull $img
|
docker pull $img
|
||||||
DOCKER_ID=$(docker create ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
|
DOCKER_ID=$(docker create ${dns[@]} ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
|
||||||
trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT
|
trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT
|
||||||
if ! [[ $arch =~ $myarch ]]; then
|
if ! [[ $arch =~ $myarch ]]; then
|
||||||
docker cp "/usr/bin/qemu-${arch}-static" "${DOCKER_ID}:/usr/bin/qemu-${arch}-static"
|
docker cp "/usr/bin/qemu-${arch}-static" "${DOCKER_ID}:/usr/bin/qemu-${arch}-static"
|
||||||
@@ -249,16 +255,16 @@ case $mode in
|
|||||||
done
|
done
|
||||||
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
||||||
docker exec ${DOCKER_ID} apt-get upgrade ${OPTIONS}
|
docker exec ${DOCKER_ID} apt-get upgrade ${OPTIONS}
|
||||||
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties software-properties-common apt-transport-https dpkg-dev lsb-release || \
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties software-properties-common apt-transport-https dpkg-dev lsb-release wget || \
|
||||||
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} software-properties-common apt-transport-https dpkg-dev lsb-release || \
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} software-properties-common apt-transport-https dpkg-dev lsb-release wget || \
|
||||||
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties apt-transport-https dpkg-dev lsb-release;
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties apt-transport-https dpkg-dev lsb-release wget;
|
||||||
for repo in "${repos[@]}"; do
|
|
||||||
ifthenelse "${repo}" "apt-add-repository 'ARG'"
|
|
||||||
done
|
|
||||||
for key in "${keys[@]}"; do
|
for key in "${keys[@]}"; do
|
||||||
wget -O- "$key" \
|
wget -O- "$key" \
|
||||||
| docker exec -i ${DOCKER_ID} apt-key add -
|
| docker exec -i ${DOCKER_ID} apt-key add -
|
||||||
done
|
done
|
||||||
|
for repo in "${repos[@]}"; do
|
||||||
|
ifthenelse "${repo}" "apt-add-repository 'ARG'"
|
||||||
|
done
|
||||||
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
||||||
for package in "${packages[@]}"; do
|
for package in "${packages[@]}"; do
|
||||||
ifthenelse "${package}" "apt-get install ${OPTIONS} ARG"
|
ifthenelse "${package}" "apt-get install ${OPTIONS} ARG"
|
||||||
@@ -295,10 +301,16 @@ EOF
|
|||||||
rm rpm-key
|
rm rpm-key
|
||||||
done
|
done
|
||||||
for repo in "${repos[@]}"; do
|
for repo in "${repos[@]}"; do
|
||||||
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo true))
|
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo false))
|
||||||
ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'"
|
ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'"
|
||||||
((++i))
|
((++i))
|
||||||
done
|
done
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
ifthenelse "${package}" "${INSTALL_TOOL} ARG"
|
||||||
|
done
|
||||||
|
for command in "${commands[@]}"; do
|
||||||
|
ifthenelse "${command}" "ARG"
|
||||||
|
done
|
||||||
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh
|
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
171
dependency-graph.sh
Executable file
171
dependency-graph.sh
Executable file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# template for bash scripts
|
||||||
|
|
||||||
|
# internal use only
|
||||||
|
append_msg() {
|
||||||
|
if test $# -ne 0; then
|
||||||
|
echo -en ":\e[0m \e[1m$*"
|
||||||
|
fi
|
||||||
|
echo -e "\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a notice
|
||||||
|
notice() {
|
||||||
|
if test $# -eq 0; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo -e "\e[1m$*\e[0m" 1>&3
|
||||||
|
}
|
||||||
|
|
||||||
|
# write error message
|
||||||
|
error() {
|
||||||
|
echo -en "\e[1;31merror" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a warning message
|
||||||
|
warning() {
|
||||||
|
echo -en "\e[1;33mwarning" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a success message
|
||||||
|
success() {
|
||||||
|
echo -en "\e[1;32msuccess" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# commandline parameter evaluation
|
||||||
|
files=${0%/*}/configure.ac
|
||||||
|
short=0
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(--short|-s) short=1;;
|
||||||
|
(--help|-h) less <<EOF
|
||||||
|
SYNOPSIS
|
||||||
|
|
||||||
|
$0 [OPTIONS] <files>
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
|
||||||
|
--help, -h show this help
|
||||||
|
--short, -s short graph with no external dependencies
|
||||||
|
|
||||||
|
<files> list of zero or more configure.ac files
|
||||||
|
(default: ${files})
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
|
||||||
|
Evaluates dependencies of all the given configure.ac file. By
|
||||||
|
default takes the local configure.ac. Outputs a graphwiz dot file
|
||||||
|
with the dependencies. Solid lines are required dependencies, dotted
|
||||||
|
lines are optional dependencies.
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
|
||||||
|
Evaluate all dependencies between all local subversion and git
|
||||||
|
projects, if they are in the path ~/svn and ~/git:
|
||||||
|
|
||||||
|
$0 ~/svn/*/configure.ac ~/git/*/configure.ac
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit;;
|
||||||
|
(*) files=$*; break;;
|
||||||
|
esac
|
||||||
|
if test $# -eq 0; then
|
||||||
|
error "missing parameter, try $0 --help"; exit 1
|
||||||
|
fi
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
|
||||||
|
# run a command, print the result and abort in case of error
|
||||||
|
# option: --no-check: ignore the result, continue in case of error
|
||||||
|
run() {
|
||||||
|
check=1
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(--no-check) check=0;;
|
||||||
|
(*) break;;
|
||||||
|
esac
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
echo -en "\e[1m-> running:\e[0m $* ..."
|
||||||
|
result=$($* 2>&1)
|
||||||
|
res=$?
|
||||||
|
if test $res -ne 0; then
|
||||||
|
if test $check -eq 1; then
|
||||||
|
error "failed with return code: $res"
|
||||||
|
if test -n "$result"; then
|
||||||
|
echo "$result"
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
warning "ignored return code: $res"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
success
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# error handler
|
||||||
|
function traperror() {
|
||||||
|
set +x
|
||||||
|
local err=($1) # error status
|
||||||
|
local line="$2" # LINENO
|
||||||
|
local linecallfunc="$3"
|
||||||
|
local command="$4"
|
||||||
|
local funcstack="$5"
|
||||||
|
for e in ${err[@]}; do
|
||||||
|
if test -n "$e" -a "$e" != "0"; then
|
||||||
|
error "line $line - command '$command' exited with status: $e (${err[@]})"
|
||||||
|
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
|
||||||
|
echo -n " ... error at ${funcstack} "
|
||||||
|
if [ "$linecallfunc" != "" ]; then
|
||||||
|
echo -n "called at line $linecallfunc"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
exit $e
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
success
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# catch errors
|
||||||
|
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
if test $short -eq 1; then
|
||||||
|
all=$(cat)
|
||||||
|
allowed=$(sed -n '/"\(.*\)" \[style=solid\];/{s//\1/;H};${x;s/\n//;s/\n/\\|/gp}' <<<"${all}")
|
||||||
|
sed -n '/"\('"${allowed}"'\)" -> "\('"${allowed}"'\)"/p' <<<"${all}"
|
||||||
|
else
|
||||||
|
cat
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "digraph G {"
|
||||||
|
if test $short -eq 0; then
|
||||||
|
echo "node [style=dashed];"
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
for file in $files; do
|
||||||
|
if ! test -e $file; then
|
||||||
|
error "file $file not found"; exit 1
|
||||||
|
fi
|
||||||
|
sed -n '
|
||||||
|
/^ *m4_define(x_package_name, */ {s//"/;s/ *).*/"/;h;s/.*/& [style=solid];/p}
|
||||||
|
/^ *AX_REQUIRE_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/&;/p}
|
||||||
|
/^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/&;/p}
|
||||||
|
/^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/&;/p}
|
||||||
|
/^ *AX_CHECK_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/& [style=dashed];/p}
|
||||||
|
/^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
|
||||||
|
/^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
|
||||||
|
' $file
|
||||||
|
done
|
||||||
|
) | filter
|
||||||
|
echo "}"
|
@@ -38,6 +38,7 @@ executablefile=$(ls -1 ${1}/Contents/MacOS/ | head -1)
|
|||||||
! test -d ${3}/share || rmdir ${3}/share
|
! test -d ${3}/share || rmdir ${3}/share
|
||||||
! test -d ${3} || \
|
! test -d ${3} || \
|
||||||
find ${3} -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/Resources/ \;
|
find ${3} -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/Resources/ \;
|
||||||
|
! test -d ${3}/include || rm -r ${3}/include
|
||||||
! test -d ${3} || rmdir ${3}
|
! test -d ${3} || rmdir ${3}
|
||||||
! test -d ${1}/tmp || rm -r ${1}/tmp
|
! test -d ${1}/tmp || rm -r ${1}/tmp
|
||||||
|
|
||||||
|
@@ -26,11 +26,11 @@ module.exports = function(chatserver, keyserver) {
|
|||||||
privateKeys: privkey
|
privateKeys: privkey
|
||||||
}).then(function(ciphertext) {
|
}).then(function(ciphertext) {
|
||||||
openpgp.decrypt({
|
openpgp.decrypt({
|
||||||
message: ciphertext,
|
message: openpgp.message.readArmored(ciphertext.data),
|
||||||
publicKeys: openpgp.key.readArmored(_user.key.pub).keys[0],
|
publicKeys: openpgp.key.readArmored(_user.key.pub).keys[0],
|
||||||
privateKey: privkey
|
privateKey: privkey
|
||||||
}).then(function(plaintext) {
|
}).then(function(plaintext) {
|
||||||
if (data==plaintext) {
|
if (data==plaintext.data) {
|
||||||
success(_user)
|
success(_user)
|
||||||
} else {
|
} else {
|
||||||
fail('local key does not match key on server')
|
fail('local key does not match key on server')
|
||||||
|
@@ -35,13 +35,53 @@ 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})"
|
||||||
|
}
|
||||||
|
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 +97,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
|
||||||
@@ -83,4 +124,10 @@ if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
FILES="$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')"
|
||||||
|
if test -n "${FILES}"; then
|
||||||
|
echo "**** ERROR: Cannot install: " $FILES
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "**** Success: All Dependencies Resolved"
|
echo "**** Success: All Dependencies Resolved"
|
||||||
|
@@ -14,7 +14,7 @@ INSTALL_TOOL=${INSTALL_TOOL:-$((test -x /usr/bin/zypper && echo zypper install -
|
|||||||
SCHROOTNAME="$1"
|
SCHROOTNAME="$1"
|
||||||
PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac)
|
PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac)
|
||||||
|
|
||||||
TRAP_CMD=
|
TRAP_CMD="sleep ${SLEEP:-0};"
|
||||||
DEPS=
|
DEPS=
|
||||||
for f in BUILD BUILDROOT RPMS SPECS SRPMS; do
|
for f in BUILD BUILDROOT RPMS SPECS SRPMS; do
|
||||||
if ! test -d $f; then
|
if ! test -d $f; then
|
||||||
@@ -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
|
||||||
@@ -48,7 +85,7 @@ if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then
|
|||||||
TRAP_CMD+="rm ${PACKAGE_NAME}.spec;"
|
TRAP_CMD+="rm ${PACKAGE_NAME}.spec;"
|
||||||
trap "${TRAP_CMD}" INT TERM EXIT
|
trap "${TRAP_CMD}" INT TERM EXIT
|
||||||
sed 's,@\(\(ALL\|RPM\)_DEPEND_IFEXISTS\|\(ALL\|RPM\)_BUILD_DEPEND\|\(ALL\|RPM\)_DEPEND\)@,,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
|
sed 's,@[^@]*@,dummytext,g' > ${PACKAGE_NAME}.spec
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec)
|
TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec)
|
||||||
@@ -70,5 +107,14 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
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')
|
||||||
|
else
|
||||||
|
FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
|
||||||
|
fi
|
||||||
|
if test -n "${FILES}"; then
|
||||||
|
echo "**** ERROR: Cannot install: " $FILES
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "**** Success: All Dependencies Resolved"
|
echo "**** Success: All Dependencies Resolved"
|
||||||
|
160
template.sh
Executable file
160
template.sh
Executable file
@@ -0,0 +1,160 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
#### template for bash scripts #### START BELOW ##########################################
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
############################################################################ begin logging
|
||||||
|
# check if stdout is a terminal...
|
||||||
|
if test -t 1; then
|
||||||
|
|
||||||
|
# see if it supports colors...
|
||||||
|
ncolors=$(tput colors)
|
||||||
|
|
||||||
|
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||||
|
bold="$(tput bold)"
|
||||||
|
underline="$(tput smul)"
|
||||||
|
standout="$(tput smso)"
|
||||||
|
normal="$(tput sgr0)"
|
||||||
|
black="$(tput setaf 0)"
|
||||||
|
red="$(tput setaf 1)"
|
||||||
|
green="$(tput setaf 2)"
|
||||||
|
yellow="$(tput setaf 3)"
|
||||||
|
blue="$(tput setaf 4)"
|
||||||
|
magenta="$(tput setaf 5)"
|
||||||
|
cyan="$(tput setaf 6)"
|
||||||
|
white="$(tput setaf 7)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
append_msg() {
|
||||||
|
if test $# -ne 0; then
|
||||||
|
echo -n ": ${bold}$*"
|
||||||
|
fi
|
||||||
|
echo "${normal}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a message
|
||||||
|
message() {
|
||||||
|
if test $# -eq 0; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo "${bold}${white}$*${normal}" 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a success message
|
||||||
|
success() {
|
||||||
|
echo -n "${bold}${green}success" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a notice
|
||||||
|
notice() {
|
||||||
|
echo -n "${bold}${yellow}notice" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write a warning message
|
||||||
|
warning() {
|
||||||
|
echo -en "${bold}${red}warning" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# write error message
|
||||||
|
error() {
|
||||||
|
echo -en "${bold}${red}error" 1>&2
|
||||||
|
append_msg $* 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# run a command, print the result and abort in case of error
|
||||||
|
# option: --ignore: ignore the result, continue in case of error
|
||||||
|
run() {
|
||||||
|
ignore=1
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(--ignore) ignore=0;;
|
||||||
|
(*) break;;
|
||||||
|
esac
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
echo -n "${bold}${yellow}running:${white} $*${normal} … "
|
||||||
|
set +e
|
||||||
|
result=$($* 2>&1)
|
||||||
|
res=$?
|
||||||
|
set -e
|
||||||
|
if test $res -ne 0; then
|
||||||
|
if test $ignore -eq 1; then
|
||||||
|
error "failed with return code: $res"
|
||||||
|
if test -n "$result"; then
|
||||||
|
echo "$result"
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
warning "ignored return code: $res"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
success
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
############################################################################ error handler
|
||||||
|
function traperror() {
|
||||||
|
set +x
|
||||||
|
local err=($1) # error status
|
||||||
|
local line="$2" # LINENO
|
||||||
|
local linecallfunc="$3"
|
||||||
|
local command="$4"
|
||||||
|
local funcstack="$5"
|
||||||
|
IFS=" "
|
||||||
|
for e in ${err[@]}; do
|
||||||
|
if test -n "$e" -a "$e" != "0"; then
|
||||||
|
error "line $line - command '$command' exited with status: $e (${err[@]})"
|
||||||
|
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
|
||||||
|
echo -n " ... error at ${funcstack} " 1>&2
|
||||||
|
if [ "$linecallfunc" != "" ]; then
|
||||||
|
echo -n "called at line $linecallfunc" 1>&2
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
exit $e
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
success
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# catch errors
|
||||||
|
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
#### START HERE ##########################################################################
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
######################################################### commandline parameter evaluation
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(--help|-h) less <<EOF
|
||||||
|
SYNOPSIS
|
||||||
|
|
||||||
|
$0 [OPTIONS]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
|
||||||
|
--help, -h show this help
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit;;
|
||||||
|
(*) error "unknow option $1, try $0 --help"; exit 1;;
|
||||||
|
esac
|
||||||
|
if test $# -eq 0; then
|
||||||
|
error "missing parameter, try $0 --help"; exit 1
|
||||||
|
fi
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
|
||||||
|
##################################################################################### Main
|
||||||
|
|
Reference in New Issue
Block a user