Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 730466

Summary: Unpacking prefix-portage: Cannot utime: No such file or directory
Product: Gentoo/Alt Reporter: Camille Huot <gentoo2>
Component: Prefix SupportAssignee: Gentoo Prefix <prefix>
Status: RESOLVED WONTFIX    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: AMD64   
OS: OS X   
Whiteboard:
Package list:
Runtime testing required: ---

Description Camille Huot 2020-07-02 16:52:45 UTC
I am running on MacOS Catalina, where I run bootstrap-prefix.sh from within a Docker container running Gentoo Linux, with the EPREFIX target as a bind volume to the Mac filesystem.

It seems that tar is failing to change the modification date of symlinks via docker bind mount on Mac filesystems

Here is a simplified typescript to understand the situation:

```
MacCatalina $ pwd
/Users/chuot
MacCatalina $ docker run -d --name gentoo -v /Users/chuot:/home/chuot gentoo/stage3-amd64-nomultilib sleep infinity
MacCatalina $ docker exec -it gentoo bash
GentooContainer # useradd chuot
GentooContainer # su - chuot
GentooContainer $ pwd
/home/chuot
GentooContainer $ ./bootstrap-prefix.sh
=> this will install prefix in /home/chuot/gentoo which is a bind mount to /Users/chuot
...

now there is an error when untaring prefix-portage:

* Bootstrapping prefix-portage
* Fetching prefix-portage-2.3.100.tar.bz2
...
* Unpacking prefix-portage
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newlib.so: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/ewarn: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/eerror: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newdoc: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newman: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newconfd: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/eqawarn: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newenvd: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/einfo: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/unprivileged/chgrp: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newlib.a: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newbin: Cannot utime: No such file or directory
tar: prefix-portage-2.3.100/bin/ebuild-helpers/newinitd: Cannot utime: No such file or directory
tar: Exiting with failure status due to previous errors

I tried running
  bootstrap_stage1_log
but that failed :(  I have no clue, really.  Please find friendly folks
in #gentoo-prefix on irc.gentoo.org, gentoo-alt@lists.gentoo.org mailing list,
or file a bug at bugs.gentoo.org under Gentoo/Alt, Prefix Support.
Sorry that I have failed you master.  I shall now return to my humble cave.
You can find a log of what happened in /home/chuot/gentoo/stage1.log
GentooContainer $
```

To solve the issue, I added -m to the tar command line:

```
--- bootstrap-prefix.sh.orig	2020-07-02 18:44:18.000000000 +0200
+++ bootstrap-prefix.sh	2020-07-02 18:46:04.000000000 +0200
@@ -647,7 +647,7 @@
         rm -rf "${S}" >& /dev/null
         mkdir -p "${S}" >& /dev/null
         cd "${S}"
-        bzip2 -dc "${DISTDIR}/${A}" | tar -xf - || return 1
+        bzip2 -dc "${DISTDIR}/${A}" | tar -xmf - || return 1
         S="${S}/prefix-portage-${PV}"
         cd "${S}"
```
Comment 1 Camille Huot 2020-07-04 19:26:46 UTC
Of course, subsequent tar commands are failing as well (when trying to build bash). So I gave up. Probably a slight patch of tar could have made it.

For now, instead of a bind mount, I've installed the prefix in a real docker volume and I was able to complete the bootstrap.
Comment 2 Fabian Groffen gentoo-dev 2020-07-05 07:35:52 UTC
I don't think this is a configuration we want to support, sorry.