Skip to content

Commit

Permalink
app-crypt/ccid: make sure elibtoolize is applied
Browse files Browse the repository at this point in the history
Needed to e.g. pass LTO warning flags through to the linker. In theory
it would be nice to run a full eautoreconf, since eautoconf is already
run, but the package errors out with automake since a patch deletes the
use of flex in configure.ac while it is still required for the actual
build.

Actually-correct patch created & fix submitted upstream, since there was
never a good reason to hack around this locally:
LudovicRousseau/CCID#140

Signed-off-by: Eli Schwartz <[email protected]>
Signed-off-by: Sam James <[email protected]>
  • Loading branch information
eli-schwartz authored and thesamesam committed Jun 14, 2024
1 parent b462e21 commit b8b7401
Show file tree
Hide file tree
Showing 4 changed files with 121 additions and 11 deletions.
2 changes: 1 addition & 1 deletion app-crypt/ccid/ccid-1.5.4.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ PATCHES=(
src_prepare() {
default

eautoconf
eautoreconf
}

src_configure() {
Expand Down
2 changes: 1 addition & 1 deletion app-crypt/ccid/ccid-1.5.5.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ PATCHES=(
src_prepare() {
default

eautoconf
eautoreconf
}

src_configure() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,71 @@
Bug: https://bugs.gentoo.org/221361
Reverts upstream commit eec7cdf0
From 5bd94d9670ad10df9f14349dfa098d0a2e40ab08 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <[email protected]>
Date: Mon, 10 Jun 2024 22:02:37 -0400
Subject: [PATCH] make building work again when flex is not installed

This explicitly reverts commit eec7cdf03dda2bd26e320ead73b91da5a9d86443
because it was a bad idea.

The motivating bug report was https://github.com/LudovicRousseau/PCSC/issues/124
and the issue there occurred when building from a git clone, running
./bootstrap && ./configure && make, and having:

- configure succeed
- make "succeeeds" at having $LEX run, do nothing and fail to generate
required sources
- compiling nonexistent files fail with highly confusing errors

The autoconf manual has always documented the correct way to handle this
is to check if lex is unavailable, and set it to the famous automake
wrapper "missing", which checks if a program is missing at build time
rather than at ./configure time, and fails the build if the rule cannot
be run. This means:

When building from a git clone, if flex is not available then
- configure succeeds
- make fails to run $LEX, and tells you to install flex

The previous attempt to fix the highly confusing error instead resulted
in configure erroring out, and saying flex is required, even when it is
*not* required because a `make dist` tarball was used, which contains
pregenerated tokenparser.c for the express purpose of making flex
unnecessary.

See autoconf documentation on $LEX:
https://www.gnu.org/software/autoconf/manual/autoconf-2.72/html_node/Particular-Programs.html#index-AC_005fPROG_005fLEX-1

And automake documentation on why to use "missing":
https://www.gnu.org/software/automake/manual/html_node/maintainer_002dmode.html

Signed-off-by: Eli Schwartz <[email protected]>
---
configure.ac | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index d291f2b..a5af2eb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,11 +32,6 @@ AC_PROG_CPP
AC_PROG_INSTALL
@@ -33,10 +33,10 @@ AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_PROG_LN_S
-AC_PROG_LEX([noyywrap])
AC_PROG_LEX([noyywrap])
-if test $LEX = ":"
-then
- AC_MSG_ERROR([no lex or flex found])
-fi
+AS_IF([test $LEX = ":"], [
+ AM_MISSING_PROG(MISSINGLEX, [flex])
+ LEX=$MISSINGLEX]
+)
AM_PROG_AR
PKG_PROG_PKG_CONFIG

@@ -354,4 +354,3 @@ AC_CONFIG_FILES(Makefile
examples/Makefile)

AC_OUTPUT
-
--
2.44.2

Original file line number Diff line number Diff line change
@@ -1,13 +1,68 @@
Bug: https://bugs.gentoo.org/221361
Reverts upstream commit eec7cdf0 & 41270c2
From 7e2207a07979b6c1b206024e83e22ca2bbd4e17c Mon Sep 17 00:00:00 2001
From: Eli Schwartz <[email protected]>
Date: Mon, 10 Jun 2024 22:02:37 -0400
Subject: [PATCH] make building work again when flex is not installed

This explicitly reverts commit eec7cdf03dda2bd26e320ead73b91da5a9d86443
because it was a bad idea.

The motivating bug report was https://github.com/LudovicRousseau/PCSC/issues/124
and the issue there occurred when building from a git clone, running
./bootstrap && ./configure && make, and having:

- configure succeed
- make "succeeeds" at having $LEX run, do nothing and fail to generate
required sources
- compiling nonexistent files fail with highly confusing errors

The autoconf manual has always documented the correct way to handle this
is to check if lex is unavailable, and set it to the famous automake
wrapper "missing", which checks if a program is missing at build time
rather than at ./configure time, and fails the build if the rule cannot
be run. This means:

When building from a git clone, if flex is not available then
- configure succeeds
- make fails to run $LEX, and tells you to install flex

The previous attempt to fix the highly confusing error instead resulted
in configure erroring out, and saying flex is required, even when it is
*not* required because a `make dist` tarball was used, which contains
pregenerated tokenparser.c for the express purpose of making flex
unnecessary.

See autoconf documentation on $LEX:
https://www.gnu.org/software/autoconf/manual/autoconf-2.72/html_node/Particular-Programs.html#index-AC_005fPROG_005fLEX-1

And automake documentation on why to use "missing":
https://www.gnu.org/software/automake/manual/html_node/maintainer_002dmode.html

Signed-off-by: Eli Schwartz <[email protected]>
---
configure.ac | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index eb2370f..c012f2a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,7 +33,5 @@
@@ -33,7 +33,10 @@ AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_PROG_LN_S
-AC_PROG_LEX([noyywrap])
AC_PROG_LEX([noyywrap])
-AS_IF([test $LEX = ":"], [AC_MSG_ERROR([no lex or flex found])])
+AS_IF([test $LEX = ":"], [
+ AM_MISSING_PROG(MISSINGLEX, [flex])
+ LEX=$MISSINGLEX]
+)
AM_PROG_AR
PKG_PROG_PKG_CONFIG

@@ -331,4 +334,3 @@ AC_CONFIG_FILES(Makefile
examples/Makefile)

AC_OUTPUT
-
--
2.44.2

0 comments on commit b8b7401

Please sign in to comment.