File Dockerfile of Package ci-cpp-container
#!BuildTag: yast-cpp
# This actually is registry.opensuse.org/yast/head/images/opensuse/tumbleweed:latest
# when building in OBS YaST:Head!
FROM opensuse/tumbleweed
# do not install the files marked as documentation (use "rpm --excludedocs")
RUN sed -i -e "s/^.*rpm.install.excludedocs.*/rpm.install.excludedocs = yes/" /etc/zypp/zypp.conf
# import the YaST OBS GPG key
COPY YaST:Head.pub /usr/share/gpg-keys/
RUN rpm --import /usr/share/gpg-keys/YaST:Head.pub
# Prefer the packages from the YaST:Head repository
# TODO -p 50 does not work, but should be usless anyway, just like --refresh
RUN zypper addrepo --refresh http://download.opensuse.org/repositories/YaST:/Head/openSUSE_Tumbleweed yast
RUN zypper --non-interactive install --no-recommends \
aspell-en \
autoconf \
automake \
bison \
boost-devel \
brp-check-suse \
build \
cmake \
dejagnu \
docbook-xsl-stylesheets \
doxygen \
fdupes \
flex \
gcc-c++ \
git \
glibc-locale \
grep \
hwinfo-devel \
libtool \
libxslt \
obs-service-source_validator \
openSUSE-release-ftp \
rpm-build \
ruby-devel \
"rubygem(ruby:3.4.0:abstract_method)" \
"rubygem(ruby:3.4.0:cfa)" \
"rubygem(ruby:3.4.0:cheetah)" \
"rubygem(ruby:3.4.0:gettext)" \
"rubygem(ruby:3.4.0:parallel)" \
"rubygem(ruby:3.4.0:parallel_tests)" \
"rubygem(ruby:3.4.0:raspell)" \
"rubygem(ruby:3.4.0:rspec)" \
"rubygem(ruby:3.4.0:rubocop:1.24.1)" \
"rubygem(ruby:3.4.0:simplecov)" \
"rubygem(ruby:3.4.0:simplecov-lcov)" \
"rubygem(ruby:3.4.0:simpleidn)" \
"rubygem(ruby:3.4.0:yard)" \
"rubygem(ruby:3.4.0:yast-rake)" \
screen \
sgml-skel \
ShellCheck \
update-desktop-files \
which \
yast2-core-devel \
yast2-devtools \
yast2-ycp-ui-bindings-devel \
&& zypper clean --all \
&& rm -rf /usr/lib*/ruby/gems/*/cache/ \
&& rm -rf /usr/share/doc/ \
&& rpm -e --nodeps kbd \
&& find /usr/lib/locale/* -maxdepth 1 | grep -v -E "(en_US|cs_CZ|es_ES|de_DE|C.utf8)" | xargs rm -rf \
&& find /usr/share/locale -name "*.mo" -delete
# fail when there are multiple Ruby interpreters installed
# Because it means one part of YaST wanted a different version than the other
# and requires/imports will fail on the version mismatch.
RUN if [ `rpm -q --whatprovides "ruby(abi)" | wc -l` -gt 1 ]; then \
rpm -q --whatprovides "ruby(abi)"; \
echo "Multiple Rubies detected, most likely the system Ruby version has been upgraded."; \
echo "Update the versions of the included Ruby gems."; exit 1; fi
COPY yast-ci-cpp /usr/local/bin/
RUN chmod a+x /usr/local/bin/yast-ci-cpp
# just a backward compatible symlink, should be removed in the future...
RUN ln -s yast-ci-cpp /usr/local/bin/yast-travis-cpp
ENV LC_ALL=en_US.UTF-8
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# run some smoke tests to make sure there is no serious issue with the image
RUN /usr/lib/YaST2/bin/y2base --help && c++ --version && rake -r yast/rake -V