Dockerfile 7.35 KB
Newer Older
1
FROM opensuse/tumbleweed
Ben Cooksley's avatar
Ben Cooksley committed
2 3
MAINTAINER openSUSE KDE Maintainers <opensuse-kde@opensuse.org>

4 5
# Add KDE:Qt:5.13 repo
RUN zypper --non-interactive addrepo --priority 50 --refresh obs://KDE:Qt:5.13/openSUSE_Tumbleweed KDE:Qt:5.13
Ben Cooksley's avatar
Ben Cooksley committed
6 7 8
# Update container, import GPG key for KUQ
RUN zypper --non-interactive --gpg-auto-import-keys -v dup
# Install various other packages
9
RUN zypper --non-interactive install java-1_8_0-openjdk-headless python3-lxml python3-paramiko python3-PyYAML python3-simplejson php-composer php7-iconv php7-ctype php7-tokenizer php7-intl php7-dom
Ben Cooksley's avatar
Ben Cooksley committed
10 11 12
# Install build dependencies
RUN zypper --non-interactive install --recommends -t pattern devel_qt5 devel_C_C++
# The pattern is likely not enough, so just install all Qt devel packages from KUQ
13
RUN zypper -q se --not-installed-only --repo KDE:Qt:5.13 libqt5*devel libQt5*devel | tail -n +4 | cut -d "|" -f 2 | grep -v "libqt5-creator" | grep -v "libqt5-qtvirtualkeyboard-private-headers" | grep -v "libQt5HunspellInputMethod-private-headers" | grep -vi "libqt5xdg" | grep -v "libQt5Pas" | xargs zypper --non-interactive in
14
# And some other useful and base packages
15
RUN zypper --non-interactive in git clang python3-Sphinx python3-qt5 xvfb-run AppStream python3-pip ruby-devel libffi-devel openbox sassc \
16 17
    # temporarily: curl needed for appstreamcli, cmp. https://bugzilla.opensuse.org/show_bug.cgi?id=1080446
    curl \
18 19
    # abi tracking software and it's dependencies
    abi-compliance-checker ctags \
20
    # basic Qt5 packages, which have no -devel and should be manually installed
21 22
    libqt5-qtquickcontrols libqt5-qtquickcontrols2 libqt5-qtgraphicaleffects \
    # Other basic Qt based libraries
23 24
    libqca-qt5-devel \
    # For building documentation tarballs
25 26
    bzip2 \
    # For image thumbnails for the KDE.org/applications subsite
27 28 29
    ImageMagick \
    # Hidden dependency of appstream tools
    gsettings-desktop-schemas
30
RUN pip install gcovr
31
RUN gem install atspi cucumber ftpd
32
RUN ln -s /usr/bin/cucumber.ruby* /usr/bin/cucumber
33
# KDE stuff also depends on the following
34
RUN zypper --non-interactive in --allow-vendor-change \
35 36 37 38
    # modemmanager-qt
    ModemManager-devel \
    # networkmanager-qt
    NetworkManager-devel \
39 40
    # kcoreaddons
    lsof \
41 42 43 44 45 46 47
    # kauth
    polkit-devel \
    # kwindowsystem
    xcb-*-devel \
    # prison
    libdmtx-devel qrencode-devel \
    # kwayland
48
    wayland-devel \
49 50 51 52 53 54 55 56
    # baloo/kfilemetadata (some for okular)
    libattr-devel libexiv2-devel libtag-devel taglib-*-devel libepub-devel libpoppler-qt5-devel lmdb-devel \
    # kdoctools
    perl-URI docbook_4 docbook-xsl-stylesheets libxml2-devel libxslt-devel perl-URI \
    # khtml
    giflib-devel libopenssl-devel \
    # kdelibs4support
    libSM-devel \
57 58
    # kdnssd
    libavahi-devel libavahi-glib-devel libavahi-gobject-devel \
59 60
    # khelpcenter (and pim for grantlee)
    grantlee5-devel libxapian-devel \
61
    # sonnet
62 63
    aspell \
    aspell-devel \
64
    hunspell-devel \
65
    libvoikko-devel \
66 67
    # kio-extras and krdc
    libssh-devel \
68 69 70 71 72 73 74 75 76
    # plasma-pa
    gconf2-devel libpulse-devel libcanberra-devel \
    # user-manager
    libpwquality-devel \
    # sddm-kcm
    libXcursor-devel \
    # plasma-workspace
    libXtst-devel \
    # breeze-plymouth
77
    plymouth-devel \
78
    # kde-gtk-config/breeze-gtk
79
    gtk3-devel gtk2-devel python3-cairo \
80
    # plasma-desktop/discover
81
    libAppStreamQt-devel fwupd-devel \
82 83 84 85 86 87 88
    # plasma-desktop
    xf86-input-synaptics-devel xf86-input-evdev-devel libxkbfile-devel xorg-x11-server-sdk \
    # kimpanel
    ibus-devel scim-devel \
    # libksane
    sane-backends-devel \
    # pim
89
    libical-devel libkolabxml-devel libxerces-c-devel \
90
    # <misc>
91
    alsa-devel libraw-devel fftw3-devel adobe-sourcecodepro-fonts \
92 93 94
    # choqok
    qoauth-qt5-devel qtkeychain-qt5-devel \
    # krita
95
    eigen3-devel OpenColorIO-devel dejavu-fonts gnu-free-fonts quazip-devel \
96 97 98
    # kaccounts / telepathy
    libaccounts-qt5-devel libaccounts-glib-devel libsignon-qt5-devel intltool \
    # skrooge
99
    sqlcipher sqlcipher-devel sqlite3-devel sqlite3 libofx-devel poppler-tools \
100 101 102
    # kwin
    libepoxy-devel Mesa-demo Mesa-demo-x xorg-x11-server-extra dmz-icon-theme-cursors libgbm-devel weston \
    xorg-x11-server-wayland \
103 104
    # kgamma5
    libXxf86vm-devel \
105 106 107 108
    # kgraphviewer
    graphviz-devel \
    # drkonqi
    at-spi2-core which libgirepository-1_0-1 typelib-1_0-Atspi-2_0 gobject-introspection-devel \
Ben Cooksley's avatar
Ben Cooksley committed
109 110
    # kcalc
    mpfr-devel \
111 112 113 114 115 116 117
    # kdevelop
    gdb \
    # labplot
    gsl-devel \
    # kuserfeedback
    php7 \
    # digikam
118 119
    QtAV-devel opencv-devel \
    # wacomtablet
120
    libwacom-devel \
121
    xf86-input-wacom-devel \
122
    # rust-qt-binding-generator
Ben Cooksley's avatar
Ben Cooksley committed
123
    rust rust-std \
124
    cargo \
125 126 127 128
    # kdevelop
    clang \
    clang-devel \
    llvm-devel \
129
    subversion-devel \
130
    python3-devel \
131 132
    # clazy
    clang-devel-static \
133
    # libkleo
Ben Cooksley's avatar
Ben Cooksley committed
134
    libqgpgme-devel \
Ben Cooksley's avatar
Ben Cooksley committed
135
    # akonadi
136
    mariadb libQt5Sql5-mysql \
Ben Cooksley's avatar
Ben Cooksley committed
137
    # libkdegames
Ben Cooksley's avatar
Ben Cooksley committed
138
    openal-soft-devel \
Ben Cooksley's avatar
Ben Cooksley committed
139
    libsndfile-devel \
Ben Cooksley's avatar
Ben Cooksley committed
140 141
    # kscd
    libmusicbrainz-devel \
142 143
    libmusicbrainz5-devel \
    # ktp-common-internals (also rest of KDE Telepathy)
144 145 146 147
    telepathy-qt5-devel \
    # audiocd-kio
    cdparanoia-devel \
    # ark
148
    libarchive-devel libzip-devel \
149
    # ffmpegthumbs
150
    ffmpeg-4-libavcodec-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavutil-devel ffmpeg-4-libswscale-devel ffmpeg-4-libpostproc-devel \
151 152 153 154 155 156 157 158 159 160 161
    # k3b
    flac-devel \
    libmad-devel \
    libmp3lame-devel \
    libogg-devel libvorbis-devel \
    libsamplerate-devel \
    # kamera
    libgphoto2-devel \
    # signon-kwallet-extension
    libsignon-glib-devel signond-libs-devel \
    # kdenlive
162
    libmlt-devel libmlt++-devel libmlt6-modules libmlt6-data rttr-devel \
163 164 165 166 167 168 169
    # print-manager
    cups-devel \
    # krfb
    LibVNCServer-devel \
    # kscd
    libdiscid-devel \
    # minuet
170 171
    fluidsynth-devel \
    # kajongg
172 173
    python3-Twisted \
    # okular
174 175 176 177 178
    texlive-latex \
    # ksmtp tests
    cyrus-sasl-plain \
    # kdb
    libmariadb-devel postgresql-devel \
Ben Cooksley's avatar
Ben Cooksley committed
179 180
    # Gwenview
    cfitsio-devel \
181 182 183
    # Calligra, Krita and probably other things elsewhere too
    libboost_*-devel \
    # Amarok
184 185
    gmock gtest libcurl-devel libofa-devel libgpod-devel libmtp-devel loudmouth-devel liblastfm-qt5-devel libmysqld-devel \
    # Cantor
186
    libspectre-devel python3-numpy python3-matplotlib octave maxima libqalculate-devel moonjit-devel julia-devel \
187
    # KPat
188 189
    freecell-solver-devel \
    # RKWard
190 191
    R-base-devel gcc-fortran \
    # Kaffeine
192 193
    libdvbv5-devel vlc-devel libXss-devel \
    # Keysmith
194
    libsodium-devel \
195
    # Plasma Phone Components
196 197
    libphonenumber-devel \
    # kquickcharts
198 199
    glslang-devel \
    # xdg-desktop-portal-kde
200 201 202
    pipewire-devel \
    # Spectacle
    kImageAnnotator-devel
203

204 205
# For D-Bus to be willing to start it needs a Machine ID
RUN dbus-uuidgen > /etc/machine-id
206 207 208 209 210

# OpenSUSE has a different GID for the 'video' group compared to the Physical Ubuntu and Debian hosts
# Therefore we create a group which matches the physical hosts 'video' group GID
# This is necessary to allow us to grant Jenkins access to the vgem device
RUN groupadd -g 44 docker-video
211
# We need a user account to do things as, and SSHD needs keys
212
RUN useradd -d /home/jenkins/ -u 1000 --user-group --create-home -G video,docker-video jenkins && /usr/sbin/sshd-gen-keys-start
213 214 215
# We want to run SSHD so that Jenkins can remotely connect to this container
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]