[DTrace-devel] [PATCH] configure: accept standard installation directory options
Kris Van Hees
kris.van.hees at oracle.com
Wed Mar 4 20:51:20 UTC 2026
On Wed, Mar 04, 2026 at 08:19:42PM +0000, Nick Alcock wrote:
> On 4 Mar 2026, Kris Van Hees via DTrace-devel verbalised:
>
> > Even though we do not use them, the GNU Coding Standards expect configure
> > to accept the following installation directory options as well:
> >
> > --infodir=PREFIX/share/info Info documentation directory
> > --sysconfdir=PREFIX/etc System configuration directory
> > --localstatedir=PREFIX/var Runtime system data directory
> > --runstatedir=PREFIX/var/run Per-process data directory
> >
> > This patch also redefines some of the make variables in terms of one
> > another now that a larger set is supported.
>
> Oh, excellent!
>
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
>
> Looks good, but...
>
> > ---
> > GNUmakefile | 13 ++++++++-----
> > configure | 42 +++++++++++++++++++++++++++++++++++-------
> > 2 files changed, 43 insertions(+), 12 deletions(-)
> >
> > diff --git a/GNUmakefile b/GNUmakefile
> > index 38ae5423..835bc9b5 100644
> > --- a/GNUmakefile
> > +++ b/GNUmakefile
> > @@ -90,15 +90,18 @@ SBINDIR = $(prefix)/sbin
> > INSTSBINDIR = $(DESTDIR)$(SBINDIR)
> > UDEVDIR = $(prefix)/lib/udev/rules.d
> > INSTUDEVDIR = $(DESTDIR)$(UDEVDIR)
> > -SYSTEMDPRESETDIR = $(prefix)/lib/systemd/system-preset
> > -SYSTEMDUNITDIR = $(prefix)/lib/systemd/system
> > +SYSTEMDDIR = $(prefix)/lib/systemd
> > +SYSTEMDPRESETDIR = $(SYSTEMDDIR)/system-preset
> > +SYSTEMDUNITDIR = $(SYSTEMDDIR)/system
> > INSTSYSTEMDPRESETDIR = $(DESTDIR)$(SYSTEMDPRESETDIR)
> > INSTSYSTEMDUNITDIR = $(DESTDIR)$(SYSTEMDUNITDIR)
> > -DOCDIR = $(prefix)/share/doc/dtrace-$(VERSION)
> > +DATAROOTDIR = $(prefix)/share
> > +DATADIR = $(DATAROOTDIR)
> > +DOCDIR = $(DATADIR)/doc/dtrace-$(VERSION)
> > INSTDOCDIR = $(DESTDIR)$(DOCDIR)
> > -MANDIR = $(prefix)/share/man
> > +MANDIR = $(DATADIR)/man
> > INSTMANDIR = $(DESTDIR)$(MANDIR)
> > -PKGCONFIGDIR = $(prefix)/share/pkgconfig
> > +PKGCONFIGDIR = $(DATADIR)/pkgconfig
> > INSTPKGCONFIGDIR = $(DESTDIR)$(PKGCONFIGDIR)
> > TESTDIR = $(LIBDIR)/dtrace/testsuite
> > INSTTESTDIR = $(DESTDIR)$(TESTDIR)
> > diff --git a/configure b/configure
> > index cb2f585a..96a13137 100755
> > --- a/configure
> > +++ b/configure
> > @@ -53,16 +53,30 @@ help()
> > Installation paths:
> >
> > --prefix=/usr Prefix of all installed paths
> > +--exec-prefix=PREFIX Prefix of arch-dependent paths
> > --objdir=build Build directory
> > --libdir=PREFIX/lib64 Library directory
> > --bindir=PREFIX/sbin Binary directory
> > --sbindir=PREFIX/sbin Alias for --bindir
> > +--libexecdir=PREFIX/libexec Program executables directory
> > +--sysconfdir=PREFIX/etc System configuration directory
> > +--sharedstatedir=PREFIX/com Arch-independent data directory
> > +--localstatedir=PREFIX/var Runtime system data directory
> > +--runstatedir=PREFIX/var/run Per-process data directory
> > --includedir=PREFIX/include #include directory
> > ---mandir=PREFIX/share/man Manpage directory
> > ---pkg-config-dir=PREFIX/share/pkgconfig Pkg-config directory
> > ---udevdir=PREFIX/lib/udev/rules.d udev rules directory
> > ---systemd-unit-dir=PREFIX/lib/systemd/system systemd unit directory
>
> Did you mean to entirely disappear this option? It would still have an
> effect if it was kept.
Is it actually used in any way? From what I have been able to see, the unit
directory is always SYSTEMDDIR/system, just like the presets always seem to
go in SYMTEMDDIR/system-preset (for which we never had a specific option
anyway), so it would seem that --systemd-dir is sufficient.
> > ---docdir=PREFIX/share/doc/dtrace Documentation directory
> > +--oldincludedir=PREFIX/include #include directory (non-gcc)
> > +--udevdir=PREFIX/lib/udev/rules.d Udev rules directory
> > +--systemd-dir=PREFIX/lib/systemd Systemd config directory
> > +--datarootdir=PREFIX/share Arch-independent data root
> > +--datadir=DATAROOTDIR Arch-independent data directory
> > +--pkg-config-dir=DATADIR/pkgconfig Pkg-config directory
> > +--infodir=DATARIR/info Info documentation directory
> > +--localedir=DATADIR/locale locale specific data directory
> > +--mandir=DATADIR/man Manpage documentation directory
> > +--docdir=DATADIR/doc/dtrace Documentation root directory
> > +--htmldir=DOCDIR Html documentation directory
> > +--pdfdir=DOCDIR PDF documentation directory
> > +--psdir=DOCDIR PS documentation directory
> > --testdir=LIBDIR/dtrace/testsuite Testsuite install directory
>
> Nice!
>
> ... really the number of these is quite overwhelming now. I think we
> need a little more structure. It might be worth indicating in the help
> output which options have no effect, though, since some of them do have
> an effect indirectly, like --datarootdir, but some have no effect at
> all, like --oldincludedir. I'm honestly shocked --oldincludedir still
> exists -- I've never seen anything at all that uses it. Maybe GCC
> pre-2.7.x?
>
> Maybe these should be moved to separate --help sections, maybe titled
> 'Installation paths affecting other paths' and 'Unused paths accepted
> for compatibility only'?
The help already shows the way the different settings affect one another, so I
don't see what extra thing we can do here. Moving them to a separete section
seems odd because that means they get separated from one another.
Also, while we could spell out unused paths that are accepted for
compatibility, none of the packages I looked at for reference seem to do that.
According to the coding standard it is also perfectly fine to ignore them
(i.e. silently accept them).
But if you feel strongly about this, we can definitely move them to their own
section.
> > + --pdfdir=*) write_make_var PDFDIR "$option";;
> > + --psdir=*) write_make_var PSDIR "$option";;
>
> These don't exist in most Autoconf-using programs at all, though they
> are in the GNU Coding Standards. But, again, this would be fine with me
> if only they were moved into a separate --help section :)
In summary:
- I think that using --systemd-dir and deprecating --systemd-unit-dir is a
valid change, especially since we hve the inconsistency of having had that
specific option for the unit file directory but not for the presets.
- I don't think it makes sense to separate out the options for paths that have
effects on other paths, since grouping them all together as they are in this
patch actually documents how they relate to one another.
- I will move the unsused options to their own sub-section in the help to show
they exist for compatibility only. If we ever end up using them, we can
move them.
DOes that sound ok?
More information about the DTrace-devel
mailing list