Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e971060 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

add gitlab ci for builds

parent c9e9512b
Loading
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -4,3 +4,10 @@

/.vs
/temp
src/
apks/
_gclient_src*/
.ccache/
.cipd/
.gclient*
depot_tools/

.gitlab-ci.yml

0 → 100644
+38 −0
Original line number Diff line number Diff line
stages:
  - prepare
  - build

variables:
  CONTAINER_IMAGE: registry.gitlab.e.foundation:5000/$CI_PROJECT_PATH
  GIT_SUBMODULE_STRATEGY: recursive

build-docker:
  image: docker:19-git
  stage: prepare
  tags:
    - generic_privileged
  variables:
    DOCKER_DRIVER: overlay2
  services:
    - docker:19-dind
  script:
    - echo "$CI_JOB_TOKEN" | docker login registry.gitlab.e.foundation:5000 -u gitlab-ci-token --password-stdin
    - docker pull $CONTAINER_IMAGE:latest || true
    - docker build --cache-from $CONTAINER_IMAGE:latest --tag $CONTAINER_IMAGE:latest ${CI_PROJECT_DIR}
    - docker push $CONTAINER_IMAGE:latest

.build-bromite:
  image: $CONTAINER_IMAGE
  tags:
    - build-browser
  artifacts:
    name: "$CI_JOB_NAME"
    paths:
      - apks/*

build-bromite-arm64:
  stage: build
  extends: .build-bromite
  script:
    - $CI_PROJECT_DIR/build.sh -c -s -a arm64

Dockerfile

0 → 100644
+49 −0
Original line number Diff line number Diff line
FROM ubuntu:18.04

ENV CHROMIUM_DIR "/srv/chromium"
ENV DEBIAN_FRONTEND noninteractive

# Enable foreign architectures support
RUN dpkg --print-architecture && \
	dpkg --print-foreign-architectures

RUN dpkg --add-architecture i386 && \
	dpkg --print-foreign-architectures

# Install required packages
COPY packages.txt /packages.txt

RUN apt-get -qq update && \
    cat /packages.txt | xargs apt-get install -qqy

RUN rm /packages.txt

# Install and setup python 3.10 as default
RUN add-apt-repository -y ppa:deadsnakes/ppa

RUN apt-get -qq update && \
    apt-get install -qqy --no-install-recommends \
    python3.8 lib32z1 lighttpd xvfb libncurses5:i386 libstdc++6:i386 zlib1g:i386 ccache

RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
RUN update-alternatives  --set python3 /usr/bin/python3.8

# Install chromium build dependencies
RUN curl -s https://raw.githubusercontent.com/chromium/chromium/main/build/install-build-deps.py \
    | python3 - --no-syms --lib32 --no-arm --no-chromeos-fonts --no-nacl --no-prompt

RUN apt-get -f install

# Setup locale
RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.UTF-8

RUN git config --global user.name "John Doe"
RUN git config --global user.email "johndoe@example.com"

RUN mkdir ${CHROMIUM_DIR}

WORKDIR ${CHROMIUM_DIR}

ENTRYPOINT /bin/bash

build.sh

0 → 100755
+192 −0
Original line number Diff line number Diff line
#!/bin/bash

set -e

chromium_dir="${chromium_dir:-/srv/chromium}"
root_dir=$(dirname "$(readlink -f "$0")")
if [ ! -d "$chromium_dir" ]; then
    chromium_dir=$root_dir
fi
date_time=$(date '+%Y%m%d%H%M%S')
chromium_version=$(head -n 1 "${root_dir}/build/RELEASE")
chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-)
clean=0
gsync=0
history=1
arch=""

usage() {
    echo "Usage:"
    echo "  $(basename $(readlink -nf $0)) [ options ]"
    echo
    echo "  Options:"
    echo "    -a <arch> Build specified arch"
    echo "    -c Clean"
    echo "    -h Show this message"
    echo "    -s Sync without history"
    echo
    exit 1
}

build() {
    echo ">> [$(date)] Head commit: $(git show -s --format=%s)"
    apks="ChromePublic"
    build_args="$(cat "${root_dir}"/build/bromite.gn_args) target_cpu=\"${1}\" "
    add_args=(
        "generate_linker_map=true"
        "use_relative_vtables_abi=false"
        "cc_wrapper=\"ccache\""
    )

    # Add to build_args
    for var in "${add_args[@]}"; do
        build_args+=" $var"
    done

    code=$chromium_code
    if [ $1 '==' "arm" ]; then
        code+=00
    elif [ $1 '==' "arm64" ]; then
        code+=50
    elif [ $1 '==' "x86" ]; then
        code+=10
    elif [ $1 '==' "x64" ]; then
        code+=60
    fi
    build_args+=' android_default_version_name="'$chromium_version'"'
    build_args+=' android_default_version_code="'$code'"'

    if [ $clean -eq 1 ] && [ -d "out/$1" ]; then
        rm -rf "out/$1"
    fi

    echo ">> [$(date)] Building chromium $chromium_version for $1"
    gn gen "out/$1" --args="$build_args"
    ninja -C out/$1 chrome_public_apk

    for apk in $apks; do
        if [ -f "out/${1}/apks/$apk.apk" ]; then
            echo ">> [$(date)] Moving $apk for ${1} to output folder"
            if [[ "$apk.apk" == ChromePublic.apk ]]; then
                if [ "$1" = "x64" ]; then
                    mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/x86_64/ChromePublic.apk"
                else
                    mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/${1}/ChromePublic.apk"
                fi
            fi
        fi
    done
}

setup_ccache() {
    echo ">> [$(date)] Settings up ccache"
    export USE_CCACHE=1
    export CCACHE_EXEC=$(command -v ccache)
    export PATH=$chromium_dir/src/third_party/llvm-build/Release+Asserts/bin:$PATH
    export CCACHE_CPP2=yes
    export CCACHE_SLOPPINESS=time_macros
    export CCACHE_DIR=$chromium_dir/.ccache
    ccache -M 200G
}

patch() {
    cd $chromium_dir/src
    echo ">> [$(date)] Applying bromite patches"

    patches_list=$(cat "${root_dir}/build/bromite_patches_list.txt")
    for file in $patches_list; do
        git am -3 --ignore-whitespace "${root_dir}/build/patches/$file"
    done
}

sync() {
    echo ">> [$(date)] Syncing chromium $chromium_version"
    cd $chromium_dir
    if [ $history -eq 1 ]; then
        yes | gclient sync -D -R -r $chromium_version
    else
        yes | gclient sync --no-history -D -R -r $chromium_version
    fi
    patch
}

init_repo(){
    echo ">> [$(date)] Init chromium $chromium_version"
    cd $chromium_dir
    rm -rf .gclient*
    if [ $history -eq 1 ]; then
        fetch android
    else
        fetch --no-history android
    fi
}

while getopts ":a:chr:s" opt; do
    case $opt in
    a) arch="$OPTARG" ;;
    c) clean=1 ;;
    h) usage ;;
    s) gsync=1 && history=0 ;;
    :)
        echo "Option -$OPTARG requires an argument"
        echo
        usage
        ;;
    \?)
        echo "Invalid option:-$OPTARG"
        echo
        usage
        ;;
    esac
done
shift $((OPTIND - 1))

# Add depot_tools to PATH
if [ ! -d "$chromium_dir/depot_tools" ]; then
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git "$chromium_dir/depot_tools"
fi
export PATH="$chromium_dir/depot_tools:$PATH"

if [ $clean -eq 1 ]; then
    echo ">> [$(date)] Cleaning chromium source code"
    if [ -d "$chromium_dir/src" ]; then
        cd $chromium_dir/src
        git reset --hard && git clean -xfdf
    fi
fi

if [ ! -d "$chromium_dir/src" ]; then
    init_repo
    sync
fi

if [ $gsync -eq 1 ]; then
    if [ -d "$chromium_dir/src/.git/rebase-apply" ]; then
        rm -fr "$chromium_dir/src/.git/rebase-apply"
    fi
    find "$chromium_dir/src/.git" -name "*.lock" -delete
    if [ ! -z $(find $chromium_dir/src/.git -name "*.lock") ]; then
        rm -fr $chromium_dir/src
        init_repo
    fi
    sync
fi

mkdir -p "${root_dir}/apks/$date_time/x86_64" "${root_dir}/apks/$date_time/arm64" "${root_dir}/apks/$date_time/x86" "${root_dir}/apks/$date_time/arm"

cd $chromium_dir/src
. build/android/envsetup.sh
setup_ccache

if [ ! -z "$arch" ]; then
    build $arch
else
    build arm
    build arm64
    build x86
    build x64
fi

if [ -d "${root_dir}/apks" ]; then
    find "${root_dir}/apks" -empty -type d -delete
fi

packages.txt

0 → 100644
+785 −0
Original line number Diff line number Diff line
adwaita-icon-theme
apache2
apache2-bin
apache2-data
apache2-utils
at
at-spi2-core
autoconf
automake
autopoint
autotools-dev
binutils-aarch64-linux-gnu
binutils-arm-linux-gnueabihf
binutils-mips64el-linux-gnuabi64
binutils-mipsel-linux-gnu
bison
bsdmainutils
build-essential
bzip2-doc
cdbs
comerr-dev
curl
dbus
dbus-x11
dconf-gsettings-backend
dconf-service
dctrl-tools
debhelper
debugedit
devscripts
dh-autoreconf
dh-strip-nondeterminism
dh-translations
diffstat
dirmngr
dpkg-dev
dput
elfutils
fakeroot
flex
fontconfig
fontconfig-config
fonts-dejavu-core
fonts-lato
gdal-data
gettext
gettext-base
giblib1
gir1.2-appindicator3-0.1
gir1.2-atk-1.0
gir1.2-atspi-2.0
gir1.2-dbusmenu-glib-0.4
gir1.2-freedesktop
gir1.2-gdkpixbuf-2.0
gir1.2-glib-2.0
gir1.2-gnomekeyring-1.0
gir1.2-gtk-3.0
gir1.2-harfbuzz-0.0
gir1.2-pango-1.0
git
git-svn
glib-networking
glib-networking-common
glib-networking-services
gnome-icon-theme
gnupg
gnupg-l10n
gnupg-utils
gperf
gpg
gpg-agent
gpg-wks-client
gpg-wks-server
gpgconf
gpgsm
groff-base
gsettings-desktop-schemas
gtk-update-icon-cache
hicolor-icon-theme
humanity-icon-theme
i965-va-driver
ibverbs-providers
icu-devtools
intltool
intltool-debian
iso-codes
javascript-common
jq
krb5-multidev
libaacs0
libaec0
libalgorithm-diff-perl
libalgorithm-diff-xs-perl
libalgorithm-merge-perl
libapache2-mod-php7.2
libapparmor1
libappindicator3-1
libappindicator3-dev
libapr1
libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap
libapt-inst2.0
libapt-pkg-perl
libarchive-cpio-perl
libarchive-zip-perl
libarchive13
libargon2-0
libarmadillo8
libarpack2
libasm1
libasound2
libasound2-data
libasound2-dev
libassuan0
libasyncns0
libatk-bridge2.0-0
libatk-bridge2.0-dev
libatk1.0-0
libatk1.0-data
libatk1.0-dev
libatspi2.0-0
libatspi2.0-dev
libauthen-sasl-perl
libavahi-client3
libavahi-common-data
libavahi-common3
libavcodec57
libavformat57
libavutil55
libb-hooks-endofscope-perl
libb-hooks-op-check-perl
libbdplus0
libbison-dev
libblas3
libbluetooth-dev
libbluetooth3
libbluray2
libbrlapi-dev
libbrlapi0.6
libbz2-dev
libcairo-gobject2
libcairo-script-interpreter2
libcairo2
libcairo2-dev
libcap-dev
libcap2
libcgi-fast-perl
libcgi-pm-perl
libcharls1
libchromaprint1
libclass-accessor-perl
libclass-method-modifiers-perl
libclass-xsaccessor-perl
libclone-perl
libcolord2
libcroco3
libcrystalhd3
libcups2
libcups2-dev
libcupsfilters-dev
libcupsfilters1
libcupsimage2
libcupsimage2-dev
libcurl4-gnutls-dev
libdap25
libdapclient6v5
libdata-dump-perl
libdata-optlist-perl
libdatrie1
libdbus-1-3
libdbus-1-dev
libdbus-glib-1-2
libdbus-glib-1-dev
libdbusmenu-glib-dev
libdbusmenu-glib4
libdbusmenu-gtk3-4
libdc1394-22
libdconf1
libdevel-callchecker-perl
libdevel-globaldestruction-perl
libdigest-hmac-perl
libdistro-info-perl
libdpkg-perl
libdrm-amdgpu1
libdrm-common
libdrm-dev
libdrm-intel1
libdrm-nouveau2
libdrm-radeon1
libdrm2
libdw1
libdynaloader-functions-perl
libegl-mesa0
libegl1
libegl1-mesa-dev
libelf-dev
libelf1
libemail-valid-perl
libencode-locale-perl
libepoxy-dev
libepoxy0
libepsilon1
libexif12
libexpat1-dev
libexporter-tiny-perl
libfabric1
libfakeroot
libfcgi-perl
libffi-dev
libfile-basedir-perl
libfile-chdir-perl
libfile-fcntllock-perl
libfile-homedir-perl
libfile-listing-perl
libfile-stripnondeterminism-perl
libfile-which-perl
libfl-dev
libfl2
libflac8
libfm-extra4
libfont-afm-perl
libfontconfig1
libfontconfig1-dev
libfontenc1
libfreetype6
libfreetype6-dev
libfreexl1
libfyba0
libgail-common
libgail18
libgbm-dev
libgbm1
libgd3
libgdal20
libgdcm2.8
libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev
libgeos-3.6.2
libgeos-c1v5
libgeotiff2
libgetopt-long-descriptive-perl
libgfortran4
libgif7
libgirepository-1.0-1
libgit-wrapper-perl
libgl1
libgl1-mesa-dev
libgl1-mesa-dri
libgl2ps1.4
libglapi-mesa
libgles1
libgles2
libglib2.0-0
libglib2.0-bin
libglib2.0-data
libglib2.0-dev
libglib2.0-dev-bin
libglu1-mesa
libglu1-mesa-dev
libglvnd-core-dev
libglvnd-dev
libglvnd0
libglx-mesa0
libglx0
libgme0
libgnome-keyring-common
libgnome-keyring-dev
libgnome-keyring0
libgpgme11
libgphoto2-6
libgphoto2-l10n
libgphoto2-port12
libgraphite2-3
libgraphite2-dev
libgsm1
libgssrpc4
libgtk-3-0
libgtk-3-bin
libgtk-3-common
libgtk-3-dev
libgtk2.0-0
libgtk2.0-bin
libgtk2.0-common
libharfbuzz-dev
libharfbuzz-gobject0
libharfbuzz-icu0
libharfbuzz0b
libhdf4-0-alt
libhdf5-100
libhdf5-openmpi-100
libhtml-form-perl
libhtml-format-perl
libhtml-parser-perl
libhtml-tagset-perl
libhtml-tree-perl
libhttp-cookies-perl
libhttp-daemon-perl
libhttp-date-perl
libhttp-message-perl
libhttp-negotiate-perl
libhwloc-plugins
libhwloc5
libibverbs1
libice-dev
libice6
libicu-dev
libicu-le-hb-dev
libicu-le-hb0
libicu60
libiculx60
libid3tag0
libilmbase12
libimlib2
libimport-into-perl
libindicator3-7
libio-html-perl
libio-pty-perl
libio-socket-inet6-perl
libio-socket-ssl-perl
libio-string-perl
libio-stringy-perl
libipc-run-perl
libipc-system-simple-perl
libjbig-dev
libjbig0
libjpeg-dev
libjpeg-turbo8
libjpeg-turbo8-dev
libjpeg8
libjpeg8-dev
libjq1
libjs-jquery
libjs-sphinxdoc
libjs-underscore
libjson-c3
libjson-glib-1.0-0
libjson-glib-1.0-common
libjsoncpp1
libkadm5clnt-mit11
libkadm5srv-mit11
libkdb5-9
libkmlbase1
libkmldom1
libkmlengine1
libkrb5-dev
libksba8
liblapack3
liblcms2-2
liblept5
liblist-compare-perl
liblist-moreutils-perl
libllvm7
liblocale-gettext-perl
libltdl-dev
libltdl7
liblua5.2-0
liblwp-mediatypes-perl
liblwp-protocol-https-perl
liblzma-dev
liblzo2-2
libmail-sendmail-perl
libmailtools-perl
libmenu-cache-bin
libmenu-cache3
libminizip1
libmodule-implementation-perl
libmodule-runtime-perl
libmoo-perl
libmp3lame0
libmpg123-0
libmysqlclient20
libnamespace-clean-perl
libnet-dns-perl
libnet-domain-tld-perl
libnet-http-perl
libnet-ip-perl
libnet-smtp-ssl-perl
libnet-ssleay-perl
libnetcdf-c++4
libnetcdf13
libnl-3-200
libnl-route-3-200
libnpth0
libnspr4
libnspr4-dev
libnss3
libnss3-dev
libnuma1
libnumber-compare-perl
libnumber-range-perl
libobrender32v5
libobt2v5
libodbc1
libogdi3.2
libogg0
libonig4
libopencv-calib3d3.2
libopencv-contrib3.2
libopencv-core3.2
libopencv-features2d3.2
libopencv-flann3.2
libopencv-highgui3.2
libopencv-imgcodecs3.2
libopencv-imgproc3.2
libopencv-ml3.2
libopencv-objdetect3.2
libopencv-photo3.2
libopencv-shape3.2
libopencv-stitching3.2
libopencv-superres3.2
libopencv-video3.2
libopencv-videoio3.2
libopencv-videostab3.2
libopencv-viz3.2
libopenexr22
libopengl0
libopenjp2-7
libopenmpi2
libopenmpt0
libopus0
libpackage-stash-perl
libpackage-stash-xs-perl
libpam0g-dev
libpango-1.0-0
libpango1.0-0
libpango1.0-dev
libpangocairo-1.0-0
libpangoft2-1.0-0
libpangox-1.0-0
libpangoxft-1.0-0
libparams-classify-perl
libparams-util-perl
libparams-validate-perl
libparse-debianchangelog-perl
libpath-iterator-rule-perl
libpath-tiny-perl
libpci-dev
libpci3
libpciaccess0
libpcre16-3
libpcre3-dev
libpcre32-3
libpcrecpp0v5
libperlio-gzip-perl
libpipeline1
libpixman-1-0
libpixman-1-dev
libpng-dev
libpng-tools
libpng16-16
libpod-constants-perl
libpoppler73
libpopt0
libpq5
libproj12
libproxy1v5
libpsm-infinipath1
libpthread-stubs0-dev
libpulse-dev
libpulse-mainloop-glib0
libpulse0
libpython-dev
libpython2.7
libpython2.7-dev
libqhull7
libraw1394-11
librdmacm1
libregexp-pattern-license-perl
librest-0.7-0
librole-tiny-perl
librpm8
librpmbuild8
librpmio8
librpmsign8
librsvg2-2
librsvg2-common
libruby2.5
libsctp-dev
libsctp1
libsensors4
libserf-1-1
libshine3
libsigsegv2
libsm-dev
libsm6
libsnappy1v5
libsndfile1
libsocket++1
libsocket6-perl
libsodium23
libsort-key-perl
libsort-versions-perl
libsoup-gnome2.4-1
libsoup2.4-1
libsoxr0
libspatialite7
libspeechd-dev
libspeechd2
libspeex1
libsqlite3-dev
libssh-gcrypt-4
libssl-dev
libssl-doc
libstartup-notification0
libstrictures-perl
libstring-copyright-perl
libstring-escape-perl
libsub-exporter-perl
libsub-exporter-progressive-perl
libsub-identify-perl
libsub-install-perl
libsub-name-perl
libsub-quote-perl
libsuperlu5
libsvn-perl
libsvn1
libswresample2
libswscale4
libsys-hostname-long-perl
libsz2
libtbb2
libtcl8.6
libterm-readkey-perl
libtesseract4
libtext-glob-perl
libtext-levenshtein-perl
libthai-data
libthai0
libtheora0
libtiff-dev
libtiff5
libtiff5-dev
libtiffxx5
libtimedate-perl
libtk8.6
libtool
libtry-tiny-perl
libtwolame0
libudev-dev
libunicode-utf8-perl
libunwind8
liburi-perl
liburiparser1
libusb-1.0-0
libva-drm2
libva-x11-2
libva2
libvariable-magic-perl
libvdpau1
libvorbis0a
libvorbisenc2
libvorbisfile3
libvpx5
libvtk6.3
libwavpack1
libwayland-bin
libwayland-client0
libwayland-cursor0
libwayland-dev
libwayland-egl1
libwayland-egl1-mesa
libwayland-server0
libwebp6
libwebpmux3
libwrap0
libwww-perl
libwww-robotrules-perl
libx11-dev
libx11-doc
libx11-xcb-dev
libx11-xcb1
libx264-152
libx265-146
libxau-dev
libxaw7
libxcb-dri2-0
libxcb-dri2-0-dev
libxcb-dri3-0
libxcb-dri3-dev
libxcb-glx0
libxcb-glx0-dev
libxcb-present-dev
libxcb-present0
libxcb-randr0
libxcb-randr0-dev
libxcb-render0
libxcb-render0-dev
libxcb-shape0
libxcb-shape0-dev
libxcb-shm0
libxcb-shm0-dev
libxcb-sync-dev
libxcb-sync1
libxcb-util1
libxcb-xfixes0
libxcb-xfixes0-dev
libxcb1-dev
libxcomposite-dev
libxcomposite1
libxcursor-dev
libxcursor1
libxdamage-dev
libxdamage1
libxdmcp-dev
libxerces-c3.2
libxext-dev
libxfixes-dev
libxfixes3
libxft-dev
libxft2
libxi-dev
libxi6
libxinerama-dev
libxinerama1
libxkbcommon-dev
libxkbcommon0
libxml-libxml-perl
libxml-namespacesupport-perl
libxml-parser-perl
libxml-sax-base-perl
libxml-sax-expat-perl
libxml-sax-perl
libxml-simple-perl
libxml2
libxml2-dev
libxmu6
libxpm4
libxrandr-dev
libxrandr2
libxrender-dev
libxrender1
libxshmfence-dev
libxshmfence1
libxslt1-dev
libxslt1.1
libxss-dev
libxss1
libxt-dev
libxt6
libxtst-dev
libxtst6
libxv1
libxvidcore4
libxxf86dga1
libxxf86vm-dev
libxxf86vm1
libyaml-0-2
libyaml-libyaml-perl
libyaml-perl
libzvbi-common
libzvbi0
licensecheck
lintian
lsb-release
locales
lxmenu-data
g++-multilib
gcc-multilib
m4
make
man-db
mesa-common-dev
mesa-va-drivers
mesa-vdpau-drivers
mysql-common
obconf
obsession
ocl-icd-libopencl1
odbcinst
odbcinst1debian2
openbox
openbox-menu
openmpi-bin
openmpi-common
p7zip
patchutils
perl-openssl-defaults
php-common
php7.2-cgi
php7.2-cli
php7.2-common
php7.2-json
php7.2-opcache
php7.2-readline
pinentry-curses
pkg-config
po-debconf
poppler-data
proj-bin
proj-data
psmisc
python
python-apt-common
python-asn1crypto
python-cffi-backend
python-cherrypy3
python-crypto
python-cryptography
python-dev
python-enum34
python-idna
python-ipaddress
python-numpy
python-opencv
python-openssl
python-pkg-resources
python-psutil
python-repoze.lru
python-routes
python-simplejson
python-six
python-webob
python-yaml
python2.7-dev
python3-apt
python3-certifi
python3-chardet
python3-debian
python3-distutils
python3-gpg
python3-idna
python3-lib2to3
python3-magic
python3-pkg-resources
python3-requests
python3-scour
python3-six
python3-unidiff
python3-urllib3
python3-xdg
rake
rpm
rpm-common
rpm2cpio
ruby
ruby-did-you-mean
ruby-minitest
ruby-net-telnet
ruby-power-assert
ruby-test-unit
ruby2.5
rubygems-integration
scour
scrot
shared-mime-info
software-properties-common
ssl-cert
strace
sudo
subversion
t1utils
tzdata
ubuntu-mono
ucf
unzip
uuid-dev
va-driver-all
vdpau-driver-all
wayland-protocols
wdiff
wget
x11-common
x11-utils
x11proto-composite-dev
x11proto-core-dev
x11proto-damage-dev
x11proto-dev
x11proto-fixes-dev
x11proto-input-dev
x11proto-randr-dev
x11proto-record-dev
x11proto-scrnsaver-dev
x11proto-xext-dev
x11proto-xf86vidmode-dev
x11proto-xinerama-dev
xcompmgr
xdg-user-dirs
xkb-data
xorg-sgml-doctools
xtrans-dev
zip
zlib1g-dev