cp of FreeBSD seem to different operating depending on the options of r and R. I think to solve the problem by changing from cp -pr "${cp_args[@]}" \ to cp -pR "${cp_args[@]}" \ in multibuild.eclass. # ls -lha /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps/md4.c lrwxr-xr-x 1 portage portage 34B Dec 3 23:44 /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps/md4.c -> openssl-1.0.2e/../crypto/md4/md4.c Option -pr, an error is displayed.) # cp -pr /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps /tmp/pr cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps/md4.c: No such file or directory # ls -lha /tmp/pr/md4.c ls: /tmp/pr/md4.c: No such file or directory Option -pR, error is not displayed.) # cp -pR /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps /tmp/pR # ls -lha /tmp/pR/md4.c lrwxr-xr-x 1 portage portage 34B Dec 3 23:44 /tmp/pR/md4.c -> openssl-1.0.2e/../crypto/md4/md4.c FYI, https://svnweb.freebsd.org/base/releng/10.2/bin/cp/cp.c?revision=285830&view=markup >>> Emerging (1 of 1) dev-libs/openssl-1.0.2e::gentoo * openssl-1.0.2e.tar.gz SHA256 SHA512 WHIRLPOOL size ;-) ... [ ok ] >>> Unpacking source... >>> Unpacking openssl-1.0.2e.tar.gz to /var/tmp/portage/dev-libs/openssl-1.0.2e/work >>> Source unpacked in /var/tmp/portage/dev-libs/openssl-1.0.2e/work >>> Preparing source in /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e ... * Applying openssl-1.0.0a-ldflags.patch ... [ ok ] * Applying openssl-1.0.0d-windres.patch ... [ ok ] * Applying openssl-1.0.2e-parallel-build.patch ... [ ok ] * Applying openssl-1.0.2a-parallel-obj-headers.patch ... [ ok ] * Applying openssl-1.0.2a-parallel-install-dirs.patch ... [ ok ] * Applying openssl-1.0.2a-parallel-symlinking.patch ... [ ok ] * Applying openssl-1.0.2-ipv6.patch ... [ ok ] * Applying openssl-1.0.2a-x32-asm.patch ... [ ok ] * Applying openssl-1.0.1p-default-source.patch ... [ ok ] Operating system: amd64-whatever-freebsd Configuring for BSD-x86_64 ====================================================================== === SANITY TESTING! === No configuration will be done, all other arguments will be ignored! ====================================================================== No sanity errors detected! * Will copy sources from /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e * abi_x86_64.amd64_fbsd: copying to /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e-abi_x86_64.amd64_fbsd cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/apps/md4.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/heartbeat_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/ectest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/enginetest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/md4test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/md5test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/ideatest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/wp_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/shatest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/evp_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/sha1test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/rmdtest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/rc5test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/casttest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/randtest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/jpaketest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/constant_time_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/sha512t.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/rc4test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/ecdsatest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/exptest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/bftest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/hmactest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/ecdhtest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/sha256t.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/clienthellotest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/md2test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/verify_extra_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/dhtest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/rsa_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/dsatest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/rc2test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/bntest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/mdc2test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/ssltest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/evp_extra_test.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/v3nametest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/destest.c: No such file or directory cp: /var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e/test/srptest.c: No such file or directory * ERROR: dev-libs/openssl-1.0.2e::gentoo failed (prepare phase): * (no error message) * * Call stack: * ebuild.sh, line 133: Called src_prepare * environment, line 2916: Called multilib_copy_sources * environment, line 2073: Called multibuild_copy_sources * environment, line 1885: Called multibuild_foreach_variant '_multibuild_create_source_copy' * environment, line 1917: Called _multibuild_run '_multibuild_create_source_copy' * environment, line 1915: Called _multibuild_create_source_copy * environment, line 1883: Called die * The specific snippet of code: * cp -pr "${cp_args[@]}" "${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die * * If you need support, post the output of `emerge --info '=dev-libs/openssl-1.0.2e::gentoo'`, * the complete build log and the output of `emerge -pqv '=dev-libs/openssl-1.0.2e::gentoo'`. * The complete build log is located at '/var/tmp/portage/dev-libs/openssl-1.0.2e/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-libs/openssl-1.0.2e/temp/environment'. * Working directory: '/var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e' * S: '/var/tmp/portage/dev-libs/openssl-1.0.2e/work/openssl-1.0.2e'
Hmm, the man page doesn't even list '-r'. I guess we should change that to 'cp -R -p' indeed, and possibly also enable 'cp -R -P -p' in multibuild_merge_root() as '-r' probably caused the original symlink issue. I'm going to submit a patch soon, will that be a problem if I asked you to test it?
Ok then. Merged just the 'cp -r' -> 'cp -R' change. commit 7adffa3687e1abf7ee24b096b8ab2f39a7ee32b9 Author: Michał Górny <mgorny@gentoo.org> Date: Sat Dec 19 08:57:56 2015 multibuild.eclass: _copy_sources(), use 'cp -R' for BSD compat, #568692 Use 'cp -R' for multibuild_copy_sources() as the '-r' option triggers triggers undesired '-L' behavior wrt symbolic links. Fixes: https://bugs.gentoo.org/show_bug.cgi?id=568692