From 7d7d59f87880092ad0172cebffdd1f8e2883aa2d Mon Sep 17 00:00:00 2001 From: Tony Grosinger Date: Thu, 21 Jul 2022 15:24:25 -0700 Subject: [PATCH] Add hledger aarch64 build --- .gitattributes | 2 ++ docker-compose.yaml | 2 ++ hledger/Dockerfile | 10 ++++++++++ hledger/bin/README.md | 20 ++++++++++++++++++++ hledger/bin/hledger | 3 +++ hledger/bin/hledger-web | 3 +++ hledger/start.sh | 21 +++++++++++++++++++++ 7 files changed, 61 insertions(+) create mode 100644 .gitattributes create mode 100644 hledger/Dockerfile create mode 100644 hledger/bin/README.md create mode 100755 hledger/bin/hledger create mode 100755 hledger/bin/hledger-web create mode 100644 hledger/start.sh diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3716fc7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +hledger/bin/hledger filter=lfs diff=lfs merge=lfs -text +hledger/bin/hledger-web filter=lfs diff=lfs merge=lfs -text diff --git a/docker-compose.yaml b/docker-compose.yaml index 5a73545..796e90c 100755 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -16,6 +16,8 @@ services: - "${LEDGER_DIR}:/data" entrypoint: ["ledger-analytics", "-f", "/data/${LEDGER_FILE}"] hledger: + # If you are running on ARM64, build the Dockerfile in this repo in the + # hledger directory. image: "dastapov/hledger:1.26" ports: - "${HLEDGER_PORT}:5000" diff --git a/hledger/Dockerfile b/hledger/Dockerfile new file mode 100644 index 0000000..c43d845 --- /dev/null +++ b/hledger/Dockerfile @@ -0,0 +1,10 @@ +FROM ubuntu:20.04 + +COPY bin/hledger /usr/local/bin/hledger +COPY bin/hledger-web /usr/local/bin/hledger-web +COPY start.sh /start.sh + +ENV LC_ALL C.UTF-8 +EXPOSE 5000 5001 + +CMD ["/start.sh"] diff --git a/hledger/bin/README.md b/hledger/bin/README.md new file mode 100644 index 0000000..34ecc79 --- /dev/null +++ b/hledger/bin/README.md @@ -0,0 +1,20 @@ +These binary files are built for aarch64 using the following steps. If you are +not on that architecture, you should use the official published image +`dastapov/hledger`. + +```bash +docker run -it --entrypoint bash ubuntu:20.04 + +# Then in the container... +apt update +apt install -y make curl libnuma1 build-essential libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 zlib1g-dev +curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh +export LANG=C.UTF-8 +cd /hledger +stack install --allow-different-user hledger +stack install --allow-different-user hledger-web + +# Then in another terminal without letting that container terminate... +docker cp ____:/root/.local/bin/hledger bin/. +docker cp ____:/root/.local/bin/hledger-web bin/. +``` diff --git a/hledger/bin/hledger b/hledger/bin/hledger new file mode 100755 index 0000000..2e583f5 --- /dev/null +++ b/hledger/bin/hledger @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ab9702bdb074be018c8df6bf26c79548edc3190ee0169abe8a039cb5b37954d +size 36947640 diff --git a/hledger/bin/hledger-web b/hledger/bin/hledger-web new file mode 100755 index 0000000..24e181c --- /dev/null +++ b/hledger/bin/hledger-web @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ea193d02a1bc62f101d5dc9ae9950cab87ee88bea76a9220a2fdfd241389363 +size 98665312 diff --git a/hledger/start.sh b/hledger/start.sh new file mode 100644 index 0000000..5dec98a --- /dev/null +++ b/hledger/start.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Retrieved from https://github.com/simonmichael/hledger/blob/master/docker/start.sh + +echo "host: ${HLEDGER_HOST:=0.0.0.0}" +echo "port: ${HLEDGER_PORT:=5000}" +echo "base url: ${HLEDGER_BASE_URL:="http://localhost:$HLEDGER_PORT"}" +echo "file url: ${HLEDGER_FILE_URL:=}" +echo "input file: ${HLEDGER_JOURNAL_FILE:=/data/hledger.journal}" +echo "debug level: ${HLEDGER_DEBUG:=1}" +echo "rules file: ${HLEDGER_RULES_FILE:=/data/hledger.rules}" + +exec hledger-web \ + --server \ + --host=$HLEDGER_HOST \ + --port=$HLEDGER_PORT \ + --file "$HLEDGER_JOURNAL_FILE" \ + --debug=$HLEDGER_DEBUG \ + --base-url=$HLEDGER_BASE_URL \ + --file-url=$HLEDGER_FILE_URL \ + --rules-file="$HLEDGER_RULES_FILE" \ No newline at end of file