this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Build RPMs with the CI; enable `ccache` on CI

authored by

Ariel Abreu and committed by
Thomas A
be134fcb f1153d9b

+121 -33
+5 -1
ci/Dockerfile ci/Debian.Dockerfile
··· 1 1 # this Dockerfile must be built using the following command: 2 - # docker build -f ../ci/Dockerfile . 2 + # docker build -f ../ci/Debian.Dockerfile . 3 3 # this command must be run while in the `debian` directory in the root of the repo. 4 4 FROM ubuntu:jammy 5 5 LABEL name=darling-build-image version=0.1.0 ··· 14 14 COPY control /control 15 15 RUN mk-build-deps -i -r -t "apt-get --no-install-recommends -y" /control && apt clean -y 16 16 RUN rm /control 17 + RUN apt-get -y install ccache && apt clean -y 18 + RUN mkdir -p /ccache 19 + RUN mkdir -p /src/mnt 20 + RUN chown -R ci:ci /src 17 21 USER ci
+70 -12
ci/Jenkinsfile
··· 1 1 pipeline { 2 2 agent { 3 3 docker { 4 - image 'registry.git.facekapow.dev/darling-build-image:latest' 4 + image 'registry.git.facekapow.dev/darling-build-image-top:latest' 5 5 registryUrl 'https://registry.git.facekapow.dev' 6 6 alwaysPull true 7 - args '-u ci:ci' 7 + args '-u ci:ci -v /var/run/docker.sock:/var/run/docker.sock --group-add docker' 8 8 label 'darling' 9 9 } 10 10 } 11 11 12 + parameters { 13 + booleanParam(name: 'DEB', defaultValue: true, description: 'If true, build Debian packages.') 14 + booleanParam(name: 'RPM', defaultValue: false, description: 'If true, build RPM packages.') 15 + } 16 + 12 17 triggers { 13 18 githubPush() 14 19 } 15 20 16 21 environment { 17 - DEB_DISTRO = sh(script: 'lsb_release -cs', returnStdout: true).trim() 18 22 ESCAPED_JOB_NAME = sh(script: 'echo "${JOB_NAME}" | sed \'s/\\//-/g\'', returnStdout: true).trim() 23 + CCACHE_DIR = credentials('darling-ccache-dir') 19 24 } 20 25 21 26 options { ··· 34 39 } 35 40 } 36 41 37 - stage('Build') { 42 + stage('Prepare') { 38 43 steps { 39 44 dir('source') { 40 45 sh 'git submodule update --init --recursive' 41 46 sh 'cd src/external/swift && git lfs install && git lfs pull' 42 47 touch '../.submodules-cloned' 48 + } 49 + } 50 + } 43 51 44 - //sh 'tools/debian/make-deb --dsc' 45 - sh 'tools/debian/make-deb' 52 + stage('Build Debian') { 53 + when { expression { params.DEB } } 54 + agent { 55 + docker { 56 + image 'registry.git.facekapow.dev/darling-build-image:latest' 57 + registryUrl 'https://registry.git.facekapow.dev' 58 + alwaysPull true 59 + args '-u ci:ci -v ${WORKSPACE}/source:/src/mnt:rw -v ${CCACHE_DIR}:/ccache:rw' 60 + label 'darling' 61 + reuseNode true 46 62 } 63 + } 64 + environment { 65 + DEB_DISTRO = sh(script: 'lsb_release -cs', returnStdout: true).trim() 66 + CCACHE_DIR = '/ccache' 67 + CCACHE_BASEDIR = '/src/mnt' 68 + } 69 + steps { 70 + //sh 'tools/debian/make-deb --dsc' 71 + sh '''#!/bin/bash 72 + pushd /src/mnt 73 + tools/debian/make-deb 74 + popd 75 + ''' 47 76 48 - sh 'rm -rf out' 49 - sh 'mkdir out' 77 + sh 'rm -rf out-deb' 78 + sh 'mkdir out-deb' 79 + 80 + dir('out-deb') { 81 + sh 'mv /src/*.deb ./' 82 + } 83 + 84 + archiveArtifacts artifacts: 'out-deb/**/*', fingerprint: true 85 + } 86 + } 87 + 88 + stage('Build RPM') { 89 + when { expression { params.RPM } } 90 + agent { 91 + docker { 92 + image 'registry.git.facekapow.dev/darling-build-image-fedora:latest' 93 + registryUrl 'https://registry.git.facekapow.dev' 94 + alwaysPull true 95 + args '-v ${WORKSPACE}/source:/src:ro -v ${CCACHE_DIR}:/ccache:rw' 96 + label 'darling' 97 + reuseNode true 98 + } 99 + } 100 + environment { 101 + CCACHE_DIR = '/ccache' 102 + CCACHE_BASEDIR = '/home/ci/rpmbuild/BUILD/darling' 103 + } 104 + steps { 105 + sh 'bash -xv /src/rpm/build.bsh' 50 106 51 - dir('out') { 52 - sh 'mv ../*.deb ./' 53 - sh 'rm ../*.*' 107 + sh 'rm -rf out-rpm' 108 + sh 'mkdir out-rpm' 109 + 110 + dir('out-rpm') { 111 + sh 'mv ${HOME}/rpmbuild/RPMS/x86_64/*.rpm ./' 54 112 } 55 113 56 - archiveArtifacts artifacts: 'out/**/*', fingerprint: true 114 + archiveArtifacts artifacts: 'out-rpm/**/*', fingerprint: true 57 115 } 58 116 } 59 117 }
+23
ci/RPM.Dockerfile
··· 1 + # this Dockerfile must be built using the following command: 2 + # docker build -f ../ci/RPM.Dockerfile . 3 + # this command must be run while in the `rpm` directory in the root of the repo. 4 + FROM fedora:37 5 + LABEL name=darling-build-image-fedora version=0.1.0 6 + RUN dnf install -y rpm-build dnf-utils rpmdevtools git; \ 7 + source /etc/os-release; \ 8 + dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-${VERSION_ID}.noarch.rpm; \ 9 + dnf clean all 10 + RUN groupadd -g 1001 ci 11 + RUN useradd -u 1001 -g 1001 -m ci 12 + COPY SPECS/darling.spec /darling.spec 13 + RUN yum-builddep -y /darling.spec; \ 14 + dnf clean all 15 + RUN rm /darling.spec 16 + RUN dnf install -y sudo; \ 17 + dnf clean all 18 + RUN echo 'ci ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 19 + RUN mkdir -p /src 20 + RUN dnf install -y ccache; \ 21 + dnf clean all 22 + RUN mkdir -p /ccache 23 + USER ci
+9
ci/top.Dockerfile
··· 1 + FROM alpine:latest 2 + LABEL name=darling-build-image-top version=0.1.0 3 + ARG DOCKER_GID=975 4 + RUN addgroup -g ${DOCKER_GID} -S docker 5 + RUN apk add docker git git-lfs sed 6 + RUN addgroup -g 1001 ci 7 + RUN adduser -u 1001 -G ci --disabled-password ci 8 + RUN addgroup ci docker 9 + USER ci
+6 -13
rpm/Dockerfile
··· 3 3 4 4 SHELL ["bash", "-euxvc"] 5 5 6 - RUN dnf install -y rpm-build dnf-utils rpmdevtools; \ 6 + RUN dnf install -y rpm-build dnf-utils rpmdevtools git; \ 7 7 source /etc/os-release; \ 8 8 dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-${VERSION_ID}.noarch.rpm; \ 9 9 dnf clean all 10 10 11 + COPY SPECS/darling.spec /darling.spec 12 + 11 13 # Bootstrap 12 - RUN dnf install -y bison cairo-devel clang cmake flex fontconfig-devel.x86_64 \ 13 - fontconfig-devel.i686 freetype-devel.x86_64 freetype-devel.i686 \ 14 - fuse-devel glibc-devel glibc-devel.i686 \ 15 - libglvnd-devel libjpeg-turbo-devel libjpeg-turbo-devel.i686 \ 16 - libtiff-devel libtiff-devel.i686 mesa-libGL-devel mesa-libEGL-devel \ 17 - python2 systemd-devel make libxml2-devel elfutils-libelf-devel \ 18 - libbsd-devel ffmpeg-devel pulseaudio-libs-devel openssl-devel \ 19 - giflib-devel libXrandr-devel libXcursor-devel libxkbfile-devel \ 20 - dbus-devel mesa-libGLU-devel vulkan-headers llvm-devel libcap-devel \ 21 - vulkan-loader-devel \ 22 - # git - so I can determine the describe of the last commit, not an rpm dependency 23 - git; \ 14 + RUN yum-builddep -y /darling.spec; \ 24 15 dnf clean all 16 + 17 + RUN rm /darling.spec 25 18 26 19 RUN mkdir -p /root/rpmbuild/SOURCES 27 20
+7 -6
rpm/build.bsh
··· 2 2 3 3 set -eu 4 4 5 - yum-builddep -y /src/rpm/SPECS/darling.spec 5 + mkdir -p $HOME/rpmbuild/SOURCES 6 + 6 7 if [ -e "/src/rpm/SOURCES/darling.tar.gz" ]; then 7 - ln -sf /src/rpm/SOURCES/darling.tar.gz /root/rpmbuild/SOURCES/ 8 + ln -sf /src/rpm/SOURCES/darling.tar.gz $HOME/rpmbuild/SOURCES/ 8 9 else 9 10 # Preparing tarball 10 - tar --transform "s|^\./|./darling/|" -cf /root/rpmbuild/SOURCES/darling.tar.gz -C /src --exclude=.git --exclude SOURCES --exclude SRPMS --exclude RPMS --exclude BUILD . 11 + tar --transform "s|^\./|./darling/|" -cf $HOME/rpmbuild/SOURCES/darling.tar.gz -C /src --exclude=.git --exclude SOURCES --exclude SRPMS --exclude RPMS --exclude BUILD . 11 12 fi 12 13 13 14 if [ -e "/src/rpm/SOURCES/darling-macho-deps.tar.gz" ]; then 14 - ln -sf /src/rpm/SOURCES/darling-macho-deps.tar.gz /root/rpmbuild/SOURCES/ 15 + ln -sf /src/rpm/SOURCES/darling-macho-deps.tar.gz $HOME/rpmbuild/SOURCES/ 15 16 else 16 - tar --transform "s|^\./|darling-macho-deps/|" -cf /root/rpmbuild/SOURCES/darling-macho-deps.tar.gz -C /src/tools/rpm . 17 + tar --transform "s|^\./|darling-macho-deps/|" -cf $HOME/rpmbuild/SOURCES/darling-macho-deps.tar.gz -C /src/tools/rpm . 17 18 fi 18 19 19 20 if (cd /src && git describe --tags HEAD); then ··· 25 26 fi 26 27 27 28 rpmbuild -ba /src/rpm/SPECS/darling-macho-deps.spec 28 - rpm -U --force /root/rpmbuild/RPMS/x86_64/darling-macho-deps*.rpm 29 + sudo rpm -U --force $HOME/rpmbuild/RPMS/x86_64/darling-macho-deps*.rpm 29 30 30 31 #spectool -g -R /src/rpm/SPECS/darling.spec 31 32 rpmbuild -ba /src/rpm/SPECS/darling.spec
+1 -1
tools/debian/make-deb
··· 17 17 ARG='-b' 18 18 fi 19 19 20 - debuild --no-lintian -us -uc ${ARG} 20 + debuild --preserve-envvar 'CCACHE_*' --no-lintian -us -uc ${ARG}