Merge pull request #8267 from SomberNight/202303_build_userid1000
build: docker scripts to work even if host user id != 1000
This commit is contained in:
@@ -141,11 +141,12 @@ RUN apt -y update -qq \
|
||||
|
||||
|
||||
# create new user to avoid using root; but with sudo access and no password for convenience.
|
||||
ARG UID=1000
|
||||
ENV USER="user"
|
||||
ENV HOME_DIR="/home/${USER}"
|
||||
ENV WORK_DIR="${HOME_DIR}/wspace" \
|
||||
PATH="${HOME_DIR}/.local/bin:${PATH}"
|
||||
RUN useradd --create-home --shell /bin/bash ${USER}
|
||||
RUN useradd --uid $UID --create-home --shell /bin/bash ${USER}
|
||||
RUN usermod -append --groups sudo ${USER}
|
||||
RUN echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||
WORKDIR ${WORK_DIR}
|
||||
|
||||
@@ -11,6 +11,7 @@ PROJECT_ROOT_OR_FRESHCLONE_ROOT="$PROJECT_ROOT"
|
||||
CONTRIB="$PROJECT_ROOT/contrib"
|
||||
CONTRIB_ANDROID="$CONTRIB/android"
|
||||
DISTDIR="$PROJECT_ROOT/dist"
|
||||
BUILD_UID=$(/usr/bin/stat -c %u "$PROJECT_ROOT")
|
||||
|
||||
. "$CONTRIB"/build_tools_util.sh
|
||||
|
||||
@@ -36,6 +37,10 @@ if [ ! -z "$ELECBUILD_NOCACHE" ] ; then
|
||||
DOCKER_BUILD_FLAGS="--pull --no-cache"
|
||||
fi
|
||||
|
||||
if [ -z "$ELECBUILD_COMMIT" ] ; then # local dev build
|
||||
DOCKER_BUILD_FLAGS="$DOCKER_BUILD_FLAGS --build-arg UID=$BUILD_UID"
|
||||
fi
|
||||
|
||||
info "building docker image."
|
||||
docker build \
|
||||
$DOCKER_BUILD_FLAGS \
|
||||
@@ -47,11 +52,11 @@ docker build \
|
||||
# maybe do fresh clone
|
||||
if [ ! -z "$ELECBUILD_COMMIT" ] ; then
|
||||
info "ELECBUILD_COMMIT=$ELECBUILD_COMMIT. doing fresh clone and git checkout."
|
||||
FRESH_CLONE="$CONTRIB_ANDROID/fresh_clone/electrum" && \
|
||||
rm -rf "$FRESH_CLONE" && \
|
||||
umask 0022 && \
|
||||
git clone "$PROJECT_ROOT" "$FRESH_CLONE" && \
|
||||
cd "$FRESH_CLONE"
|
||||
FRESH_CLONE="/tmp/electrum_build/android/fresh_clone/electrum"
|
||||
rm -rf "$FRESH_CLONE" 2>/dev/null || ( info "we need sudo to rm prev FRESH_CLONE." && sudo rm -rf "$FRESH_CLONE" )
|
||||
umask 0022
|
||||
git clone "$PROJECT_ROOT" "$FRESH_CLONE"
|
||||
cd "$FRESH_CLONE"
|
||||
git checkout "$ELECBUILD_COMMIT"
|
||||
PROJECT_ROOT_OR_FRESHCLONE_ROOT="$FRESH_CLONE"
|
||||
else
|
||||
@@ -67,6 +72,13 @@ fi
|
||||
|
||||
info "building binary..."
|
||||
mkdir --parents "$PROJECT_ROOT_OR_FRESHCLONE_ROOT"/.buildozer/.gradle
|
||||
# check uid and maybe chown. see #8261
|
||||
if [ ! -z "$ELECBUILD_COMMIT" ] ; then # fresh clone (reproducible build)
|
||||
if [ $(id -u) != "1000" ] || [ $(id -g) != "1000" ] ; then
|
||||
info "need to chown -R FRESH_CLONE dir. prompting for sudo."
|
||||
sudo chown -R 1000:1000 "$FRESH_CLONE"
|
||||
fi
|
||||
fi
|
||||
docker run -it --rm \
|
||||
--name electrum-android-builder-cont \
|
||||
-v "$PROJECT_ROOT_OR_FRESHCLONE_ROOT":/home/user/wspace/electrum \
|
||||
|
||||
Reference in New Issue
Block a user