This is a combination of upstream commits
dced15575f7bf172e3c9d798c43477539525558c
7bed7f0e3b1f9596aedb64657e432e5b267adebb
by
Simon McVittie <simon.mcvittie@collabora.co.uk>
7bed7f0e3b1f9596aedb64657e432e5b267adebb
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
The way the kernel namespaces have been implemented breaks assumptions
udev made regarding uevent sequence numbers. Creating devices in a
namespace "steals" uevents and its sequence numbers from the host. It
confuses the "udevadmin settle" logic, which might block until util a
timeout is reached, even when no uevent is pending.
Remove any assumptions about sequence numbers and deprecate libudev's
API exposing these numbers; none of that can reliably be used anymore
when namespaces are involved.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
These commits were authored by
Zbigniew Jędrzejewski-Szmek
Tom Gundersen
Kay Sievers
Lennart Poettering
Shawn Landden
Daniel Buch
Martin Pitt
Karel Zak
Yang Zhiyong
Note: udev_builtin_net_setup_link has *not* been imported. Also
still missing from udev-builtin is udev_builtin_uaccess.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This reverts commit aa417a4d83.
Preface: The kmod+tmpfiles static dev-node creation requires two commands to
be executed at runtime -- it is not something that will automatically occur
without a system's setup being explicitly designed or changed so that these
commands are executed.
Preface2: In order for the kmod+tmpfiles static dev-node creation to work
properly, that -must- be executed at startup before {systemd-,}udevd starts.
The reason for this is because udevd will only set permissions on those files
at startup, and so if udevd starts beforehand then these nodes will exist with
permissions that are (probably) too restrictive.
The function in udevd which creates static-nodes is non-fatal and only updates
mtime on the devnodes if they already exist. As such, if a system is configured
to execute kmod+tmpfiles to create static-nodes, because that must occur first,
eudev's udevd will not conflict. Also, if a system does not execute kmod+tmpfiles,
then eudev will still create the static devnodes, even if kmod-14 or higher is
installed.
There *may* be a conflict if kmod+tmpfiles is executed after udevd starts, but
as per "preface2" this is not a supported configuration.
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
This address upstream commit edeb68c53f1cdc452016b4c8512586a70b1262e3
and https://bugs.gentoo.org/show_bug.cgi?id=477890. If eudev is
configured with --enable-libkmod then we check for kmod >= 14 and
ifdef out the code removed in the upstream commit. Otherwise we
retain it for modutils.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit imports the new internal keyboard handling from upstream.
This is a combination of many upstream commits, including those
that added code, removed old code, and updated the hwdb.
Some commits (hwdb ones specifically) were unrelated but brought
in anyways to keep the whole hwdb consistent. Each upstream
commit included is as follows:
9d7d42bc406a2ac04639674281ce3ff6beeda790 - internal keymap support
0c959b39175b126fdb70ae00de37ca6d9c8ca3a1 - hwdb: keyboard -- add file
e8193554925a22b63bef0e77b8397b56d63a91ff - hwdb: keyboard -- update comments
c79d894d590fc9df4861738555cc43c477e33376 - hwdb: import data
aedc2eddd16e48d468e6ad0aea2caf00c7d37365 - hwdb: keyboard update
97a9313cafccf772ce03f5ebd36fe4d9d8412583 - hwdb: drop non-existant Samsung 900XC3 from keymap
ddc77f62244bb41d5c8261517e2e1ff1b763fc94 - switch from udev keymaps to hwdb
0c3815773331b263713f4f7b9d80bc1ca159338e - also remove keymaps-force-release directory
1b6bce89b3383904d0dab619dd38bff673f7286e - keymap: re-add Logitech USB corded/cordless models
bf89b99c5a39115112c2eda4c2103e2db54988d2 - 60-keyboard.hwdb: Fix syntax error
ce39bb6909578017aa10031638e724e038f0b859 - hwdb: data update, upstream
884c86812c51479496edd50b278383d7bb67baf0 - rules: keyboard - use builtin command
All code from each of the above commits is attributed to the original
authors.
There were some adjustments made in order to support the code differences
between upstream and eudev, which was done by myself.
Also of note is that the code can still be disabled via the --disable-keymaps
configure option, which was removed from upstream.
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
This code was dropped while importing from upstream. It is needed
to allow the legacy renaming of interfaces like eth* or wlan*.
X-Eudev-Bug: 56
X-Eudev-Bug-URL: https://github.com/gentoo/eudev/issues/56
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Previously, rootprefix was set to the actual value of the default prefix,
which caused issues when running 'make distcheck' since prefix is set
to a non-standard value but rootprefix is unset. By assigning the variable
rather than its contents, this should now be avoided.
Both scripts had hard-coded paths to 'rule_generator.functions'; these were changed
to be substituted in by configure so the paths will match where files are
installed.øy
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This restores the rule generator scripts for the persistent
network and optical device rule generator scripts that were
removed after udev-171, and re-introduces their installation
to the build system.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Distros that whish to support old kernels should set
--with-firmware-dirs="/usr/lib/firmware/updates:/usr/lib/firmware"
to retain the old behaviour.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
ie, fix another regression in our build system ; gentoo bug 455326
it's common for eg. mips systems to not have symlink from the directory
{lib32 or lib64} to /lib. only the libraries belong to /$(get_libdir) and
everything in /lib/udev goes to, well, /lib/udev, NOT /$(get_libdir)/udev
-- ssuominen
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
Embedded systems may not want to include util-linux when they do
not intend to use blkid functionality
Modified from original author's commit to not install
60-persistent-storage.rules if blkid is disabled
systemd commit f553b3b1074151200187df916427a1468186435e
Original author: Anders Olofsson <Anders.Olofsson@axis.com>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This option should be enabled by default, however there was no logic
in AC_ARG_ENABLE to set the variable to be enabled when the flag was
unspecified
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
We add an autotools check to use mkstemp() and fcntl() when mkostemp()
is missing. This is not strictly equivalent because we have no way of
setting the file access mode O_WRONLY flag, but that should produce no
functional difference.
Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Add --enable-legacylib option to configure, allowing for build and
installation of libudev.so.0 shared library for supporting pre-udev-183
software. Library is installed to rootlibdir.
Note that this legacy library will not be maintained, and should not be used
for anything other than supporting a working system until all software
on the system is migrated to use libudev.so.1
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
We haven't confirmed yet that everything is compliant with
196 but libudev is and it seems relevant that udevadm reports
the udev version that provides hwdb functions
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Keymaps rules had stated to add or modify /usr/lib/udev/* files instead
of using generic paths, and there was no mention of /etc/udev/* being valid
even though it is (and is the better way to do system-specific
modifications)
Since these keymaps are the default reference files they should be
installed in the same location as the default rules files. This
matches sys-fs/udev behaviour as well
This is necessary because the code originally defined paths assuming UDEV_LIBEXECDIR
was /usr prefixed, and also that udevrulesdir was located in /etc. Since (1) both of
these defaults have changed, and (2) they could be set to more or less anything, we
want to ensure that there is support for the standard paths as well, irrespective of
what UDEV_LIBEXECDIR and UDEV_RULES_DIR are set to.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Commit ff2c503df0 introduced accept4() into
udev, which broke compatibility with kernels older than Linux 2.6.32 (or
Linux 2.6.36 on ARM). The purpose of accept4() is to permit
O_NONBLOCK and O_CLOEXEC to be specified at the accept() call site
while previously, they had to be set using fcntl() because Linux does
not inherit them.
Since accept4() increases the minimum kernel version, we add a fallback
path for situations in which it is unavailable.
Reported-by: Stephen Klimaszewski <steev@gentoo.org>
Signed-off-by: Richard Yao <ryao@gentoo.org>
Module loading support was unconditionally disabled in the initial
autotools tests. I had missed this in my testing because I still had the
80-drivers.rules file from udev 171 on my system, which masked this
issue by invoking modprobe explicitly. This patch corrects the issue.
Signed-off-by: Richard Yao <ryao@gentoo.org>
The use of the eudev version in pkgconfig files caused build failures,
so we switch to the udev version for compatibility purposes.
Resolvesgentoo/eudev#22
Signed-off-by: Richard Yao <ryao@gentoo.org>
This commit makes sure that src/gudev/gudevprivate.h is included
in the distribution, fixing a failure in building gudev with
`make distcheck`. There's also some code cleanup and migration
of all configurable paths to the main configure.ac file.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit the related issues of building gudev with/out
introspection. It draws on suggestions from nvinson in
https://github.com/gentoo/eudev/pull/20
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
We move the test-udev.c and test-libudev.c from src/test to test.
This corrects the a problem with hard coded relative paths finding
the test/test/sys directory created by test/udev-test.pl.
This commit draws heavily from nvinson patch in
https://github.com/gentoo/eudev/pull/20
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit is a continuation of the previous one in which all the configured
paths obtained in configure.ac are propagated to the Makefile.am and .c files
via AM_CPPFLAGS of the form -DUDEV_CONF_FILE=\"$(udevconffile)\". This should
address the issue in
https://github.com/gentoo/eudev/issues/17
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
The configuration of the installation paths for various components
was scattered between the main configure.ac file and the various
Makefile.am's. These components are: udev config file, hwdb, keymaps
and force-release keymaps and the rules. This commit consolidates
them all into one point in configure.ac and anticipates the inclusion
of new AM_CPPFLAGS of the form -DHWDB_BIN=@udevhwdbdir@ as upstream
has done, so it is easier to address issues like:
https://github.com/gentoo/eudev/issues/17
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
The original checks for python were to build some man pages and
for systemd-python. These checks are no longer relevant. There
still is a dependency on python for tests but this is checked by
test/rules-test.sh which tests for python or skips. Also, there
is a dependency on perl for both tests and hwdb. These checks can
be reintroduced at a future date when re revisit both.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
The GTK_DOC_CHECK macro includes AC_ARG_ENABLE/AS_HELP_STRING etc
for --enable-gtk-doc and there is no need for a second check.
One caveat should be noted: GTK_DOC_CHECK must begin the line for
gtkdocize to recognize its presense in configure.ac.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
The keys/keymap test preformed by src/keymap/check-keymaps.sh must
find both keys.txt and the keymap directory. When building out of
the source tree, eg when doing `make distcheck`, these are located
at ${top_builddir}/src/keymap/keys.txt and ${top_srcdir}/keymap/,
respectively. This patch fixes the build so that these are now
correctly found.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit reintroduces code to
1) build src/keymap
2) test keymap/Makefile.am that it has all the key maps listed
3) test that all the key names in keymap/* are in <linux/input.h>
4) do a syntax check on rules/*.rules which now includes
95-keymap.rules and 95-keyboard-force-release.rules
For #4, the regex expressions in rule-syntax-check.py had to be
updated. They do not allow trailing comments via # comment, and
I did not include that. A rule in 95-keymap.rules had to have its
comment moved from the end to another line.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Changes to rules were introduced by
7c2dee4a4d while builtin-blkid support was
introduced in other commits. The removal of systemd resulted in this
code causing linker errors. This code adds complexity with no clear
benefit, so we remove it.
Signed-off-by: Richard Yao <ryao@gentoo.org>
Changes to rules were introduced by
06316d9f1a while kmod support was
introduced in other commits. A ton of commits were made involving kmod
and it is quite clear that it is broken, so we remove it.
This changes our rules to depend on modprobe. As long as the modprobe
binary is in /, and not /usr, udev module loading should function
properly.
Signed-off-by: Richard Yao <ryao@gentoo.org>
The original Makefile.am was drawn to the top level. This commit
breaks it out into the various directories with SUBDIRS connecting
them. This makes each directory easier to maintain.
This is the first pass attempting to keep as much of the build system
as is necessary for only udev from the fork. Emphasis was given to
configure.ac. Gutting had to be done to Makefile.am but this needs
work to be broken out into SUBDIR Makefile.am which each address those
pieces.
This is the usual setup, where pythonX.Y and pythonX.Y-config go
together. Using python-config with python3 will only lead to
confusion.
--libs is changed to --ldflags, since the latter also includes other
required flags like -L<dir>.
The tests for HAVE_PYTHON and HAVE_PYTHON_DEVEL are separated. It is
possible to have python development libraries installed without the
binary (or to want to build python modules without using python during
the build).
A line is added to the output, to show what flags will be used for
python.
Being able to be explicit about Python support (in addition to the
default of auto-detecting it) and acting upon the result, specifying
it as an option gains us more control about both dependencies and
the resulting build.
Furthermore, relying purely on auto-detection can lead to problems for
source-based distros. E. g. systemd being built before *both* 32-bit &
64-bit ABIs are installed will lead to build failures as systemd's
build system will pick up either 32-/64-bit Python, conclude both are
available and fail if that's not the case.