summaryrefslogtreecommitdiff
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* 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.
* meson: rename target to update-hwdb-autosuspendZbigniew Jędrzejewski-Szmek2021-01-271-0/+0
| | | | | | | | | | | | | | | | | The script is renamed to match. Now all targets are named uniformly in a tab-completion-friendly fashion, with the exception of systemd-update-po which is generated by the i18n module automatically: $ ninja -C build -t targets | grep update systemd-update-po: phony update-syscall-tables: phony update-syscall-header: phony update-hwdb: phony update-hwdb-autosuspend: phony update-dbus-docs: CUSTOM_COMMAND update-man-rules: CUSTOM_COMMAND
* meson: rename target to update-hwdbZbigniew Jędrzejewski-Szmek2021-01-271-0/+0
| | | | | The goal is to have all "update-*" targets named uniformly so that tab-completion works. The script is renamed to match.
* meson: rename target to update-man-rulesZbigniew Jędrzejewski-Szmek2021-01-271-1/+1
| | | | Same justification as for update-dbus-docs.
* meson: rename target to update-dbus-docsZbigniew Jędrzejewski-Szmek2021-01-271-1/+1
| | | | | | | | | Very old versions of meson did not include the subdirectory name in the target name, so we started adding various "top-level" custom targets in subdirectories. This was nice because the main meson.build file wasn't as cluttered. But then meson started including the subdir name in the target name. So let's move the definition to the root so we can have all targets named uniformly.
* hwdb: Pull autosuspend rules from upstream libfprintBenjamin Berg2021-01-201-1/+10
| | | | | | | | | libfprint includes a list of known fingerprint readers that can be autosuspended. Upstream libfprint generates this file from the USB IDs registered to drivers and a list of well-known readers that are currently unsupported. Closes: #17663
* tools: Pass source directory to autosuspend-update.shBenjamin Berg2021-01-191-1/+1
| | | | | This makes sense so that we can extend the script to also update other files.
* meson: add missing license headerYu Watanabe2021-01-191-0/+2
|
* Merge pull request #18263 from keszybz/syscalls-autoZbigniew Jędrzejewski-Szmek2021-01-164-14/+18
|\ | | | | Generate missing syscalls headers programatically
| * tree-wide: use curl --failZbigniew Jędrzejewski-Szmek2021-01-153-10/+10
| | | | | | | | | | curl will save the 404 response page (or another error) if the page download fails, which we never want. Let it error out instead.
| * meson: download full syscall tables from hrw/syscalls-tableZbigniew Jędrzejewski-Szmek2021-01-152-6/+10
| | | | | | | | | | The target is renamed to 'update-syscall-tables'. (Other targets with similar names will be added later.)
* | meson: Use configure_file when version-tag is specifiedDaan De Meyer2021-01-151-7/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | vcs_tag() is slow. When the version-tag meson option is set, we can use configure_file() directly to speed up incremental builds. Before (with version-tag set to v247): ``` ‣ Running build script... [1/418] Generating version.h with a custom command real 0m0.521s user 0m0.229s sys 0m0.067s ``` After (with version-tag set to v247): ``` ‣ Running build script... ninja: no work to do. real 0m0.094s user 0m0.048s sys 0m0.022s ```
* ci: move the Coverity job to GitHub ActionsFrantisek Sumsal2021-01-112-9/+38
|
* meson: Respect MESON_INSTALL_QUIETDaan De Meyer2020-12-061-3/+9
| | | | | | MESON_INSTALL_QUIET is set when --quiet is passed to meson install. Make sure we check the variable in our custom install scripts and don't output anything if it is set.
* hwdb: update chromiumos autosuspend rulesZbigniew Jędrzejewski-Szmek2020-11-261-0/+2
|
* tools: drop unnecessary "else" after for loopYu Watanabe2020-11-201-2/+1
|
* git-contrib: exclude -rc tagsLennart Poettering2020-11-101-1/+1
|
* license: LGPL-2.1+ -> LGPL-2.1-or-laterYu Watanabe2020-11-0911-11/+11
|
* Partially revert "hwdb: add trailing ":*" everywhere"Zbigniew Jędrzejewski-Szmek2020-11-031-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit c0443b97b71d5f70a0622061f589307bec5502c6. I got various cases wrong: "usb:v04F3p2B7Cd5912dc00dsc00dp00ic03isc00ip00in00" "usb:v0627p0001:QEMU USB Tablet" "input:b0003v0627p0001e0001-e0,1,2,4,k110,111,112,r0,1,8,B,am4,lsfw" OTOH: -evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnASUSTeKComputerInc.:pnN53SV:* +evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnASUSTeKComputerInc.:pnN53SV* is OK. Other parts follow after 'pn'. -mouse:*:name:*Trackball*:* -mouse:*:name:*trackball*:* -mouse:*:name:*TrackBall*:* +mouse:*:name:*Trackball*: +mouse:*:name:*trackball*: +mouse:*:name:*TrackBall*: ... and anything else with :name should be OK too, because our imports always include ":" at the end: IMPORT{builtin}="hwdb 'joystick:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'" Including '*' at the end makes the pattern work even if we decide to add something to the match string later. Fixes #17499.
* hwdb: add trailing ":*" everywhereZbigniew Jędrzejewski-Szmek2020-10-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No functional change is intended. The general pattern of changes: -usb:v04F3p2B7C* +usb:v04F3p2B7C:* This is mostly a clarification, to make the part that makes the usb vXXXXpYYYY part visually separated. It would only make a difference if we added further keys with a different number of digits, which is unlikely. -usb:v0627p0001:*QEMU USB Keyboard* -usb:v0627p0001:*QEMU USB Mouse* -usb:v0627p0001:*QEMU USB Tablet* +usb:v0627p0001:*QEMU USB Keyboard*:* +usb:v0627p0001:*QEMU USB Mouse*:* +usb:v0627p0001:*QEMU USB Tablet*:* Again, only a clarification. We know that ":" will appear somewhere later in the match key, so anything that matches "…Keyboard*" will also match "…Keyboard*:*". -evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnASUSTeKComputerInc.:pnN53SV* +evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnASUSTeKComputerInc.:pnN53SV:* This makes the match narrower. Previously we would match product "N53SV" and "N53SV2", "N53SV3", and others. Here we are saying that the ':pn' part must match exactly. Most of the changes in this patch match this pattern. I made a few judgement calls and used "pn…*:*" when I wasn't sure if the full pn is included: -evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision* +evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:* -evdev:name:Cypress APA Trackpad ?cyapa?:dmi:*:svnHewlett-Packard*:pnFalco*: +evdev:name:Cypress APA Trackpad ?cyapa?:dmi:*:svnHewlett-Packard*:pnFalco*:* This more like the "QEMU" example above, since all dmi strings end in ":", so anything which matches the old version will also match the new version. -evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr* +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:* I replaced trailing ":pvr*" by ":*". This makes no functional difference because we expect "pvr" to always appear in the dmi string. This makes patterns shorter. -evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn* +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*:* OTOH, ":pn*" is kept. This is because almost patterns include ":pn*", and if we skip it, we should make it clear that this is on purpose, that we really want to match any product name. The python script to generate autosuspend rules is updated to use ":*" too. Inspired by https://github.com/systemd/systemd/pull/17281#discussion_r501489750.
* hwdb: update chromiumos autosuspend rulesZbigniew Jędrzejewski-Szmek2020-10-151-0/+2
|
* update-dbus-docs: skip test if python is too oldZbigniew Jędrzejewski-Szmek2020-09-201-5/+10
|
* update-dbus-docs: skip test lxml is not availableZbigniew Jędrzejewski-Szmek2020-09-181-7/+16
|
* update-dbus-docs: add hintZbigniew Jędrzejewski-Szmek2020-08-271-1/+2
|
* update-dbus-docs: omit verbose output when in --test modeZbigniew Jędrzejewski-Szmek2020-08-271-5/+5
| | | | It makes the ninja output listing very long for no good purpose.
* update-dbus-docs: add test modeZbigniew Jędrzejewski-Szmek2020-08-271-8/+19
|