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 4:10 PM David Abdurachmanov
<david.abdurachmanov@xxxxxxxxx> wrote:
>
> 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")

I forgot to attach the default search paths for ld-linux-riscv6-lp64d.so.1:

[..]
Shared library search path:
  (libraries located via /etc/ld.so.cache)
  /lib64/lp64d (system search path)
  /usr/lib64/lp64d (system search path)
[..]

>
> 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