[blfs-dev] Possible BLFS systemd solution

Wayne Blaszczyk wblaszcz at bigpond.net.au
Mon Jun 30 05:05:20 PDT 2014

On 30/06/14 11:07, Bruce Dubbs wrote:
> DJ Lucas wrote:
>> On 06/29/2014 02:55 PM, Armin K. wrote:
>>> Hello all,
>>> As you could see, few moments ago I've commited a "systemd2" branch,
>>> which contains a prototype of how I would try to create and maintain
>>> BLFS systemd book from single (fsvo single) xml source hierarchy.
>>> So how would I achieve that?
>>> Since there are far more packages that don't require any modifications
>>> for either systemd or systemv, it would be a bit overkill to maintain a
>>> separate branch, especially since it's impossible to keep up with
>>> Fernando.
>>> I know this has been rejected in the past, but here I go again. Chris
>>> gave me an idea of having two different "chapter" files (the ones that
>>> contain all xincludes from a chapter) and let the "make" process decide
>>> which one should be used.
>>> So the idea would be to have:
>>> postlfs/security/security.xml.systemv
>>> postlfs/security/security.xml.systemd
>>> The first one would be the same as postlfs/security/security.xml
>>> currently is, just renamed.
>>> Packages that require modifications for systemd would be renamed to do
>>> that, ie
>>> postlfs/security/polkit.xml would be for systemv setup
>>> postlfs/security/polkit-systemd.xml would be for systemd setup
>>> The second one would be referenced in
>>> postlfs/security/security.xml.systemd mentioned above.
>>> This would require a small change to BLFS top level Makefile as well as
>>> renaming the chapter files in the current book. I have commited the
>>> "systemd2" branch for prototyping the chapter "Security".
>>> Only thing that would change for editors is to make sure they use
>>> chapter.xml.systemv or chapter.xml.systemd instead of chapter.xml for
>>> inclusion of new packages.
>>> Comments?
>> You can do multiple <xi...> in the single chapter files if you want to
>> have individual files in order to minimize editor changes for the normal
>> book, but this will greatly increase workload for editors of systemd as
>> they'll likely be expected to update both versions and keep the
>> individual files synced when a non-systemd editor makes an update. This
>> just seems like too much editor work in my opinion. Things are all but
>> guaranteed to get out of sync with this method as changes from one must
>> be mirrored in another.
>> Personally, I much prefer using the profiles directly in the xml rather
>> than having multiple chapter points. Once the revision attributes are in
>> there, an editor that doesn't mess with systemd book simply need ignore
>> tags with the 'revision="systemd"' attribute. We might still have a sync
>> issue when text changes in those tags, but it's right there in the same
>> file.
>> See my example patch from 2014-02-22:
>> http://archive.linuxfromscratch.org/mail-archives/blfs-dev/2014-February/026800.html
>> In that example, I got a bit carried away in order to show all paces
>> where it can be used, but if we limit the revision attribute to <title>,
>> <para>, and <listitem> tags, and the three places (that's it for now, I
>> think) where it will be required in the chapter.xml files, I think it
>> could be both much cleaner, and much less intrusive to editors that have
>> no interest in systemd. Addition of new files for existing editors would
>> be unchanged and systemd editors can go and modify the file after
>> inclusion. If you need a more complete example, I could probably do it
>> up in a couple of hours. Another cool place where this could be used is
>> for development and released books (rather than the manual process used
>> now).
> I'm not really a fan of using xml classes to drive separate builds.  I
> don't think there is enough flexibility.
> I do have an alternate suggestion.  Just create a separate index.xml and
> for those chapters that need it, files like xfce/xfce.xml,
> xfce/apps/apps.xml, and xfce/core/core.xml.  Those index type files
> could then call the base .xml files or alternate systemd files as needed.
> We could break up general.ent into two parts: one part with no systemd
> impact and the two versions of the second part, one for sysv and the
> other for sysd.  I don't see an absolute requirement to sync every
> package for both versions, but it should be easy enough to develop a
> script to tell us when the versions differ.  I can also see where some
> packages might be in one version and not in the other.

One thing I never understood is why do we maintain all the version
numbers entities in the general.ent file? for the majority of updates,
the only thing that is updated is the version number and the md5sum
which means both files (general.ent and the package.xml) need to be
updated. If the version number entity where kept on the actual package
page, this would save the hassle of updating two files every time, and
it will also alleviate this syncing requirement.

> Finally, the Makefile could use variables based on the target or
> environment variables to generate the correct instructions for the
> actual build.  Alternatively there could just be two different Makefiles.
> Armin, do you have a list of files in BLFS that need separate systemd
> instructions?
>   -- Bruce

More information about the blfs-dev mailing list