Skip to content
Snippets Groups Projects
Commit 37eac2c1 authored by Jens Steidl's avatar Jens Steidl :baby_chick:
Browse files

- cleanup: all Rosetta env use RedHat 7

parent 2e2d3e56
No related branches found
No related tags found
No related merge requests found
###############################################################################
# Building checkit_tiff 0.6.0 as a dynamically linked binary on RHEL 6 is not
# possible, because the cmake3 version even from EPEL is not sufficiently
# recent to build it. This is why we build a statically linked binary of
# checkit_tiff 0.6.0 on RHEL 7 that can then be run on RHEL 6.
#
# Use this Dockerfile as follows:
# docker build --tag checkit-tiff --rm=true --file Dockerfile ./
###############################################################################
FROM centos:centos7.8.2003
MAINTAINER Andreas Romeyke <romeyke@slub-dresden.de>
# current could be 0.3.1 or 0.4.0, because 0.4.0 is bugfixed version of
# checkit_tiff with rules compatible to 0.3.1 based on Handreichung TIFF v1.2
# in checkit_tiff 0.4.1 the rules are adapted to Handreichung TIFF v1.3
ENV checkit_tiff_current_version=v0.6.0
ENV checkit_tiff_upcoming_version=v0.6.0
# ENV checkit_tiff_gitrepository=https://github.com/SLUB-digitalpreservation/checkit_tiff.git
ENV checkit_tiff_gitrepository=http://art1pirat.spdns.org/art1/checkit_tiff.git
ENV pcre_version=8.41
ENV PATCH="\
--- a/src/CMakeLists.txt\n\
+++ b/src/CMakeLists.txt\n\
@@ -28,9 +28,6 @@\n\
# Make a version file containing the current version from git.\n\
#\n\
execute_process( COMMAND git rev-list HEAD --count OUTPUT_VARIABLE REPO_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE )\n\
-execute_process( COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE BUILD_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
-execute_process( COMMAND git rev-parse HEAD OUTPUT_VARIABLE BUILD_REV_ID OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
-execute_process( COMMAND git describe --long --tags --dirty --always OUTPUT_VARIABLE BUILD_REV_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
add_definitions(-DVERSION=\"\${BUILD_BRANCH}\")\n\
add_definitions(-DREPO_REVISION=\"\${REPO_REVISION}\")\n"
# THIS IS A BAD IDEA!!! ONLY SKIP CERTIFICATE VALIDATION IF THERE'S NO OTHER
# ALTERNATIVE!!!
ENV GIT_SSL_NO_VERIFY=true
#RUN yum install -y ca-certificates wget git
#RUN mkdir -p /usr/local/share/ca-certificates/cacert.org
#RUN wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
#RUN update-ca-trust
#RUN git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
# based on https://hub.docker.com/r/rpmbuild/centos6/
## install base environment
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y \
git \
libtool libtool-ltdl \
glibc-static \
make cmake3 \
pkgconfig \
sudo \
automake autoconf \
wget \
yum-utils rpm-build && \
yum clean all
#RUN wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
# git [devtools-2] (1.8.4) for "rev-list --count" feature, git [centos6] (1.7.1) too old
#RUN yum install -y devtoolset-2-git
#RUN ln -s /opt/rh/devtoolset-2/root/usr/bin/git /usr/bin/git
# Doku: https://wiki.centos.org/AdditionalResources/Repositories/SCL#head-9c6aea9c13b921d5258446c4c5e5886571bdb741
RUN yum --enablerepo=extras install -y centos-release-scl
RUN yum install -y \
devtoolset-8-gcc \
devtoolset-8-binutils \
devtoolset-8-gcc-c++ \
devtoolset-8-libstdc++-devel \
devtoolset-8-toolchain
RUN scl enable devtoolset-8 bash
## add user environment
RUN useradd builder -u 1000 -m -G users,wheel && \
echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
echo "# macros" > /home/builder/.rpmmacros && \
echo "%_topdir /home/builder/rpm" >> /home/builder/.rpmmacros && \
echo "%_sourcedir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_builddir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_specdir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_rpmdir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_srcrpmdir %{_topdir}" >> /home/builder/.rpmmacros && \
mkdir /home/builder/rpm && \
chown -R builder /home/builder
USER builder
RUN scl enable devtoolset-8 bash
ENV FLAVOR=rpmbuild OS=centos DIST=el7 CC=/opt/rh/devtoolset-8/root/usr/bin/gcc CXX=/opt/rh/devtoolset-8/root/usr/bin/g++
CMD /srv/pkg
WORKDIR /home/builder/
# get and compile libpcre (v8)
RUN wget -np https://ftp.pcre.org/pub/pcre/pcre-${pcre_version}.tar.bz2
RUN tar xfj pcre-${pcre_version}.tar.bz2
WORKDIR /home/builder/pcre-${pcre_version}/
RUN ./configure --disable-shared -enable-static && /usr/bin/make -j
USER root
RUN /usr/bin/make install
USER builder
WORKDIR /home/builder/
# get checkit_tiff
RUN git clone ${checkit_tiff_gitrepository}
RUN rm -Rf /home/builder/checkit_tiff/build_*
## compile checkit_tiff stable
#WORKDIR /home/builder/checkit_tiff
#RUN git checkout ${checkit_tiff_current_version}
#RUN git checkout -- src/CMakeLists.txt
## add patches to workaround outdated git
#RUN cat src/CMakeLists.txt | \
#sed -e "s/execute_process( COMMAND git rev-parse --abbrev-ref HEADOUTPUT_VARIABLE BUILD_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
# -e "s/execute_process( COMMAND git rev-parse HEAD OUTPUT_VARIABLE BUILD_REV_ID OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
# -e "s/\(add_definitions(-DVERSION=\"\)\([^\"]*\)/\1${checkit_tiff_current_version}/" \
# -e "s/execute_process( COMMAND git describe --long --tags --dirty --always OUTPUT_VARIABLE BUILD_REV_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)//g" > src/CMakeLists.txt.patched
#RUN mv src/CMakeLists.txt.patched src/CMakeLists.txt
#RUN cat -n src/CMakeLists.txt
#RUN mkdir build_stable
#WORKDIR /home/builder/checkit_tiff/build_stable
#RUN cmake3 -DCMAKE_INSTALL_PREFIX=/tmp/checkit_tiff_stable/ \
# -DBUILD_BRANCH=${checkit_tiff_current_version} \
# -DPCRE_LIBRARY=../../pcre-${pcre_version}/.libs/libpcre.a \
# -DSTATIC=1 -DCMAKE_C_FLAGS="-O3 -s -Wno-unused-function -fstack-check -fstack-protector-strong -Wformat -Werror=format-security" \
# -DPCRE_INCLUDE_DIR=../../pcre-${pcre_version}/ ../src
#RUN make && make install
##RUN make && make package
# compile checkit_tiff development
WORKDIR /home/builder/checkit_tiff
RUN git checkout -- src/CMakeLists.txt
RUN git checkout ${checkit_tiff_upcoming_version}
RUN git checkout -- src/CMakeLists.txt
# add patch to workaround outdated git
RUN cat src/CMakeLists.txt | \
sed -e "s/execute_process( COMMAND git rev-parse --abbrev-ref HEADOUTPUT_VARIABLE BUILD_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
-e "s/execute_process( COMMAND git rev-parse HEAD OUTPUT_VARIABLE BUILD_REV_ID OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
-e "s/\(add_definitions(-DVERSION=\"\)\([^\"]*\)/\1${checkit_tiff_upcoming_version}/" \
-e "s/execute_process( COMMAND git describe --long --tags --dirty --always OUTPUT_VARIABLE BUILD_REV_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)//g" > src/CMakeLists.txt.patched
RUN mv src/CMakeLists.txt.patched src/CMakeLists.txt
RUN cat -n src/CMakeLists.txt
RUN mkdir build_development
WORKDIR /home/builder/checkit_tiff/build_development
RUN cmake3 -DCMAKE_INSTALL_PREFIX=/tmp/checkit_tiff_development/ \
-DBUILD_BRANCH=${checkit_tiff_upcoming_version} \
-DPCRE_LIBRARY=../../pcre-${pcre_version}/.libs/libpcre.a \
-DSTATIC=1 -DCMAKE_C_FLAGS="-O3 -s -Wno-unused-function -fstack-check -fstack-protector-strong -Wformat -Werror=format-security" \
-DPCRE_INCLUDE_DIR=../../pcre-${pcre_version}/ ../src
RUN make && make install
#RUN make && make package
# create tar-balls
WORKDIR /tmp/
#RUN tar cfz checkit_tiff_current.tgz checkit_tiff_stable/
RUN tar cfz checkit_tiff_upcoming.tgz checkit_tiff_development/
###############################################################################
# This Dockerfile is deprecated and will no longer be used when checkit_tiff
# version 0.5.3 becomes outdated, because starting with version 0.6.0,
# checkit_tiff can be compiled into a statically linked binary that can run on
# RHEL 6 using newer RHEL versions.
#
# Building checkit_tiff 0.6.0 on RHEL 6 is not possible, because the cmake3
# version even from EPEL is not sufficiently recent to build it.
#
# Use this Dockerfile as follows:
# docker build --tag checkit-tiff --rm=true --file Dockerfile_dynlink ./
###############################################################################
FROM centos:6.10
MAINTAINER Andreas Romeyke <romeyke@slub-dresden.de>
# current could be 0.3.1 or 0.4.0, because 0.4.0 is bugfixed version of
# checkit_tiff with rules compatible to 0.3.1 based on Handreichung TIFF v1.2
# in checkit_tiff 0.4.1 the rules are adapted to Handreichung TIFF v1.3
ENV checkit_tiff_current_version=v0.5.3
# ENV checkit_tiff_gitrepository=https://github.com/SLUB-digitalpreservation/checkit_tiff.git
ENV checkit_tiff_gitrepository=http://art1pirat.spdns.org/art1/checkit_tiff.git
ENV pcre_version=8.41
ENV PATCH="\
--- a/src/CMakeLists.txt\n\
+++ b/src/CMakeLists.txt\n\
@@ -28,9 +28,6 @@\n\
# Make a version file containing the current version from git.\n\
#\n\
execute_process( COMMAND git rev-list HEAD --count OUTPUT_VARIABLE REPO_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE )\n\
-execute_process( COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE BUILD_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
-execute_process( COMMAND git rev-parse HEAD OUTPUT_VARIABLE BUILD_REV_ID OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
-execute_process( COMMAND git describe --long --tags --dirty --always OUTPUT_VARIABLE BUILD_REV_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
add_definitions(-DVERSION=\"\${BUILD_BRANCH}\")\n\
add_definitions(-DREPO_REVISION=\"\${REPO_REVISION}\")\n"
# THIS IS A BAD IDEA!!! ONLY SKIP CERTIFICATE VALIDATION IF THERE'S NO OTHER
# ALTERNATIVE!!!
ENV GIT_SSL_NO_VERIFY=true
#RUN yum install -y ca-certificates wget git
#RUN mkdir -p /usr/local/share/ca-certificates/cacert.org
#RUN wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
#RUN update-ca-trust
#RUN git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
# based on https://hub.docker.com/r/rpmbuild/centos6/
## install base environment
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
RUN yum install -v -y \
libtool \
libtool-ltdl \
make cmake3 \
pkgconfig \
sudo \
automake autoconf \
wget \
yum-utils rpm-build && \
yum clean all
RUN wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
# git [devtools-2] (1.8.4) for "rev-list --count" feature, git [centos6] (1.7.1) too old
RUN yum install -y devtoolset-2-git
RUN ln -s /opt/rh/devtoolset-2/root/usr/bin/git /usr/bin/git
RUN yum install -y \
devtoolset-2-gcc \
devtoolset-2-binutils \
devtoolset-2-gcc-c++ \
devtoolset-2-libstdc++-devel \
devtoolset-2-toolchain
RUN scl enable devtoolset-2 bash
## add user environment
RUN useradd builder -u 1000 -m -G users,wheel && \
echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
echo "# macros" > /home/builder/.rpmmacros && \
echo "%_topdir /home/builder/rpm" >> /home/builder/.rpmmacros && \
echo "%_sourcedir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_builddir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_specdir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_rpmdir %{_topdir}" >> /home/builder/.rpmmacros && \
echo "%_srcrpmdir %{_topdir}" >> /home/builder/.rpmmacros && \
mkdir /home/builder/rpm && \
chown -R builder /home/builder
USER builder
RUN scl enable devtoolset-2 bash
ENV FLAVOR=rpmbuild OS=centos DIST=el6 CC=/opt/rh/devtoolset-2/root/usr/bin/gcc CXX=/opt/rh/devtoolset-2/root/usr/bin/g++
CMD /srv/pkg
WORKDIR /home/builder/
# get and compile libpcre (v8)
RUN wget -np https://ftp.pcre.org/pub/pcre/pcre-${pcre_version}.tar.bz2
RUN tar xfj pcre-${pcre_version}.tar.bz2
WORKDIR /home/builder/pcre-${pcre_version}/
RUN ./configure --disable-shared -enable-static && /usr/bin/make -j
USER root
RUN /usr/bin/make install
USER builder
WORKDIR /home/builder/
# get checkit_tiff
RUN git clone ${checkit_tiff_gitrepository}
RUN rm -Rf /home/builder/checkit_tiff/build_*
# compile checkit_tiff stable
WORKDIR /home/builder/checkit_tiff
RUN git checkout ${checkit_tiff_current_version}
RUN git checkout -- src/CMakeLists.txt
# add patches to workaround outdated git
RUN cat src/CMakeLists.txt | \
sed -e "s/execute_process( COMMAND git rev-parse --abbrev-ref HEADOUTPUT_VARIABLE BUILD_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
-e "s/execute_process( COMMAND git rev-parse HEAD OUTPUT_VARIABLE BUILD_REV_ID OUTPUT_STRIP_TRAILING_WHITESPACE)//g" \
-e "s/\(add_definitions(-DVERSION=\"\)\([^\"]*\)/\1${checkit_tiff_current_version}/" \
-e "s/execute_process( COMMAND git describe --long --tags --dirty --always OUTPUT_VARIABLE BUILD_REV_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)//g" > src/CMakeLists.txt.patched
RUN mv src/CMakeLists.txt.patched src/CMakeLists.txt
RUN cat -n src/CMakeLists.txt
RUN mkdir build_stable
WORKDIR /home/builder/checkit_tiff/build_stable
RUN cmake3 -DCMAKE_INSTALL_PREFIX=/tmp/checkit_tiff_stable/ \
-DBUILD_BRANCH=${checkit_tiff_current_version} \
-DPCRE_LIBRARY=../../pcre-${pcre_version}/.libs/libpcre.a \
-DPCRE_INCLUDE_DIR=../../pcre-${pcre_version}/ ../src
RUN make && make install
# create tar-balls
WORKDIR /tmp/
RUN tar cfz checkit_tiff_current.tgz checkit_tiff_stable/
How to build checkit-tiff variants for Redhat 6 system used by Rosetta
======================================================================
:lang: en
:encoding: utf-8
:author: Andreas Romeyke
== Prerequisites
* you need 'docker'
* If using Debian buster or higher, you must(!) add "vsyscall=emulate" option
to the Linux kernel boot option, because CentOS 6.xx triggers syscalls in an
outdated way.
== How to build
# If something was built, delete all containers for specific image:
docker ps -a | awk '{ print $1,$2 }' | grep checkit-tiff | awk '{print $1 }' | xargs -I {} docker rm {}
# build stuff
docker build -t checkit-tiff --rm=true ./
== find out which image
docker images
lists:
REPOSITORY TAG IMAGE ID CREATED SIZE
checkit-tiff latest acc13d4a83d9 3 minutes ago 827 MB # <==== that's it!
<none> <none> e3be26e603f0 5 minutes ago 824 MB
centos 6.10 0cd976dc0a98 10 months ago 195 MB
== How to copy already built binaries
id=$(docker create checkit-tiff)
docker cp $id:/tmp/checkit_tiff_current.tgz ./
docker cp $id:/tmp/checkit_tiff_upcoming.tgz ./
docker rm -v $id
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment