Opened 11 years ago

Closed 11 years ago

#3384 closed task (fixed)

systemd-206

Reported by: bdubbs@… Owned by: bdubbs@…
Priority: normal Milestone: 7.4
Component: Book Version: SVN
Severity: normal Keywords:
Cc:

Description

A new systemd version has been released. I've done some checking and there is a reasonably major change to udev. The keymap portion that has been separate and in BLFS have moved into udev as a builtin. Generally, this is not a problem, but it requires two generated header files. These files are generated with the gperf.

We have two options: either move gperf from blfs to lfs or generate the header files and include them in the udev-lfs package.

In any case, this change affects both lfs and blfs. I am leaning toward the generate and include process but need some feedback and discussion either here within the ticket system or on -dev.

Attachments (1)

0001-man-Distribute-generated-manual-pages.patch (531 bytes ) - added by Armin 11 years ago.

Download all attachments as: .zip

Change History (13)

comment:1 by Igor Živković, 11 years ago

Another option is to replace it with eudev which is supposed to be in stable state now: https://github.com/gentoo/eudev/releases

comment:2 by bdubbs@…, 11 years ago

euduv may be an option, but it looks like it creates another set of problems. I don't see any generated man pages. It requires gtk-doc/xsltproc for the documentation.

It also is behind systemd's code. It appears to be at version 204 right now and 205 has been out for a while.

comment:3 by ken@…, 11 years ago

I've been using eudev for my last few builds (but I haven't done a build for 3 months). [ edited for correctness ]

It isn't a "let systemd go its own way" fork - it attempts to track the systemd changes. So it *must* lag behind, just like udev-lfs. The keymap changes can be seen at https://github.com/gentoo/eudev/commit/5b5ba3a997589efcf447616148b5686d10ae4e97 and retain the --disable-keymaps option which systemd dropped.

Sure, the systemd changes to use xslt for the manpages were followed. I haven't built your udev-from-systemd version for some months, but surely the position is no different ?

Using eudev also provides a working 'make check'. I'm not sure that is particularly important, and on my last build (1_beta4, Version: 200 in udev.pc) it only reported:

make[3]: Entering directory `/building/eudev-1_beta4/test'
PASS: rules-test.sh
PASS: udev-test.pl
make[4]: Entering directory `/building/eudev-1_beta4/test'

A lot less verbose than the last non-systemd version of udev,but that gives _some_ confidence.

Last edited 11 years ago by ken@… (previous) (diff)

in reply to:  3 comment:4 by bdubbs@…, 11 years ago

Replying to ken@…:

Sure, the systemd changes to use xslt for the manpages were followed. I haven't built your udev-from-systemd version for some months, but surely the position is no different ?

I'm not opposed to changing to eudev if the package follows the common procedures we see in most other packages. That is, documentation does not need to be generated from tools such as xslt or tex (makeinfo is OK). The systemd package does include the generated man pages and txt files. I just want to avoid adding extra packages to LFS just to satisfy the build requirements of udev.

Using eudev also provides a working 'make check'. I'm not sure that is particularly important, and on my last build (1_beta4, Version: 200 in udev.pc) it only reported:

make[3]: Entering directory `/building/eudev-1_beta4/test'
PASS: rules-test.sh
PASS: udev-test.pl
make[4]: Entering directory `/building/eudev-1_beta4/test'

A lot less verbose than the last non-systemd version of udev,but that gives _some_ confidence.

Minimal, but it is better than nothing.

Right now, I have added the two generated keymap .h files to the udev-lfs-206-1 tarball, made some minor changes to the Makefile, and the build is fine.

comment:5 by Bryan Kadzban, 11 years ago

Regarding whether to use eudev at all, I don't have a terribly strong opinion. It does have persistent storage symlinks (unlike the first proposed replacement when udev merged into systemd, whose name I can't remember anymore), so that, at least, is going for it.

As for moving perf across books, I neither need nor want any automatic keymap modifying tools in the base system (this is not a laptop!), so if it can no longer be disabled, that's somewhat annoying. I don't suppose the udev-lfs build system can modify the main udev-builtin.c file (if I remember its name correctly) to delete the references to the keymap stuff, and work without perf? That's probably hard, but would be one way to do it.

Or pregenerate them, which it seems Bruce just did. That's still a fair bit of useless junk that I don't care about. :-) Some people might, I guess, but they can always build with it enabled right? As long as there are options in the udev-lfs setup I guess; there might not be.

comment:6 by Armin, 11 years ago

If anyone cares enough for eudev, you can submit a simple patch I created for them to distribute manual pages in the tarball.

comment:7 by bdubbs@…, 11 years ago

The upstream eudev tarball is created on the fly from the git repository. Changing the Makefile still requires running autoreconf (not a big deal), but then make still must run xsltproc to create the man pages. That requires one of three choices: 1) add xsltproc to LFS, 2) create a tarball with the man pages, or 3) omit the man pages. I really don't like any of those choices.

For Bryan, I think the useless junk you don't care about is special keys that some keyboards, especially common with laptops, have. I don't think adding these key definitions that ultimately come from /usr/include/linux/input.h is really a problem.

comment:8 by bdubbs@…, 11 years ago

I update the book in revision 10307 with included header files (generated from linux 3.10.2). Will leave the ticket open for now, but would appreciate validation that it builds and runs correctly.

BLFS still needs to be updated to reflect removing the separate keymap section.

in reply to:  7 comment:9 by ken@…, 11 years ago

Replying to bdubbs@…:

The upstream eudev tarball is created on the fly from the git repository. Changing the Makefile still requires running autoreconf (not a big deal), but then make still must run xsltproc to create the man pages. That requires one of three choices: 1) add xsltproc to LFS, 2) create a tarball with the man pages, or 3) omit the man pages. I really don't like any of those choices.

At the risk of shouting after a departing bus (if you wish to keep tweaking a separate Makefile to put onto this week's systemd it's your time not mine) - Why would you want to change the Makefile if we moved to eudev ?

My own builds of beta4 used an upstream (eudev) fixes patch, and I suspect that even without that the tarball might have still needed the same auto love (aclocal ; automake --add-missing).

But after that it is a straight build, not too different from pre-systemd -

untar the LFS udevconfig - I used 20100128
install -dv /lib/{firmware,udev/devices/pts} # I guess that can come later :)
./configure --prefix=/usr --sysconfdir=/etc \
 --with-rootprefix="/" --libdir=/usr/lib \
 --with-firmware-path=/usr/lib/firmware \
 --with-rootlibdir=/lib --exec-prefix="/" \
 --enable-split-usr --enable-libkmod \
 --disable-static --disable-gudev --disable-keymap # LFS could omit disable-static
make
make install

ln -svf /sbin/udevd /lib/udev # for our bootscript

udevadm hwdb --update

make check

# install the LFS rules here :
cd udev-config-20100128
make install install-doc

# fix up the insane eth0 naming
echo "# dummy, so that network is once again on eth0" >/etc/udev/rules.d/80-net-name-slot.rules

The only man pages installed (in BLFS, building without keymap and introspection) were:

ken@ac4tv /scratch/ken $find /usr/share/man -name '*udev*' | xargs ls -l
-rw-r--r-- 1 root root 16720 Apr 27 02:12 /usr/share/man/man7/udev.7
-rw-r--r-- 1 root root 11043 Apr 27 02:12 /usr/share/man/man8/udevadm.8
-rw-r--r-- 1 root root  4003 Apr 27 02:12 /usr/share/man/man8/udevd.8

So about 32K of patch, but probably not going to change very much - and Armin mentioned a patch.

I also note that I still had a sed to get the tests to pass - in an LFS build /etc/udev/rules.d is empty at this point, gentoo users who run the tests will presumably already be running an older version, and in fact the rules got installed to /lib/udev/rules.d. Perhaps some of that has now changed - I haven't been watching eudev. Following sed worked - sed -i 's%/etc%/lib%g' test/test-udev.c

comment:10 by bdubbs@…, 11 years ago

That seems like quite a bit of work for the user. What I have is:

tar -xvf ../udev-lfs-206-1.tar.bz2
make -f udev-lfs-206-1/Makefile.lfs
make -f udev-lfs-206-1/Makefile.lfs install
build/udevadm hwdb --update
bash udev-lfs-206-1/init-net-rules.sh

The amount of fiddling with the Makefile is usually minimal. For this version, there were changes needed to 4 lines, plus removing several in the aux keymap segment.

I also needed to copy the two generated header files to the tarball. Actually, one could be made without too much fuss, but the second needs gperf which I don't want to add to LFS just for this. The only time consuming issue is deciding what to do, not actually doing it.

Your 'fix' of 80-net-name-slot.rules would probably be easier to just delete it. I suspect that would work.

Including the header files is a lot less intrusive than the man pages.

I'm still willing to change to eudev if it's simpler, but it looks more complicated both from the maintainer standpoint (usually me) and the user standpoint.

comment:11 by bdubbs@…, 11 years ago

Owner: changed from lfs-book@… to bdubbs@…
Status: newassigned

comment:12 by bdubbs@…, 11 years ago

Resolution: fixed
Status: assignedclosed

Fixed at revision 10307.

Note: See TracTickets for help on using tickets.