mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-06 04:26:59 +02:00
This change introduces a containerised SDK as a replacement for cork SDK operations. It also simplifies versioning by removing the need for manifest repos as well as usage of the "repo" tool by use of git submodules for coreos-overlay and portage-stable. The following feature scripts are added: - run_sdk_container: Run a command in an SDK container, using the current scripts repo + ebuild submodules. current scripts repo + ebuild submodules. - bootstrap_sdk_container / build_sdk_container_image: Bootstrap a new SDK and create an SDK container from the resulting SDK tarball. The following additions have been made to SDK scripts: - setup_board: add --pkgdir parameter to use a custom binary packge directory. Signed-off-by: Thilo Fromm <thilo@kinvolk.io>
53 lines
1.9 KiB
Docker
53 lines
1.9 KiB
Docker
ARG VERSION
|
|
FROM flatcar-sdk-tarball:${VERSION}
|
|
|
|
RUN touch /etc/debian_chroot
|
|
RUN chmod 644 /etc/passwd
|
|
RUN chmod 644 /etc/group
|
|
|
|
RUN if ! grep -q portage /etc/group ; then \
|
|
echo "portage::250:portage" >>/etc/group; \
|
|
fi
|
|
RUN if ! grep -q portage /etc/passwd; then \
|
|
echo "portage:x:250:250:portage:/var/tmp/portage:/bin/false" >>/etc/passwd; \
|
|
fi
|
|
|
|
# fix "Unable to unshare: EPERM ..." in containers
|
|
# (see https://github.com/gentoo/gentoo-docker-images/issues/81)
|
|
RUN echo 'export FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox"' \
|
|
>> /etc/skel/.bashrc
|
|
|
|
RUN groupadd sdk
|
|
RUN useradd -g sdk -G portage sdk
|
|
RUN echo "sdk ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/sdk-user
|
|
|
|
RUN rm -rf /mnt/host/source
|
|
COPY --chown=sdk:sdk sdk_container/ /mnt/host/source
|
|
COPY --chown=sdk:sdk . /mnt/host/source/src/scripts
|
|
RUN chown sdk:sdk /mnt/host/source
|
|
|
|
COPY sdk_lib/90_env_keep /etc/sudoers.d/90_env_keep
|
|
RUN chmod 0440 /etc/sudoers.d/90_env_keep
|
|
|
|
USER sdk:sdk
|
|
RUN mkdir -p /mnt/host/source/src/scripts /mnt/host/source/src/build
|
|
RUN ln -s /mnt/host/source /home/sdk/trunk
|
|
|
|
RUN rm /home/sdk/.bashrc
|
|
RUN cp /etc/skel/.bashrc /home/sdk
|
|
RUN echo "cd /home/sdk/trunk/src/scripts" >> /home/sdk/.bashrc
|
|
RUN echo 'export PATH="$PATH:/usr/local/bin:/usr/local/sbin"' >> /home/sdk/.bashrc
|
|
|
|
# user and SDK environment variables pass-through into container
|
|
RUN echo "if [ -f /mnt/host/source/.env ]; then source /mnt/host/source/.env; fi" >> /home/sdk/.bashrc
|
|
RUN echo "if [ -f /mnt/host/source/.sdkenv ]; then source /mnt/host/source/.sdkenv; fi" >> /home/sdk/.bashrc
|
|
|
|
COPY --chown=sdk:sdk sdk_lib/sdk_entry.sh /home/sdk
|
|
RUN chmod 755 /home/sdk/sdk_entry.sh
|
|
|
|
# This should be a NOP; if you see packages being rebuilt
|
|
# it's likely that submodules and SDK tarball are out of sync
|
|
RUN /home/sdk/sdk_entry.sh ./update_chroot --toolchain_boards="amd64-usr arm64-usr"
|
|
|
|
ENTRYPOINT /home/sdk/sdk_entry.sh
|