summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2020-05-03 08:17:40 +0200
committerDaniel Friesel <derf@finalrewind.org>2020-05-03 08:17:40 +0200
commitcfadf0cc0115eb7475e6f13efb8134a423a7a6ad (patch)
tree1f3842e34a660c43b34ec1f7b57e07798c77a6b7
parent85f0629ca513329d41fa146dbcf63fd479db7e36 (diff)
Add Dockerfile and .deb build helpers
-rw-r--r--Dockerfile23
-rw-r--r--cpanfile17
-rwxr-xr-xscripts/makedeb-docker11
-rwxr-xr-xscripts/makedeb-docker-helper34
4 files changed, 85 insertions, 0 deletions
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