public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config
@ 2025-02-12  8:16 Alyssa Ross
  2025-02-12 21:20 ` Darrick J. Wong
  0 siblings, 1 reply; 5+ messages in thread
From: Alyssa Ross @ 2025-02-12  8:16 UTC (permalink / raw)
  To: linux-xfs

This fixes the following build error with icu 76, also seen by
Fedora[1]:

	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: /nix/store/jbnm36wq89c7iws6xx6xvv75h0drv48x-icu4c-76.1/lib/libicuuc.so.76: error adding symbols: DSO missing from command line
	collect2: error: ld returned 1 exit status
	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
	make[1]: *** [include/buildrules:35: scrub] Error 2

Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
 m4/package_icu.m4 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/m4/package_icu.m4 b/m4/package_icu.m4
index 3ccbe0cc..6b89c874 100644
--- a/m4/package_icu.m4
+++ b/m4/package_icu.m4
@@ -1,5 +1,5 @@
 AC_DEFUN([AC_HAVE_LIBICU],
-  [ PKG_CHECK_MODULES([libicu], [icu-i18n], [have_libicu=yes], [have_libicu=no])
+  [ PKG_CHECK_MODULES([libicu], [icu-i18n icu-uc], [have_libicu=yes], [have_libicu=no])
     AC_SUBST(have_libicu)
     AC_SUBST(libicu_CFLAGS)
     AC_SUBST(libicu_LIBS)

base-commit: 90d6da68ee54e6d4ef99eca4a82cac6036a34b00
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config
  2025-02-12  8:16 [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config Alyssa Ross
@ 2025-02-12 21:20 ` Darrick J. Wong
  2025-02-13  9:34   ` Alyssa Ross
  0 siblings, 1 reply; 5+ messages in thread
From: Darrick J. Wong @ 2025-02-12 21:20 UTC (permalink / raw)
  To: Alyssa Ross; +Cc: linux-xfs

On Wed, Feb 12, 2025 at 09:16:49AM +0100, Alyssa Ross wrote:
> This fixes the following build error with icu 76, also seen by
> Fedora[1]:
> 
> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: /nix/store/jbnm36wq89c7iws6xx6xvv75h0drv48x-icu4c-76.1/lib/libicuuc.so.76: error adding symbols: DSO missing from command line
> 	collect2: error: ld returned 1 exit status
> 	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
> 	make[1]: *** [include/buildrules:35: scrub] Error 2
> 
> Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]
> Signed-off-by: Alyssa Ross <hi@alyssa.is>

Interesting that this pulls in libicuuc just fine without including
icu-uc.pc, at least on Debian 12:

$ grep LIBICU_LIBS build-x86_64/
build-x86_64/include/builddefs:222:LIBICU_LIBS = -licui18n -licuuc -licudata

Debian sid has the same icu 76 and (AFAICT) it still pulls in the
dependency:

Name: icu-i18n
Requires: icu-uc

Is there something different in Fedora nowadays?

I'm not opposed to this change, I'm wondering why there's a build
failure and how adding it explicitly to AC_HAVE_LIBICU fixes it.

--D

> ---
>  m4/package_icu.m4 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/m4/package_icu.m4 b/m4/package_icu.m4
> index 3ccbe0cc..6b89c874 100644
> --- a/m4/package_icu.m4
> +++ b/m4/package_icu.m4
> @@ -1,5 +1,5 @@
>  AC_DEFUN([AC_HAVE_LIBICU],
> -  [ PKG_CHECK_MODULES([libicu], [icu-i18n], [have_libicu=yes], [have_libicu=no])
> +  [ PKG_CHECK_MODULES([libicu], [icu-i18n icu-uc], [have_libicu=yes], [have_libicu=no])
>      AC_SUBST(have_libicu)
>      AC_SUBST(libicu_CFLAGS)
>      AC_SUBST(libicu_LIBS)
> 
> base-commit: 90d6da68ee54e6d4ef99eca4a82cac6036a34b00
> -- 
> 2.47.0
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config
  2025-02-12 21:20 ` Darrick J. Wong
@ 2025-02-13  9:34   ` Alyssa Ross
  2025-02-13  9:39     ` Alyssa Ross
  0 siblings, 1 reply; 5+ messages in thread
From: Alyssa Ross @ 2025-02-13  9:34 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

[-- Attachment #1: Type: text/plain, Size: 1974 bytes --]

"Darrick J. Wong" <djwong@kernel.org> writes:

> On Wed, Feb 12, 2025 at 09:16:49AM +0100, Alyssa Ross wrote:
>> This fixes the following build error with icu 76, also seen by
>> Fedora[1]:
>> 
>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: /nix/store/jbnm36wq89c7iws6xx6xvv75h0drv48x-icu4c-76.1/lib/libicuuc.so.76: error adding symbols: DSO missing from command line
>> 	collect2: error: ld returned 1 exit status
>> 	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
>> 	make[1]: *** [include/buildrules:35: scrub] Error 2
>> 
>> Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]
>> Signed-off-by: Alyssa Ross <hi@alyssa.is>
>
> Interesting that this pulls in libicuuc just fine without including
> icu-uc.pc, at least on Debian 12:
>
> $ grep LIBICU_LIBS build-x86_64/
> build-x86_64/include/builddefs:222:LIBICU_LIBS = -licui18n -licuuc -licudata
>
> Debian sid has the same icu 76 and (AFAICT) it still pulls in the
> dependency:
>
> Name: icu-i18n
> Requires: icu-uc

I don't know too much about Debian, so I might be doing something wrong,
but when I looked in a fresh Debian Sid container I see a libicu-dev
package that's still on 72.1-6, a libicu76 package, but no libicu76
package.  I'm not sure there's currently a package that installs the
icu-i18n.pc from ICU 76?

> Is there something different in Fedora nowadays?
>
> I'm not opposed to this change, I'm wondering why there's a build
> failure and how adding it explicitly to AC_HAVE_LIBICU fixes it.

I suspect it's the following change:

https://github.com/unicode-org/icu/commit/199bc827021ffdb43b6579d68e5eecf54c7f6f56

I don't think there's anything special about Fedora here — I first saw
this when the icu package was upgraded in Nixpkgs.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config
  2025-02-13  9:34   ` Alyssa Ross
@ 2025-02-13  9:39     ` Alyssa Ross
  2025-02-13 23:29       ` Darrick J. Wong
  0 siblings, 1 reply; 5+ messages in thread
From: Alyssa Ross @ 2025-02-13  9:39 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

[-- Attachment #1: Type: text/plain, Size: 1645 bytes --]

Alyssa Ross <hi@alyssa.is> writes:

> "Darrick J. Wong" <djwong@kernel.org> writes:
>
>> On Wed, Feb 12, 2025 at 09:16:49AM +0100, Alyssa Ross wrote:
>>> This fixes the following build error with icu 76, also seen by
>>> Fedora[1]:
>>> 
>>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
>>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: /nix/store/jbnm36wq89c7iws6xx6xvv75h0drv48x-icu4c-76.1/lib/libicuuc.so.76: error adding symbols: DSO missing from command line
>>> 	collect2: error: ld returned 1 exit status
>>> 	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
>>> 	make[1]: *** [include/buildrules:35: scrub] Error 2
>>> 
>>> Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]
>>> Signed-off-by: Alyssa Ross <hi@alyssa.is>
>>
>> Interesting that this pulls in libicuuc just fine without including
>> icu-uc.pc, at least on Debian 12:
>>
>> $ grep LIBICU_LIBS build-x86_64/
>> build-x86_64/include/builddefs:222:LIBICU_LIBS = -licui18n -licuuc -licudata
>>
>> Debian sid has the same icu 76 and (AFAICT) it still pulls in the
>> dependency:
>>
>> Name: icu-i18n
>> Requires: icu-uc
>
> I don't know too much about Debian, so I might be doing something wrong,
> but when I looked in a fresh Debian Sid container I see a libicu-dev
> package that's still on 72.1-6, a libicu76 package, but no libicu76
> package.  I'm not sure there's currently a package that installs the
> icu-i18n.pc from ICU 76?

Here I meant "no libicu75-dev package".

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config
  2025-02-13  9:39     ` Alyssa Ross
@ 2025-02-13 23:29       ` Darrick J. Wong
  0 siblings, 0 replies; 5+ messages in thread
From: Darrick J. Wong @ 2025-02-13 23:29 UTC (permalink / raw)
  To: Alyssa Ross; +Cc: linux-xfs

On Thu, Feb 13, 2025 at 10:39:29AM +0100, Alyssa Ross wrote:
> Alyssa Ross <hi@alyssa.is> writes:
> 
> > "Darrick J. Wong" <djwong@kernel.org> writes:
> >
> >> On Wed, Feb 12, 2025 at 09:16:49AM +0100, Alyssa Ross wrote:
> >>> This fixes the following build error with icu 76, also seen by
> >>> Fedora[1]:
> >>> 
> >>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
> >>> 	/nix/store/9g4gsby96w4cx1i338kplaap0x37apdf-binutils-2.43.1/bin/ld: /nix/store/jbnm36wq89c7iws6xx6xvv75h0drv48x-icu4c-76.1/lib/libicuuc.so.76: error adding symbols: DSO missing from command line
> >>> 	collect2: error: ld returned 1 exit status
> >>> 	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
> >>> 	make[1]: *** [include/buildrules:35: scrub] Error 2
> >>> 
> >>> Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]
> >>> Signed-off-by: Alyssa Ross <hi@alyssa.is>
> >>
> >> Interesting that this pulls in libicuuc just fine without including
> >> icu-uc.pc, at least on Debian 12:
> >>
> >> $ grep LIBICU_LIBS build-x86_64/
> >> build-x86_64/include/builddefs:222:LIBICU_LIBS = -licui18n -licuuc -licudata
> >>
> >> Debian sid has the same icu 76 and (AFAICT) it still pulls in the
> >> dependency:
> >>
> >> Name: icu-i18n
> >> Requires: icu-uc
> >
> > I don't know too much about Debian, so I might be doing something wrong,
> > but when I looked in a fresh Debian Sid container I see a libicu-dev
> > package that's still on 72.1-6, a libicu76 package, but no libicu76
> > package.  I'm not sure there's currently a package that installs the
> > icu-i18n.pc from ICU 76?
> 
> Here I meant "no libicu75-dev package".

<nod> The development headers don't always have the version number
encoded in them; in this case it's libicu-dev that contains icu-i18n.pc
and icu-uc.pc.

> I suspect it's the following change:
> 
> https://github.com/unicode-org/icu/commit/199bc827021ffdb43b6579d68e5eecf54c7f6f56
> 
> I don't think there's anything special about Fedora here — I first saw
> this when the icu package was upgraded in Nixpkgs.

Hrmmm, this only seems to trigger if the libicu is configured with
--enable-shared.  Though, that seems to be the default...

*OH*.

libicu 76 exists only in Debian experimental, and there's not an
xfsprogs build for experimental.  Everything older than that (unstable
to bookworm) has libicu 72, which means that nobody in Debian land have
actually built xfsprogs against libicu 76.

Now that I've figured that out, can the commit message be changed to
reference the 199bc827021ffdb4 commit in upstream libicu (and provide
that link to the PR) as a motivation for changing the PKG_CHECK_MODULES
call?

"Upstream libicu changed its pkgconfig files[0] in version 76 to require
callers to call out to each .pc file they need for the libraries they
want to link against.  This apparently reduces overlinking, at a cost of
needing the world to fix themselves up.

"This patch fixes the following build error with icu 76, also seen by
Fedora[1]:

	/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
	/bin/ld: /lib/libicuuc.so.76: error adding symbols: DSO missing from command line
	collect2: error: ld returned 1 exit status
	make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
	make[1]: *** [include/buildrules:35: scrub] Error 2

"Link: https://github.com/unicode-org/icu/commit/199bc827021ffdb43b6579d68e5eecf54c7f6f56 [0]
"Link: https://src.fedoraproject.org/rpms/xfsprogs/c/624b0fdf7b2a31c1a34787b04e791eee47c97340 [1]"

With that fixed,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

--D

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-02-13 23:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-12  8:16 [PATCH xfsprogs] configure: additionally get icu-uc from pkg-config Alyssa Ross
2025-02-12 21:20 ` Darrick J. Wong
2025-02-13  9:34   ` Alyssa Ross
2025-02-13  9:39     ` Alyssa Ross
2025-02-13 23:29       ` Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox