Commit graph

59 commits

Author SHA1 Message Date
Kelvin M. Klann
1a576d15a9
build: rename print-version target to installcheck (#6620)
To make it consistent with the standard GNU make targets.

From the manual of GNU Make (version 4.4.1-2):

> 'installcheck'
>      Perform installation tests (if any).  The user must build and
>      install the program before running the tests.  You should not
>      assume that '$(bindir)' is in the search path.

Commands used to search and replace:

    $ git grep -Ilz print-version |
      xargs -0 -I '{}' sh -c "printf '%s\n' \"\$(sed \
        's/print-version/installcheck/g' '{}')\" >'{}'"
    $ git grep -Ilz 'print version' .github/workflows |
      xargs -0 -I '{}' sh -c "printf '%s\n' \"\$(sed \
        's/print version/make installcheck/g' '{}')\" >'{}'"

Added on commit c9531d95e ("build: add print-version target and use in
CI", 2024-02-22) / #6230.
2025-01-18 04:48:56 +00:00
Kelvin M. Klann
27b67a6c51 ci: disable build_src_package GitLab job due to libtrace errors
Build log[1]:

    $ make
    [...]
    make -C src/libtrace/
    make[1]: Entering directory '/builds/Firejail/firejail_ci/src/libtrace'
    gcc -ggdb -O2 -DVERSION='"0.9.73"' [...]  -c ../../src/libtrace/libtrace.c -o ../../src/libtrace/libtrace.o
    ../../src/libtrace/libtrace.c:451:59: warning: 'struct stat64' declared inside parameter list will not be visible outside of this definition or declaration
      451 | typedef int (*orig_stat64_t)(const char *pathname, struct stat64 *statbuf);
          |                                                           ^~~~~~
    ../../src/libtrace/libtrace.c:453:41: warning: 'struct stat64' declared inside parameter list will not be visible outside of this definition or declaration
      453 | int stat64(const char *pathname, struct stat64 *statbuf) {
          |                                         ^~~~~~
    ../../src/libtrace/libtrace.c: In function 'stat64':
    ../../src/libtrace/libtrace.c:457:40: error: passing argument 2 of 'orig_stat64' from incompatible pointer type [-Wincompatible-pointer-types]
      457 |         int rv = orig_stat64(pathname, statbuf);
          |                                        ^~~~~~~
          |                                        |
          |                                        struct stat64 *
    ../../src/libtrace/libtrace.c:457:40: note: expected 'struct stat64 *' but argument is of type 'struct stat64 *'
    ../../src/libtrace/libtrace.c: At top level:
    ../../src/libtrace/libtrace.c:476:60: warning: 'struct stat64' declared inside parameter list will not be visible outside of this definition or declaration
      476 | typedef int (*orig_lstat64_t)(const char *pathname, struct stat64 *statbuf);
          |                                                            ^~~~~~
    ../../src/libtrace/libtrace.c:478:42: warning: 'struct stat64' declared inside parameter list will not be visible outside of this definition or declaration
      478 | int lstat64(const char *pathname, struct stat64 *statbuf) {
          |                                          ^~~~~~
    ../../src/libtrace/libtrace.c: In function 'lstat64':
    ../../src/libtrace/libtrace.c:482:41: error: passing argument 2 of 'orig_lstat64' from incompatible pointer type [-Wincompatible-pointer-types]
      482 |         int rv = orig_lstat64(pathname, statbuf);
          |                                         ^~~~~~~
          |                                         |
          |                                         struct stat64 *
    ../../src/libtrace/libtrace.c:482:41: note: expected 'struct stat64 *' but argument is of type 'struct stat64 *'
    make[1]: Leaving directory '/builds/Firejail/firejail_ci/src/libtrace'

Environment: gcc (14.2.0-r4), musl-dev (1.2.5-r8) on Alpine Linux v3.21.

Relates to #6610.

[1] https://gitlab.com/Firejail/firejail_ci/-/jobs/8853165146
2025-01-15 03:11:33 -03:00
Kelvin M. Klann
2301ab2348 build: standardize ./configure arguments
For consistency and to make it clearer where jobs differ (for example,
to see where `--enable-analyzer` is used).

Changes:

* Always use --prefix=/usr and --enable-fatal-warnings (except in the
  Alpine job due to current warnings; see #6224)
* Use the same argument order

Note: mkdeb.sh and platform/rpm/mkrpm.sh already pass `--prefix=/usr` to
./configure.
2024-02-29 08:52:25 -03:00
Kelvin M. Klann
2f6920044e ci: update top-level comment in .gitlab-ci.yml
Format it for readability and update the descriptions to match the
current jobs.
2024-02-29 08:52:25 -03:00
Kelvin M. Klann
99fb723317 ci: move build_no_apparmor job near other similar jobs
To make it easier to compare and edit the main apt-based jobs in
.gitlab-ci.yml.
2024-02-29 08:52:25 -03:00
Kelvin M. Klann
ae00d7e282 ci: add and use PKGNAME variable in in debian_ci
To reduce hardcoding.

Note that this reduces duplication but the value is still hardcoded in
the job; it is not sourced from TARNAME in config.mk.
2024-02-29 08:52:25 -03:00
Kelvin M. Klann
c9531d95ed build: add print-version target and use in CI
To reduce TARNAME hardcoding.

Added on commit 6a89ab023 ("ci: run firejail --version after
build/install", 2022-05-16) / PR #5148.
2024-02-29 08:52:24 -03:00
Kelvin M. Klann
48db047cdb build: use generic wildcard on package install
To reduce TARNAME hardcoding.
2024-02-29 07:52:33 -03:00
Kelvin M. Klann
543ba298f1 ci: remove unused configure arguments in rpm jobs
They are not being properly forwarded to mkrpm.sh (which re-runs
./configure before the actual build), so just remove them for now.
2024-02-07 10:24:04 -03:00
Kelvin M. Klann
180bdee347
ci: add timeout limits (#6178)
So that they fail early instead of letting them run indefinitely when
there are problems with the CI infrastructure.

Use 5 minutes for the jobs that usually complete in under a minute
(check-profiles and codespell) and 10 minutes for the rest (most jobs
usually take 1-3 minutes).
2024-02-03 20:24:45 +00:00
Kelvin M. Klann
15e40e9ae4 ci: standardize apt-get update/install
General changes:

* Use a single -q on update, as the output is not too long
* Use a single -q on install, to show all packages at once

GitLab-specific changes:

* Use `DEBIAN_FRONTEND=noninteractive` to reduce noise
* Use --no-install-recommends to avoid installing unnecessary packages
* Filter out uninteresting lines on install

Note: `DEBIAN_FRONTEND` does not appear to be needed in the default
GitHub runner container and not many packages are currently being
downloaded/installed in them, so do the above changes only jobs that use
custom Docker images.
2023-06-14 18:54:49 -03:00
Kelvin M. Klann
0585d78d11 ci: remove commented profile checks from build jobs
There already exists a workflow dedicated to profile checks:

* .github/workflows/profile-checks.yml.

Keep the build and lint jobs separate to make it easier to spot build vs
lint failures in CI.

See also commit c3b42dbd2 ("ci: disable sort.py on gitlab jobs as well",
2023-04-10).
2023-06-14 18:01:52 -03:00
Kelvin M. Klann
dc826cba31 ci: print config.log if configure fails
Example log of it failing:

    $ ./configure
    checking for gcc... gcc
    checking whether the C compiler works... no
    configure: error: in `/tmp/build':
    configure: error: C compiler cannot create executables
    See `config.log' for more details
2023-06-14 17:30:51 -03:00
Kelvin M. Klann
7b8ce3acf4 ci: upgrade debian:stretch to debian:buster
Instead of Debian 9, use Debian 10 in build_debian_package.

It currently fails to update the package index[1]:

    $ apt-get update -qq
    W: The repository 'http://deb.debian.org/debian stretch Release' does not have a Release file.
    W: The repository 'http://deb.debian.org/debian stretch-updates Release' does not have a Release file.
    W: The repository 'http://security.debian.org/debian-security stretch/updates Release' does not have a Release file.
    E: Failed to fetch http://deb.debian.org/debian/dists/stretch/main/binary-amd64/Packages  404  Not Found [IP: 146.75.38.132 80]
    E: Failed to fetch http://deb.debian.org/debian/dists/stretch-updates/main/binary-amd64/Packages  404  Not Found [IP: 146.75.38.132 80]
    E: Failed to fetch http://security.debian.org/debian-security/dists/stretch/updates/main/binary-amd64/Packages  404  Not Found [IP: 151.101.130.132 80]
    E: Some index files failed to download. They have been ignored, or old ones used instead.

Also, note that LTS support for Debian 9 ended on 2022-06-30, while
Debian 10 has LTS support until 2024-06-30[2].

Relates to #5818.

[1] https://gitlab.com/Firejail/firejail_ci/-/jobs/4195782936
[2] https://wiki.debian.org/LTS
2023-05-06 17:58:21 -03:00
Kelvin M. Klann
339d395fbd ci: print env-related settings in each job
To make debugging easier.

Use a separate shell script instead of just a make target to ensure that
it can safely run before ./configure and without having make installed.
2023-04-28 04:45:57 -03:00
Kelvin M. Klann
fde591c2b7 ci: print some program versions
To make debugging easier.
2023-04-28 04:45:57 -03:00
Kelvin M. Klann
db1c3e49cb ci: improve quotes in gitlab ci
Changes:

* Add quotes around variables
* Use single quotes where applicable
2023-04-28 04:45:57 -03:00
Kelvin M. Klann
bb792ca4c8 ci: use one command per line instead of chaining them
To turn each step in question into a normal multi-line shell script.

Note that each step already runs with `set -e` by default.
2023-04-24 23:30:23 -03:00
Kelvin M. Klann
fd59df07de ci: line-wrap and split/join some commands
For increased readability.

Note: `>` basically turns each newline into a space while `|` keeps
newlines as is.  Both remove leading indentation.

Note2: On jobs using `apt-get install`, this commit moves package names
to their own line, to make it easier to compare which packages are being
installed across such jobs.
2023-04-24 23:29:28 -03:00
Kelvin M. Klann
c43f96253b ci: fix commented sort.py code in alpine job
This amends the following commits:

* 370b9db39 ("gitlab pipeline fixes", 2020-04-21)
* 42fdea77f ("gitlab", 2020-04-21)

Added on commit 2e14c1a1d ("Adding sort.py to GitLab CI (#2973)",
2019-09-21).
2023-04-24 23:16:48 -03:00
Kelvin M. Klann
7e41e9eb29 ci: fix swapped name/email arguments in debian_ci
Currently, the author name is used as the author email in git and vice
versa.

Changes:

* Split the commands to make them easier to read
* Put the name command first to match the usual git usage
* Fix swapped name/email arguments
* Use the DEBFULLNAME / DEBEMAIL environment variables instead of
  GitLab-specific ones

Added on commit 4cf51b591 ("extend gitlab-ci configuration to run Debian
CI tests", 2019-06-21).
2023-04-24 00:13:27 +00:00
Kelvin M. Klann
f962c9e038 ci: split configure/build/install commands on gitlab
Split them into separate steps to make it clearer in the logs which
command causes a job to fail when it does.

Note that they are already spli in the GitHub workflows:

* .github/workflows/build.yml
* .github/workflows/build-extra.yml
2023-04-10 20:30:39 -03:00
Kelvin M. Klann
c3b42dbd26 ci: disable sort.py on gitlab jobs as well
This is currently causing the following jobs to fail on GitLab[1]:

* build_ubuntu_package
* build_fedora_package

See commit df6ea884f ("merges, disable sort.py in profile checks
temporarely, two more private-etc profiles", 2023-02-14).

[1] https://gitlab.com/Firejail/firejail_ci/-/pipelines/832588068
2023-04-10 15:14:31 -03:00
Kelvin M. Klann
f33e452b04 build: deb: enable apparmor by default & remove deb-apparmor
The official .deb package is always built with apparmor support, so use
`--enable-apparmor` in mkdeb.sh and remove the "deb-apparmor" target in
order to reduce redundancy.

Note that custom configure options may be specified by calling
./mkdeb.sh directly.

For example, to build the .deb package without apparmor support, instead
of running `make deb`, the following commands can be used:

    make dist
    ./mkdeb.sh --disable-apparmor

Also, change the `build_apparmor` GitLab CI job into
`build_no_apparmor`, which is intended to check that building without
apparmor still works.

Note: This commit makes the resulting .deb package not have an
"-apparmor" suffix (see `EXTRA_VERSION` in mkdeb.sh), to avoid
redundancy (as having apparmor support becomes the default).

Misc: This is a follow-up to #5654.

Relates to #5154 #5176 #5547.
2023-02-17 10:42:08 -03:00
Kelvin M. Klann
89d45e6cf2 ci: deb: remove redundant --prefix arguments
The "deb" target depends on the "dist" target, which creates an archive
from DISTFILES.

The arguments to ./configure are misleading, as they do not affect the
archive that is used by `make deb`.  That is the case because the
configure output files (config.mk and config.sh) are not copied into the
dist archive, only their input files (config.mk.in and config.sh.in).

In order to affect the .deb package, the configure arguments have to be
passed to mkdeb.sh, which then forwards them to ./configure itself.

Note: This does not apply to the rpm-based jobs, as `make rpms` uses the
files directly rather than using the dist archive.

Relates to #5154.
2023-02-17 10:30:17 -03:00
Kelvin M. Klann
9a0fbbd719 mkdeb.sh.in: pass remaining arguments to ./configure
Currently, mkdeb.sh (which is used to make a .deb package) runs
./configure with hardcoded options (some of which are automatically
detected based on configure-time variables).  To work around the
hardcoding, contrib/fj-mkdeb.py is used to add additional options by
rewriting the actual call to ./configure on mkdeb.sh.  For example, the
following invocation adds --disable-firetunnel to mkdeb.sh:

    $ ./configure && ./contrib/fj-mkdeb.py --disable-firetunnel

To avoid depending on another script and to avoid re-generating
mkdeb.sh, just let the latter pass the remaining arguments (the first
one is an optional package filename suffix) to ./configure directly.
Example:

    $ make distclean && ./configure && make dist &&
      ./mkdeb.sh "" --disable-firetunnel

Additionally, change contrib/fj-mkdeb.py to do roughly the same as the
above example, by simply forwarding the arguments that it receives to
./mkdeb.sh (which then forwards them to ./configure).  Also, remove the
--only-fix-mkdeb option, since the script does not change mkdeb.sh
anymore.  With these changes, the script's usage (other than when using
--only-fix-mkdeb) should remain the same.

Note: To clean the generated files and then make a .deb package using
the default configuration, the invocation is still the same:

    $ make distclean && ./configure && make deb

Note2: Running ./configure in the above examples is only needed for
generating Makefile/mkdeb.sh from Makefile.in/mkdeb.sh.in after running
distclean, so that running `make` / `./mkdeb.sh` afterwards works.

Should fully fix #772.

Relates to #1205 #3414 #5148.
2022-05-29 18:59:13 -03:00
Kelvin M. Klann
1f671ab6cc gitlab-ci: actually link libapparmor on build_apparmor
The "build_apparmor" job was added on commit 342e71cd8 ("Add
deb-apparmor build to Gitlab CI", 2019-01-26).  It would call
`./mkdeb-apparmor.sh`, which would run `./configure --enable-apparmor`
directly, adding `-lapparmor` to `EXTRA_LDFLAGS` and thus passing it to
the linker.

Later, commit 87e7b3139 ("Configure Debian package with AA and SELinux
options", 2020-05-13) / PR #3414 merged mkdeb.sh and mkdeb-apparmor.sh
into mkdeb.sh.in, which does not always pass `--enable-apparmor` to
./configure directly.  Instead, it adds `--enable-apparmor` depending on
whether the `$HAVE_APPARMOR` environment variable is set, which would be
done by a previous run of ./configure with `--enable-apparmor`.  Since
on "build_apparmor" ./configure is not run the first time with
`--enable-apparmor`, neither is it on the second time and thus
`-lapparmor` is never passed to the linker.  This commit adds
`--enable-apparmor` to the first ./configure run on the ci job, so that
it gets passed to the one being executed on mkdeb.sh as well.
2022-05-17 11:42:42 -03:00
Kelvin M. Klann
428e068cdc gitlab-ci: check for apparmor support on build_apparmor
To ensure that firejail was actually built with support for it.

Note: This commit intentionally fails on GitLab CI to demonstrate that
the above is currently not the case.
2022-05-17 11:42:29 -03:00
Kelvin M. Klann
6a89ab0236 ci: run firejail --version after build/install
To ensure that the resulting program actually runs and also to show
which compile-time features it supports.
2022-05-17 11:22:27 -03:00
Reiner Herrmann
fad13024e2 CI: drop hostnames workaround 2022-02-07 20:00:56 +01:00
Reiner Herrmann
6ee7447c7d CI: replace centos (EOL) with almalinux 2022-02-07 19:50:37 +01:00
Reiner Herrmann
a2259ffce7 CI: don't try to install hostnames file 2022-01-20 21:12:13 +01:00
Kelvin M. Klann
604459a505
gitlab-ci: fix debian_ci build (dh_missing hostnames) (#4865)
Likely caused by commit 500a56efd ("more on nettrace", 2022-01-07).

From the build log of "debian_ci" for the above commit[1]:

    make[1]: Leaving directory '/builds/Firejail/firejail_ci'
       dh_fixperms -Nfirejail
       debian/rules override_dh_missing
    make[1]: Entering directory '/builds/Firejail/firejail_ci'
    dh_missing -pfirejail --fail-missing
    dh_missing: warning: etc/firejail/hostnames exists in debian/tmp but is not installed to anywhere
    dh_missing: error: missing files, aborting

[1] https://gitlab.com/Firejail/firejail_ci/-/jobs/1952432676
2022-01-18 19:10:01 +01:00
Reiner Herrmann
3e1817afc6 ci: fix gitlab ci job that fails because of new ids.config 2021-07-29 23:05:56 +02:00
Reiner Herrmann
dd8fa5e489 build: drop clang build as it is already checked by github 2020-10-01 22:34:38 +02:00
Reiner Herrmann
1f0cd90b10 build: remove jobs from gitlab CI that are already check by github 2020-10-01 19:57:08 +02:00
Reiner Herrmann
83371733dd build: check building with static analyzer in CI 2020-10-01 18:49:47 +02:00
Reiner Herrmann
99ea3cc362 ci: don't fail if strip fails, as it might not be a binary 2020-09-03 18:43:05 +02:00
Reiner Herrmann
608f29a867 ci: install gawk build dependency 2020-09-03 18:01:43 +02:00
Fred Barclay
e787921465 typo: added line to wrong CI test 2020-06-06 18:41:59 -05:00
Fred Barclay
e2ea0183cf test: build with clang 2020-06-06 18:40:06 -05:00
Fred Barclay
4b3f9683a5
CI: update & reenable RH builds 2020-05-22 18:22:06 -05:00
Fred Barclay
0fdd7688c2
"apparmor" no longer part of .deb name
See
87e7b31399
2020-05-22 18:05:57 -05:00
Fred Barclay
b85e90c4cc
Fix #3403 - missed one 2020-05-22 17:52:04 -05:00
Fred Barclay
00da385f1b
Fix #3403 2020-05-22 17:30:59 -05:00
netblue30
42fdea77f2 gitlab 2020-04-21 11:52:58 -04:00
netblue30
370b9db392 gitlab pipeline fixes 2020-04-21 10:12:27 -04:00
Reiner Herrmann
d5f359fa51 gitlab-ci: build with stretch image 2020-01-11 13:21:59 +01:00
Reiner Herrmann
e0843a3460 gitlab-ci: it's actually the redhat test that was failing 2020-01-02 12:56:22 +01:00
Reiner Herrmann
4fdb0b1633 gitlab-ci: disable continuously failing fedora test 2020-01-01 20:17:54 +01:00