summaryrefslogtreecommitdiff
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* meson: Use same name format for efi binary intermediatesJan Janssen2022-01-261-2/+2
|
* tests: fuzz etc_hosts_parseEvgeny Vereshchagin2022-01-201-0/+5
| | | | That's just a follow-up to https://github.com/systemd/systemd/pull/22179
* tree-wide: fix typoYu Watanabe2022-01-061-1/+1
|
* oss-fuzz: drop line-tables-onlyEvgeny Vereshchagin2022-01-051-1/+1
| | | | | | | | | | | | It was copy-pasted directly from OSS-Fuzz where it makes sense to kind of strip binaries to get nice backtraces but when the fuzzers are built and run locally with gdb it would be nice to have a little bit more than that. It was initially discovered in elfutils where I put the same flags and was surprised when I couldn't run the fuzzer comfortably step by step, which led to the same change there: https://github.com/google/oss-fuzz/pull/7092 :-)
* boot: Add gdb support and documentationJan Janssen2022-01-041-0/+85
| | | | | This will finally allow debugging issues in systemd without resorting to Print() calls all over the place.
* oss-fuzz: turn on the alignment checkEvgeny Vereshchagin2021-12-291-1/+2
|
* tests: add fuzz-bcdEvgeny Vereshchagin2021-12-291-0/+16
|
* meson: create new libsystemd-core.so private shared libraryZbigniew Jędrzejewski-Szmek2021-12-251-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The scheme is very similar to libsystemd-shared.so: instead of building a static library, we build a shared library from the same objects and link the two users to it. Both systemd and systemd-analyze consist mostly of the fairly big code in libcore, so we save a bit on the installation: (-0g, no strip) -rwxr-xr-x 5238864 Dec 14 12:52 /var/tmp/inst1/usr/lib/systemd/systemd -rwxr-xr-x 5399600 Dec 14 12:52 /var/tmp/inst1/usr/bin/systemd-analyze -rwxr-xr-x 244912 Dec 14 13:17 /var/tmp/inst2/usr/lib/systemd/systemd -rwxr-xr-x 461224 Dec 14 13:17 /var/tmp/inst2/usr/bin/systemd-analyze -rwxr-xr-x 5271568 Dec 14 13:17 /var/tmp/inst2/usr/lib/systemd/libsystemd-core-250.so (-0g, strip) -rwxr-xr-x 2522080 Dec 14 13:19 /var/tmp/inst1/usr/lib/systemd/systemd -rwxr-xr-x 2604160 Dec 14 13:19 /var/tmp/inst1/usr/bin/systemd-analyze -rwxr-xr-x 113304 Dec 14 13:19 /var/tmp/inst2/usr/lib/systemd/systemd -rwxr-xr-x 207656 Dec 14 13:19 /var/tmp/inst2/usr/bin/systemd-analyze -rwxr-xr-x 2648520 Dec 14 13:19 /var/tmp/inst2/usr/lib/systemd/libsystemd-core-250.so So for systemd itself we grow a bit (2522080 → 2648520+113304=2761824), but overall we save. The most is saved on all the test files that link to libcore, if they are installed, because there's 15 of them: $ du -s /var/tmp/inst? 220096 /var/tmp/inst1 122960 /var/tmp/inst2 I also considered making systemd-analyze a symlink to /usr/lib/systemd/systemd and turning systemd into a multicall binary. We did something like this with udevd and udevadm. But that solution doesn't fit well in this case. systemd-analyze has a bunch of functionality that is not used in systemd, so the systemd binary would need to grow quite a bit. And we're likely to add new types of verification or introspection features in analyze, and this baggage would only grow. In addition, there are the test binaries which also benefit from this.
* man: also add anotations for methodsYu Watanabe2021-12-241-0/+8
| | | | Fixes #21882.
* Change all fixed-path bash shebangs to /u/b/env bash outside test/наб2021-12-123-3/+3
|
* Export D-Bus interfaces to /usr/share/dbus-1/interfacesigo958622021-12-101-0/+61
| | | | | | | | | | | | | | | | | | Pass -Ddbus-interfaces-dir=no to meson to disable export Interfaces from: org.freedesktop.home1 org.freedesktop.hostname1 org.freedesktop.import1 org.freedesktop.locale1 org.freedesktop.LogControl1 org.freedesktop.login1 org.freedesktop.machine1 org.freedesktop.oom1 org.freedesktop.portable1 org.freedesktop.resolve1 org.freedesktop.systemd1 org.freedesktop.timedate1
* meson: add missing final newline in jinja2 outputsZbigniew Jędrzejewski-Szmek2021-12-091-0/+1
| | | | | I think this might be caused by trim_blocks=True. We were missing the final newline everywhere.
* bpf: refactor skeleton generationJames Hilliard2021-12-071-128/+0
| | | | This should hopefully fix cross compilation for the bpf programs.
* ci: pin python dependencies and let Dependabot keep track of themEvgeny Vereshchagin2021-12-071-2/+6
|
* docs: fix descriptions in discoverable partitionsAlyssa Ross2021-11-271-6/+6
| | | | | | | | | | | | | | | 00db9a114e ("docs: generate table from header using a script") got the descriptions for the partition types mixed up. After that change, the spec claimed, for example, that the /usr partition should contain "dm-verity integrity hash data for the matching root partition", and that the /usr verity partition should be of type "Any native, optionally in LUKS". This made the spec an extremely confusing read before I figured out what must have happened! I've gone through the table as it existed prior to 00db9a114e, and moved the descriptions around in the script that generates the table until they matched up with what they used to be. Then I regenerated the table from the fixed script.
* gpt: Rename PPC64LE TO PPC64_LEDaan De Meyer2021-11-241-2/+2
| | | | For consistency with ARCHITECTURE_PPC64_LE
* docs: remove comment that makes githubs renderer very angryZbigniew Jędrzejewski-Szmek2021-11-231-1/+0
| | | | It is fine on github.com, but not on github.io.
* Add a trivial guard against using the same uuid twiceZbigniew Jędrzejewski-Szmek2021-11-191-0/+6
|
* docs: document the partition UUID used by homedZbigniew Jędrzejewski-Szmek2021-11-191-0/+5
|
* docs: generate table from header using a scriptZbigniew Jędrzejewski-Szmek2021-11-191-0/+181
| | | | | | | | | | | | | | This adds a helper script: $ python3 tools/list-discoverable-partitions.py <src/shared/gpt.h <!-- generated with tools/list-discoverable-partitions.py --> | Partition Type UUID | Name | Allowed File Systems | Explanation | |---------------------|------|----------------------|-------------| | _Root Partition (Alpha)_ | `6523f8ae-3eb1-4e2a-a05a-18b695ae656f` | [Root Partition] | [Root Partition more] | | _Root Partition (ARC)_ | `d27f46ed-2919-4cb8-bd25-9531f3c16534` | ditto | ditto | ... The output can be pasted into the markdown file. I think this works better than trying to match the two lists by hand.
* oss-fuzz: move apt-gets and pips to the systemd repositoryEvgeny Vereshchagin2021-11-191-0/+7
| | | | | | | | | to be able to control our dependencies right here without sending PRs like https://github.com/google/oss-fuzz/pull/5199 and https://github.com/google/oss-fuzz/pull/5601. It should also allow us to pin meson to let Dependabot keep track of it and jump from one version to another without breaking anything
* build: preserve correct mode when generating files via jinja2Christian Brauner2021-11-081-1/+6
| | | | | | | | | When using "capture : true" in custom_target()s the mode of the source file is not preserved when the generated file is not installed and so needs to be tweaked manually. Switch from output capture to creating the target file and copy the permissions from the input file. Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
* meson-render-jinja2: use ast.literal_eval()Zbigniew Jędrzejewski-Szmek2021-11-051-2/+4
| | | | | | | | | | | Imports are sorted in the usual fashion: stdlib first. literal_eval() parses string/numbers/lists/sets/dicts, and nothing else, while eval will execute any python code. Using literal_eval() is generally more correct, because it avoids the risk of side effects from the parsed expression. In this case, we generate the parsed strings ourselves, so it's very unlikely to have anything unexpected in the expressions. But let's do the correct thing anyway.
* tree-wide: fix SPDX short identifier for LGPL-2.1-or-laterLuca Boccassi2021-10-012-2/+2
| | | | | https://spdx.dev/ids/#:~:text=Allowing%20later%20versions%20of%20a%20license https://spdx.org/licenses/LGPL-2.1-or-later.html
* licensing: add spdx header to chromiumos helper, move license fileZbigniew Jędrzejewski-Szmek2021-10-012-28/+2
| | | | | | It makes it easier to process the license automatically like other files. The text of the license in tools/chromiumos/LICENSE matches https://spdx.org/licenses/BSD-3-Clause.html exactly.
* tools: shellcheck-ify tool scriptsFrantisek Sumsal2021-09-303-31/+36
|
* git-contrib: copypaste-friendly outputLuca Boccassi2021-07-191-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Format output in a manner that can be copypasted as-is to NEWS. That is, with 8 spaces indentation and wrapped at 80 columns. Before: $ tools/git-contrib.sh Ben Stockett, Carl Lei, Frantisek Sumsal, Gibeom Gwon, Hugo Osvaldo Barrera, James Hilliard, Jan Palus, Lennart Poettering, Luca Boccassi, Luca BRUNO, Mike Gilbert, nassir90, nl6720, Raul Tambre, Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, After: Contributions from: Ben Stockett, Carl Lei, Frantisek Sumsal, Gibeom Gwon, Hugo Osvaldo Barrera, James Hilliard, Jan Palus, Lennart Poettering, Luca Boccassi, Luca BRUNO, Mike Gilbert, nassir90, nl6720, Raul Tambre, Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
* man: add "DNS resource record types" sectionZbigniew Jędrzejewski-Szmek2021-06-291-1/+2
|
* tools/analyze-dump-sort: a helper to compare two 'systemd-analyze dump' outputsZbigniew Jędrzejewski-Szmek2021-06-041-0/+78
| | | | | | | | | | | | | Lines in the dumps are ordered by some pseudo-random hashmap entry order, which makes it hard to diff two outputs. This sort the entries alphabetically, and also sorts items within the entries, and supresses timestamps and other fields which always vary. We could sort the output inside of systemd itself, but it'd make things more complex, and we probably don't need output to be sorted in most cases. It also wouldn't be enough, because timestamps and such would still need to be ignored to do a nice diff. So I think doing the sorting and suppression in a python helper is a better approach.
* core: make libbpf a dlopen() dependencyLuca Boccassi2021-05-251-1/+6
|
* Drop dependency on m4Zbigniew Jędrzejewski-Szmek2021-05-191-21/+0
| | | | | | | | | | | | | | | | m4 was hugely popular in the past, because autotools, automake, flex, bison and many other things used it. But nowadays it much less popular, and might not even be installed in the buildroot. (m4 is small, so it doesn't make a big difference.) (FWIW, Fedora dropped make from the buildroot now, https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot. I think it's reasonable to assume that m4 will be dropped at some point too.) The main reason to drop m4 is that the syntax is not very nice, and we should minimize the number of different syntaxes that we use. We still have two (configure_file() with @FOO@ and jinja2 templates with {{foo}} and the pythonesque conditional expressions), but at least we don't need m4 (with m4_dnl and `quotes').
* meson: replace some m4 templates with jinja2Zbigniew Jędrzejewski-Szmek2021-05-191-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | m4 was nice in '85, but the syntax feels a bit dated. Since we use python for meson, let's use a popular python templating engine to replace some m4 usage. A little nicety is that typos are caught: FAILED: sysusers.d/systemd-remote.conf /usr/bin/meson --internal exe --capture sysusers.d/systemd-remote.conf -- /home/zbyszek/src/systemd/tools/meson-render-jinja2.py config.h ../sysusers.d/systemd-remote.conf.j2 Traceback (most recent call last): File "/home/zbyszek/src/systemd/tools/meson-render-jinja2.py", line 28, in <module> print(render(sys.argv[2], defines)) File "/home/zbyszek/src/systemd/tools/meson-render-jinja2.py", line 24, in render return template.render(defines) File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 1090, in render self.environment.handle_exception() File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 832, in handle_exception reraise(*rewrite_traceback_stack(source=source)) File "/usr/lib/python3.9/site-packages/jinja2/_compat.py", line 28, in reraise raise value.with_traceback(tb) File "<template>", line 8, in top-level template code jinja2.exceptions.UndefinedError: 'HAVE_MICROHTTP' is undefined This checking mirrors what 349cc4a507c4d84fcadf61f42159ea6412717896 did for C defines.
* fix bash shebangsJörg Thalheim2021-05-171-1/+1
|
* Revert "tools/make-directive-index: parallelize"Zbigniew Jędrzejewski-Szmek2021-05-141-42/+21
| | | | | | | | | | | This reverts commit a2031de849da52aa85b7e4326c0112ed7e5b5672. The patch itself seems OK, but it exposes a bug in lxml or libxml2-2.9.12 which was just released. This is being resolved in https://gitlab.gnome.org/GNOME/libxml2/-/issues/255, but it might be while. So let's revert this for now to unbreak our CI. Fixes #19601.
* tools/make-directive-index: parallelizeZbigniew Jędrzejewski-Szmek2021-05-131-21/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I occasionally do 'build/man/man systemd.directives' when working on man pages, and it's annoying slow. By paralellizing the parsing of xml, we can make it a bit faster. This is still rather innefficient. Only the parsing part is serialized, xml is still produced serially at the end, which is hard to avoid. $ ninja -C build man/systemd.directives.xml before: 8.20s user 0.21s system 99% cpu 8.460 total 8.33s user 0.18s system 98% cpu 8.619 total 8.72s user 0.19s system 98% cpu 9.019 total after: 13.99s user 0.73s system 345% cpu 4.262 total 14.15s user 0.35s system 348% cpu 4.161 total 14.33s user 0.35s system 339% cpu 4.321 total I.e. it uses almost twice as much cpu, but cuts the wallclock time down (on a 2-core/4-thread cpu) to about half too, which is an overall win if you're just trying to render the man page. The change from list and .append() to set and .add() is something that could have been done before too, but it's noticable now. It cuts down on the serialization/deserialization time (about .2s).
* bpf: add build script for bpf programsJulia Kartseva2021-04-261-0/+123
| | | | | | | | | | | | | | | | | | | Add a build script to compile bpf source code. A program in restricted C is compiled into an object file. Object file is converted to BPF skeleton [0] header file. If build with custom meson build rule, the target header will reside in build/ directory (not in source tree), e.g the path for socket_bind: `build/src/core/bpf/socket_bind/socket-bind.skel.h` Script runs the phases: * clang to generate *.o from restricted C * llvm-strip to remove useless DWARF info * bpf skeleton generation with bpftool These phases are logged to stderr for debug purposes. To include BTF debug information, -g option is passed to clang. [0] https://lwn.net/Articles/806911/
* tools: shellcheck-ify most of the tool scriptsFrantisek Sumsal2021-04-2013-67/+83
|
* test: check if the unit file fuzzer corpora is up to dateFrantisek Sumsal2021-04-051-13/+47
| | | | | This follows a similar pattern we already have in place for networkd-related directives.
* git-contrib: use non-breaking spaces in namesZbigniew Jędrzejewski-Szmek2021-03-301-2/+3
| | | | | Some people have initials or abbreviated parts in the name and looks strange when a line break occurs in the middle. Let's keep each name in one line.
* tools: exclude Weblate bot from "ninja git-contrib"Lennart Poettering2021-03-171-1/+1
| | | | | Bots are not people, no reason to say thanks to them and list them as authors or contributors.
* hwdb: update for v248Zbigniew Jędrzejewski-Szmek2021-03-081-3/+1
| | | | | Seems to be additions and corrections as usual. Includes an update of the chromiumos autosuspend rules.
* update-dbus-docs: use color in summaryZbigniew Jędrzejewski-Szmek2021-02-061-1/+6
|
* update-dbus-docs: say "MODIFIED" not "OUTDATED"Zbigniew Jędrzejewski-Szmek2021-02-061-7/+8
| | | | | | When executed in test mode, "OUTDATED" is appropriate. But when executed to actually update the text, after the tool executes, those pages are the opposite, not outdated.
* oss-fuzz: show meson logsEvgeny Vereshchagin2021-02-011-1/+5
| | | | | | It should help to make it more clear what causes issues like https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30140 and https://github.com/google/oss-fuzz/pull/5084
* tools: make update-dbus-docs compatible with Python 3.6Anita Zhang2021-02-011-1/+1
| | | | | | | 668b3a42fe9e250912bd3efa4460ed691452d9bf allowed update-dbus-docs.py to start running on Cent OS 8 (instead of skipping). But subprocess.check_output()'s text argument didn't exist until Python 3.7 and C8 is still running Python 3.6. Use universal_newlines instead for backwards compatibility.
* tools: make update-dbus-docs compatible with Python 3.7Luca Boccassi2021-01-291-3/+11
| | | | | Debian Stable uses Python 3.7, but there are a couple of 3.8 features used in the script. Add fallbacks.
* tools: rename helper to match target nameZbigniew Jędrzejewski-Szmek2021-01-281-0/+0
| | | | | | The target is update-syscall-tables, so let's call the script update-syscall-tables.sh to reduce the cognitive overhead when trying to find the right file.
* Use .txt as the extension of arch syscall listsZbigniew Jędrzejewski-Szmek2021-01-281-1/+1
| | | | | This makes it easier to filter those files and tells editors that they should be treated as plain text.
* Use .txt as the extension for syscall list fileZbigniew Jędrzejewski-Szmek2021-01-281-1/+1
| | | | | | | Upstream uses .text, but this is rather unusual. Let's use .txt as the usual suffix for text files. This tells various editors and such that the file should be treated as plain text. I also want to a script to summarize license status, and having an easy-to-recognize suffix makes this easier.
* tree-wide: add spdx header on all scripts and helpersZbigniew Jędrzejewski-Szmek2021-01-2817-0/+17
| | | | | | Even though many of those scripts are very simple, it is easier to include the header than to try to say whether each of those files is trivial enough not to require one.