Re: "noarch sysroot subpackages" commit breaks glibc compile on riscv64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 1, 2024 at 3:44 PM Richard W.M. Jones <rjones@xxxxxxxxxx> wrote:
>
> On Thu, Feb 01, 2024 at 02:24:10PM +0100, Florian Weimer wrote:
> > * David Abdurachmanov:
> >
> > > Hi Florian,
> > >
> > > I was trying to build the latest glibc [0] in Fedora 40 for riscv64,
> > > but it failed. It seems to be related to your last commit.
> > >
> > > [..]
> > > + ln -s libBrokenLocale.so.1 usr/lib64/libBrokenLocale.so
> > > + for sl in `find $RPM_BUILD_ROOT/$pfx$lib -maxdepth 1 -type l`
> > > + set +x
> > > + ln -s . usr/lib64/lp64d
> > > ln: failed to create symbolic link 'usr/lib64/lp64d/.': File exists
> > > error: Bad exit status from /var/tmp/rpm-tmp.7qPZkS (%install)
> > > [..]
> > >
> > > Full log: http://fedora.riscv.rocks/kojifiles/work/tasks/9391/1599391/build.log
> > > Build info: http://fedora.riscv.rocks/koji/taskinfo?taskID=1599391
> > >
> > > This is probably related to this:
> > > https://src.fedoraproject.org/rpms/glibc/blob/rawhide/f/glibc.spec#_1279
> > >
> > > Cheers,
> > > david
> > > - - -
> > > [0] https://src.fedoraproject.org/rpms/glibc/c/0bd93c5697bc60e4f4a84f5b55c98f351883e689?branch=rawhide
> >
> > That refers to:
> >
> > %ifarch riscv64
> > # RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
> > # Make these be symlinks to /lib64 or /usr/lib64 respectively.  See:
> > # https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
> > for d in %{glibc_sysroot}%{_libdir} %{glibc_sysroot}/%{_lib}; do
> >       mkdir -p $d
> >       (cd $d && ln -sf . lp64d)
> > done
> > %endif
>
> Although it was me who added this in 2018, I think it looks like a
> mess now.  Why do we need this .../lp64d subdir for Fedora?

That's because RISCV uses ../lib64/<ABI> as the default library path.

[davidlt@fedora-riscv ~]$ ld --verbose | grep SEARCH_DIR | tr -s ' ;' '\n'
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib64/lp64d")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib64")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib6464/lp64d")
SEARCH_DIR("=/usr/lib6464/lp64d")
SEARCH_DIR("=/usr/lib64")
SEARCH_DIR("=/usr/local/lib64/lp64d")
SEARCH_DIR("=/usr/local/lib64")
SEARCH_DIR("=/lib64/lp64d")
SEARCH_DIR("=/lib64")
SEARCH_DIR("=/usr/lib64/lp64d")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib")
SEARCH_DIR("=/usr/local/lib")
SEARCH_DIR("=/lib")
SEARCH_DIR("=/usr/lib")

There are some (probably now old) binutils versions that didn't even
look at the lib64 directory at all.

Thus by default RISCV looks like multilib, and looks into the proper
ABI directories.

We actually compile GCC as multilib with just one ABI listed.

[..]
--with-arch=rv64gc --with-abi=lp64d --with-multilib-list=lp64d
[..]

>
> > Please try this:
> >
> > diff --git a/glibc.spec b/glibc.spec
> > index 6116752..e4d5e44 100644
> > --- a/glibc.spec
> > +++ b/glibc.spec
> > @@ -1571,6 +1571,10 @@ for lib in lib lib64;  do
> >               set +x
> >               slbase=$(basename $sl)
> >               sltarget=$(basename $(readlink $sl))
> > +             if test "$sltarget" = . ; then
> > +                 # This is the lp64d symbolic link on riscv64, see above.
> > +                 continue
> > +             fi
> >               if ! test -r usr/$lib/$sltarget; then
> >                   echo "$sl: inferred $sltarget ($(readlink $sl)) missing"
> >                   exit 1
> >
> > We will have to fix this again (and wrap-find-debuginfo.sh and as well)
> > once Fedora adopts the standard RISC-V paths.
>
> Shouldn't we adopt the normal Fedora paths instead?

That's definitely a discussion object, but we need to check if this
actually works.

Basically RISCV doesn't comply with FHS, unless something changed.

david

>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
> Read my programming and virtualization blog: http://rwmj.wordpress.com
> libguestfs lets you edit virtual machines.  Supports shell scripting,
> bindings from many languages.  http://libguestfs.org
>
--
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux