From 5f2c58724e33ee71ffe3792c5d948801bef0adb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sachse?= <Joerg.Sachse@slub-dresden.de> Date: Thu, 8 Aug 2019 13:11:41 +0200 Subject: [PATCH] added Container creation routine to compile checkit_tiff for CentOS/RHEL 7 --- deploy_checkit_tiff/centos7/Dockerfile | 128 +++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 deploy_checkit_tiff/centos7/Dockerfile diff --git a/deploy_checkit_tiff/centos7/Dockerfile b/deploy_checkit_tiff/centos7/Dockerfile new file mode 100644 index 0000000..689827b --- /dev/null +++ b/deploy_checkit_tiff/centos7/Dockerfile @@ -0,0 +1,128 @@ +FROM centos:7.6.1810 +# FROM centos:6.9 +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.2 +ENV checkit_tiff_upcoming_version=v0.5.2 +# 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" + + + +# based on https://hub.docker.com/r/rpmbuild/centos6/ +## install base environment +RUN yum install -y \ + git \ + libtool libtool-ltdl \ + make cmake \ + 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 +RUN yum install -y devtoolset-8-gcc-c++ devtoolset-8-libstdc++-devel devtoolset-8-toolchain +#RUN yum install -y devtoolset-2 +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 cmake -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 + +# 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 cmake -DCMAKE_INSTALL_PREFIX=/tmp/checkit_tiff_development/ \ + -DBUILD_BRANCH=${checkit_tiff_upcoming_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/ +RUN tar cfz checkit_tiff_upcoming.tgz checkit_tiff_development/ + -- GitLab