summaryrefslogtreecommitdiffstats
path: root/bin/reproducible_build_rpm.sh
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2015-12-16 17:10:40 +0100
committerHolger Levsen <holger@layer-acht.org>2015-12-16 17:10:40 +0100
commit81cff721a4efc353e5d74066b0b1e33d5c3dc6dc (patch)
tree8d1a41e3a189843317be98b50c40b8105c7d1260 /bin/reproducible_build_rpm.sh
parentc33e7e79e5cc52f272053f709f009d7d99c270e0 (diff)
downloadjenkins.debian.net-81cff721a4efc353e5d74066b0b1e33d5c3dc6dc.tar.xz
reproducible rpms: refactor
Diffstat (limited to 'bin/reproducible_build_rpm.sh')
-rwxr-xr-xbin/reproducible_build_rpm.sh9
1 files changed, 6 insertions, 3 deletions
diff --git a/bin/reproducible_build_rpm.sh b/bin/reproducible_build_rpm.sh
index bc06f605..b754fb71 100755
--- a/bin/reproducible_build_rpm.sh
+++ b/bin/reproducible_build_rpm.sh
@@ -38,6 +38,7 @@ handle_remote_error() {
update_mock() {
echo "$(date -u ) - checking whether to update mock and yum for $RELEASE ($ARCH) on $HOSTNAME."
local STAMP="${RPM_STAMPS}-$RELEASE-$ARCH"
+ touch -d "$(date -u -d "6 hours ago" '+%Y-%m-%d %H:%M') UTC" $DUMMY
if [ ! -f $STAMP ] || [ $DUMMY -nt $STAMP ] ; then
echo "$(date -u ) - updating mock for $RELEASE ($ARCH) on $HOSTNAME now..."
mock -r $RELEASE-$ARCH --resultdir=. --cleanup-after -v --update 2>&1
@@ -48,6 +49,7 @@ update_mock() {
else
echo "$(date -u ) - mock and yum not updated, last update was at $(TZ=UTC ls --full-time $STAMP | cut -d ' ' -f6-7 | cut -d '.' -f1) UTC."
fi
+ rm $DUMMY > /dev/null
}
download_package() {
@@ -58,12 +60,13 @@ download_package() {
choose_package() {
echo "$(date -u ) - choosing package to be build."
- local MIN_AGE=6
+ local MIN_AGE=7
+ touch -d "$(date -u -d "$MIN_AGE days ago" '+%Y-%m-%d %H:%M') UTC" $DUMMY
# instead of hardcoding the list of packages we can also use something like this to get a list of all packages:
# yumdownloader --urls --source --releasever=23 '*'
for PKG in $(echo audit-libs basesystem bash binutils bzip2 bzip2-libs ca-certificates chkconfig coreutils cpio cpp cracklib cracklib-dicts crypto-policies curl cyrus-sasl-lib diffutils dwz elfutils elfutils-default-yama-scope elfutils-libelf elfutils-libs emacs-filesystem expat fedora-release fedora-repos file file-libs filesystem findutils gawk gc gcc gcc-c++ gdb gdbm ghc-srpm-macros glib2 glibc glibc-common glibc-devel glibc-headers gmp gnat-srpm-macros gnupg2 gnutls go-srpm-macros grep groff-base guile gzip info isl kernel-headers keyutils-libs krb5-libs libacl libarchive libassuan libatomic_ops libattr libbabeltrace libblkid libcap libcap-ng libcom_err libcurl libdb libdb-utils libfdisk libffi libgcc libgcrypt libgomp libgpg-error libidn libipt libksba libmetalink libmount libmpc libnghttp2 libpwquality libseccomp libsecret libselinux libsemanage libsepol libsmartcols libssh2 libstdc++ libstdc++-devel libtasn1 libtool-ltdl libunistring libuser libutempter libuuid libverto libxml2 lua lzo make mpfr ncurses ncurses-base ncurses-libs nettle npth nspr nss nss-softokn nss-softokn-freebl nss-sysinit nss-tools nss-util ocaml-srpm-macros openldap openssl-libs p11-kit p11-kit-trust pam patch pcre perl perl-Carp perl-constant perl-Encode perl-Exporter perl-File-Path perl-File-Temp perl-generators perl-Getopt-Long perl-HTTP-Tiny perl-libs perl-macros perl-MIME-Base64 perl-parent perl-PathTools perl-Pod-Escapes perl-podlators perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage perl-Scalar-List-Utils perl-Socket perl-srpm-macros perl-Storable perl-Term-ANSIColor perl-Term-Cap perl-Text-ParseWords perl-Text-Tabs+Wrap perl-threads perl-threads-shared perl-Time-HiRes perl-Time-Local perl-Unicode-Normalize pinentry pkgconfig popt python3 python3-libs python3-pip python3-setuptools readline redhat-rpm-config rpm rpm-build rpm-build-libs rpm-libs rpm-plugin-selinux sed setup shadow-utils shared-mime-info sqlite systemd-libs tar tzdata unzip ustr util-linux which xz xz-libs zip zlib | sed -s "s# #\n#g" | sort -R | xargs echo) ; do
# build package if it has never build or at least $MIN_AGE days ago
- if [ ! -d $BASE/rpms/$RELEASE/$ARCH/$PKG ] || [ ! -z $(find $BASE/rpms/$RELEASE/$ARCH/ -name $PKG -mtime +$MIN_AGE) ] ; then
+ if [ ! -d $BASE/rpms/$RELEASE/$ARCH/$PKG ] || [ $DUMMY -nt $BASE/rpms/$RELEASE/$ARCH/$PKG ] ; then
SRCPACKAGE=$PKG
echo "$(date -u ) - building package $PKG from '$RELEASE' on '$ARCH' now..."
# very simple locking…
@@ -74,6 +77,7 @@ choose_package() {
break
fi
done
+ rm $DUMMY > /dev/null
if [ -z $SRCPACKAGE ] ; then
echo "$(date -u ) - no package found to be build, sleeping 6h."
for i in $(seq 1 12) ; do
@@ -177,7 +181,6 @@ TIMEOUT=8 # maximum time in hours for a single build
DATE=$(date -u +'%Y-%m-%d %H:%M')
START=$(date +'%s')
DUMMY=$(mktemp -t rpm-dummy-XXXXXXXX)
-touch -d "$(date -u -d "6 hours ago" '+%Y-%m-%d %H:%M') UTC" $DUMMY
RPM_STAMPS=/srv/reproducible-results/.rpm_stamp
#