-
Bug
-
Resolution: Workaround
-
Normal
-
None
-
None
-
None
For some time now the newer crossdev versions have a problem with portage in Funtoo. With the versions listed I get this:
# crossdev --b 2.25-r1 --g 4.9.1 --k 4.0 --l 2.19 --target i686-pc-linux-gnu -P -v ERROR: Invalid atom: '/' * You need to specify an output overlay. Please use --ov-output, or consult * https://wiki.gentoo.org/wiki/Overlay/Local_overlay for more details.
Yet if I downgrade to version 20140719 the same command line operates properly. That command line has the proper syntax.
Since I had 20140719 on one machine and 20150525 on another I did a diff to see what had changed (most of crossdev is contained in /usr/share/crossdev):
I did the diff's backwards (sorry), the newer version is the -, older is the +
# diff -u -r . /mnt/nfs/borg/usr/share/crossdev diff -u -r ./include/site/linux /mnt/nfs/borg/usr/share/crossdev/include/site/linux --- ./include/site/linux 2015-05-25 02:51:12.000000000 -0700 +++ /mnt/nfs/borg/usr/share/crossdev/include/site/linux 2014-07-28 22:50:38.000000000 -0700 @@ -30,8 +30,6 @@ ac_cv_file__bin_bash=yes -ac_cv_file__dev_ptmx=yes -ac_cv_file__dev_ptc=no ac_cv_file__dev_srandom=yes ac_cv_file__dev_urandom=yes ac_cv_file__dev_random=yes diff -u -r ./include/site/linux-gnueabi /mnt/nfs/borg/usr/share/crossdev/include/site/linux-gnueabi --- ./include/site/linux-gnueabi 2015-05-25 02:51:12.000000000 -0700 +++ /mnt/nfs/borg/usr/share/crossdev/include/site/linux-gnueabi 2014-07-28 22:50:38.000000000 -0700 @@ -294,4 +294,8 @@ # enca +ac_cv_file__dev_srandom=yes +ac_cv_file__dev_urandom=yes +ac_cv_file__dev_random=yes +ac_cv_file__dev_arandom=no yeti_cv_func_scanf_modif_size_t=z
And other individual files in /usr/bin:
# diff -u ./cross-emerge /mnt/nfs/borg/usr/bin/cross-emerge --- ./cross-emerge 2015-05-26 05:21:58.619901807 -0700 +++ /mnt/nfs/borg/usr/bin/cross-emerge 2014-11-01 18:01:36.000000000 -0700 @@ -30,5 +30,10 @@ : ${BUILD_CPPFLAGS=${_E_CPPFLAGS}} export CBUILD BUILD_CFLAGS BUILD_CXXFLAGS BUILD_CPPFLAGS +FAKEROOT= +if [ $(id -u) -ne 0 ] ; then + type -P fakeroot >/dev/null && FAKEROOT=fakeroot +fi + : ${CROSS_CMD:=emerge --root-deps=rdeps} -exec ${CROSS_CMD} "$@" +exec ${FAKEROOT} ${CROSS_CMD} "$[~divinespear] # diff -u ./cross-fix-root /mnt/nfs/borg/usr/bin/cross-fix-root # # diff -u ./cross-pkg-config /mnt/nfs/borg/usr/bin/cross-pkg-config --- ./cross-pkg-config 2015-05-26 05:21:58.620901789 -0700 +++ /mnt/nfs/borg/usr/bin/cross-pkg-config 2014-11-01 18:01:36.000000000 -0700 @@ -82,12 +82,12 @@ # : ${ABI:=${DEFAULT_ABI:-default}} var="LIBDIR_${ABI}" -eval libdir=\${${var}} +libdir=${!var} if [ -z "${libdir}" ] ; then # Fall back to probing the compiler. - libdir=$(realpath "$(${CC:-${CHOST}-gcc} ${CFLAGS} ${LDFLAGS} -print-file-name=pkgconfig)/..") + libc=$(realpath $(${CC:-${CHOST}-gcc} ${CFLAGS} ${LDFLAGS} -print-file-name=libc.so)) # Chopping the basename isn't exactly correct, but it's good enough for now. - libdir=$(basename "${libdir}") + libdir=$(basename "${libc%/*}") fi : ${libdir:=lib} export PKG_CONFIG_SYSTEM_LIBRARY_PATH="/usr/${libdir}:/${libdir}" # diff -u ./emerge-wrapper /mnt/nfs/borg/usr/bin/emerge-wrapper --- ./emerge-wrapper 2015-05-26 05:21:58.629901625 -0700 +++ /mnt/nfs/borg/usr/bin/emerge-wrapper 2014-11-01 18:01:36.000000000 -0700 @@ -21,13 +21,11 @@ emit_setup_warning() { - if ! ${setup_warning} ; then - setup_warning=true - echo "!!! WARNING - Cannot auto-configure CHOST ${CHOST};" - echo "!!! You should edit ${conf}" - echo "!!! by hand to complete your configuration." - fi - echo "!!! $*" + ${setup_warning:-false} && return 0 + setup_warning=true + echo "!!! WARNING - Cannot auto-configure CHOST ${CHOST}" + echo "!!! You should edit ${conf}" + echo "!!! by hand to complete your configuration" } cross_wrap_etc() @@ -43,17 +41,16 @@ # Re-use existing CHOST->portage ARCH mapping code ARCH=$( inherit() { :; } - . "${MAIN_REPO_PATH}"/eclass/toolchain-funcs.eclass + . "${PORTDIR}"/eclass/toolchain-funcs.eclass tc-arch ) - [[ ${ARCH} == "unknown" ]] && emit_setup_warning "No ARCH is known for this target." + [[ ${ARCH} == "unknown" ]] && emit_setup_warning LIBC="__LIBC__" case ${CHOST} in - *gnu*) LIBC=glibc ;; - *uclibc*) LIBC=uclibc ;; - *mingw*) LIBC=mingw ;; - *) emit_setup_warning "No LIBC is known for this target." ;; + *gnu*) LIBC=glibc ;; + *uclibc*) LIBC=uclibc ;; + *) emit_setup_warning ;; esac sed -i \ @@ -112,12 +109,10 @@ # CBUILD must be the first thing we export, but might as well avoid # running portageq multiple times ... -import_vars="DISTDIR MAKEOPTS GENTOO_MIRRORS" +import_vars="PORTDIR DISTDIR PORTDIR_OVERLAY MAKEOPTS GENTOO_MIRRORS" eval $(portageq envvar -v CBUILD ${import_vars}) export CBUILD -MAIN_REPO_PATH=$(crossdev --show-repo-cfg MAIN_REPO_PATH) - # Get default CHOST value from program name CHOST=${0##*/} CHOST=${CHOST%-emerge}
Many differences in /usr/bin/crossdev, so I have pasted that elsewhere:
http://pasted.co/f1910b40
This bug is different from the issue being discussed in FL-1820, which is regarding gcc incompatibility with crossdev, with a known method of defeating.
I am posting this bug for informational purposes, I'm not sure anything can be done about it. Using the 20140719 version is a workaround for now.