From 319d2638bb2bed07b13025ac8954a15da978601e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Fri, 17 Mar 2017 18:31:09 +0000 Subject: [PATCH] tested build for windoze --- ChangeLog | 11 +++++ ax_init_standard_project.m4 | 53 ++++++++++++++++++++- bootstrap.sh | 95 ++++++++++++++++++++++++++++++++----- build-in-docker.conf | 2 +- build-in-docker.sh | 18 +++---- configure.ac | 3 +- debian/control.in | 6 +-- debian/libxml-cxx.install | 1 + debian/rules | 10 ++-- resolve-debbuilddeps.sh | 11 +++-- 10 files changed, 172 insertions(+), 38 deletions(-) mode change 100644 => 100755 debian/rules diff --git a/ChangeLog b/ChangeLog index c3427a0..c6e4162 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2017-01-08 08:55 + + * [r103] debian/changelog.in: + rebuilt debian/changelog.in + +2017-01-07 14:29 + + * [r102] ChangeLog, bootstrap.sh, build-in-docker.conf, + build-in-docker.sh, debian/control.in: + build system updated + 2016-12-11 21:51 * [r101] build-in-docker.sh, resolve-rpmbuilddeps.sh: diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4 index 9b78951..27f729a 100644 --- a/ax_init_standard_project.m4 +++ b/ax_init_standard_project.m4 @@ -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}") @@ -498,6 +500,12 @@ maintainer-clean-html-targets: EOF ]) +# use this in configure.ac to support HTML data for webservers +AC_DEFUN([AX_BUILD_HTML_NPM], [ + AC_CONFIG_FILES([html/package.json]) + AX_BUILD_HTML +]) + # use this in configure.ac to support C++ libraries AC_DEFUN([AX_USE_LIBTOOL], [ # libtool versioning @@ -571,6 +579,11 @@ distclean-rpm-targets: EOF ]) +# use this in configure.ac to support scripts, e.g. bash scripts +AC_DEFUN([AX_USE_ETC], [ + AC_CONFIG_FILES([etc/makefile]) +]) + # use this in configure.ac to support scripts, e.g. bash scripts AC_DEFUN([AX_USE_SCRIPTS], [ AC_CONFIG_FILES([scripts/makefile]) @@ -968,9 +981,45 @@ AC_DEFUN([AX_CHECK_VALID_LD_FLAG], [ # - parameter: # $1 = package name AC_DEFUN([AX_DEB_DEPEND_IFEXISTS], [ - pkg=$1 + pkg="$1" if test -n "$(apt-cache policy -q ${pkg} 2> /dev/null)"; then - DEB_DEPEND_IFEXISTS+=", ${pkg}" + DEB_DEPEND_IFEXISTS="${DEB_DEPEND_IFEXISTS}, ${pkg}" fi +]) + +# require package in debian/control.in append @DEB_BUILD_DEPEND@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_DEB_BUILD_DEPEND], [ + pkg="$1" + DEB_BUILD_DEPEND="${DEB_BUILD_DEPEND}, ${pkg}" +]) + +# require package in debian/control.in append @DEB_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_DEB_DEPEND], [ + pkg="$1" + DEB_DEPEND="${DEB_DEPEND}, ${pkg}" +]) + +# require package in debian/control.in append @DEB_DEPEND@ to Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_DEB_SECTION], [ + pkg="$1" + DEB_SECTION="${pkg}" +]) + +# call after setting debian dependencies +AC_DEFUN([AX_DEB_RESOLVE], [ + AC_SUBST(DEB_BUILD_DEPEND) + AC_SUBST(DEB_DEPEND) + AC_SUBST(DEB_SECTION) AC_SUBST(DEB_DEPEND_IFEXISTS) ]) + +AC_DEFUN([AX_OUTPUT], [ + AX_DEB_RESOLVE + AC_OUTPUT +]) diff --git a/bootstrap.sh b/bootstrap.sh index 1a9fb58..55e830c 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -147,7 +147,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 +224,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 +258,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 @@ -569,6 +572,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 +584,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 +592,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) @@ -690,9 +695,13 @@ ${CHEADER}#include <${PACKAGE_NAME}.hxx> #include #include #include +#include int main(int argc, char *argv[]) try { QApplication a(argc, argv); + a.setApplicationDisplayName(a.tr("${PACKAGE_NAME}")); + a.setApplicationName(${PACKAGE_NAME}::package_name().c_str()); + a.setApplicationVersion(${PACKAGE_NAME}::version().c_str()); QCommandLineParser parser; parser.addHelpOption(); parser.process(a); @@ -725,6 +734,7 @@ class ${PackageName}: public QMainWindow, protected Ui::${PackageName} { Q_OBJECT; public: explicit ${PackageName}(QWidget *parent = 0): QMainWindow(parent) { + setTitle(tr("${PACKAGE_NAME}[*]")); setupUi(this); } virtual ~${PackageName}() {} @@ -854,6 +864,13 @@ namespace NAMESPACE { const std::string IDENT("\$Id: " PACKAGE_STRING); } EOF +to --condition AX_USE_ETC etc/makefile.am < /var/log/${PACKAGE_NAME}.log +ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} +StandardOutput=journal +StandardError=journal Restart=on-abort [Install] @@ -1265,11 +1284,59 @@ LDADD = -l${PACKAGE_NAME#lib} MAINTAINERCLEANFILES = makefile.in EOF -to --condition AX_BUILD_HTML html/makefile.am <&2 exit 1 @@ -231,7 +236,7 @@ if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then fi docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}" case $mode in - (deb|apt) + (deb|apt|win) if [[ "${img}" =~ "ubuntu" ]]; then docker exec ${DOCKER_ID} locale-gen ${LANG} docker exec ${DOCKER_ID} update-locale LANG=${LANG} @@ -291,14 +296,5 @@ EOF done docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh ;; - (win) - if [[ "${img}" =~ "ubuntu" ]]; then - docker exec ${DOCKER_ID} locale-gen ${LANG} - docker exec ${DOCKER_ID} update-locale LANG=${LANG} - fi - docker exec ${DOCKER_ID} apt-get update ${OPTIONS} - docker exec ${DOCKER_ID} apt-get install -y mingw-w64 - docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh - ;; esac docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} ${flags[@]} diff --git a/configure.ac b/configure.ac index c45e6fc..d50c2d5 100644 --- a/configure.ac +++ b/configure.ac @@ -30,6 +30,7 @@ AX_BUILD_EXAMPLES #AX_QT_NO_KEYWORDS AX_PKG_REQUIRE(mrwcxx, mrw-c++) +AX_DEB_BUILD_DEPEND(mrw-c++-dev) # create output -AC_OUTPUT +AX_OUTPUT diff --git a/debian/control.in b/debian/control.in index 45ab9f6..aa73c36 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,18 +1,18 @@ Source: @PACKAGE_NAME@ Priority: extra Maintainer: @PACKAGER@ -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, libcppunit-dev, mrw-c++-dev +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, libcppunit-dev @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ Package: @PACKAGE_NAME@ Section: libs Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} @DEB_DEPEND@ Description: @DESCRIPTION@ @README_DEB@ Package: @PACKAGE_NAME@-dev Section: libdevel Architecture: any -Depends: @PACKAGE_NAME@ (= ${binary:Version}), debhelper, fakeroot, svn2cl, subversion, subversion-tools, pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, doxygen, graphviz, mscgen, default-jre-headless|default-jre, libcppunit-dev, mrw-c++-dev +Depends: @PACKAGE_NAME@ (= ${binary:Version}), debhelper, fakeroot, svn2cl, subversion, subversion-tools, pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, doxygen, graphviz, mscgen, default-jre-headless|default-jre, libcppunit-dev @DEB_DEPEND@ @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ Description: @DESCRIPTION@ - Development Package @README_DEB@ diff --git a/debian/libxml-cxx.install b/debian/libxml-cxx.install index d0dbfd1..37e4b63 100644 --- a/debian/libxml-cxx.install +++ b/debian/libxml-cxx.install @@ -1 +1,2 @@ usr/lib/lib*.so.* +usr/share/libxml-cxx diff --git a/debian/rules b/debian/rules old mode 100644 new mode 100755 index e25ce03..a2d30e5 --- a/debian/rules +++ b/debian/rules @@ -1,8 +1,10 @@ ## @id $Id$ -# -# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 -# Feel free to change it or even remove and rebuild it, up to your needs -# +## +## This file has been added: +## - by bootstrap.sh +## - on Fri, 17 March 2017 18:51:03 +0100 +## Feel free to change it or even remove and rebuild it, up to your needs +## ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 diff --git a/resolve-debbuilddeps.sh b/resolve-debbuilddeps.sh index 94c1ba1..30b0a5d 100755 --- a/resolve-debbuilddeps.sh +++ b/resolve-debbuilddeps.sh @@ -32,21 +32,24 @@ function install() { } 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 - TO_INSTALL+=" ${f}" + DEPS+=" ${f}" fi done + for f in $(sed -n 's, *AX_DEB_BUILD_DEPEND(\([^)]*\)).*,\1,p' configure.ac); do + DEPS+=" ${f}" + done trap "rm debian/control" INT TERM EXIT - sed 's,@DEB_DEPEND_IFEXISTS@,,g' debian/control.in | \ + sed 's,@\(DEB_DEPEND_IFEXISTS\|DEB_BUILD_DEPEND\|DEB_DEPEND\)@,,g' debian/control.in | \ sed 's,@[^@]*@, dummytext,g' > debian/control fi install dpkg-dev -DEPS=$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 || true) -DEPS=$(echo "$DEPS" | 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 if test ${pa//|/} = ${pa}; then