build: Install auxiliary programs in $(libexecdir), not $(libdir).

The GNU Coding Standards say that auxiliary programs should be installed in a
subdir of $(libexecdir).
<https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>

Originally, I did not do this because I also wanted to follow the Linux
Filesystem Hierarchy Standard, which in version 2 did not support /usr/libexec.
This has changed in 2015: The FHS version 3 now allows installation into
/usr/libexec.
<https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html>

Reported by Bastien Roucariès <rouca@debian.org> in
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1032010>.

* gettext-tools/src/Makefile.am (pkglibexecdir): New variable.
(DEFS): Pass a LIBEXECDIR macro.
(hostname_CPPFLAGS, urlget_CPPFLAGS, cldr_plurals_CPPFLAGS, hostname_LDFLAGS,
urlget_LDFLAGS, cldr_plurals_LDFLAGS, install-exec-local, installdirs-local,
uninstall-local): Use pkglibexecdir instead of pkglibdir.
* gettext-tools/src/msginit.c (project_id, project_id_version, plural_forms):
Test $GETTEXTLIBEXECDIR_SRCDIR instead of $GETTEXTLIBDIR_SRCDIR. Use LIBEXECDIR
instead of LIBDIR.
(get_user_email, language_team_address): Use LIBEXECDIR instead of LIBDIR.
* gettext-tools/tests/msginit-3: Set GETTEXTLIBEXECDIR_SRCDIR instead of
GETTEXTLIBDIR_SRCDIR.
* gettext-tools/tests/msginit-4: Likewise. Set GETTEXTLIBEXECDIR_BUILDDIR
instead of GETTEXTLIBDIR_BUILDDIR.
This commit is contained in:
Bruno Haible 2023-06-18 15:50:06 +02:00
parent 04dce83b0a
commit 43a4b5eeec
4 changed files with 31 additions and 29 deletions

View File

@ -89,6 +89,7 @@ jardir = $(datadir)/gettext
pkgdatadir = $(datadir)/gettext
projectsdir = $(pkgdatadir)/projects
pkglibdir = $(libdir)/gettext
pkglibexecdir = $(libexecdir)/gettext
AM_CPPFLAGS = \
-I. -I$(srcdir) \
@ -102,6 +103,7 @@ DEFS = \
-DUSEJAVA=$(USEJAVA) \
-DGETTEXTJAR=\"$(jardir)/gettext.jar\" \
-DLIBDIR=\"$(libdir)\" \
-DLIBEXECDIR=\"$(libexecdir)\" \
-DGETTEXTDATADIR=\"$(pkgdatadir)\" \
-DPROJECTSDIR=\"$(projectsdir)\" \
-DEXEEXT=\"@EXEEXT@\" @DEFS@
@ -421,9 +423,9 @@ msggrep_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(bindir)\"
msginit_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(bindir)\"
msguniq_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(bindir)\"
recode_sr_latin_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(bindir)\"
hostname_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibdir)\"
urlget_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibdir)\"
cldr_plurals_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibdir)\"
hostname_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibexecdir)\"
urlget_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibexecdir)\"
cldr_plurals_CPPFLAGS = $(AM_CPPFLAGS) -DINSTALLDIR=\"$(pkglibexecdir)\"
if RELOCATABLE_VIA_LD
msgcmp_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
msgfmt_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
@ -441,9 +443,9 @@ msggrep_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
msginit_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
msguniq_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
recode_sr_latin_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
hostname_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibdir)`
urlget_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibdir)`
cldr_plurals_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibdir)`
hostname_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibexecdir)`
urlget_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibexecdir)`
cldr_plurals_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(pkglibexecdir)`
endif
# Linking with C++ libraries is needed _only_ on mingw and Cygwin.
@ -627,22 +629,22 @@ EXTRA_DIST += cldr-plural.c cldr-plural.h
# Special rules for installation of auxiliary programs.
install-exec-local:
$(MKDIR_P) $(DESTDIR)$(pkglibdir)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) hostname$(EXEEXT) $(DESTDIR)$(pkglibdir)/hostname$(EXEEXT)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) urlget$(EXEEXT) $(DESTDIR)$(pkglibdir)/urlget$(EXEEXT)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) cldr-plurals$(EXEEXT) $(DESTDIR)$(pkglibdir)/cldr-plurals$(EXEEXT)
$(INSTALL_SCRIPT) user-email $(DESTDIR)$(pkglibdir)/user-email
$(INSTALL_SCRIPT) $(srcdir)/project-id $(DESTDIR)$(pkglibdir)/project-id
$(MKDIR_P) $(DESTDIR)$(pkglibexecdir)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) hostname$(EXEEXT) $(DESTDIR)$(pkglibexecdir)/hostname$(EXEEXT)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) urlget$(EXEEXT) $(DESTDIR)$(pkglibexecdir)/urlget$(EXEEXT)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) cldr-plurals$(EXEEXT) $(DESTDIR)$(pkglibexecdir)/cldr-plurals$(EXEEXT)
$(INSTALL_SCRIPT) user-email $(DESTDIR)$(pkglibexecdir)/user-email
$(INSTALL_SCRIPT) $(srcdir)/project-id $(DESTDIR)$(pkglibexecdir)/project-id
installdirs-local:
$(MKDIR_P) $(DESTDIR)$(pkglibdir)
$(MKDIR_P) $(DESTDIR)$(pkglibexecdir)
uninstall-local:
$(RM) $(DESTDIR)$(pkglibdir)/hostname$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibdir)/urlget$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibdir)/cldr-plurals$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibdir)/user-email
$(RM) $(DESTDIR)$(pkglibdir)/project-id
$(RM) $(DESTDIR)$(pkglibexecdir)/hostname$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibexecdir)/urlget$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibexecdir)/cldr-plurals$(EXEEXT)
$(RM) $(DESTDIR)$(pkglibexecdir)/user-email
$(RM) $(DESTDIR)$(pkglibexecdir)/project-id
DISTCLEANFILES += user-email

View File

@ -933,9 +933,9 @@ project_id (const char *header)
size_t linelen;
int exitstatus;
gettextlibdir = getenv ("GETTEXTLIBDIR_SRCDIR");
gettextlibdir = getenv ("GETTEXTLIBEXECDIR_SRCDIR");
if (gettextlibdir == NULL || gettextlibdir[0] == '\0')
gettextlibdir = relocate (LIBDIR "/gettext");
gettextlibdir = relocate (LIBEXECDIR "/gettext");
prog = xconcatenated_filename (gettextlibdir, "project-id", NULL);
@ -1015,9 +1015,9 @@ project_id_version (const char *header)
size_t linelen;
int exitstatus;
gettextlibdir = getenv ("GETTEXTLIBDIR_SRCDIR");
gettextlibdir = getenv ("GETTEXTLIBEXECDIR_SRCDIR");
if (gettextlibdir == NULL || gettextlibdir[0] == '\0')
gettextlibdir = relocate (LIBDIR "/gettext");
gettextlibdir = relocate (LIBEXECDIR "/gettext");
prog = xconcatenated_filename (gettextlibdir, "project-id", NULL);
@ -1177,7 +1177,7 @@ get_user_email ()
"msginit.exe: subprocess ... failed: No such file or directory" */
#if !(defined _WIN32 && ! defined __CYGWIN__)
{
const char *prog = relocate (LIBDIR "/gettext/user-email");
const char *prog = relocate (LIBEXECDIR "/gettext/user-email");
const char *argv[4];
pid_t child;
int fd[1];
@ -1298,7 +1298,7 @@ language_team_address ()
argv[0] = BOURNE_SHELL;
argv[1] = prog;
argv[2] = relocate (PROJECTSDIR);
argv[3] = relocate (LIBDIR "/gettext");
argv[3] = relocate (LIBEXECDIR "/gettext");
argv[4] = catalogname;
argv[5] = language;
argv[6] = NULL;
@ -1450,9 +1450,9 @@ plural_forms ()
size_t linelen;
int exitstatus;
gettextlibdir = getenv ("GETTEXTLIBDIR_BUILDDIR");
gettextlibdir = getenv ("GETTEXTLIBEXECDIR_BUILDDIR");
if (gettextlibdir == NULL || gettextlibdir[0] == '\0')
gettextlibdir = relocate (LIBDIR "/gettext");
gettextlibdir = relocate (LIBEXECDIR "/gettext");
prog = xconcatenated_filename (gettextlibdir, "cldr-plurals", EXEEXT);

View File

@ -47,7 +47,7 @@ msgstr ""
EOF
: ${MSGINIT=msginit}
GETTEXTLIBDIR_SRCDIR="$wabs_top_srcdir"/src \
GETTEXTLIBEXECDIR_SRCDIR="$wabs_top_srcdir"/src \
${MSGINIT} -l ga_IE --no-translator -o mi-test3.tmp 2>mi-test3.err
test $? = 0 || { cat mi-test3.err 1>&2; Exit 1; }

View File

@ -47,8 +47,8 @@ msgstr ""
EOF
: ${MSGINIT=msginit}
GETTEXTLIBDIR_SRCDIR="$wabs_top_srcdir"/src \
GETTEXTLIBDIR_BUILDDIR="$top_builddir"/src \
GETTEXTLIBEXECDIR_SRCDIR="$wabs_top_srcdir"/src \
GETTEXTLIBEXECDIR_BUILDDIR="$top_builddir"/src \
GETTEXTCLDRDIR="$wabs_srcdir" \
${MSGINIT} -i mi-test4.pot -l foo --no-translator --no-wrap -o mi-test4.tmp 2>mi-test4.err
test $? = 0 || { cat mi-test4.err 1>&2; Exit 1; }