mirror of https://github.com/xemu-project/xemu.git
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3.8"
|
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 MESON_OPTS "--cross-file=x86_64-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=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
|
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 && 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
|
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
|
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 MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user
|
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 MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
||||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
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 MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
||||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user
|
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 MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
||||||
ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user
|
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 MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST mipsel-softmmu,mipsel-linux-user
|
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 MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user
|
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 MESON_OPTS "--cross-file=s390x-linux-gnu"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu-
|
||||||
ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user
|
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 MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32-
|
||||||
ENV DEF_TARGET_LIST i386-softmmu
|
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 MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32-
|
||||||
ENV DEF_TARGET_LIST x86_64-softmmu
|
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3.9"
|
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
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 MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
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
|
content += trailer
|
||||||
atomic_write(filename, content)
|
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):
|
def generate_dockerfile(host, target, cross=None, trailer=None):
|
||||||
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
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:
|
if cross is not None:
|
||||||
cmd.extend(["--cross", cross])
|
cmd.extend(["--cross", cross])
|
||||||
cmd.extend([target, "qemu"])
|
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)
|
generate(filename, cmd, trailer)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue