[OE-core] [PATCH 1/7] bitbake.conf: fix definition of ${libexecdir}

Enrico Scholz enrico.scholz at sigma-chemnitz.de
Mon Apr 29 23:15:23 UTC 2013


Saul Wold <sgw at linux.intel.com> writes:

>>>> Things *are* expected to move around.  E.g. /usr/lib/openssh/sftp-server
>>>> becomes /usr/lib/sftp-server now.
>>>
>>> Right, so don't use Debian as a rationale for this approach.
>>
>> Debian defines libexecdir to be /usr/lib (+multiarch).  It might set
>> sometimes per-package '--libexecdir=${libexecdir}/<package>' configure
>> options, but libexecdir is always /usr/lib there.
>
> As I read though this, a couple things I noted from some of the
> available information, the GNU Directory section you quoted earlier
> actually suggests a package-name directory should be included.

Yes; automake calls this

  pkglibexecdir = $(libexecdir)/@PACKAGE@

and lot of packages are using it already to install their files.


>   The definition of ‘libexecdir’ is the same for all packages, so you
>   should install your data in a subdirectory thereof. Most packages
>   install their data under $(libexecdir)/package-name/, possibly within
>   additional subdirectories thereof, such as $(libexecdir)/package-
>   name/machine/version.
>
> And as you pointed out below, the FHS also touches on having a
> sub-directory for applications to use for non-user object and
> internal binaries (like plugins).

Yes; but this is thing of the package, not of the distribution.  When a
distribution thinks, a package pollutes $(libexecdir), the distribution
can fix *this* package.  But $(libexecdir) provided by the distribution
must never contain the package name.


>> When we really do not want executables under ${libdir}, we can set
>>
>>    libexecdir = ${prefix}/lib/libexec
>>
>> (which might be a good setting for world-builds to detect some kind of
>> libexecdir related problems).
>>
> I prefer what Ross suggested, fixing libexecdir to be
> ${exec_prefix}/lib/${BPN}

$(libexecdir) has the same meaning like $(bindir); so why do we not have

  bindir = $(prefix)/bin/${BPN}

?

Again: $(libexecdir) must be the same for every package.  All major
linux distributions follow this; why should oe differ from this rule?


>>> If we want to be like the half of the world that does the same as
>>> Fedora then we can revert back to /usr/libexec.  Or we can be like
>>> the half of the world that does the same as Debian and use something
>>> similar to ${prefix}/lib/$(DEB_SOURCE_PACKAGE) (as used in CDBS and
>>> Debhelper):
>>
>> Debian does *not* include the package name since mid 2011
>>
>>          http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541458
>>
> I just looked at a Debian build and /usr/lib is abound with package
> directories.

Nobody forbids this and it is completely fine and suggested that
packages install their files below $(pkglibexecdir).  But Debian
defines libexecdir as /usr/lib (plus an optional multiarch tag from
DEB_HOST_MULTIARCH (whatever this is)).


> Since I did the last libexecdir change, I will start to investigate
> changing libexecdir to be ${exec_prefix}/lib/${BPN}.

This is a no-go because it breaks the GNU standard like the recent
value.  fwiw, my preferences for libexecdir are (in this order):

1. ${prefix}/libexec

   --> clean separation, commonly used, but not FHS compliant (unless
   somebody interprets "/usr/lib<qual> : Alternate format libraries
   (optional)" with '<qual>=exec')

2. ${prefix}/lib

   --> follows the Debian way and is 100% FHS compliant, but might
   pollute ${libdir} and might introduce regressions in oe packaging

3. ${prefix}/lib/libexec

   --> clean separation, probably FHS compliant, but smells hacky


> The concern I have with this will be plugins and other executable
> binaries created in a multilib environment.

Plugins (aka "libraries to be loaded") are not interesting (they do not
belong into ${libexecdir}).  Executables within ${libexecdir} are to be
handled like these in ${bindir}, so that a proper libexecdir won't cause
any new multilib issue.



Enrico




More information about the Openembedded-core mailing list