The manylinux images can take over a minute to start on spinning disks
(not SSDs) because pre_exec.sh is changing the ownership of all the
python install directories to be writable by the BUILDER_UID. This is
detailed further in #853.
I changed the build steps for manylinux images to add a group called
`builder`, then change the python directories to be owned by the
`builder` group, and group writable. I then changed pre_exec.sh to add
BUILDER_USER to the builder group prior to the gosu switch to become
BUILDER_USER. The result is that BUILDER_USER is in the `builder`
group that can write to the python directories, allowing the user to
install python packages without permission denied errors.
There was one additional change to support this, and that was the
arguments to `gosu` in entrypoint.sh. Previously the arguments were
`$BUILDER_UID:BUILDER_GID`, but providing the gid prevents `gosu` from
loading additional groups (such as `builder`) from /etc/group. I
removed the GID argument to allow `gosu` to pick up additional groups
from /etc/group.
fixes#853
Instead of buildah.
- Simplified workflow: manifest-tool provides a more straightforward command-line interface for creating manifest lists
- Better integration: manifest-tool is specifically designed for manifest list/OCI index creation and management
- Cross-platform compatibility: Works with both Docker v2.2 manifest lists and OCI v1 indexes
- Template-based approach: The --template and --platforms flags provide a cleaner way to specify multi-arch images
Since the Centos 5 image is not maintained anymore, there is no need to install
the custom CMake package originally intended to support GLIBC version from Centos 5.
Update options preferring their more explicit long form:
`-f` is `--fail`
`-s` is `--silent`
`-S` is `--show-error`
`-L` is `--location`
Additionally, `-O` is removed in favor of explicitly specifying the output file using `-o`
`which` is not guaranteed to be installed on all machines. Since the
script is meant to be run on the user's host machine it is more portable
to use `type -p` here.
Closes: https://github.com/dockcross/dockcross/issues/880
Only move `/root/.rustup` and `/root/.cargo` directories if they exist.
This prevents errors when re-using the script in environments where
Rust is not installed (e.g. https://github.com/dockbuild/dockbuild).
Previously, `mv` would fail if either directory was missing:
```
mv: cannot stat '/root/.rustup': No such file or directory
mv: cannot stat '/root/.cargo': No such file or directory
```
For:
```
Makefile:297: target '-e' given more than once in the same rule
35
Makefile:305: warning: overriding recipe for target 'base-shell'
36
Makefile:298: warning: ignoring old recipe for target 'base-shell'
37
Makefile:305: warning: overriding recipe for target 'uname'
38
Makefile:298: warning: ignoring old recipe for target 'uname'
39
Makefile:305: warning: overriding recipe for target '-m'
40
Makefile:298: warning: ignoring old recipe for target '-m'
41
Makefile:305: warning: overriding recipe for target '|'
42
Makefile:298: warning: ignoring old recipe for target '|'
43
Makefile:305: warning: overriding recipe for target 'sed'
44
Makefile:298: warning: ignoring old recipe for target 'sed'
45
Makefile:305: warning: overriding recipe for target '-e'
46
Makefile:298: warning: ignoring old recipe for target '-e'
47
Makefile:305: warning: overriding recipe for target ''s/x86_64/amd64/''
48
Makefile:298: warning: ignoring old recipe for target ''s/x86_64/amd64/''
```