From 8923c6a3c73cf3622d236803075a2c876cdca7a6 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Fillion-Robin Date: Fri, 4 Nov 2016 22:58:31 -0400 Subject: [PATCH] manylinux.common: Fix warning changing ownership of python install While the use of sudo (made possible by 53cf084) allows to install additional packages, the warning copied below was still reported. To avoid this warning and streamline the installation of new packages, this commit (1) introduces the concept of "pre_exec" entrypoint hook and (2) adds such a hook to change the ownership of python "bin" and "site-packages" directories for the manylinux images. Warning reported are similar to this one: ``` The directory '/home/jcfr/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. ``` Note that the sudo "-H" flag suggested in the warning is not available in centos. --- common.manylinux | 2 ++ imagefiles/entrypoint.sh | 5 +++++ manylinux-common/pre_exec.sh | 8 ++++++++ 3 files changed, 15 insertions(+) create mode 100755 manylinux-common/pre_exec.sh diff --git a/common.manylinux b/common.manylinux index bd9664a..023d7dd 100644 --- a/common.manylinux +++ b/common.manylinux @@ -7,6 +7,8 @@ RUN cd /opt && \ COPY manylinux-common/install-python-packages.sh /usr/local/bin RUN /usr/local/bin/install-python-packages.sh +COPY manylinux-common/pre_exec.sh /dockcross/pre_exec.sh + RUN yum -y install sudo && \ sed -i 's/Defaults requiretty/#Defaults requiretty/' /etc/sudoers && \ visudo -c diff --git a/imagefiles/entrypoint.sh b/imagefiles/entrypoint.sh index a104e30..523ec6d 100755 --- a/imagefiles/entrypoint.sh +++ b/imagefiles/entrypoint.sh @@ -31,6 +31,11 @@ if [[ -n $BUILDER_UID ]] && [[ -n $BUILDER_GID ]]; then cp -r /root/* $HOME/ chown -R $BUILDER_UID:$BUILDER_GID $HOME/* + # Additional updates specific to the image + if [[ -e /dockcross/pre_exec.sh ]]; then + /dockcross/pre_exec.sh + fi + # Run the command as the specified user/group. exec chpst -u :$BUILDER_UID:$BUILDER_GID "$@" else diff --git a/manylinux-common/pre_exec.sh b/manylinux-common/pre_exec.sh new file mode 100755 index 0000000..a871608 --- /dev/null +++ b/manylinux-common/pre_exec.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +for DIR in /opt/python/*/lib/python*/site-packages; do + chown -R $BUILDER_UID:$BUILDER_GID $DIR +done +for DIR in /opt/python/*/bin; do + chown -R $BUILDER_UID:$BUILDER_GID $DIR +done