tests/lcitool: append user setting stanza to dockerfiles
For the cross-compilation use-case it is important to add the host user to the dockerfile so we can map them to the docker environment when cross-building files. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20230228190653.1602033-19-alex.bennee@linaro.org>
This commit is contained in:
parent
60f999b7f2
commit
5b8bcf6b6c
@ -124,3 +124,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -138,3 +138,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3.8"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -169,3 +169,8 @@ ENV ABI "x86_64-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=x86_64-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-linux-gnu-
|
||||
ENV DEF_TARGET_LIST x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -155,3 +155,8 @@ RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap
|
||||
RUN cd /usr/src/netmap && git checkout v11.3
|
||||
RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install
|
||||
ENV QEMU_CONFIGURE_OPTS --enable-netmap
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -168,3 +168,8 @@ ENV ABI "aarch64-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
||||
ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -167,3 +167,8 @@ ENV ABI "arm-linux-gnueabi"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -168,3 +168,8 @@ ENV ABI "arm-linux-gnueabihf"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -165,3 +165,8 @@ ENV ABI "mips64el-linux-gnuabi64"
|
||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
||||
ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -165,3 +165,8 @@ ENV ABI "mipsel-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
||||
ENV DEF_TARGET_LIST mipsel-softmmu,mipsel-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -167,3 +167,8 @@ ENV ABI "powerpc64le-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
||||
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -166,3 +166,8 @@ ENV ABI "s390x-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
||||
ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -101,3 +101,8 @@ ENV ABI "i686-w64-mingw32"
|
||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32-
|
||||
ENV DEF_TARGET_LIST i386-softmmu
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -101,3 +101,8 @@ ENV ABI "x86_64-w64-mingw32"
|
||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32-
|
||||
ENV DEF_TARGET_LIST x86_64-softmmu
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -146,3 +146,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -135,3 +135,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3.9"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -146,3 +146,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -145,3 +145,8 @@ ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
# As a final step configure the user (if env is defined)
|
||||
ARG USER
|
||||
ARG UID
|
||||
RUN if [ "${USER}" ]; then \
|
||||
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|
||||
|
@ -53,6 +53,15 @@ def generate(filename, cmd, trailer):
|
||||
content += trailer
|
||||
atomic_write(filename, content)
|
||||
|
||||
# Optional user setting, this will always be the last thing added
|
||||
# so maximise the number of layers that are cached
|
||||
add_user_mapping = [
|
||||
"# As a final step configure the user (if env is defined)",
|
||||
"ARG USER",
|
||||
"ARG UID",
|
||||
"RUN if [ \"${USER}\" ]; then \\",
|
||||
" id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi\n"
|
||||
]
|
||||
|
||||
def generate_dockerfile(host, target, cross=None, trailer=None):
|
||||
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
||||
@ -60,6 +69,12 @@ def generate_dockerfile(host, target, cross=None, trailer=None):
|
||||
if cross is not None:
|
||||
cmd.extend(["--cross", cross])
|
||||
cmd.extend([target, "qemu"])
|
||||
|
||||
if trailer is not None:
|
||||
trailer += "\n".join(add_user_mapping)
|
||||
else:
|
||||
trailer = "\n".join(add_user_mapping)
|
||||
|
||||
generate(filename, cmd, trailer)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user