bugGNU gettext - Bugs: bug #60201, gettext-runtime/po/Makefile.in.in...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #60201: gettext-runtime/po/Makefile.in.in should not use @mkdir_p@

Submitter:  Arfrever <arfrever>
Submitted:  Tue 09 Mar 2021 11:12:53 PM UTC
   
 
Category:  Build Severity:  3 - Normal
Item Group:  None Status:  Invalid
Privacy:  Public Assigned to:  haible
Open/Closed:  Closed

Sat 25 Jun 2022 06:53:03 PM UTC, comment #3: 

1) You can't combine a Makefile.in.in from gettext 0.17 with the Autoconf macros from gettext 0.21. There's more than 12 years between these releases. The Makefile.in.in contains a line

GETTEXT_MACRO_VERSION = 0.17

that makes it clear which macros it expects.

More generally, it is documented in https://www.gnu.org/software/gettext/manual/html_node/gettextize-Invocation.html that you need to run the 'gettextize' program to migrate to a newer version of gettext.

The documentation does not say that running autoreconf would be enough for this purpose.

2) The error "@mkdir_p@: command not found" indicates that the 'mkdir_p' variable was not AC_SUBSTed. But Automake 1.16.3 contains these definitions

# For better backward compatibility.  To be removed once Automake 1.9.x
# dies out for good.  For more background, see:
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])


I can't explain this. I guess you must be using Automake in a strange way.

Bruno Haible <haible>
Group administrator
Wed 10 Mar 2021 01:34:23 AM UTC, comment #2: 

Autoconf 2.71
Automake 1.16.3
Gettext 0.21

We fix some things in build system of cadaver and call autoreconf.
cadaver tarball contains po/Makefile.in.in (from gettext 0.17). We update it to newest installed gettext version.
(https://gitweb.gentoo.org/repo/gentoo.git/tree/net-misc/cadaver/cadaver-0.23.3.ebuild?id=49adda165451ef32ed0c7b619650b79d1325f5f9#n28)

During 'make install', there are some non-fatal errors:

/bin/sh: line 5: @mkdir_p@: command not found

Result is that no .gmo files are installed.

These errors are from code coming from gettext's Makefile.in.in.

Preprocessed po/Makefile contains:

# We use $(mkdir_p).
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
# @install_sh@ does not start with $(SHELL), so we add it.
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
# versions, $(mkinstalldirs) and $(install_sh) are unused.
mkinstalldirs = $(SHELL) @install_sh@ -d
install_sh = $(SHELL) @install_sh@
MKDIR_P = /bin/mkdir -p
mkdir_p = @mkdir_p@


So generally gettext's Makefile.in.in currently assumes that some code calls deprecated AM_PROG_MKDIR_P macro.

Arfrever <arfrever>
Wed 10 Mar 2021 12:47:51 AM UTC, comment #1: 

For a valid bug report, you should state
1) What you did (configured a package, I guess)? With which versions of Automake, Autoconf, and gettext/autopoint?
2) What results you got. What was going wrong? Did you get an error or a warning?

Bruno Haible <haible>
Group administrator
Tue 09 Mar 2021 11:12:53 PM UTC, original submission:  

gettext provides /usr/share/gettext/po/Makefile.in.in (described as "Makefile for PO directory in any package using GNU gettext.") which has this fragment (https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-runtime/po/Makefile.in.in;h=6b25f0d9167a5e1acdacdd54546e1a9911068f61;hb=HEAD#l35):


# We use $(mkdir_p).
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
# @install_sh@ does not start with $(SHELL), so we add it.
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
# versions, $(mkinstalldirs) and $(install_sh) are unused.
mkinstalldirs = $(SHELL) @install_sh@ -d
install_sh = $(SHELL) @install_sh@
MKDIR_P = @MKDIR_P@
mkdir_p = @mkdir_p@


With newer versions of Automake, @mkdir_p@ is no longer normally expanded.
@MKDIR_P@ is expanded, but MKDIR_P is actually not used anywhere else in this file.

@mkdir_p@ would be expanded by deprecated AM_PROG_MKDIR_P macro:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob;f=m4/mkdirp.m4;h=0b6cc410db9dad03b2371d85c3027703ddca8058;hb=4a12201292d9f114549911cf5aaad15e1e5dce3c

My suggestion is to use $(MKDIR_P) instead of $(mkdir_p) in this file, and drop above mkdir_p assignment.

Original report: https://bugs.gentoo.org/457986

Arfrever <arfrever>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by haible (Posted a comment)
  • -email is unavailable- added by arfrever (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2022-06-25 haible Assigned toNone haible
    2022-06-25 haible StatusNone Invalid
        Open/ClosedOpen Closed
    2021-03-10 haible CategoryNone Build

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code