diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4871ef03134..af590e2e17b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,7 +54,7 @@ build_apparmor: script: - apt-get update -qq - DEBIAN_FRONTEND=noninteractive apt-get install -y -qq build-essential lintian libapparmor-dev pkg-config gawk - - ./configure --prefix=/usr --enable-apparmor && make deb-apparmor && dpkg -i firejail*.deb + - ./configure && make deb-apparmor && dpkg -i firejail*.deb - command -V firejail && firejail --version - firejail --version | grep -F 'AppArmor support is enabled' diff --git a/Makefile.in b/Makefile.in index 0e80fb43a5c..7d961213a94 100644 --- a/Makefile.in +++ b/Makefile.in @@ -222,7 +222,7 @@ deb: dist ./mkdeb.sh deb-apparmor: dist - ./mkdeb.sh -apparmor + ./mkdeb.sh -apparmor --enable-apparmor test-compile: dist cd test/compile; ./compile.sh $(NAME)-$(VERSION) diff --git a/contrib/fj-mkdeb.py b/contrib/fj-mkdeb.py index 60e25fd14a6..f6611bee8db 100755 --- a/contrib/fj-mkdeb.py +++ b/contrib/fj-mkdeb.py @@ -3,9 +3,10 @@ # Copyright (C) 2014-2022 Firejail Authors # License GPL v2 -# This script automates the workaround for https://github.com/netblue30/firejail/issues/772 +# This script automates the creation of a .deb package. It was originally +# created to work around https://github.com/netblue30/firejail/issues/772 -import os, shlex, subprocess, sys +import os, subprocess, sys def run(srcdir, args): @@ -15,35 +16,29 @@ def run(srcdir, args): print('Error: Not a firejail source tree? Exiting.') return 1 - dry_run = False - escaped_args = [] - # We need to modify the list as we go. So be sure to copy the list to be iterated! + # Ignore unsupported arguments. for a in args[:]: if a.startswith('--prefix'): # prefix should ALWAYS be /usr here. Discard user-set values args.remove(a) - elif a == '--only-fix-mkdeb': - # for us, not configure - dry_run = True - args.remove(a) - else: - escaped_args.append(shlex.quote(a)) + + # Remove generated files. + distclean = subprocess.call(['make', 'distclean']) + if distclean != 0: + return distclean # Run configure to generate mkdeb.sh. first_config = subprocess.call(['./configure', '--prefix=/usr'] + args) if first_config != 0: return first_config - # Fix up dynamically-generated mkdeb.sh to include custom configure options. - with open('mkdeb.sh', 'rb') as f: - sh = str(f.read(), 'utf_8') - with open('mkdeb.sh', 'wb') as f: - f.write(bytes(sh.replace('./configure $CONFIG_ARGS', - './configure $CONFIG_ARGS ' + (' '.join(escaped_args))), 'utf_8')) - - if dry_run: return 0 + # Create the dist file used by mkdeb.sh. + make_dist = subprocess.call(['make', 'dist']) + if make_dist != 0: + return make_dist - return subprocess.call(['make', 'deb']) + # Run mkdeb.sh with the custom configure options. + return subprocess.call(['./mkdeb.sh'] + args) if __name__ == '__main__': @@ -51,13 +46,12 @@ def run(srcdir, args): print('''Build a .deb of firejail with custom configure options usage: -{script} [--fj-src=SRCDIR] [--only-fix-mkdeb] [CONFIGURE_OPTIONS [...]] +{script} [--fj-src=SRCDIR] [CONFIGURE_OPTIONS [...]] --fj-src=SRCDIR: manually specify the location of firejail source tree as SRCDIR. If not specified, looks in the parent directory of the directory where this script is located, and then the current working directory, in that order. - --only-fix-mkdeb: don't run configure or make after modifying mkdeb.sh CONFIGURE_OPTIONS: arguments for configure '''.format(script=sys.argv[0])) sys.exit(0) diff --git a/mkdeb.sh.in b/mkdeb.sh.in index 6d6981417fc..79f8d748cf2 100755 --- a/mkdeb.sh.in +++ b/mkdeb.sh.in @@ -9,20 +9,10 @@ set -e NAME=@PACKAGE_NAME@ VERSION=@PACKAGE_VERSION@ -PACKAGE_TARNAME=@PACKAGE_TARNAME@ -HAVE_APPARMOR=@HAVE_APPARMOR@ -HAVE_SELINUX=@HAVE_SELINUX@ EXTRA_VERSION=$1 -CONFIG_ARGS="--prefix=/usr" -if [ -n "$HAVE_APPARMOR" ]; then - CONFIG_ARGS="$CONFIG_ARGS --enable-apparmor" -fi -if [ -n "$HAVE_SELINUX" ]; then - CONFIG_ARGS="$CONFIG_ARGS --enable-selinux" -fi +test "$#" -gt 0 && shift -TOP="$PWD" CODE_ARCHIVE="$NAME-$VERSION.tar.xz" CODE_DIR="$NAME-$VERSION" INSTALL_DIR="${INSTALL_DIR}${CODE_DIR}/debian" @@ -38,7 +28,7 @@ echo "*****************************************" tar -xJvf "$CODE_ARCHIVE" #mkdir -p "$INSTALL_DIR" cd "$CODE_DIR" -./configure $CONFIG_ARGS +./configure --prefix=/usr "$@" make -j2 mkdir debian DESTDIR=debian make install-strip