updated build system
This commit is contained in:
		| @@ -1,3 +1,9 @@ | ||||
| 2016-10-18 07:58   | ||||
|  | ||||
| 	* [r206] ChangeLog, ax_init_standard_project.m4, bootstrap.sh, | ||||
| 	  build-in-docker.sh, debian/changelog.in, doc/doxyfile.in: | ||||
| 	  probably fixed sid-armhf build, at least successfully built | ||||
|  | ||||
| 2016-10-05 11:21   | ||||
|  | ||||
| 	* [r205] debian/control.in: | ||||
|   | ||||
| @@ -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}") | ||||
| @@ -194,17 +196,20 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [ | ||||
|   AX_SUBST(COPYING) | ||||
|   _AM_SUBST_NOTMAKE([COPYING]) | ||||
|   CHANGELOG=$(<ChangeLog) | ||||
|   AX_SUBST(CHANGELOG) | ||||
|   AC_SUBST(CHANGELOG) | ||||
|   _AM_SUBST_NOTMAKE([CHANGELOG]) | ||||
|   DEB_CHANGELOG=$(sed '/^[[^\t]]/{h;d};/^\t\* /{s,,,;H;g;s,^,\t* ,;s,\n\([[^ ]]*\) *, \1\n\t  ,}' ChangeLog) | ||||
|   AX_SUBST(DEB_CHANGELOG) | ||||
|   DEB_CHANGELOG=$(sed '/^[[^\t]]/{h;N;d};s,\t,  ,g;/^  \* /{s,,,;H;g;s,^,  * ,;s,\n\([[^ ]]*\) *, \1\n    ,}' ChangeLog) | ||||
|   if test -z "$DEB_CHANGELOG"; then | ||||
|     DEB_CHANGELOG="  * see file ChangeLog and project management web site" | ||||
|   fi | ||||
|   AC_SUBST(DEB_CHANGELOG) | ||||
|   _AM_SUBST_NOTMAKE([DEB_CHANGELOG]) | ||||
|   AUTHOR=$(head -1 AUTHORS) | ||||
|   AUTHOR_NAME=$(echo $AUTHOR | sed 's, *[[<(]].*$,,') | ||||
|   AUTHOR_URL=$(echo $AUTHOR | sed 's,.*(\(http[[^)]]*\)).*,\1,') | ||||
|   AUTHOR_MAIL=$(echo $AUTHOR | sed 's,.*<\(.*@.*\)>.*,\1,') | ||||
|   PACKAGER=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1) | ||||
|   if -z "${PACKAGER}"; then | ||||
|   PACKAGER=$(gpg -K --display-charset utf-8 --lock-never 2>/dev/null | sed -n 's,uid *\(\[[ultimate\]] *\)\?,,p' | head -1) | ||||
|   if test -z "${PACKAGER}"; then | ||||
|     PACKAGER="$AUTHOR" | ||||
|   fi | ||||
|   AX_SUBST(AUTHOR) | ||||
| @@ -217,6 +222,8 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [ | ||||
|   SOURCE_DOWNLOAD="${SOURCE_DOWNLOAD:-${AUTHOR_URL}/downloads/${PACKAGE_NAME}}" | ||||
|   AX_SUBST(PROJECT_URL) | ||||
|   AX_SUBST(SOURCE_DOWNLOAD) | ||||
|   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) | ||||
|   AX_SUBST(DISTRO) | ||||
|   ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm)) | ||||
| @@ -419,7 +426,7 @@ EOF | ||||
|  | ||||
| # use this in configure.ac to support CppUnit for C++ unit tests | ||||
| AC_DEFUN([AX_USE_CPPUNIT], [ | ||||
|   AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"]) | ||||
|   PKG_CHECK_MODULES(CPPUNIT, cppunit, [have_cppunit="yes"], [have_cppunit="no"]) | ||||
|   # infos and warnings | ||||
|   if test "$have_cppunit" = "no"; then | ||||
|     AC_MSG_WARN([Missing cppunit development library! | ||||
| @@ -440,8 +447,23 @@ maintainer-clean-example-targets: | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support C++ examples | ||||
| # use this in configure.ac to support NodeJS | ||||
| AC_DEFUN([AX_USE_NODEJS], [ | ||||
|   AC_PATH_PROG(ANDROID, [android], [0], | ||||
|                          [${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools]) | ||||
|   AC_CONFIG_FILES([nodejs/package.json]) | ||||
|   AC_CONFIG_FILES([nodejs/makefile]) | ||||
|   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 | ||||
| #### Begin: Appended by $0 | ||||
| maintainer-clean-nodejs-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support Cordova | ||||
| AC_DEFUN([AX_USE_CORDOVA], [ | ||||
|   AC_PATH_PROG(ANDROID, [android], [0], | ||||
|                          [${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools]) | ||||
|   AC_PATH_PROG(CORDOVA, [cordova], [0], | ||||
| @@ -454,14 +476,13 @@ AC_DEFUN([AX_USE_NODEJS], [ | ||||
|   fi | ||||
|   AM_CONDITIONAL(HAVE_CORDOVA, [test ${CORDOVA} != 0 -a ${ANDROID} != 0]) | ||||
|   AX_SUBST(CORDOVA) | ||||
|   AC_CONFIG_FILES([nodejs/package.json]) | ||||
|   AC_CONFIG_FILES([nodejs/makefile]) | ||||
|   AC_CONFIG_FILES([cordova/makefile]) | ||||
|   AC_CONFIG_FILES([cordova/config.xml]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-example-targets], [examples/makefile.in]) | ||||
|   test -f examples/makefile.in && cat >> examples/makefile.in <<EOF | ||||
| EOF | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-cordova-targets], [cordova/makefile.in]) | ||||
|   test -f cordova/makefile.in && cat >> cordova/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| maintainer-clean-example-targets: | ||||
| maintainer-clean-cordova-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| @@ -543,6 +564,7 @@ AC_DEFUN([AX_USE_RPM_PACKAGING], [ | ||||
| EXTRA_DIST += \${PACKAGE_NAME}.spec.in | ||||
| rpm: dist | ||||
| 	rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec | ||||
| 	rpmsign --define "_gpg_name \${PACKAGER}" --addsign RPMS/*/*.rpm SRPMS/*.rpm | ||||
| clean-rpm-targets: | ||||
| 	-rm -rf BUILD BUILDROOT RPMS SPECS SRPMS | ||||
| distclean-rpm-targets: | ||||
| @@ -551,6 +573,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]) | ||||
| @@ -629,7 +656,7 @@ AC_DEFUN([AX_USE_PERLDOC], [ | ||||
|   PERL_SOURCES="m4_default([$1], [perl])" | ||||
|   AX_SUBST(PERL_SOURCES) | ||||
|   if test -z "$PERL_SOURCES"; then | ||||
|     AC_MSG_ERROR([You must specify the path to per files | ||||
|     AC_MSG_ERROR([You must specify the path to perl files | ||||
|      - use [AX]_[USE]_PERLDOC([[pathes to perldoc]])]); fi | ||||
|   AC_CHECK_PROG(have_perldoc, pods2html, yes, no) | ||||
|   if test "$have_doxygen" = "no"; then | ||||
| @@ -948,9 +975,40 @@ 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) | ||||
| ]) | ||||
|   | ||||
							
								
								
									
										460
									
								
								bootstrap.sh
									
									
									
									
									
								
							
							
						
						
									
										460
									
								
								bootstrap.sh
									
									
									
									
									
								
							| @@ -147,8 +147,25 @@ 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 | ||||
|     * etc/makefile.am - if you enable AX_USE_ETC | ||||
|     * html/makefile.am - if you enabled AX_BUILD_HTML | ||||
|     * 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 | ||||
|     * nodejs/package.json.in - if you add AX_USE_NODEJS | ||||
|     * nodejs/etc/${DEFAULT_PROJECT_NAME}.json - if you add AX_USE_NODEJS | ||||
|     * nodejs/etc/default/${DEFAULT_PROJECT_NAME} - if you add AX_USE_NODEJS | ||||
|     * nodejs/etc/init/${DEFAULT_PROJECT_NAME}.conf - if you add AX_USE_NODEJS | ||||
|     * nodejs/etc/systemd/system/${DEFAULT_PROJECT_NAME}.service - if you add AX_USE_NODEJS | ||||
|     * nodejs/public - if you add AX_USE_NODEJS | ||||
|     * nodejs/public/images - if you add AX_USE_NODEJS | ||||
|     * nodejs/public/javascripts/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS | ||||
|     * nodejs/public/stylesheets/style.styl - if you add AX_USE_NODEJS | ||||
|     * nodejs/routes/index.js - if you add AX_USE_NODEJS | ||||
|     * nodejs/sockets/index.js - if you add AX_USE_NODEJS | ||||
|     * nodejs/views/index.ejs - if you add AX_USE_NODEJS | ||||
|     * nodejs/views/layout.ejs - if you add AX_USE_NODEJS | ||||
|     * nodejs/node_modules - if you add AX_USE_NODEJS | ||||
|     * doc/makefile.am - if you enabled AX_USE_DOXYGEN or AX_USE_PERLDOC | ||||
|     * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN | ||||
|     * doc/header.html.in - if you enabled AX_USE_DOXYGEN | ||||
| @@ -240,8 +257,10 @@ 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 | ||||
|       * Enable Doxygen documentation generation: AX_USE_DOXYGEN | ||||
|       * Enable Perldoc documentation generation: AX_USE_PERLDOC | ||||
|       * Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING | ||||
| @@ -284,11 +303,13 @@ VCS="" | ||||
| VCSDEPENDS="" | ||||
| if test -d .svn; then | ||||
|     VCS="svn" | ||||
|     VCSDEPENDS="svn2cl, subversion, subversion-tools," | ||||
|     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="git2cl, git," | ||||
|     VCSDEPENDS_DEB="git2cl, git," | ||||
|     VCSDEPENDS_RPM="git," | ||||
|     echo -e " \e[32msuccess\e[0m detected ${VCS}" | ||||
| else | ||||
|     echo -e " \e[33mignored\e[0m" | ||||
| @@ -550,8 +571,10 @@ AX_INIT_STANDARD_PROJECT | ||||
|  | ||||
| # requirements, uncomment, what you need: | ||||
| #AX_USE_CXX | ||||
| #AX_USE_ETC | ||||
| #AX_USE_LIBTOOL | ||||
| #AX_USE_SCRIPTS | ||||
| #AX_USE_NODEJS | ||||
| #AX_USE_DOXYGEN | ||||
| #AX_USE_PERLDOC | ||||
| #AX_USE_DEBIAN_PACKAGING | ||||
| @@ -670,9 +693,13 @@ ${CHEADER}#include <${PACKAGE_NAME}.hxx> | ||||
| #include <QApplication> | ||||
| #include <QCommandLineParser> | ||||
| #include <iostream> | ||||
| #include <version.hxx> | ||||
|  | ||||
| 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); | ||||
| @@ -705,6 +732,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}() {} | ||||
| @@ -834,11 +862,361 @@ namespace NAMESPACE { | ||||
|   const std::string IDENT("\$Id: " PACKAGE_STRING); | ||||
| } | ||||
| EOF | ||||
| to --condition AX_USE_ETC etc/makefile.am <<EOF | ||||
| ${HEADER}pkgsysconfdir = \${sysconfdir}/@PACKAGE_NAME@ | ||||
|  | ||||
| dist_pkgsysconf_DATA =  | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| to --condition AX_USE_SCRIPTS scripts/makefile.am <<EOF | ||||
| ${HEADER}dist_bin_SCRIPTS = | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| if testtag AX_USE_NODEJS; then | ||||
|     checkdir nodejs | ||||
|     checkdir nodejs/public | ||||
|     checkdir nodejs/public/images | ||||
|     checkdir nodejs/etc | ||||
|     checkdir nodejs/etc/systemd | ||||
| fi | ||||
| to --condition AX_USE_NODEJS nodejs/makefile.am <<EOF | ||||
| ${HEADER}EXTRA_DIST = @PACKAGE_NAME@.js package.json.in public routes sockets views | ||||
|  | ||||
| nodejsdir = \${pkgdatadir}/nodejs | ||||
|  | ||||
| sysconfdefaultdir = \${sysconfdir}/default | ||||
| sysconfinitdir = \${sysconfdir}/init | ||||
| dist_sysconf_DATA = \${sysconfdir}/@PACKAGE_NAME@.json | ||||
| dist_sysconfdefault_DATA = \${sysconfdir}/default/@PACKAGE_NAME@ | ||||
| dist_sysconfinit_DATA = \${sysconfdir}/init/@PACKAGE_NAME@.conf | ||||
|  | ||||
| all: node_modules | ||||
|  | ||||
| node_modules: package.json.in | ||||
| 	HOME=. npm install | ||||
|  | ||||
| clean-local: | ||||
| 	-rm -r node_modules .npm | ||||
|  | ||||
| install-data-hook: | ||||
| 	test -d \$(DESTDIR)\${nodejsdir} || mkdir -p \$(DESTDIR)\${nodejsdir} | ||||
| 	chmod -R u+w \$(DESTDIR)\${nodejsdir} | ||||
| 	cp -r . \$(DESTDIR)\${nodejsdir} | ||||
|  | ||||
| uninstall-local: | ||||
| 	-chmod -R u+w \$(DESTDIR)\${nodejsdir} | ||||
| 	-rm -rf \$(DESTDIR)\${nodejsdir} | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/${PACKAGE_NAME}.js <<EOF | ||||
| ${CHEADER}try { | ||||
|  | ||||
|   process.on('uncaughtException', function(e) { | ||||
|     console.log("**** UNCAUGHT EXCEPTION ****"); | ||||
|     console.log(e); | ||||
|     console.log(e.stack); | ||||
|     process.exit(1); | ||||
|   }); | ||||
|    | ||||
|   /** | ||||
|    * Module dependencies. | ||||
|    */ | ||||
|  | ||||
|   var express = require('express') | ||||
|     , routes = require(__dirname+'/routes'); | ||||
|  | ||||
|   var app = module.exports = express.createServer(); | ||||
|   var io  = require('socket.io').listen(app); | ||||
|   var package = require(__dirname+'/package.json'); | ||||
|   var config = require(package.path.config); | ||||
|   var authentication = require(__dirname+'/authentication')(config.restrict); | ||||
|   var sockets = require(__dirname+'/sockets')(io, authentication); | ||||
|  | ||||
|   // Configuration | ||||
|   process.argv.forEach(function(val, index) { | ||||
|     if (index<2) {return} | ||||
|     if (index!=2 || isNaN(val)) { | ||||
|       console.log("**** ERROR: Unexpected Argument - allowed is only a port number"); | ||||
|       process.exit(1); | ||||
|     } | ||||
|     config.port = parseInt(val); | ||||
|   }); | ||||
|   if (typeof config.port != 'number') { | ||||
|     console.log("**** WARNING: no valid port given, defaults to 8888"); | ||||
|     config.port = 8888; | ||||
|   } | ||||
|  | ||||
|   app.configure(function(){ | ||||
|     app.set('views', __dirname + '/views'); | ||||
|     app.set('view engine', 'ejs'); | ||||
|     app.use(express.bodyParser()); | ||||
|     app.use(express.methodOverride()); | ||||
|     app.use(require('stylus').middleware({ src: __dirname + '/public' })); | ||||
|     app.use(app.router); | ||||
|     app.use(express.static(__dirname + '/public')); | ||||
|   }); | ||||
|  | ||||
|   app.configure('development', function(){ | ||||
|     app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); | ||||
|   }); | ||||
|  | ||||
|   app.configure('production', function(){ | ||||
|     app.use(express.errorHandler()); | ||||
|   }); | ||||
|  | ||||
|   // Routes | ||||
|   app.get('/', routes.index); | ||||
|  | ||||
|   app.listen(config.port, function() { | ||||
|     console.log("Express server listening on port %d in %s mode", | ||||
|                 app.address().port, app.settings.env); | ||||
|   }); | ||||
| } catch (e) { | ||||
|   console.log("**** EXCEPTION ****"); | ||||
|   console.log(e); | ||||
|   console.log(e.stack); | ||||
|   process.exit(1); | ||||
| } | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/package.json.in <<EOF | ||||
| { | ||||
|   "name": "@PACKAGE_NAME@", | ||||
|   "version": "@PACKAGE_VERSION@", | ||||
|   "private": true, | ||||
|   "dependencies": { | ||||
|     "express": "~2.5.8", | ||||
|     "stylus": "~0.53.0", | ||||
|     "ejs": ">= 0.0.1", | ||||
|     "socket.io": "~1.4.4", | ||||
|     "socketio-auth": "0.0.5", | ||||
|     "ldapauth": "git+https://github.com/DimensionSoftware/node-ldapauth.git" | ||||
|   }, | ||||
|   "description": "@DESCRIPTION@", | ||||
|   "main": "@PACKAGE_NAME@.js", | ||||
|   "devDependencies": {}, | ||||
|   "scripts": { | ||||
|     "test": "echo \"Error: no test specified\" && exit 1" | ||||
|   }, | ||||
|   "author": "@AUTHOR@", | ||||
|   "license": "@LICENSE@", | ||||
|   "path": { | ||||
|       "prefix": "@PREFIX@", | ||||
|       "sysconf": "@SYSCONFDIR@", | ||||
|       "pkgdata": "@PKGDATADIR@", | ||||
|       "localstate": "@LOCALSTATEDIR@", | ||||
|       "log": "@LOCALSTATEDIR@/log/@PACKAGE_NAME@.log", | ||||
|       "config":  "@SYSCONFDIR@/@PACKAGE_NAME@.json", | ||||
|       "nodejs": "@PKGDATADIR@/nodejs" | ||||
|   } | ||||
| } | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/etc/${PACKAGE_NAME}.json <<EOF | ||||
| { | ||||
|   "port": 8888, | ||||
|   "restrict": { | ||||
|     "passwords": { | ||||
|       "foo": ["sha256", "fcde2b2edxx56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"] | ||||
|     }, | ||||
|     "ldap": { | ||||
|       "url": "ldap://dev.marc.waeckerlin.org", | ||||
|       "adminDn": "cn=tmp,ou=system,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org", | ||||
|       "adminPassword": "secret", | ||||
|       "searchBase": "ou=person,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org", | ||||
|       "searchFilter": "(uid={{username}})" | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 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}" | ||||
| #${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME^^}.log" | ||||
| #${PACKAGE_NAME^^}="${PACKAGE_NAME}" | ||||
| #${PACKAGE_NAME^^}_PORT="8888" | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF | ||||
| #!upstart | ||||
| description "$(head -1 README)" | ||||
| author      "$(head -1 AUTHORS)" | ||||
|  | ||||
| start on (local-filesystems and net-device-up) | ||||
| stop on runlevel [!2345] | ||||
|  | ||||
| respawn | ||||
|  | ||||
| script | ||||
|     echo \$\$ > /var/run/${PACKAGE_NAME}.pid | ||||
|     # there are some useful defaults | ||||
|     # 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}" | ||||
|     ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" | ||||
|     ${PACKAGE_NAME^^}_USER="${PACKAGE_NAME}" | ||||
|     ${PACKAGE_NAME^^}_PORT="" | ||||
|     [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} | ||||
|     if test -n "\${${PACKAGE_NAME^^}_USER}"; then | ||||
|         exec sudo -u "\${${PACKAGE_NAME^^}_USER}" \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1 | ||||
|     else | ||||
|         exec \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1 | ||||
|     fi | ||||
| end script | ||||
|  | ||||
| pre-start script | ||||
|     ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" | ||||
|     [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} | ||||
|     # Date format same as (new Date()).toISOString() for consistency | ||||
|     echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME^^}_LOG} | ||||
| end script | ||||
|  | ||||
| pre-stop script | ||||
|     ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" | ||||
|     [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} | ||||
|     rm /var/run/${PACKAGE_NAME}.pid | ||||
|     echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME^^}_LOG} | ||||
| end script | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF | ||||
| [Unit] | ||||
| Description=$(head -1 README) | ||||
|  | ||||
| [Service] | ||||
| ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} > /var/log/${PACKAGE_NAME}.log | ||||
| Restart=on-abort | ||||
|  | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/public/javascripts/${PACKAGE_NAME}.js <<EOF | ||||
| ${CHEADER}var socket = null; | ||||
| function init() { | ||||
|   socket = io.connect(); | ||||
|   /* | ||||
|   socket | ||||
|     .io | ||||
|     .on("connect", connect) | ||||
|     .on("reconnect", connect) | ||||
|     .on("disconnect", disconnected) | ||||
|     .on("error", disconnected); | ||||
|   socket | ||||
|     .on("authenticated", authenticated) | ||||
|     .on("unauthorized", unauthorized) | ||||
|     .on("fail", error); | ||||
|   */ | ||||
| } | ||||
|  | ||||
| /// On Load, Call @ref start | ||||
| /* | ||||
|    \$(window.onbeforeunload = function() { | ||||
|    return "Are you sure you want to navigate away?"; | ||||
|    }); | ||||
|  */ | ||||
| \$(init); | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/public/stylesheets/style.styl <<EOF | ||||
| body | ||||
|   padding: 50px | ||||
|   font: 14px "Lucida Grande", Helvetica, Arial, sans-serif | ||||
| a | ||||
|   color: #00B7FF | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/routes/index.js <<EOF | ||||
| ${CHEADER}var package = require(__dirname+"/../package.json"); | ||||
|  | ||||
| exports.index = function(req, res) { | ||||
|   res.render('index', { | ||||
|     packagename: package.name, | ||||
|     packageversion: package.version | ||||
|   }); | ||||
| }; | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/sockets/index.js <<EOF | ||||
| module.exports = function(io, authentication) { | ||||
|  | ||||
|   var module={}; | ||||
|    | ||||
|   function broadcast(signal, data) { | ||||
|     console.log("<= signal: "+signal); | ||||
|     io.sockets.emit(signal, data); | ||||
|   } | ||||
|    | ||||
|   function fail(txt, data) { | ||||
|     console.log("** "+txt, data); | ||||
|   } | ||||
|  | ||||
|   function connection(socket, userdata) { | ||||
|      | ||||
|     console.log("=> new connection from "+userdata.username); | ||||
|  | ||||
|     function emit(signal, data, info) { | ||||
|       if (typeof data == 'string' && !data.match("\n")) { | ||||
|         console.log("<- signal: "+signal+"("+data+")"); | ||||
|       } else { | ||||
|         console.log("<- signal: "+signal); | ||||
|       } | ||||
|       if (info) console.log(info); | ||||
|       socket.emit(signal, data); | ||||
|     } | ||||
|  | ||||
|     function fail(txt, data) { | ||||
|       console.log("** "+txt, data); | ||||
|       emit("fail", txt); | ||||
|     } | ||||
|  | ||||
|     /* | ||||
|     socket | ||||
|       .on("xxx", xxx) | ||||
|       .on("yyy", yyy; | ||||
|     */ | ||||
|  | ||||
|   } | ||||
|    | ||||
|   // Handle Connection | ||||
|   require('socketio-auth')(io, { | ||||
|     authenticate: function (socket, data, callback) { | ||||
|       console.log("=> authenticate: ", data.username); | ||||
|       //get credentials sent by the client | ||||
|       var username = data.username; | ||||
|       var password = data.password; | ||||
|       authentication(data.username, data.password, | ||||
|                      function() { | ||||
|                        console.log("####LOGIN-SUCESS####"); | ||||
|                        callback(null, true) | ||||
|                      }, | ||||
|                      function() { | ||||
|                        console.log("####LOGIN-FAIL####"); | ||||
|                        callback(new Error("wrong credentials")) | ||||
|                      }); | ||||
|     }, | ||||
|     postAuthenticate: connection, | ||||
|     timeout: "none" | ||||
|   }); | ||||
|  | ||||
|   return module; | ||||
| } | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/views/index.ejs <<EOF | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width initial-scale=1" /> | ||||
|     <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="javascripts/${PACKAGE_NAME}.js"></script> | ||||
|     <title>$(head -1 README)</title> | ||||
|   </head> | ||||
|  | ||||
|   <body> | ||||
|     <h1>$(head -1 README)</h1> | ||||
|     <p>generated by bootstrap, please edit</p> | ||||
|   </body> | ||||
| </html> | ||||
|  | ||||
| EOF | ||||
| to --condition AX_USE_NODEJS nodejs/views/layout.ejs <<EOF | ||||
| <%- body %> | ||||
| EOF | ||||
| echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition 'AX_USE_DOXYGEN|AX_USE_PERLDOC' doc/makefile.am | ||||
| if testtag AX_BUILD_TEST; then | ||||
|     to test/runtests.sh < ${0%/*}/test/runtests.sh | ||||
| @@ -1102,17 +1480,18 @@ if testtag AX_USE_DEBIAN_PACKAGING; then | ||||
|  | ||||
|  -- @PACKAGER@  @BUILD_DATE@ | ||||
| EOF | ||||
|     BUILD_DEPENDS="debhelper, ${VCSDEPENDS} pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, fakeroot, $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_PERLDOC; then echo -n ", libpod-tree-perl"; fi; if testtag AX_USE_PLANTUML; then echo -n ", default-jre-headless|default-jre"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||
|     RUN_DEPENDS="$(if testtag AX_USE_NODEJS; then echo -n ", nodejs, npm"; fi)" | ||||
|     BUILD_DEPENDS="debhelper, fakeroot, ${VCSDEPENDS_DEB} pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release$(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen, default-jre-headless|default-jre"; fi; if testtag AX_USE_PERLDOC; then echo -n ", libpod-tree-perl"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||
|     to debian/control.in <<EOF | ||||
| Source: @PACKAGE_NAME@ | ||||
| Priority: extra | ||||
| Maintainer: @PACKAGER@ | ||||
| Build-Depends: ${BUILD_DEPENDS} | ||||
| Build-Depends: ${BUILD_DEPENDS}${RUN_DEPENDS} @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ | ||||
|  | ||||
| Package: @PACKAGE_NAME@ | ||||
| Section: $(if testtag AX_USE_LIBTOOL; then echo  "libs"; fi) | ||||
| Section: $(if testtag AX_USE_LIBTOOL; then echo  "libs"; else echo "@DEB_SECTION@"; fi) | ||||
| Architecture: any | ||||
| Depends: \${shlibs:Depends}, \${misc:Depends} | ||||
| Depends: \${shlibs:Depends}, \${misc:Depends}${RUN_DEPENDS} @DEB_DEPEND@ | ||||
| Description: @DESCRIPTION@ | ||||
| @README_DEB@ | ||||
| $(      if testtag AX_USE_LIBTOOL; then | ||||
| @@ -1121,7 +1500,7 @@ $(      if testtag AX_USE_LIBTOOL; then | ||||
| Package: @PACKAGE_NAME@-dev | ||||
| Section: libdevel | ||||
| Architecture: any | ||||
| Depends: @PACKAGE_NAME@ (= \${binary:Version}), ${BUILD_DEPENDS} | ||||
| Depends: @PACKAGE_NAME@ (= \${binary:Version}), ${BUILD_DEPENDS}${RUN_DEPENDS} @DEB_DEPEND@ @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ | ||||
| Description: @DESCRIPTION@ - Development Package | ||||
| @README_DEB@ | ||||
| EOF2 | ||||
| @@ -1133,6 +1512,7 @@ README | ||||
| EOF | ||||
|     to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF | ||||
| usr/lib/lib*.so.* | ||||
| usr/share/${PACKAGE_NAME} | ||||
| EOF | ||||
|     to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}-dev.install <<EOF | ||||
| usr/include/* | ||||
| @@ -1140,7 +1520,6 @@ usr/lib/lib*.a | ||||
| usr/lib/lib*.so | ||||
| usr/lib/pkgconfig/* | ||||
| usr/lib/*.la | ||||
| usr/share/${PACKAGE_NAME} | ||||
| usr/share/doc/${PACKAGE_NAME}/html | ||||
| EOF | ||||
|     to --mode "u=rwx,g=rwx,o=rx" debian/rules <<EOF | ||||
| @@ -1173,25 +1552,45 @@ else | ||||
| fi) | ||||
| Source0: %{name}-%{version}.tar.gz | ||||
| BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root | ||||
| BuildRequires: gnupg, ${VCSDEPENDS} make, automake, autoconf, rpm-build$( | ||||
| BuildRequires: gnupg, ${VCSDEPENDS_RPM} make, automake, autoconf, rpm-build$( | ||||
|     if testtag AX_USE_CXX; then | ||||
|       echo -n ", binutils-devel, gcc-c++" | ||||
|     fi | ||||
|     if testtag AX_USE_LIBTOOL; then | ||||
|       echo -n ", libtool"; | ||||
|     fi | ||||
|     if testtag AX_USE_DOXYGEN; then | ||||
|       echo -n ", doxygen"; | ||||
|       echo -n ", doxygen, java-openjdk"; | ||||
|     fi | ||||
|     if testtag AX_USE_PERLDOC; then | ||||
|       echo -n ", libpod-tree-perl"; | ||||
|     fi | ||||
|     if testtag AX_USE_PLANTUML; then | ||||
|       echo -n ", default-jre-headless"; | ||||
|     fi | ||||
| ) | ||||
| %if 0%{?fedora} != 20 | ||||
| $(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi) | ||||
| %endif | ||||
| %if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} | ||||
| BuildRequires: pkgconfig, redhat-lsb$( | ||||
|     if testtag AX_USE_CPPUNIT; then | ||||
|       echo -n ", cppunit-devel"; | ||||
|     fi) | ||||
| %if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} || 0%{?mageia} | ||||
| BuildRequires: which, pkgconfig$( | ||||
|     if testtag AX_USE_LIBTOOL; then | ||||
|       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) | ||||
| @@ -1217,7 +1616,9 @@ echo | ||||
| echo This package contains only the shared libraries required at runtime. | ||||
| fi) | ||||
|  | ||||
|  | ||||
| $(if ! testtag 'AX_USE_LIBTOOL|AX_USE_CXX'; then | ||||
|   echo '%global debug_package %{nil}' | ||||
| fi) | ||||
| %prep | ||||
| %setup -q | ||||
| ./configure --prefix=/usr \\ | ||||
| @@ -1242,6 +1643,7 @@ else | ||||
| echo '/usr/bin/*' | ||||
| echo '/usr/share/applications/*' | ||||
| fi) | ||||
| /usr/share/@PACKAGE_NAME@ | ||||
| %doc | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
|   cat <<EOF2 | ||||
| @@ -1253,7 +1655,7 @@ $(if testtag AX_USE_LIBTOOL; then | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/README | ||||
| EOF2 | ||||
| else | ||||
|   echo '/usr/share/*' | ||||
|   echo '/usr/share/doc/packages/@PACKAGE_NAME@' | ||||
| fi) | ||||
|  | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
| @@ -1288,6 +1690,9 @@ SUBDIRS="" | ||||
| if testtag AX_USE_CXX; then | ||||
|     SUBDIRS="${SUBDIRS} src" | ||||
| fi | ||||
| if testtag AX_USE_ETC; then | ||||
|     SUBDIRS="${SUBDIRS} etc" | ||||
| fi | ||||
| if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then | ||||
|     SUBDIRS="${SUBDIRS} test" | ||||
| fi | ||||
| @@ -1310,7 +1715,7 @@ for d in src test scripts doc examples html; do | ||||
| done | ||||
| to --mode "u=rwx,g=rwx,o=rx" autogen.sh <<EOF | ||||
| #!/bin/bash -e | ||||
| if test -n "$VCS" -a -d .$VCS -a -e -x $(which ${VCS}2cl); then | ||||
| if test -n "$VCS" -a -d ".$VCS" -a -e -x "\$(which ${VCS}2cl)"; then | ||||
| $(case "$VCS" in | ||||
|   (svn) echo "    ${VCS}2cl";; | ||||
|   (git) echo "    ${VCS}2cl > ChangeLog";; | ||||
| @@ -1352,10 +1757,15 @@ Cflags: -I\${includedir} @CPPFLAGS@ | ||||
| Requires: @PKG_REQUIREMENTS@ | ||||
| EOF | ||||
| to build-in-docker.conf <<EOF | ||||
| repos+=("Debian|Ubuntu-precise::::::universe") | ||||
| repos+=("Ubuntu-precise:::'deb http://archive.ubuntu.com/ubuntu precise universe'") | ||||
| envs+=("-e 'HOME=\${HOME}'") | ||||
| dirs+=("-v \${HOME}/.gnupg:\${HOME}/.gnupg:ro") | ||||
| ${HEADER}# Use Ubuntu Universe Repository | ||||
| repos+=("Ubuntu:::universe") | ||||
|  | ||||
| # Use Marc Wäckerlin's Repository, see https://dev.marc.waeckerlin.org | ||||
| repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository") | ||||
| repos+=("openSUSE:::https://dev.marc.waeckerlin.org/repository/opensuse/marc-waeckerlin.repo") | ||||
| repos+=("Fedora:::https://dev.marc.waeckerlin.org/repository/fedora/marc-waeckerlin.repo") | ||||
| repos+=("CentOS:::https://dev.marc.waeckerlin.org/repository/centos/marc-waeckerlin.repo") | ||||
| keys+=("https://dev.marc.waeckerlin.org/repository/PublicKey") | ||||
| EOF | ||||
|  | ||||
| #### Cleanup If Makefile Exists #### | ||||
|   | ||||
| @@ -1,4 +1,19 @@ | ||||
| repos+=("Debian|Ubuntu-precise::::::universe") | ||||
| repos+=("Ubuntu-precise:::'deb http://archive.ubuntu.com/ubuntu precise universe'") | ||||
| envs+=("-e 'HOME=${HOME}'") | ||||
| dirs+=("-v ${HOME}/.gnupg:${HOME}/.gnupg:ro") | ||||
| ## @id $Id$ | ||||
| ## | ||||
| ## This file has been added: | ||||
| ##  - by bootstrap.sh | ||||
| ##  -  on Fri, 17 March 2017 16:12:28 +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 | ||||
|  | ||||
| # Use Ubuntu Universe Repository | ||||
| repos+=("Ubuntu:::universe") | ||||
|  | ||||
| # Use Marc Wäckerlin's Repository, see https://dev.marc.waeckerlin.org | ||||
| repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository") | ||||
| repos+=("openSUSE:::https://dev.marc.waeckerlin.org/repository/opensuse/marc-waeckerlin.repo") | ||||
| repos+=("Fedora:::https://dev.marc.waeckerlin.org/repository/fedora/marc-waeckerlin.repo") | ||||
| repos+=("CentOS:::https://dev.marc.waeckerlin.org/repository/centos/marc-waeckerlin.repo") | ||||
| keys+=("https://dev.marc.waeckerlin.org/repository/PublicKey") | ||||
|   | ||||
| @@ -2,21 +2,29 @@ | ||||
| set -o errtrace | ||||
|  | ||||
| # build and test everything in a fresh docker installation | ||||
| mode="apt" | ||||
| myarch=$(dpkg --print-architecture) | ||||
| if test "${arch}" = "amd64"; then | ||||
|     myarch="amd64|i386" | ||||
| fi | ||||
| mode="deb" | ||||
| img="ubuntu:latest" | ||||
| repos=() | ||||
| keys=() | ||||
| envs=() | ||||
| dirs=("-v $(pwd):/workdir") | ||||
| 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") | ||||
| packages=() | ||||
| targets="all check distcheck" | ||||
| commands=() | ||||
| arch=$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64) | ||||
| host= | ||||
| flags=() | ||||
| wait=0 | ||||
| if test -e ./build-in-docker.conf; then | ||||
|     # you can preconfigure the variables in file build-in-docker.conf | ||||
|     # if you do so, add the file to EXTRA_DIST in makefile.am | ||||
|     source ./build-in-docker.conf | ||||
| fi | ||||
|  | ||||
| while test $# -gt 0; do | ||||
|     case "$1" in | ||||
|         (-h|--help) | ||||
| @@ -25,9 +33,12 @@ while test $# -gt 0; do | ||||
|             echo "OPTIONS:" | ||||
|             echo | ||||
|             echo "  -h, --help            show this help" | ||||
|             echo "  -m, --mode <type>     mode: apt or yum, default: ${mode}" | ||||
|             echo "  -m, --mode <type>     mode: deb, rpm, win, default: ${mode}" | ||||
|             echo "  -i, --image <image>   use given docker image instead of ${img}" | ||||
|             echo "  -a, --arch <arch>     build for given hardware architecture" | ||||
|             echo "  -t, --targets targets specify build targets, default: ${targets}" | ||||
|             echo "  --host <target-arch>  host for cross compiling, e.g. i686-w64-mingw32" | ||||
|             echo "  -f, --flag <flag>     add flag to ./bootstrap.sh or ./configure" | ||||
|             echo "  -r, --repo <url>      add given apt repository" | ||||
|             echo "  -k, --key <url>       add public key from url" | ||||
|             echo "  -e, --env <var>=<val> set environment variable in docker" | ||||
| @@ -37,6 +48,10 @@ while test $# -gt 0; do | ||||
|             echo "  -w, --wait            on error keep docker container and wait for enter" | ||||
|             echo | ||||
|             echo "  The option -i must be after -m, because mode sets a new default image" | ||||
|             echo "  The option -m must be after -t, because mode may be auto detected from targets" | ||||
|             echo "  The option -m must be after -h, because mode may set a host" | ||||
|             echo "  If target is either deb or rpm, mode is set to the same value" | ||||
|             echo "  If target is win, host is set to i686-w64-mingw32" | ||||
|             echo | ||||
|             echo "  The options -r -k -e -d -p -c can be repeated several times." | ||||
|             echo | ||||
| @@ -67,8 +82,11 @@ while test $# -gt 0; do | ||||
|         (-m|--mode) shift; | ||||
|             mode="$1" | ||||
|             case "$mode" in | ||||
|                 (apt) img="ubuntu:latest";; | ||||
|                 (deb|apt) img="ubuntu:latest";; | ||||
|                 (rpm|zypper) img="opensuse:latest";; | ||||
|                 (yum) img="centos:latest";; | ||||
|                 (dnf) img="fedora:latest";; | ||||
|                 (win) img="ubuntu:latest"; host="${host:---host=i686-w64-mingw32}";; | ||||
|                 (*) | ||||
|                     echo "**** ERROR: unknown mode '$1', try --help" 1>&2 | ||||
|                     exit 1 | ||||
| @@ -78,10 +96,25 @@ while test $# -gt 0; do | ||||
|         (-i|--image) shift; | ||||
|             img="$1" | ||||
|             ;; | ||||
|         (-a|--arch) shift; | ||||
|             arch="$1" | ||||
|             ;; | ||||
|         (-t|--targets) shift; | ||||
|             targets="$1" | ||||
|             if test "$1" = "deb" -o "$1" = "rpm"; then | ||||
|                 # set mode to same value | ||||
|                 set -- "-m" "$@" | ||||
|                 continue | ||||
|             fi | ||||
|             ;; | ||||
|         (--host) shift; | ||||
|             host="--host=$1" | ||||
|             ;; | ||||
|         (-f|--flag) shift; | ||||
|             flags+=("$1") | ||||
|             ;; | ||||
|         (-r|--repo) shift; | ||||
|             echo "OPTION: $1" | ||||
|             repos+=("$1") | ||||
|             ;; | ||||
|         (-k|--key) shift; | ||||
| @@ -140,7 +173,8 @@ function traperror() { | ||||
|                 read | ||||
|             fi | ||||
|             echo -n "   ... cleanup docker: " | ||||
|             docker rm -f "${DOCKER_ID}" | ||||
|             docker stop "${DOCKER_ID}" || true | ||||
|             docker rm "${DOCKER_ID}" | ||||
|             echo "returning status: $e" | ||||
|             echo "--->" | ||||
|             exit $e | ||||
| @@ -167,14 +201,14 @@ function ifthenelse() { | ||||
|         os="${arg%%:::*}" | ||||
|         thenpart="${arg#*:::}" | ||||
|         if test "${thenpart/:::/}" = "${thenpart}"; then | ||||
|             docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; 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 '"${cmd//ARG/${thenpart}}"'; fi' | ||||
|         else | ||||
|             elsepart="${thenpart##*:::}" | ||||
|             thenpart="${thenpart%:::*}" | ||||
|             if test -n "${thenpart}"; then | ||||
|                 docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; 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 '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi' | ||||
|             else | ||||
|                 docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; 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' | ||||
|             fi     | ||||
|         fi | ||||
|     fi | ||||
| @@ -183,10 +217,25 @@ function ifthenelse() { | ||||
| set -x | ||||
|  | ||||
| docker pull $img | ||||
| DOCKER_ID=$(docker run -d ${dirs[@]} ${envs[@]} -e HOME="${HOME}" -w /workdir $img sleep infinity) | ||||
| DOCKER_ID=$(docker create ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity) | ||||
| trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT | ||||
| if ! [[ $arch =~ $myarch ]]; then | ||||
|     docker cp "/usr/bin/qemu-${arch}-static" "${DOCKER_ID}:/usr/bin/qemu-${arch}-static" | ||||
| fi | ||||
| docker start "${DOCKER_ID}" | ||||
| if ! docker exec ${DOCKER_ID} getent group $(id -g) > /dev/null 2>&1; then | ||||
|     docker exec ${DOCKER_ID} groupadd -g $(id -g) $(id -gn) | ||||
| fi | ||||
| if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then | ||||
|     docker exec ${DOCKER_ID} useradd -m -u $(id -u) -g $(id -g) -d"${HOME}" $(id -un) | ||||
| fi | ||||
| docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}" | ||||
| case $mode in | ||||
|     (apt) | ||||
|     (deb|apt) | ||||
|         if [[ "${img}" =~ "ubuntu" ]]; then | ||||
|             docker exec ${DOCKER_ID} locale-gen ${LANG} | ||||
|             docker exec ${DOCKER_ID} update-locale LANG=${LANG} | ||||
|         fi | ||||
|         OPTIONS='-o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y --force-yes --no-install-suggests --no-install-recommends' | ||||
|         for f in 'libpam-systemd:amd64' 'policykit*' 'colord'; do | ||||
|             docker exec ${DOCKER_ID} bash -c "echo 'Package: $f' >> /etc/apt/preferences" | ||||
| @@ -199,7 +248,7 @@ case $mode in | ||||
|             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} python-software-properties apt-transport-https dpkg-dev lsb-release; | ||||
|         for repo in "${repos[@]}"; do | ||||
|             ifthenelse "${repo}" "apt-add-repository ARG" | ||||
|             ifthenelse "${repo}" "apt-add-repository 'ARG'" | ||||
|         done | ||||
|         for key in "${keys[@]}"; do | ||||
|             wget -O- "$key" \ | ||||
| @@ -214,8 +263,7 @@ case $mode in | ||||
|         done | ||||
|         docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh | ||||
|         ;; | ||||
|     (yum) | ||||
|         ./bootstrap.sh -t dist | ||||
|     (rpm|yum|dnf|zypper|urpmi) | ||||
|         if [[ "$img" =~ "centos" ]]; then | ||||
|             docker exec ${DOCKER_ID} yum install -y redhat-lsb | ||||
|             docker exec -i ${DOCKER_ID} bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo' <<EOF | ||||
| @@ -228,10 +276,29 @@ enabled=1 | ||||
| gpgcheck=0 | ||||
| EOF | ||||
|         fi | ||||
|         docker exec ${DOCKER_ID} yum install -y rpm-build  | ||||
|         docker exec ${DOCKER_ID} groupadd -g $(id -g) build | ||||
|         docker exec ${DOCKER_ID} useradd -g $(id -g) -u $(id -u) build | ||||
|         docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh || true | ||||
|         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 | ||||
|         i=0 | ||||
|         for key in "${keys[@]}"; do | ||||
|             wget -Orpm-key "$key" | ||||
|             docker exec -i ${DOCKER_ID} rpm --import rpm-key | ||||
|             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)) | ||||
|             ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'" | ||||
|             ((++i)) | ||||
|         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}" | ||||
| docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} ${flags[@]} | ||||
|   | ||||
| @@ -39,5 +39,8 @@ if test "$HAVE_QT" -ne 1 -a "$HAVE_PROXY" -ne 1; then | ||||
|    AC_MSG_ERROR([Either Qt or Google Proxy is required.]) | ||||
| fi | ||||
|  | ||||
| AX_DEB_DEPEND(libproxy-1.0) | ||||
| AX_DEB_RESOLVE | ||||
|  | ||||
| # create output | ||||
| AC_OUTPUT | ||||
|   | ||||
							
								
								
									
										8
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								debian/control.in
									
									
									
									
										vendored
									
									
								
							| @@ -1,18 +1,18 @@ | ||||
| Source: @PACKAGE_NAME@ | ||||
| Priority: extra | ||||
| Maintainer: @AUTHOR@ | ||||
| Build-Depends: debhelper, subversion, pkg-config, automake, libtool, autotools-dev, lsb-release, doxygen, graphviz, mscgen, default-jre-headless|default-jre, fakeroot, libproxy-dev, qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools | ||||
| 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, qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools @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, subversion, pkg-config, automake, libtool, autotools-dev, lsb-release, doxygen, graphviz, mscgen, libproxy-dev, qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools | ||||
| 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, qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools @DEB_DEPEND@ @DEB_BUILD_DEPEND@ @DEB_DEPEND_IFEXISTS@ | ||||
| Description: @DESCRIPTION@ - Development Package | ||||
| @README_DEB@ | ||||
|   | ||||
							
								
								
									
										2
									
								
								debian/proxyface-dev.dirs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/proxyface-dev.dirs
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| usr/lib | ||||
| usr/include | ||||
							
								
								
									
										1
									
								
								debian/proxyface-dev.install
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/proxyface-dev.install
									
									
									
									
										vendored
									
									
								
							| @@ -3,5 +3,4 @@ usr/lib/lib*.a | ||||
| usr/lib/lib*.so | ||||
| usr/lib/pkgconfig/* | ||||
| usr/lib/*.la | ||||
| usr/share/proxyface | ||||
| usr/share/doc/proxyface/html | ||||
|   | ||||
							
								
								
									
										1
									
								
								debian/proxyface.dirs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/proxyface.dirs
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | ||||
| usr/lib | ||||
							
								
								
									
										1
									
								
								debian/proxyface.install
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/proxyface.install
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,2 @@ | ||||
| usr/lib/lib*.so.* | ||||
| usr/share/proxyface | ||||
|   | ||||
							
								
								
									
										10
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										10
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,8 +1,10 @@ | ||||
| ## @id $Id$ | ||||
| # | ||||
| # This file has been added by bootstrap.sh on Sun, 15 Mar 2015 14:21:46 +0100 | ||||
| # 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 16:12:28 +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 | ||||
|  | ||||
|   | ||||
| @@ -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}" | ||||
|         if test -n "$(${DO} apt-cache policy -q ${f})" && ((! $(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}")); then | ||||
|             DEPS+=" ${f}" | ||||
|         fi | ||||
|     done | ||||
|     for f in $(sed -n 's, *AX_DEB_BUILD_DEPEND(\([^)]*\)).*,\1,p' configure.ac); do | ||||
|         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 | ||||
|   | ||||
| @@ -10,35 +10,34 @@ | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| INSTALL_TOOL=${INSTALL_TOOL:-$((test -x /usr/bin/zypper && echo zypper install -y) ||  (test -x /usr/bin/dnf && echo dnf install -y) || (test -x /usr/bin/yum && echo yum install -y) || (test -x /usr/sbin/urpmi && echo urpmi --auto))} | ||||
| SCHROOTNAME="$1" | ||||
| PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac) | ||||
| PKGCONFIGS="${2:-epel-release}" # packages to configure yum | ||||
|  | ||||
| TRAP_CMD= | ||||
| if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then | ||||
|     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 | ||||
| fi | ||||
|  | ||||
| TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec) | ||||
| if ! test -e $TGZFILE; then | ||||
|     TRAP_CMD+="rm ${TGZFILE};" | ||||
|     trap "${TRAP_CMD}" INT TERM EXIT | ||||
|     touch $TGZFILE | ||||
| 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 | ||||
|         FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}") | ||||
|         if test -n "${FIRST}"; then | ||||
|             schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FIRST} || \ | ||||
|                 schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FIRST} || \ | ||||
|                 schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FIRST} | ||||
|         fi | ||||
|         schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FILES} || \ | ||||
|             schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FILES} || \ | ||||
|             schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FILES} | ||||
|         schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL}  ${FILES} | ||||
|     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 | ||||
|         FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}") | ||||
|         if test -n "${FIRST}"; then | ||||
|             yum install -y ${FIRST} || \ | ||||
|                 zypper install -y ${FIRST} || \ | ||||
|                 dnf install -y ${FIRST} | ||||
|         fi | ||||
|         yum install -y ${FILES} || \ | ||||
|             zypper install -y ${FILES} || \ | ||||
|             dnf install -y ${FILES} | ||||
|         ${INSTALL_TOOL} ${FILES} | ||||
|     fi | ||||
| fi | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user