View previous topic :: View next topic |
Author |
Message |
Khumarahn Apprentice
Joined: 17 Apr 2009 Posts: 199
|
Posted: Sun Oct 29, 2017 10:35 am Post subject: Dependencies in cross compilation |
|
|
Hi all,
there is something weird. I am installing aarch64 guest on an amd64 host. I run:
Code: | # aarch64-linux-gnu-emerge -av1 libepoxy mesa
* IMPORTANT: 3 news items need reading for repository 'gentoo'.
* Use eselect news read to view new items.
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] media-libs/libepoxy-1.4.3::gentoo to /usr/aarch64-linux-gnu/ USE="X {-test}" 0 KiB
[ebuild N ] virtual/acl-0-r2::gentoo to /usr/aarch64-linux-gnu/ USE="-static-libs" 0 KiB
[ebuild N ] sys-apps/coreutils-8.28::gentoo to /usr/aarch64-linux-gnu/ USE="acl nls xattr -caps -gmp -hostname -kill -multicall (-selinux) -static -vanilla" 0 KiB
[ebuild N ] x11-libs/libxcb-1.12-r2:0/1.12::gentoo to /usr/aarch64-linux-gnu/ USE="xkb (-doc) (-selinux) -static-libs {-test}" 0 KiB
[ebuild N ] sys-apps/sed-4.4::gentoo to /usr/aarch64-linux-gnu/ USE="acl nls (-selinux) -static" 0 KiB
[ebuild N ] x11-libs/libX11-1.6.5::gentoo to /usr/aarch64-linux-gnu/ USE="ipv6 (-doc) -static-libs {-test}" 0 KiB
[ebuild N ] x11-libs/libXext-1.3.3::gentoo to /usr/aarch64-linux-gnu/ USE="(-doc) -static-libs" 0 KiB
[ebuild N ] x11-libs/libXfixes-5.0.3::gentoo to /usr/aarch64-linux-gnu/ USE="-static-libs" 0 KiB
[ebuild N ] x11-libs/libXdamage-1.1.4-r1::gentoo to /usr/aarch64-linux-gnu/ USE="-static-libs" 0 KiB
[ebuild N ] x11-libs/libXxf86vm-1.1.4::gentoo to /usr/aarch64-linux-gnu/ USE="-static-libs" 0 KiB
[ebuild N ] sys-libs/gpm-1.20.7-r2::gentoo to /usr/aarch64-linux-gnu/ USE="(-selinux) -static-libs" 0 KiB
[ebuild N ] sys-libs/ncurses-6.0-r1:0/6::gentoo to /usr/aarch64-linux-gnu/ USE="cxx gpm tinfo unicode (-ada) -debug (-doc) -minimal -profile -static-libs {-test} -threads -trace" 0 KiB
[ebuild N ] sys-libs/readline-7.0_p3:0/7::gentoo to /usr/aarch64-linux-gnu/ USE="-static-libs -utils" 0 KiB
[ebuild N ] app-admin/eselect-1.4.9::gentoo to /usr/aarch64-linux-gnu/ USE="(-doc) (-emacs) (-vim-syntax)" 0 KiB
[ebuild N ] sys-devel/llvm-5.0.0:5::gentoo to /usr/aarch64-linux-gnu/ USE="libffi ncurses -debug (-doc) -gold -libedit {-test}" LLVM_TARGETS="(AArch64) BPF -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -X86 -XCore" 0 KiB
[ebuild N ] app-shells/bash-4.4_p12::gentoo to /usr/aarch64-linux-gnu/ USE="net nls (readline) (-afs) -bashlogger -examples -mem-scramble -plugins" 0 KiB
[ebuild N ] app-eselect/eselect-opengl-1.3.1-r4::gentoo to /usr/aarch64-linux-gnu/ 0 KiB
[ebuild N ] app-eselect/eselect-mesa-0.0.10-r1::gentoo to /usr/aarch64-linux-gnu/ 0 KiB
[ebuild N ] media-libs/mesa-17.2.2::gentoo to /usr/aarch64-linux-gnu/ USE="classic dri3 egl gallium gbm llvm nptl -bindist -d3d9 -debug -gles1 -gles2 -opencl (-openmax) -osmesa -pax_kernel -pic (-selinux) -unwind -vaapi (-valgrind) (-vdpau) (-vulkan) -wayland -xa -xvmc" VIDEO_CARDS="-freedreno (-i915) (-i965) -imx (-intel) -nouveau (-r100) (-r200) (-r300) (-r600) (-radeon) (-radeonsi) -vc4 -vivante (-vmware)" 0 KiB
Total: 19 packages (19 new), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No]
|
Now, the above will fail at the first package: libepoxy. This is because libepoxy requires mesa[egl], while mesa is going to be installed last. The dependency in the ebuild seems ok, but why does portage ignore it? |
|
Back to top |
|
|
Khumarahn Apprentice
Joined: 17 Apr 2009 Posts: 199
|
Posted: Sun Oct 29, 2017 10:39 am Post subject: |
|
|
Also, libepoxy does not pull mesa with it.
Code: | # aarch64-linux-gnu-emerge -av1 libepoxy
* IMPORTANT: 3 news items need reading for repository 'gentoo'.
* Use eselect news read to view new items.
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] media-libs/libepoxy-1.4.3::gentoo to /usr/aarch64-linux-gnu/ USE="X {-test}" 0 KiB
Total: 1 package (1 new), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No]
|
Why?
libepoxy-1.4.3.ebuild: | DEPEND="${PYTHON_DEPS}
media-libs/mesa[egl,${MULTILIB_USEDEP}]
x11-misc/util-macros
X? ( x11-libs/libX11[${MULTILIB_USEDEP}] )"
RDEPEND="" |
|
|
Back to top |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21607
|
Posted: Sun Oct 29, 2017 4:47 pm Post subject: |
|
|
As I understand the documentation, this is expected. media-libs/libepoxy requires media-libs/mesa[egl] as a build-time dependency, so if it is available on your host filesystem, that dependency is satisfied. It does not require it as a runtime dependency, so Portage does not attempt to build and install an aarch64 mesa. You can override this by passing --root-deps on the command line or by using ebuilds that support the experimental HDEPEND syntax, which allows the ebuild to disambiguate build-time dependencies that must be on the host (because they provide commands which must be run) versus build-time dependencies which must be in the target (because they provide libraries which must be linked in).
See man emerge for --root-deps. See man 5 ebuild section Cross-compilation for a brief discussion of HDEPEND. |
|
Back to top |
|
|
Khumarahn Apprentice
Joined: 17 Apr 2009 Posts: 199
|
Posted: Sun Oct 29, 2017 5:34 pm Post subject: |
|
|
Thanks for the explanation! Not building packages in DEPEND kinda makes sense, although does not work.
I tried with --root-deps, and the dependency graph looks better, but it brings in other packages which break for other reasons, like perl. |
|
Back to top |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21607
|
Posted: Sun Oct 29, 2017 9:02 pm Post subject: |
|
|
You may need to help Portage solve this. Explicitly cross-emerge the packages that provide supporting libraries into the aarch64 root, then run the emerge that you want. |
|
Back to top |
|
|
|