From 2954903078d9ba0c1bd88960a9e8306a29463b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Thu, 15 Jun 2017 10:57:17 +0000 Subject: [PATCH] fixed build for rpm and deb --- COPYING | 2 +- ChangeLog | 79 ++++++++ INSTALL | 2 +- ax_check_qt.m4 | 60 ++++-- ax_init_standard_project.m4 | 255 ++++++++++++++++++++++-- bootstrap-build-environment.spec.in | 44 ++--- bootstrap.sh | 295 +++++++++++++++++----------- build-in-docker.sh | 79 ++++---- configure.ac | 19 +- debian/control.in | 6 +- debian/rules | 2 +- doc/doxyfile.in | 24 ++- doc/makefile.am | 2 +- makefile.am | 11 +- resolve-debbuilddeps.sh | 65 +++++- resolve-rpmbuilddeps.sh | 86 +++++++- rpmsign.exp | 14 ++ scripts/ax_check_qt.m4 | 6 +- scripts/ax_init_standard_project.m4 | 2 +- scripts/bootstrap.sh | 23 +-- 20 files changed, 803 insertions(+), 273 deletions(-) mode change 100644 => 100755 debian/rules create mode 100755 rpmsign.exp diff --git a/COPYING b/COPYING index caeca07..2fcb217 120000 --- a/COPYING +++ b/COPYING @@ -1 +1 @@ -/usr/share/automake-1.14/COPYING \ No newline at end of file +/usr/share/automake-1.13/COPYING \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index ff23e59..e56e69b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,82 @@ +2017-06-14 16:05 + + * [r147] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh, + scripts/build-in-docker.sh, scripts/resolve-debbuilddeps.sh, + scripts/resolve-rpmbuilddeps.sh: + fix rpm i.e. fedora / centos build + +2017-06-09 14:57 + + * [r146] scripts/ax_check_qt.m4, + scripts/ax_init_standard_project.m4, + scripts/resolve-debbuilddeps.sh, scripts/resolve-rpmbuilddeps.sh: + improvements for deb and rpm docker builds + +2017-06-02 11:56 + + * [r145] scripts/bootstrap.sh, scripts/build-in-docker.sh: + fixed rpm build + +2017-05-30 13:23 + + * [r144] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh, + scripts/resolve-rpmbuilddeps.sh: + rpm builds improved and fixed + +2017-05-24 11:39 + + * [r143] scripts/bootstrap.sh: + fixed rpm build + +2017-05-23 13:11 + + * [r142] scripts/bootstrap.sh: + fixed typo + +2017-05-19 14:53 + + * [r141] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh, + scripts/build-in-docker.sh: + improvement of rpm generation + +2017-05-03 14:55 + + * [r140] scripts/ax_check_qt.m4, + scripts/ax_init_standard_project.m4, scripts/bootstrap.sh, + scripts/resolve-rpmbuilddeps.sh: + fixes if project dir is a subdir in a repository (multiple + projects in one repository) + +2017-03-20 12:06 + + * [r139] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh, + scripts/build-in-docker.sh, scripts/resolve-debbuilddeps.sh, + scripts/resolve-rpmbuilddeps.sh, scripts/rpmsign.exp[ADD]: + allow package definitions for all (deb and rpm),or deb or rpm; + fixed rpmsign for fedora + +2017-03-17 15:43 + + * [r138] scripts/build-in-docker.sh: + add default parameter for windoze build + +2017-03-16 07:10 + + * [r137] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh: + new tag AX_BUILD_HTML_NPM + +2017-03-03 14:52 + + * [r136] scripts/ax_init_standard_project.m4, scripts/bootstrap.sh: + added AX_USE_ETC to handle configuration files + +2017-02-06 22:55 + + * [r135] COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4, + bootstrap.sh, resolve-debbuilddeps.sh, + scripts/ax_init_standard_project.m4, scripts/bootstrap.sh: + fixed debian dependencies + 2017-02-06 10:14 * [r134] scripts/resolve-debbuilddeps.sh: diff --git a/INSTALL b/INSTALL index f812f5a..8b641e3 120000 --- a/INSTALL +++ b/INSTALL @@ -1 +1 @@ -/usr/share/automake-1.14/INSTALL \ No newline at end of file +/usr/share/automake-1.13/INSTALL \ No newline at end of file diff --git a/ax_check_qt.m4 b/ax_check_qt.m4 index af3a238..2d88048 100644 --- a/ax_check_qt.m4 +++ b/ax_check_qt.m4 @@ -51,18 +51,33 @@ AC_DEFUN([AX_CXX_QT_TOOL], [ PKG_PROG_PKG_CONFIG - if test -z "$HAVE_$1"; then + if test -z "${HAVE_$1}"; then HAVE_$1=1 AC_MSG_CHECKING([for $2]) AC_ARG_VAR([$1], [path to Qt tool $2]) - $1=${$1:-$(${PKG_CONFIG} --variable=$2_location Qt5Core)} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2-qt5} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2} - $1=${$1:-$(${PKG_CONFIG} --variable=$2_location QtCore)} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2} - $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2-qt4} - if ! which "${$1%% *}" > /dev/null; then - if which "$2-qt5" > /dev/null; then + for package in Qt5Core QtCore; do + if test -x "${$1}"; then + break + fi + tool=$(${PKG_CONFIG} --variable=$2_location $package 2> /dev/null) + if test -x "${tool}"; then + $1="${tool}" + break + fi + tool=$(${PKG_CONFIG} --variable=host_bins $package 2> /dev/null) + if test -n "$tool"; then + for name in $2 $2-qt5 $2-qt4; do + if test -x "${tool}/${name}"; then + $1="${tool}/${name}" + break + fi + done + fi + done + if ! test -x "${$1}"; then + if which "$2" > /dev/null; then + $1=$2 + elif which "$2-qt5" > /dev/null; then $1=$2-qt5 elif which "$2" > /dev/null; then $1=$2 @@ -70,15 +85,15 @@ AC_DEFUN([AX_CXX_QT_TOOL], [ $1=$2-qt4 else HAVE_$1=0 - $1="" + unset $1 fi fi AC_SUBST($1) AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) if test $HAVE_$1 -eq 1; then - AC_MSG_RESULT([$$1]) + AC_MSG_RESULT([$$1]) else - AC_MSG_RESULT([not found]) + AC_MSG_RESULT([not found]) fi fi ]) @@ -215,6 +230,7 @@ AC_DEFUN([AX_CHECK_QT], [ AC_SUBST(CXXFLAGS) AC_SUBST(PKG_REQUIREMENTS) AX_ADDITIONAL_QT_RULES_HACK=' +#### Begin: Appended by $0 LANGUAGE_FILE_BASE ?= translations @@ -226,7 +242,6 @@ moc_%.cxx: %.hxx qrc_%.cxx: %.qrc $(RCC) -o [$][@] -name ${<:%.qrc=%} $< - AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK) #%.qrc: % # cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@] @@ -234,12 +249,15 @@ qrc_%.cxx: %.qrc %.qm: %.ts ${LRELEASE} $< -qm [$][@] -%.ts: ${LANGUAGE_FILES:%=%} +%.ts: ${LANGUAGE_FILES} ${LUPDATE} -no-obsolete \ - -target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ - -ts [$][@] $< + -target-language [$]{@:${LANGUAGE_FILE_BASE}_%.ts=%} \ + [$][^] \ + -ts [$][@] -']) +#### End: $0 +' +]) AC_DEFUN([AX_REQUIRE_QT], [ AX_CHECK_QT([$1], [$2], [$3], [$4]) @@ -254,3 +272,11 @@ AC_DEFUN([AX_REQUIRE_QT], [ AC_DEFUN([AX_QT_NO_KEYWORDS], [ CPPFLAGS+=" -DQT_NO_KEYWORDS" ]) + +AC_DEFUN([AX_INIT_QT], [ + if test -n "${AX_ADDITIONAL_QT_RULES_HACK}"; then + test -f src/makefile.in && cat >> src/makefile.in <&2 > /dev/null || true + if test -d ${path}/.svn; then + (cd $path; svn upgrade 1>&2 > /dev/null || true) VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') if test -n "${VCS_REVISION}"; then break; fi - elif test -d .git; then - VCS_REVISION=$(git rev-list --all --count) + elif test -d ${path}/.git; then + VCS_REVISION=$(cd ${path} > /dev/null 2/dev/null; git rev-list --all --count) if test -n "${VCS_REVISION}"; then break; fi fi done @@ -26,12 +26,12 @@ m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix], ]), mrw_esyscmd_s([ VCS_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-checkout" for path in . .. ../.. ../../..; do - if test -d .svn; then - svn upgrade 1>&2 > /dev/null || true + if test -d ${path}/.svn; then + (cd $path; svn upgrade 1>&2 > /dev/null || true) VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') if test -n "${VCS_REVISION}"; then break; fi - elif test -d .git; then - VCS_REVISION=$(git rev-list --all --count) + elif test -d ${path}/.git; then + VCS_REVISION=$(cd ${path} > /dev/null 2/dev/null; git rev-list --all --count) if test -n "${VCS_REVISION}"; then break; fi fi done @@ -44,12 +44,12 @@ m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix], m4_define(x_minor_diff, m4_ifdef([x_least_fix], 0, mrw_esyscmd_s([ VCS_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-checkout" for path in . .. ../.. ../../..; do - if test -d .svn; then - svn upgrade 1>&2 > /dev/null || true + if test -d ${path}/.svn; then + (cd $path; svn upgrade 1>&2 > /dev/null || true) VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') if test -n "${VCS_REVISION}"; then break; fi - elif test -d .git; then - VCS_REVISION=$(git rev-list --all --count) + elif test -d ${path}/.git; then + VCS_REVISION=$(cd ${path} > /dev/null 2/dev/null; git rev-list --all --count) if test -n "${VCS_REVISION}"; then break; fi fi; done @@ -90,7 +90,7 @@ dnl refers to ${prefix}. Thus we have to use `eval' twice. # $3 = filename of makefile.in AC_DEFUN([AX_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 echo "${1}: ${2}" >> "${srcdir}/${3}" fi @@ -137,6 +137,8 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [ AX_SUBST(PREFIX) SYSCONFDIR=$(test "$prefix" = NONE && prefix=$ac_default_prefix; eval echo "${sysconfdir}") AX_SUBST(SYSCONFDIR) + PKGSYSCONFDIR=$(test "$prefix" = NONE && prefix=$ac_default_prefix; eval echo "${SYSCONFDIR}/${PACKAGE_NAME}") + AX_SUBST(PKGSYSCONFDIR) DATADIR=$(test "$prefix" = NONE && prefix=$ac_default_prefix; eval echo "${datadir}") AX_SUBST(DATADIR) PKGDATADIR=$(test "$prefix" = NONE && prefix=$ac_default_prefix; eval echo "${DATADIR}/${PACKAGE_NAME}") @@ -223,6 +225,9 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [ VENDOR=$((lsb_release -is 2>/dev/null || echo unknown) | tr ' ' '_') AX_SUBST(VENDOR) 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) ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm)) AX_SUBST(ARCH) @@ -451,6 +456,12 @@ AC_DEFUN([AX_USE_NODEJS], [ [${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools]) AC_CONFIG_FILES([nodejs/package.json]) 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]) test -f nodejs/makefile.in && cat >> nodejs/makefile.in <> html/makefile.in </dev/null) | sort -V | head -1)) PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf AC_SUBST(PDF_DOC) if test "$have_doxygen" = "no"; then @@ -701,6 +743,13 @@ EOF # $4 = alternative module names (space separated, optional) # $5 = optional flags: # manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged +# $6 = optional parameters, allowed are (evaluated in this order): +# - DEV_RPM_DIST_PKG= +# special name for the RPM development package +# - DEV_DEB_DIST_PKG= +# special name for the debian development package +# - DEV_DIST_PKG= +# if the name of the development package is different # # uses PKG_CHECK_MODULES to test for a module # then, if given, looks for the header file @@ -801,6 +850,33 @@ AC_DEFUN([AX_PKG_REQUIRE], [ else AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) 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/null) || \ + (test -x /usr/bin/dnf && dnf list -q "${f}-devel" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "${f}-devel" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "${f}-devel" 1>&2 > /dev/null); then + 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 @@ -809,6 +885,13 @@ AC_DEFUN([AX_PKG_REQUIRE], [ # $2 = module name (optional, if different from id) # $3 = optional flags: # manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged +# $4 = optional parameters, allowed are (evaluated in this order): +# - DEV_RPM_DIST_PKG= +# special name for the RPM development package +# - DEV_DEB_DIST_PKG= +# special name for the debian development package +# - DEV_DIST_PKG= +# if the name of the development package is different # # uses PKG_CHECK_MODULES to test for a module # sets automake conditional HAVE_$1 to 0 (not found) or 1 (found) @@ -843,6 +926,24 @@ AC_DEFUN([AX_PKG_CHECK], [ AC_SUBST(CPPFLAGS) AC_SUBST(CXXFLAGS) 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 @@ -1005,3 +1106,127 @@ AC_DEFUN([AX_DEB_RESOLVE], [ AC_SUBST(DEB_SECTION) AC_SUBST(DEB_DEPEND_IFEXISTS) ]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @RPM_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_DEPEND_IFEXISTS], [ + pkg="$1" + + if (test -x /usr/bin/zypper && zypper search -x "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg" 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}" + fi +]) + +# require package in .spec.in append @RPM_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_BUILD_DEPEND], [ + pkg="$1" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}" +]) + +# require package in .spec.in append @RPM_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_DEPEND], [ + pkg="$1" + if test -z "${RPM_DEPEND}"; then + RPM_DEPEND="${pkg}" + else + RPM_DEPEND="${RPM_DEPEND}, ${pkg}" + fi +]) + +# require package in debian/control.in append @DEB_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_RPM_GROUP], [ + pkg="$1" + RPM_GROUP="${pkg}" +]) + +# call after setting rpmian dependencies +AC_DEFUN([AX_RPM_RESOLVE], [ + AC_SUBST(RPM_BUILD_DEPEND) + AC_SUBST(RPM_DEPEND) + AC_SUBST(RPM_GROUP) + AC_SUBST(RPM_DEPEND_IFEXISTS) +]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @ALL_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND_IFEXISTS], [ + pkg="$1" + if test -n "$(apt-cache policy -q ${pkg} 2> /dev/null)"; then + DEB_DEPEND_IFEXISTS="${DEB_DEPEND_IFEXISTS}, ${pkg}" + fi + if (test -x /usr/bin/zypper && zypper search -x "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg" 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg" 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}" + fi +]) + +# Check if a package exists in the current distribution, if yes, require it +# in .spec.in append @ALL_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND_IFEXISTS_DEV], [ + pkg="$1" + if test -n "$(apt-cache policy -q ${pkg}-dev 2> /dev/null)"; then + DEB_DEPEND_IFEXISTS="${DEB_DEPEND_IFEXISTS}, ${pkg}-dev" + fi + if (test -x /usr/bin/zypper && zypper search -x "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/dnf && dnf list -q "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/bin/yum && yum list -q "$pkg"-devel 1>&2 > /dev/null) || \ + (test -x /usr/sbin/urpmq && urpmq "$pkg"-devel 1>&2 > /dev/null); then + RPM_DEPEND_IFEXISTS="${RPM_DEPEND_IFEXISTS}, ${pkg}-devel" + fi +]) + +# require package in .spec.in append @ALL_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_BUILD_DEPEND], [ + pkg="$1" + DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg}" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg}" +]) + +# require package in .spec.in append @ALL_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_BUILD_DEPEND_DEV], [ + pkg="$1" + DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg// /-dev}-dev" + RPM_BUILD_DEPEND="${RPM_BUILD_DEPEND}, ${pkg// /-devel}-devel" +]) + +# require package in .spec.in append @ALL_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_ALL_DEPEND], [ + pkg="$1" + DEB_DEPEND="${DEB_DEPEND}, ${pkg}" + if test -z "${RPM_DEPEND}"; then + RPM_DEPEND="${pkg}" + else + RPM_DEPEND="${RPM_DEPEND}, ${pkg}" + fi +]) + +# finish configuration - to be called instead of AC_OUTPUT +AC_DEFUN([AX_OUTPUT], [ + AX_DEB_RESOLVE + AX_RPM_RESOLVE + AC_OUTPUT + AX_INIT_QT +]) diff --git a/bootstrap-build-environment.spec.in b/bootstrap-build-environment.spec.in index a8e8ccf..06f0a8d 100644 --- a/bootstrap-build-environment.spec.in +++ b/bootstrap-build-environment.spec.in @@ -1,43 +1,33 @@ Summary: @DESCRIPTION@ Name: @PACKAGE_NAME@ Version: @VERSION@ -Release: @BUILD_NUMBER@%{?dist} +Release: @BUILD_NUMBER@.@DISTRO@ License: LGPL -Group: Applications/... +Group: @RPM_GROUP@ + Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -BuildRequires: gnupg, subversion, make, automake, autoconf, rpm-build, doxygen, java-openjdk -%if 0%{?fedora} != 20 -BuildRequires: graphviz -%endif -%if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} || 0%{?mageia} -BuildRequires: which, pkgconfig -%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 -%else -BuildRequires: gpg, redhat-lsb -%endif -%if ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} ) -BuildRequires: mscgen +BuildRequires: which, pkgconfig, gnupg, expect, subversion, make, automake, autoconf, rpm-build, doxygen, graphviz, java-openjdk @RPM_BUILD_DEPEND@ @RPM_DEPEND_IFEXISTS@ +#### os dependent definitions #### +%if 0%{?suse_version} || 0%{?sles_version} +BuildRequires: lsb-release %else -%endif -%else%if 0%{?suse_version} || 0%{?sles_version} -BuildRequires: pkg-config, lsb-release -%if 0%{?suse_version} < 1200 || 0%{?sles_version} < 1200 - +%if 0%{?mageia} +BuildRequires: rpm-sign, lsb-release %else - +BuildRequires: rpm-sign, redhat-lsb +%endif +%endif +%if ! 0%{?centos} +BuildRequires: mscgen %endif -%endif%endif %description @README@ + %global debug_package %{nil} %prep %setup -q @@ -57,9 +47,9 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) -/usr/share/@PACKAGE_NAME@/* +/usr/share/@PACKAGE_NAME@ %doc -/usr/share/doc/packages/@PACKAGE_NAME@/* +/usr/share/doc diff --git a/bootstrap.sh b/bootstrap.sh index 19cf7b8..9942410 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -134,6 +134,7 @@ GENERATED FILES * resolve-rpmbuilddeps.sh - script to install RPM package dependencies * build-in-docker.sh - script to build the project encapsulated in a docker container * build-in-docker.conf - additional configuration for build-in-docker.sh + * rpmsign.exp - script for signing rpms unattended * build-resource-file.sh - build resource.qrc file from a resource directory * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle @@ -147,7 +148,9 @@ GENERATED FILES * src/makefile.am - if you enabled AX_USE_CXX * src/version.hxx - if you enabled AX_USE_CXX * src/version.cxx - if you enabled AX_USE_CXX - * html/makefile.am - if you enabled AX_BUILD_HTML + * etc/makefile.am - if you enable AX_USE_ETC + * html/makefile.am - if you enabled AX_BUILD_HTML or AX_BUILD_HTML_NPM + * html/package.json.in - if you enabled AX_BUILD_HTML_NPM * scripts/makefile.am - if you enabled AX_USE_SCRIPTS * nodejs/makefile.am - if you add AX_USE_NODEJS * nodejs/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS @@ -222,7 +225,7 @@ FILE DEPENDENCIES configuration a dependent, i.e.: * test/makefile.am depends on AX_USE_LIBTOOL - * html/makefile.am depends on AX_BUILD_HTML + * html/makefile.am depends on AX_BUILD_HTML or AX_BUILD_HTML_NPM * doc/doxyfile.in depends on AX_BUILD_EXAMPLES * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_PERLDOC, AX_USE_CPPUNIT AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL @@ -256,6 +259,7 @@ FILES number. In git, git rev-list --all --count is used. The following macros are supported in configure.ac: * Enable C++: AX_USE_CXX + * Enable system config files in /etc: AX_USE_ETC * Enable LibTool library creation: AX_USE_LIBTOOL * Enable Scripts: AX_USE_SCRIPTS * Enable NodeJS project: AX_USE_NODEJS @@ -299,17 +303,22 @@ done echo -en "\e[1m-> checking:\e[0m for version control system ..." VCS="" VCSDEPENDS="" -if test -d .svn; then - VCS="svn" - VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools," - VCSDEPENDS_RPM="subversion," - echo -e " \e[32msuccess\e[0m detected ${VCS}" -elif test -d .git; then - VCS="git" - VCSDEPENDS_DEB="git2cl, git," - VCSDEPENDS_RPM="git," - echo -e " \e[32msuccess\e[0m detected ${VCS}" -else +for path in . .. ../.. ../../..; do + if test -d ${path}/.svn; then + VCS="svn" + VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools," + VCSDEPENDS_RPM="subversion, " + echo -e " \e[32msuccess\e[0m detected ${VCS}" + break + elif test -d ${path}/.git; then + VCS="git" + VCSDEPENDS_DEB="git2cl, git," + VCSDEPENDS_RPM="git, " + echo -e " \e[32msuccess\e[0m detected ${VCS}" + break + fi +done +if test -z "$VCS"; then echo -e " \e[33mignored\e[0m" fi @@ -372,7 +381,7 @@ run() { testtag() { local IFS="|" - egrep -q '^ *'"($*)" configure.ac + egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac } contains() { @@ -536,6 +545,7 @@ copy makefile_test.inc.am copy resolve-debbuilddeps.sh copy resolve-rpmbuilddeps.sh copy build-in-docker.sh +copy rpmsign.exp copy build-resource-file.sh copy sql-to-dot.sed copy mac-create-app-bundle.sh @@ -569,6 +579,7 @@ AX_INIT_STANDARD_PROJECT # requirements, uncomment, what you need: #AX_USE_CXX +#AX_USE_ETC #AX_USE_LIBTOOL #AX_USE_SCRIPTS #AX_USE_NODEJS @@ -580,6 +591,7 @@ AX_INIT_STANDARD_PROJECT #AX_BUILD_TEST #AX_BUILD_EXAMPLES #AX_BUILD_HTML +#AX_BUILD_HTML_NPM # qt features, uncomment, what you need: #AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) @@ -587,7 +599,7 @@ AX_INIT_STANDARD_PROJECT #AX_QT_NO_KEYWORDS # create output -AC_OUTPUT +AX_OUTPUT EOF PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac) @@ -627,7 +639,7 @@ LANGUAGE_FILE_BASE = ${PACKAGE_NAME} QT_PLUGINS = iconengines imageformats platforms #### enable if you deliver a KDE/Gnome desktop file -#applicationsdir = ${datarootdir}/applications +#applicationsdir = \${datarootdir}/applications #dist_applications_DATA = ${PACKAGE_NAME}.desktop #### enable (ev. instead of bin_PROGRAMS) if you build a library @@ -664,25 +676,26 @@ ${PACKAGE_NAME//-/_}_TR_FILES = main.cxx version.cxx ${PACKAGE_NAME//-/_}_SOURCES = \${${PACKAGE_NAME//-/_}_TR_FILES} \${BUILT_SOURCES} ## automatic assembly, no need to change -BUILT_SOURCES = \${${PACKAGE_NAME//-/_}_MOCFILES} \ - \${${PACKAGE_NAME//-/_}_UIFILES} \ - \${${PACKAGE_NAME//-/_}_TRANSLATIONS} \ +BUILT_SOURCES = \${${PACKAGE_NAME//-/_}_MOCFILES} \\ + \${${PACKAGE_NAME//-/_}_UIFILES} \\ + \${${PACKAGE_NAME//-/_}_TRANSLATIONS} \\ \${${PACKAGE_NAME//-/_}_RESOURCES} ## automatic assembly, no need to change -EXTRA_DIST_TR = \${${PACKAGE_NAME//-/_}_MOCFILES:moc_%.cxx=%.hxx} \ +EXTRA_DIST_TR = \${${PACKAGE_NAME//-/_}_MOCFILES:moc_%.cxx=%.hxx} \\ \${${PACKAGE_NAME//-/_}_UIFILES:ui_%.hxx=%.ui} ## automatic assembly, no need to change ## except: adapt the pre-delivered qt_%.qm list (language files you copy from qt -EXTRA_DIST = \${EXTRA_DIST_TR} \ - \${${PACKAGE_NAME//-/_}_RESOURCES:qrc_%.cxx:%.qrc} \ - \${${PACKAGE_NAME//-/_}_TRANSLATIONS:%.qm=%.ts} \ +EXTRA_DIST = \${EXTRA_DIST_TR} \\ + \${${PACKAGE_NAME//-/_}_RESOURCES:qrc_%.cxx=%.qrc} \\ + \${${PACKAGE_NAME//-/_}_TRANSLATIONS:%.qm=%.ts} \\ qt_de.qm qt_fr.qm ## automatic assembly, no need to change LANGUAGE_FILES = \${EXTRA_DIST_TR} \${${PACKAGE_NAME//-/_}_TR_FILES} +CLEANFILES = \${${PACKAGE_NAME//-/_}_RESOURCES} MAINTAINERCLEANFILES = makefile.in EOF to --condition AX_USE_CXX src/main.cxx < /var/log/${PACKAGE_NAME}.log +ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} +StandardOutput=journal +StandardError=journal Restart=on-abort [Install] @@ -1268,13 +1290,64 @@ ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs LDADD = -l${PACKAGE_NAME#lib} +exampledir = ${docdir}/examples +example_DATA = + MAINTAINERCLEANFILES = makefile.in EOF -to --condition AX_BUILD_HTML html/makefile.am < 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 -) +$( + if testtag AX_USE_DOXYGEN; then cat <&2 exit 1 @@ -167,7 +172,8 @@ function traperror() { echo fi 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 -n " ... press enter to cleanup: " read @@ -180,13 +186,7 @@ function traperror() { exit $e fi done - if [ "$wait" -eq 1 ]; then - 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: " + echo -n "SUCCESS ... cleanup docker: " docker rm -f "${DOCKER_ID}" exit 0 } @@ -195,21 +195,27 @@ function ifthenelse() { arg="$1" shift 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 - docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg}}" + docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg//@DISTRIBUTOR@/${DISTRIBUTOR}}}" else os="${arg%%:::*}" thenpart="${arg#*:::}" - if test "${thenpart/:::/}" = "${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}}"'; fi' - else + elsepart= + if test "${thenpart/:::/}" != "${thenpart}"; then elsepart="${thenpart##*:::}" - thenpart="${thenpart%:::*}" + thenpart="${thenpart%%:::*}" + fi + if [[ "${DISTRIBUTOR}-${CODENAME}-${ARCH}" =~ ${os} ]]; 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' - else - 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' - fi + docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${thenpart//@DISTRIBUTOR@/${DISTRIBUTOR}}}" + fi + else + if test -n "${elsepart}"; then + docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${elsepart//@DISTRIBUTOR@/${DISTRIBUTOR}}}" + fi fi fi } @@ -231,7 +237,7 @@ if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then fi docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}" case $mode in - (deb|apt) + (deb|apt|win) if [[ "${img}" =~ "ubuntu" ]]; then docker exec ${DOCKER_ID} locale-gen ${LANG} docker exec ${DOCKER_ID} update-locale LANG=${LANG} @@ -277,7 +283,12 @@ gpgcheck=0 EOF fi INSTALL_TOOL=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo yum install -y) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo urpmi --auto)) - docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget /usr/bin/lsb_release + if test "$INSTALL_TOOL" = "urpmi --auto"; then + LSB_RELEASE=lsb-release + else + LSB_RELEASE=/usr/bin/lsb_release + fi + docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget $LSB_RELEASE i=0 for key in "${keys[@]}"; do wget -Orpm-key "$key" @@ -285,20 +296,22 @@ EOF rm rpm-key done 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'" ((++i)) 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 ;; - (win) - if [[ "${img}" =~ "ubuntu" ]]; then - docker exec ${DOCKER_ID} locale-gen ${LANG} - docker exec ${DOCKER_ID} update-locale LANG=${LANG} - fi - docker exec ${DOCKER_ID} apt-get update ${OPTIONS} - docker exec ${DOCKER_ID} apt-get install -y mingw-w64 - docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh - ;; esac -docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} ${flags[@]} +FLAGS=() +for f in "${flags[@]}"; do + FLAGS+=($(ifthenelse "$f" "echo 'ARG'")) +done + +docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} "${FLAGS[@]}" diff --git a/configure.ac b/configure.ac index 94323ab..9db859b 100644 --- a/configure.ac +++ b/configure.ac @@ -10,27 +10,18 @@ m4_define(x_package_name, bootstrap-build-environment) # project's name m4_define(x_major, 1) # project's major version -m4_define(x_minor, 0) # project's minor version +m4_define(x_minor, 1) # project's minor version +m4_define(x_least_diff, 147) # project's minor version m4_include(ax_init_standard_project.m4) AC_INIT(x_package_name, x_version, x_bugreport, x_package_name) AM_INIT_AUTOMAKE([1.9 tar-pax]) AX_INIT_STANDARD_PROJECT # requirements, uncomment, what you need: -#AX_USE_CXX -#AX_USE_LIBTOOL AX_USE_SCRIPTS AX_USE_DOXYGEN -AX_USE_DEBIAN_PACKAGING -AX_USE_RPM_PACKAGING -#AX_USE_CPPUNIT -#AX_BUILD_EXAMPLES -#AX_BUILD_HTML - -# qt features, uncomment, what you need: -#AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) -#AX_REQUIRE_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) -#AX_QT_NO_KEYWORDS +AX_USE_DEBIAN_PACKAGING([devel]) +AX_USE_RPM_PACKAGING([Development/Tools]) # create output -AC_OUTPUT +AX_OUTPUT diff --git a/debian/control.in b/debian/control.in index ecf326f..d3a0d3f 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,12 +1,12 @@ Source: @PACKAGE_NAME@ Priority: extra Maintainer: @PACKAGER@ -Build-Depends: debhelper, fakeroot, svn2cl, subversion, subversion-tools, pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, fakeroot, , doxygen, graphviz, mscgen, default-jre-headless|default-jre +Build-Depends: debhelper, fakeroot, svn2cl, subversion, subversion-tools, pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, doxygen, graphviz, mscgen, default-jre-headless|default-jre @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ Package: @PACKAGE_NAME@ -Section: development +Section: @DEB_SECTION@ Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} @DEB_DEPEND@ Description: @DESCRIPTION@ @README_DEB@ diff --git a/debian/rules b/debian/rules old mode 100644 new mode 100755 index f595896..5c137c4 --- a/debian/rules +++ b/debian/rules @@ -2,7 +2,7 @@ ## ## This file has been added: ## - by bootstrap.sh -## - on Tue, 03 November 2015 16:25:55 +0100 +## - on Thu, 15 June 2017 11:32:17 +0200 ## Feel free to change it or even remove and rebuild it, up to your needs ## ## 1 2 3 4 5 6 7 8 diff --git a/doc/doxyfile.in b/doc/doxyfile.in index 2959b83..f0b2b97 100644 --- a/doc/doxyfile.in +++ b/doc/doxyfile.in @@ -51,7 +51,7 @@ PROJECT_BRIEF = @DESCRIPTION@ # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. -PROJECT_LOGO = @PROJECT_LOGO@ +PROJECT_LOGO = @top_srcdir@/@PACKAGE_LOGO@ # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is @@ -221,11 +221,15 @@ TAB_SIZE = 2 # newlines. ALIASES = "id=\par File-ID\n" +ALIASES += "author=@AUTHOR_NAME@" +ALIASES += "readme=@README_HTML@" +ALIASES += "description=@DESCRIPTION@" +ALIASES += "api=\xrefitem api \"API Call\" \"\"" ALIASES += "mutex=\par Reentrant:\nAccess is locked with mutex @c " ALIASES += "instancemutex=\par Reentrant:\nAccess is locked with per instance mutex @c " ALIASES += "classmutex=\par Reentrant:\nAccess is locked with class static mutex @c " ALIASES += "license=\par License\n" -ALIASES += "copy=\par Copyright\n" +ALIASES += "copy=\par Copyright by @AUTHOR_NAME@\n" # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" @@ -769,7 +773,7 @@ INPUT_ENCODING = UTF-8 # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. -FILE_PATTERNS = *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.wt +FILE_PATTERNS = *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.wt *.sql # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. @@ -800,7 +804,7 @@ EXCLUDE_SYMLINKS = NO # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = moc_* uic_* qrc_* +EXCLUDE_PATTERNS = moc_* uic_* qrc_* version.[ch]xx # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -863,7 +867,7 @@ INPUT_FILTER = # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. -FILTER_PATTERNS = *.wt=doxygen-webtester.sed +FILTER_PATTERNS = *.wt=doxygen-webtester.sed *.sql=@top_srcdir@/sql-to-dot.sed # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER ) will also be used to filter the input files that are used for @@ -1041,7 +1045,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = +HTML_HEADER = header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard @@ -1051,7 +1055,7 @@ HTML_HEADER = # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FOOTER = +HTML_FOOTER = footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of @@ -1074,7 +1078,7 @@ HTML_STYLESHEET = # see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = style.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1130,7 +1134,7 @@ HTML_TIMESTAMP = YES # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_SECTIONS = NO +HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand @@ -1358,7 +1362,7 @@ DISABLE_INDEX = NO # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. diff --git a/doc/makefile.am b/doc/makefile.am index 1f68d64..86b9eb0 100644 --- a/doc/makefile.am +++ b/doc/makefile.am @@ -2,7 +2,7 @@ ## ## This file has been added: ## - by bootstrap.sh -## - on Tue, 03 November 2015 16:20:19 +0100 +## - on Thu, 15 June 2017 11:32:17 +0200 ## Feel free to change it or even remove and rebuild it, up to your needs ## ## 1 2 3 4 5 6 7 8 diff --git a/makefile.am b/makefile.am index c106a70..b98b61f 100644 --- a/makefile.am +++ b/makefile.am @@ -2,7 +2,7 @@ ## ## This file has been added: ## - by bootstrap.sh -## - on Tue, 03 November 2015 16:13:52 +0100 +## - on Thu, 15 June 2017 11:32:17 +0200 ## Feel free to change it or even remove and rebuild it, up to your needs ## ## 1 2 3 4 5 6 7 8 @@ -10,6 +10,13 @@ SUBDIRS = scripts doc -doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog +dist_pkgdata_DATA = @PACKAGE_ICON@ ax_check_qt.m4 bootstrap.sh \ + resolve-rpmbuilddeps.sh autogen.sh \ + ax_cxx_compile_stdcxx_11.m4 build-in-docker.sh \ + build-resource-file.sh \ + ax_init_standard_project.m4 \ + mac-create-app-bundle.sh resolve-debbuilddeps.sh \ + sql-to-dot.sed +dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog MAINTAINERCLEANFILES = makefile.in diff --git a/resolve-debbuilddeps.sh b/resolve-debbuilddeps.sh index 30b0a5d..36a94e6 100755 --- a/resolve-debbuilddeps.sh +++ b/resolve-debbuilddeps.sh @@ -35,24 +35,73 @@ TO_INSTALL= DEPS= if test -e debian/control.in -a ! -e debian/control; then - for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do - 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 + 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 + if pkg_exists "${f}"; then DEPS+=" ${f}" fi done - for f in $(sed -n 's, *AX_DEB_BUILD_DEPEND(\([^)]*\)).*,\1,p' configure.ac); do + for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do + if pkg_exists "${f}-dev"; then + DEPS+=" ${f}-dev" + fi + done + for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do DEPS+=" ${f}" done + for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}-dev" + done trap "rm debian/control" INT TERM EXIT - sed 's,@\(DEB_DEPEND_IFEXISTS\|DEB_BUILD_DEPEND\|DEB_DEPEND\)@,,g' debian/control.in | \ + sed 's,@\(\(ALL\|DEB\)_DEPEND_IFEXISTS\|\(ALL\|DEB\)_BUILD_DEPEND\|\(ALL\|DEB\)_DEPEND\)@,,g' debian/control.in | \ sed 's,@[^@]*@, dummytext,g' > debian/control fi 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}')" for pa in ${DEPS}; do - if test ${pa//|/} = ${pa}; then + if test "${pa//|/}" = "${pa}"; then TO_INSTALL+=" ${pa}" continue; fi @@ -75,4 +124,10 @@ if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then exit 1 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" diff --git a/resolve-rpmbuilddeps.sh b/resolve-rpmbuilddeps.sh index 1ed2408..7c1843b 100755 --- a/resolve-rpmbuilddeps.sh +++ b/resolve-rpmbuilddeps.sh @@ -14,12 +14,78 @@ INSTALL_TOOL=${INSTALL_TOOL:-$((test -x /usr/bin/zypper && echo zypper install - SCHROOTNAME="$1" PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac) -TRAP_CMD= +TRAP_CMD="sleep ${SLEEP:-0};" +DEPS= +for f in BUILD BUILDROOT RPMS SPECS SRPMS; do + if ! test -d $f; then + TRAP_CMD+="rm -rf $f;" + mkdir $f + fi +done if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then + 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 + if pkg_exists "${f}"; then + DEPS+=" ${f}" + fi + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do + if pkg_exists "${f}-devel"; then + DEPS+=" ${f}-devel" + fi + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}" + done + for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do + DEPS+=" ${f}-devel" + done TRAP_CMD+="rm ${PACKAGE_NAME}.spec;" trap "${TRAP_CMD}" INT TERM EXIT - sed 's,@RPM_DEPEND_IFEXISTS@,,g' ${PACKAGE_NAME}.spec.in | \ - sed 's,@[^@]*@, dummytext,g' > ${PACKAGE_NAME}.spec + sed 's,@\(\(ALL\|RPM\)_DEPEND_IFEXISTS\|\(ALL\|RPM\)_BUILD_DEPEND\|\(ALL\|RPM\)_DEPEND\)@,,g' ${PACKAGE_NAME}.spec.in | \ + sed 's,@[^@]*@,dummytext,g' > ${PACKAGE_NAME}.spec fi TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec) @@ -32,13 +98,23 @@ fi if test -n "${SCHROOTNAME}"; then FILES=$(LANG= schroot -c ${SCHROOTNAME} -- rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') if test -n "${FILES}"; then - schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES} + schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES} ${DEPS} fi else FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') if test -n "${FILES}"; then - ${INSTALL_TOOL} ${FILES} + ${INSTALL_TOOL} ${FILES} ${DEPS} fi fi +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" diff --git a/rpmsign.exp b/rpmsign.exp new file mode 100755 index 0000000..dc29d94 --- /dev/null +++ b/rpmsign.exp @@ -0,0 +1,14 @@ +#!/usr/bin/expect -f + +set key [lindex $argv 0] +set password [lindex $argv 1] +set files [lrange $argv 2 end] + +### rpm-sign.exp -- Sign RPMs by sending the passphrase. +spawn rpmsign --define "_gpg_name $key" --addsign {*}$files +expect { + "Enter pass phrase: " { + send -- "$password\r" + exp_continue + } eof +} diff --git a/scripts/ax_check_qt.m4 b/scripts/ax_check_qt.m4 index ad59f21..2d88048 100644 --- a/scripts/ax_check_qt.m4 +++ b/scripts/ax_check_qt.m4 @@ -274,9 +274,9 @@ AC_DEFUN([AX_QT_NO_KEYWORDS], [ ]) AC_DEFUN([AX_INIT_QT], [ - test -f src/makefile.in && cat >> src/makefile.in <> src/makefile.in <> "${srcdir}/${3}" fi diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 5b1e851..d23e9d9 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1635,7 +1635,7 @@ BuildRequires: which, pkgconfig, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, %if 0%{?suse_version} || 0%{?sles_version} BuildRequires: lsb-release$( if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT; then - echo -n ", libqt5-qtbase-devel, libqt5-qttools, libQt5WebKit5-devel libqt5-qtwebengine-devel libQt5WebKitWidgets-devel"; + echo -n ", libqt5-qtbase-devel, libqt5-qttools, libqt5-linguist-devel, libQt5WebKit5-devel libqt5-qtwebengine-devel libQt5WebKitWidgets-devel"; fi) %else $( @@ -1695,25 +1695,12 @@ rm -rf \$RPM_BUILD_ROOT $(if testtag AX_USE_LIBTOOL; then echo '/usr/%_lib/*.so.*' else -echo '/usr/bin/*' -echo '/usr/share/applications/*' -fi) -$(if testtag AX_USE_NODEJS AX_BUILD_HTML AX_BUILD_HTML_NPM; then -echo '/usr/share/@PACKAGE_NAME@' +echo '/usr/bin' +echo '/usr/share/applications' fi) +/usr/share/@PACKAGE_NAME@ %doc -$(if testtag AX_USE_LIBTOOL; then - cat <