Mailing List Archive

crossdev & ports questions
Hi all

I am fiddling with crossdev again and I wonder if there a way to
pass different configure options to gcc/binutils vs. glibc?
Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
to all and glibc bombs with subarch not supported error.

Second, there are not many PowerPC cpus in the ports section
of glibc and not mine embedded one either. Is there any
alternative ports pkg somewhere that supports more PowerPC
cpus?

Jocke
Re: crossdev & ports questions [ In reply to ]
On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> I am fiddling with crossdev again and I wonder if there a way to
> pass different configure options to gcc/binutils vs. glibc?
> Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> to all and glibc bombs with subarch not supported error.

you'd have to use per-package env manually:
/etc/portage/env/$CATEGORY/$PN

but crossdev likes to clobber this file for you. so i guess i should extend
crossdev with --env-xxx options so people can add their own.

> Second, there are not many PowerPC cpus in the ports section
> of glibc and not mine embedded one either. Is there any
> alternative ports pkg somewhere that supports more PowerPC
> cpus?

we take what glibc offers via their glibc-ports package. personally, i do 0
embedded powerpc work, so i dont know of any "alternatives" or such.

if they did exist though, the only way currently to get them transparently
added would be to make a big patch out of them and then use the user patch
interface (put patches into /etc/portage/patches/$CATEGORY/$P/).
-mike
Re: crossdev & ports questions [ In reply to ]
Mike Frysinger <vapier@gentoo.org> wrote on 2010/09/20 22:00:25:
>
> On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> > I am fiddling with crossdev again and I wonder if there a way to
> > pass different configure options to gcc/binutils vs. glibc?
> > Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> > to all and glibc bombs with subarch not supported error.
>
> you'd have to use per-package env manually:
> /etc/portage/env/$CATEGORY/$PN
>
> but crossdev likes to clobber this file for you. so i guess i should extend
> crossdev with --env-xxx options so people can add their own.
>
> > Second, there are not many PowerPC cpus in the ports section
> > of glibc and not mine embedded one either. Is there any
> > alternative ports pkg somewhere that supports more PowerPC
> > cpus?
>
> we take what glibc offers via their glibc-ports package. personally, i do 0
> embedded powerpc work, so i dont know of any "alternatives" or such.

OK, I was mainly after some decent mem*() functions as the ones provided
usually perform badly for embedded CPUs

>
> if they did exist though, the only way currently to get them transparently
> added would be to make a big patch out of them and then use the user patch
> interface (put patches into /etc/portage/patches/$CATEGORY/$P/).

hmm, maybe I could make up my own dummy ports pkg for my cpu. That way
I could probably make glibc accept my cpu conf too.
Re: crossdev & ports questions [ In reply to ]
On Monday, September 20, 2010 17:08:56 Joakim Tjernlund wrote:
> Mike Frysinger wrote on 2010/09/20 22:00:25:
> > On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> > > I am fiddling with crossdev again and I wonder if there a way to
> > > pass different configure options to gcc/binutils vs. glibc?
> > > Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> > > to all and glibc bombs with subarch not supported error.
> >
> > you'd have to use per-package env manually:
> > /etc/portage/env/$CATEGORY/$PN
> >
> > but crossdev likes to clobber this file for you. so i guess i should
> > extend crossdev with --env-xxx options so people can add their own.
> >
> > > Second, there are not many PowerPC cpus in the ports section
> > > of glibc and not mine embedded one either. Is there any
> > > alternative ports pkg somewhere that supports more PowerPC
> > > cpus?
> >
> > we take what glibc offers via their glibc-ports package. personally, i
> > do 0 embedded powerpc work, so i dont know of any "alternatives" or
> > such.
>
> OK, I was mainly after some decent mem*() functions as the ones provided
> usually perform badly for embedded CPUs
>
> > if they did exist though, the only way currently to get them
> > transparently added would be to make a big patch out of them and then
> > use the user patch interface (put patches into
> > /etc/portage/patches/$CATEGORY/$P/).
>
> hmm, maybe I could make up my own dummy ports pkg for my cpu. That way
> I could probably make glibc accept my cpu conf too.

drepper already voiced his opinion -- these embedded cpu optimizations werent
going to be added to the main glibc tree. but he has no problem with them
being "dumped" into the glibc-ports tree and because of the way things are
structured, that should work for you.

so if you have some per-cpu trees to overlay, e-mail them to the glibc-ports
list so they can get merged.
-mike
Re: crossdev & ports questions [ In reply to ]
On Monday, September 20, 2010 16:00:25 Mike Frysinger wrote:
> On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> > I am fiddling with crossdev again and I wonder if there a way to
> > pass different configure options to gcc/binutils vs. glibc?
> > Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> > to all and glibc bombs with subarch not supported error.
>
> you'd have to use per-package env manually:
> /etc/portage/env/$CATEGORY/$PN
>
> but crossdev likes to clobber this file for you. so i guess i should
> extend crossdev with --env-xxx options so people can add their own.

ive added --[bklg]env options to current crossdev git if you want to try out
the 99999999 ebuild for me
-mike
Re: crossdev & ports questions [ In reply to ]
Mike Frysinger <vapier@gentoo.org> wrote on 2010/10/08 05:10:58:
>
> On Monday, September 20, 2010 16:00:25 Mike Frysinger wrote:
> > On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> > > I am fiddling with crossdev again and I wonder if there a way to
> > > pass different configure options to gcc/binutils vs. glibc?
> > > Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> > > to all and glibc bombs with subarch not supported error.
> >
> > you'd have to use per-package env manually:
> > /etc/portage/env/$CATEGORY/$PN
> >
> > but crossdev likes to clobber this file for you. so i guess i should
> > extend crossdev with --env-xxx options so people can add their own.
>
> ive added --[bklg]env options to current crossdev git if you want to try out
> the 99999999 ebuild for me

Tried it with:
TARGET="powerpc-4.4.4_softfloat-linux-gnu"
export EXTRA_ECONF="--without-long-double-128 --with-dwarf2 --without-fp --with-fp=soft --disable-64-bit-bfd"


crossdev \
-s3 \
--genv EXTRA_ECONF="--with-cpu=e300c2 --without-long-double-128 --with-dwarf2 --without-fp --with-fp=soft --disable-64-bit-bfd" \
--ex-gdb \
--libc 2.11.2 \
--binutils 2.20.1-r1 \
--gcc 4.4.4-r2 \
--kernel 2.6.30-r1 \
--target ${TARGET} \

Got this:
>>> Emerging (1 of 1) cross-powerpc-4.4.4_softfloat-linux-gnu/gcc-4.4.4-r2
!!! INVALID ACCEPT_KEYWORDS: x86
* gcc-4.4.4.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* gcc-4.4.4-uclibc-patches-1.0.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* gcc-4.4.4-patches-1.2.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* gcc-4.4.4-piepatches-v0.4.5.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* gcc-4.4.3-specs-0.2.0.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/gcc: line 8: --without-long-double-128: command not found
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/gcc: line 8: --without-long-double-128: command not found
* CPV: cross-powerpc-4.4.4_softfloat-linux-gnu/gcc-4.4.4-r2
* REPO:
* USE: elibc_glibc kernel_linux nocxx nossp nptl userland_GNU x86
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/gcc: line 8: --without-long-double-128: command not found

/etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/gcc holds:
# make sure multilib crap doesn't screw us over
ABI=pos
LIBDIR_pos="lib"
CFLAGS_pos=
CPPFLAGS_pos=
CXXFLAGS_pos=
LDFLAGS_pos=
EXTRA_ECONF=--with-cpu=e300c2 --without-long-double-128 --with-dwarf2 --without-fp --with-fp=soft --disable-64-bit-bfd

This too:
>>> Emerging (1 of 1) cross-powerpc-4.4.4_softfloat-linux-gnu/glibc-2.11.2
!!! INVALID ACCEPT_KEYWORDS: x86
* glibc-2.11.2.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* glibc-ports-2.11.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* glibc-2.11.2-patches-3.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.2: command not found
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.2: command not found
* CPV: cross-powerpc-4.4.4_softfloat-linux-gnu/glibc-2.11.2
* REPO:
* USE: crosscompile_opts_headers-only elibc_glibc kernel_linux userland_GNU x86
//etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.2: command not found

/etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc holds:
# make sure multilib crap doesn't screw us over
ABI=pos
LIBDIR_pos="lib"
CFLAGS_pos=
CPPFLAGS_pos=
CXXFLAGS_pos=
LDFLAGS_pos=
2.11.2
Re: crossdev & ports questions [ In reply to ]
Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote on 2010/10/08 08:56:20:
>
> Mike Frysinger <vapier@gentoo.org> wrote on 2010/10/08 05:10:58:
> >
> > On Monday, September 20, 2010 16:00:25 Mike Frysinger wrote:
> > > On Monday, September 20, 2010 15:00:25 Joakim Tjernlund wrote:
> > > > I am fiddling with crossdev again and I wonder if there a way to
> > > > pass different configure options to gcc/binutils vs. glibc?
> > > > Doing export EXTRA_ECONF="--with-cpu=e300c2" applies
> > > > to all and glibc bombs with subarch not supported error.
> > >
> > > you'd have to use per-package env manually:
> > > /etc/portage/env/$CATEGORY/$PN
> > >
> > > but crossdev likes to clobber this file for you. so i guess i should
> > > extend crossdev with --env-xxx options so people can add their own.
> >
> > ive added --[bklg]env options to current crossdev git if you want to try out
> > the 99999999 ebuild for me
>
> Tried it with:
> TARGET="powerpc-4.4.4_softfloat-linux-gnu"
> export EXTRA_ECONF="--without-long-double-128 --with-dwarf2 --without-fp --
> with-fp=soft --disable-64-bit-bfd"
>
>
> crossdev \
> -s3 \
> --genv EXTRA_ECONF="--with-cpu=e300c2 --without-long-double-128 --with-
> dwarf2 --without-fp --with-fp=soft --disable-64-bit-bfd" \
> --ex-gdb \
> --libc 2.11.2 \
> --binutils 2.20.1-r1 \
> --gcc 4.4.4-r2 \
> --kernel 2.6.30-r1 \
> --target ${TARGET}

Got better when I changed
--genv EXTRA_ECONF=" .... "
to
--genv EXTRA_ECONF='" .... "'

This is should be documented or changed to not require ''

Hovever this is still there:
>
> This too:
> >>> Emerging (1 of 1) cross-powerpc-4.4.4_softfloat-linux-gnu/glibc-2.11.2
> !!! INVALID ACCEPT_KEYWORDS: x86
> * glibc-2.11.2.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
> * glibc-ports-2.11.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
> * glibc-2.11.2-patches-3.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
> * checking ebuild checksums ;-) ... [ ok ]
> * checking auxfile checksums ;-) ... [ ok ]
> * checking miscfile checksums ;-) ... [ ok ]
> //etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.
> 2: command not found
> //etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.
> 2: command not found
> * CPV: cross-powerpc-4.4.4_softfloat-linux-gnu/glibc-2.11.2
> * REPO:
> * USE: crosscompile_opts_headers-only elibc_glibc kernel_linux userland_GNU x86
> //etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc: line 8: 2.11.
> 2: command not found
>
> /etc/portage/env/cross-powerpc-4.4.4_softfloat-linux-gnu/glibc holds:
> # make sure multilib crap doesn't screw us over
> ABI=pos
> LIBDIR_pos="lib"
> CFLAGS_pos=
> CPPFLAGS_pos=
> CXXFLAGS_pos=
> LDFLAGS_pos=
> 2.11.2

Similar for linux-headers:
# make sure multilib crap doesn't screw us over
ABI=pos
LIBDIR_pos="lib"
CFLAGS_pos=
CPPFLAGS_pos=
CXXFLAGS_pos=
LDFLAGS_pos=
2.6.30-r1

hmm, this looks wrong, suggest:

diff --git a/crossdev b/crossdev
index 6d41ae0..c35a2ed 100755
--- a/crossdev
+++ b/crossdev
@@ -630,8 +630,8 @@ done

set_portage ${BCAT} ${BPKG} ${BVER} "${BENV}"
set_portage ${GCAT} ${GPKG} ${GVER} "${GENV}"
-set_portage ${KCAT} ${KPKG} ${KVER} "${KVER}"
-set_portage ${LCAT} ${LPKG} ${LVER} "${LVER}"
+set_portage ${KCAT} ${KPKG} ${KVER} "${KENV}"
+set_portage ${LCAT} ${LPKG} ${LVER} "${LENV}"
set_portage sys-devel gdb
set_portage dev-util insight
Re: crossdev & ports questions [ In reply to ]
On Friday, October 08, 2010 03:52:47 Joakim Tjernlund wrote:
> Joakim Tjernlund wrote on 2010/10/08 08:56:20:
> > Tried it with:
> > TARGET="powerpc-4.4.4_softfloat-linux-gnu"
> > export EXTRA_ECONF="--without-long-double-128 --with-dwarf2 --without-fp
> > -- with-fp=soft --disable-64-bit-bfd"
> >
> > crossdev \
> >
> > -s3 \
> > --genv EXTRA_ECONF="--with-cpu=e300c2 --without-long-double-128
> > --with-dwarf2 --without-fp --with-fp=soft --disable-64-bit-bfd" \
> > --ex-gdb \
> > --libc 2.11.2 \
> > --binutils 2.20.1-r1 \
> > --gcc 4.4.4-r2 \
> > --kernel 2.6.30-r1 \
> > --target ${TARGET}
>
> Got better when I changed
> --genv EXTRA_ECONF=" .... "
> to
> --genv EXTRA_ECONF='" .... "'
>
> This is should be documented or changed to not require ''

it isnt feasible to auto quote the contents. you will need to account for
them yourself. consider the fact that this supports multiple variables, so
your quoting example here is limited.

> hmm, this looks wrong, suggest:
>
> -set_portage ${KCAT} ${KPKG} ${KVER} "${KVER}"
> -set_portage ${LCAT} ${LPKG} ${LVER} "${LVER}"
> +set_portage ${KCAT} ${KPKG} ${KVER} "${KENV}"
> +set_portage ${LCAT} ${LPKG} ${LVER} "${LENV}"

thanks. committed & pushed.
-mike