Mailing List Archive

installing binary pkgs created with crossdev
I built a cross toolchain using crossdev, noting special I think. Then I
created
binary pkgs like so:
CTARGET=powerpc-softfloat_4.5.3-linux-gnu
export ROOT=/ PKGDIR=${PORTDIR}/pkgs/${CTARGET}/cross-tools
quickpkg --include-config=y `qlist -IC cross-${CTARGET}`

Installed these pkgs on another host using
ACCEPT_KEYWORDS=~* emerge -aG \
cross-powerpc-softfloat_4.5.3-linux-gnu/linux-headers \
cross-powerpc-softfloat_4.5.3-linux-gnu/binutils \
cross-powerpc-softfloat_4.5.3-linux-gnu/glibc \
cross-powerpc-softfloat_4.5.3-linux-gnu/gcc \
cross-powerpc-softfloat_4.5.3-linux-gnu/gdb
Note the KEYWORDS, installing pkgs using crossdev directly doesn't care
about KEYWORDS
but installing the same as binary pkgs respects KEYWORDS, a bit asymmetric
but not a big deal

However this is somewhat confusing, I had to run
binutils-config powerpc-softfloat_4.5.3-linux-gnu-2.21.1
manually after installing the binary pkgs, is that expected?
I figured I should not have to do that.
On a side note I can mention, installing a binary x86 binutils on a amd64
host requires CHOST:
CHOST=i686-pc-linux-gnu binutils-config
powerpc-softfloat_4.5.3-linux-gnu-2.21.1

Finally, running gdb yields:
# powerpc-softfloat_4.5.3-linux-gnu-gdb
Python Exception <type 'exceptions.NameError'> name 'os' is not defined:

warning:
Could not load the Python gdb module from `/usr/share/gdb/python'.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.

GNU gdb (Gentoo 7.6 p1) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <
http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-pc-linux-gnu
--target=powerpc-softfloat_4.5.3-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>.
(gdb)

This one I haven't figured out yet, what is up with the python connection
here?

Oh, is there a difference using quickpkg vs. emerge --buildpkg ?

Jocke
Re: installing binary pkgs created with crossdev [ In reply to ]
Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote on 2013/05/02
22:27:04:
>
> I built a cross toolchain using crossdev, noting special I think. Then I

> created
> binary pkgs like so:
> CTARGET=powerpc-softfloat_4.5.3-linux-gnu
> export ROOT=/ PKGDIR=${PORTDIR}/pkgs/${CTARGET}/cross-tools
> quickpkg --include-config=y `qlist -IC cross-${CTARGET}`
>
> Installed these pkgs on another host using
> ACCEPT_KEYWORDS=~* emerge -aG \
> cross-powerpc-softfloat_4.5.3-linux-gnu/linux-headers \
> cross-powerpc-softfloat_4.5.3-linux-gnu/binutils \
> cross-powerpc-softfloat_4.5.3-linux-gnu/glibc \
> cross-powerpc-softfloat_4.5.3-linux-gnu/gcc \
> cross-powerpc-softfloat_4.5.3-linux-gnu/gdb
> Note the KEYWORDS, installing pkgs using crossdev directly doesn't care
> about KEYWORDS
> but installing the same as binary pkgs respects KEYWORDS, a bit
asymmetric
> but not a big deal
>
> However this is somewhat confusing, I had to run
> binutils-config powerpc-softfloat_4.5.3-linux-gnu-2.21.1
> manually after installing the binary pkgs, is that expected?
> I figured I should not have to do that.
> On a side note I can mention, installing a binary x86 binutils on a
amd64
> host requires CHOST:
> CHOST=i686-pc-linux-gnu binutils-config
> powerpc-softfloat_4.5.3-linux-gnu-2.21.1
>
> Finally, running gdb yields:
> # powerpc-softfloat_4.5.3-linux-gnu-gdb
> Python Exception <type 'exceptions.NameError'> name 'os' is not defined:


hmm, this appears to be a gdb issue, not crossdev. If I use gdb 7.5.1 it
works just fine.

> Oh, is there a difference using quickpkg vs. emerge --buildpkg ?
Re: installing binary pkgs created with crossdev [ In reply to ]
On Thursday 02 May 2013 16:27:04 Joakim Tjernlund wrote:
> Note the KEYWORDS, installing pkgs using crossdev directly doesn't care
> about KEYWORDS
> but installing the same as binary pkgs respects KEYWORDS, a bit asymmetric
> but not a big deal

that's not really accurate. crossdev sets up keywords in
/etc/portage/package.keywords/ so that it uses versions that correspond to the
target arch. so if you're generating a cross-compiler for powerpc, you don't
want to install a glibc version that has KEYWORDS=-ppc just because it also
has KEYWORDS=amd64 (and your host system is amd64).

when installing the binpkgs, the /etc/portage/package.keywords/ setting isn't
in place, so now you have to lie by using a hack like your ACCEPT_KEYWORDS.

> However this is somewhat confusing, I had to run
> binutils-config powerpc-softfloat_4.5.3-linux-gnu-2.21.1
> manually after installing the binary pkgs, is that expected?

no, you shouldn't have to do that. you can see the pkg_postinst for binutils:
toolchain-binutils_pkg_postinst() {
# Make sure this ${CTARGET} has a binutils version selected
[[ -e ${ROOT}/etc/env.d/binutils/config-${CTARGET} ]] && return 0
binutils-config ${CTARGET}-${BVER}
}

your CTARGET should have been set to 'powerpc-softfloat_4.5.3-linux-gnu', and
if you didn't have that target already installed on that system, things should
have "just worked".

if you did already have a binutils installed for that target, then binutils-
config would have (rightfully) not been run.

> On a side note I can mention, installing a binary x86 binutils on a amd64
> host requires CHOST:
> CHOST=i686-pc-linux-gnu binutils-config
> powerpc-softfloat_4.5.3-linux-gnu-2.21.1

trying to mix x86 & amd64 packages are known not to work. no one is
interested in supporting that today (ever?).

although, if this is the same setup as when you installed the binpkgs above,
then that's probably why.

> Finally, running gdb yields:
> # powerpc-softfloat_4.5.3-linux-gnu-gdb
> Python Exception <type 'exceptions.NameError'> name 'os' is not defined:

if this is the same binpkg as you described above (built for x86 but deployed
to amd64), then this makes sense. gdb has been configured against a 32bit
python, but your host has only a 64bit python.
-mike
Re: installing binary pkgs created with crossdev [ In reply to ]
Mike Frysinger <vapier@gentoo.org> wrote on 2013/05/03 21:04:50:
>
> On Thursday 02 May 2013 16:27:04 Joakim Tjernlund wrote:
> > Note the KEYWORDS, installing pkgs using crossdev directly doesn't
care
> > about KEYWORDS
> > but installing the same as binary pkgs respects KEYWORDS, a bit
asymmetric
> > but not a big deal
>
> that's not really accurate. crossdev sets up keywords in
> /etc/portage/package.keywords/ so that it uses versions that correspond
to the
> target arch. so if you're generating a cross-compiler for powerpc, you
don't
> want to install a glibc version that has KEYWORDS=-ppc just because it
also
> has KEYWORDS=amd64 (and your host system is amd64).
>
> when installing the binpkgs, the /etc/portage/package.keywords/ setting
isn't
> in place, so now you have to lie by using a hack like your
ACCEPT_KEYWORDS.

Right, just a bit surprising.

>
> > However this is somewhat confusing, I had to run
> > binutils-config powerpc-softfloat_4.5.3-linux-gnu-2.21.1
> > manually after installing the binary pkgs, is that expected?
>
> no, you shouldn't have to do that. you can see the pkg_postinst for
binutils:
> toolchain-binutils_pkg_postinst() {
> # Make sure this ${CTARGET} has a binutils version selected
> [[ -e ${ROOT}/etc/env.d/binutils/config-${CTARGET} ]] && return 0
> binutils-config ${CTARGET}-${BVER}
> }
>
> your CTARGET should have been set to
'powerpc-softfloat_4.5.3-linux-gnu', and
> if you didn't have that target already installed on that system, things
should
> have "just worked".
>
> if you did already have a binutils installed for that target, then
binutils-
> config would have (rightfully) not been run.

Ah, it might have been something like that. I did another install but this
time I really cleared out the old install properly, even ran
binutils-config -u
to remove all traces.
That did the trick and everything just worked.

>
> > On a side note I can mention, installing a binary x86 binutils on a
amd64
> > host requires CHOST:
> > CHOST=i686-pc-linux-gnu binutils-config
> > powerpc-softfloat_4.5.3-linux-gnu-2.21.1
>
> trying to mix x86 & amd64 packages are known not to work. no one is
> interested in supporting that today (ever?).

Well, I first installed our old 32 binary cross ppc toolchain and that
required the above "trick", gcc-config just worked so I figured I should
mention it.

>
> although, if this is the same setup as when you installed the binpkgs
above,
> then that's probably why.

Yes, I figured that too :)

>
> > Finally, running gdb yields:
> > # powerpc-softfloat_4.5.3-linux-gnu-gdb
> > Python Exception <type 'exceptions.NameError'> name 'os' is not
defined:
>
> if this is the same binpkg as you described above (built for x86 but
deployed
> to amd64), then this makes sense. gdb has been configured against a
32bit
> python, but your host has only a 64bit python.

No, this was my new amd64 built gdb. Seems to be a gdb issue though as I
backed gdb to
latest stable 7.5.1 and that worked.

Jocke