From cfadf0cc0115eb7475e6f13efb8134a423a7a6ad Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 3 May 2020 08:17:40 +0200 Subject: Add Dockerfile and .deb build helpers --- Dockerfile | 23 +++++++++++++++++++++++ cpanfile | 17 +++++++++++++++++ scripts/makedeb-docker | 11 +++++++++++ scripts/makedeb-docker-helper | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 Dockerfile create mode 100644 cpanfile create mode 100755 scripts/makedeb-docker create mode 100755 scripts/makedeb-docker-helper diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0313f62 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM perl:5.30-slim + +COPY bin/ /app/bin/ +COPY lib/ /app/lib/ +COPY Build.PL cpanfile* /app/ + +WORKDIR /app + +ARG DEBIAN_FRONTEND=noninteractive +ARG APT_LISTCHANGES_FRONTEND=none + +RUN apt-get update \ + && apt-get -y --no-install-recommends install ca-certificates curl gcc libc6-dev libssl1.1 libssl-dev libxml2 libxml2-dev make zlib1g-dev \ + && cpanm -n --no-man-pages --installdeps . \ + && perl Build.PL \ + && perl Build \ + && rm -rf ~/.cpanm \ + && apt-get -y purge curl gcc libc6-dev libssl-dev libxml2-dev make zlib1g-dev \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /var/cache/apt/* /var/lib/apt/lists/* + +ENTRYPOINT ["perl", "-Ilib", "bin/hafas-m"] diff --git a/cpanfile b/cpanfile new file mode 100644 index 0000000..a03b77d --- /dev/null +++ b/cpanfile @@ -0,0 +1,17 @@ +requires 'Class::Accessor'; +requires 'DateTime'; +requires 'DateTime::Format::Strptime'; +requires 'Getopt::Long'; +requires 'JSON'; +requires 'List::MoreUtils'; +requires 'List::Util'; +requires 'LWP::UserAgent'; +requires 'LWP::Protocol::https'; +requires 'POSIX'; +requires 'XML::LibXML'; + +on test => sub { + requires 'Test::Compile'; + requires 'Test::More'; + requires 'Test::Pod'; +}; diff --git a/scripts/makedeb-docker b/scripts/makedeb-docker new file mode 100755 index 0000000..6c06971 --- /dev/null +++ b/scripts/makedeb-docker @@ -0,0 +1,11 @@ +#!/bin/sh + +mkdir -p out + +docker run --rm -v "${PWD}:/orig:ro" -v "${PWD}/scripts:/scripts:ro" \ + -v "${PWD}/out:/out" -e USER=$(id -u) -e GROUP=$(id -g) \ + -e "DEBEMAIL=${DEBEMAIL}" -e "DEBFULLNAME=${DEBFULLNAME}" \ + -e "LOGNAME=${LOGNAME}" -e "VERSION=$(git describe --dirty)-1" \ + debian:buster /scripts/makedeb-docker-helper + +echo "Debian package has been written to $(pwd)/out" diff --git a/scripts/makedeb-docker-helper b/scripts/makedeb-docker-helper new file mode 100755 index 0000000..970a9a0 --- /dev/null +++ b/scripts/makedeb-docker-helper @@ -0,0 +1,34 @@ +#!/bin/sh + +set -e + +export DEBIAN_FRONTEND=noninteractive +export APT_LISTCHANGES_FRONTEND=none + +apt-get update +apt-get -y install \ + apt-file dh-make-perl libmodule-build-perl \ + libclass-accessor-perl libdatetime-perl libdatetime-format-strptime-perl \ + liblwp-protocol-https-perl libjson-perl libjson-xs-perl \ + liblist-moreutils-perl \ + libwww-perl libxml-libxml-perl \ + libtest-compile-perl libtest-pod-perl \ + libtest-simple-perl + +apt-file update +apt-cache dumpavail | dpkg --merge-avail + +mkdir -p /src/app +cp -a /orig/Build.PL /orig/Changelog /orig/README /src/app +cp -a /orig/bin /orig/lib /orig/t /src/app +cd /src/app + +sed -i 's/sign *=> *1/sign => 0/' Build.PL +perl Build.PL +perl Build +perl Build manifest +perl Build dist +mv Travel-Status-DE-DeutscheBahn-*.tar.gz ../app.tar.gz +dh-make-perl --build --version "${VERSION}" +chown ${USER}:${GROUP} ../*.deb +mv -v ../*.deb /out -- cgit v1.2.3