diff --git a/client/Dockerfiles/finance/Dockerfile.archlinux.in b/client/Dockerfiles/finance/Dockerfile.archlinux.in index da2dd7e..c6a75e7 100644 --- a/client/Dockerfiles/finance/Dockerfile.archlinux.in +++ b/client/Dockerfiles/finance/Dockerfile.archlinux.in @@ -19,88 +19,69 @@ FROM archlinux:base-devel # -# System +# System preparation # -# `finance` user +# Add `finance` user RUN useradd -m -s /bin/bash @DOCKER_FINANCE_USER@ -u @DOCKER_FINANCE_UID@ -# System-level user for building (won't pollute user-level UID space) +# Add system-level user for building (won't pollute user-level UID space) RUN useradd -m -s /bin/bash -r builder +RUN gpasswd -a builder wheel + +# Prepare for non-package dependencies +RUN chown root:wheel /usr/local/* && chmod g+rwx /usr/local/* # -# Dependencies +# Package dependencies # -# Minimum requirements RUN pacman -Syu \ - bc \ - composer \ - ghc \ git \ hledger \ hledger-iadd \ hledger-ui \ hledger-web \ python-pipx \ - stack \ vim \ visidata \ xsv \ --noconfirm --disable-download-timeout -# ROOT.cern (and docker-finance requirements) -RUN pacman -Syu \ - benchmark \ - botan2 \ - crypto++ \ - gtest \ - libsodium \ - root \ - --noconfirm --disable-download-timeout - -# PHP mandatory requirements -RUN sed -i \ - -e 's:^;extension=bcmath:extension=bcmath:' \ - -e 's:^;extension=gmp:extension=gmp:' \ - -e 's:^;extension=iconv:extension=iconv:' \ - /etc/php/php.ini - -# Give access to builder -RUN gpasswd -a builder wheel -RUN chown root:wheel /usr/local/* && chmod g+rwx /usr/local/* - -# hledger-flow -# TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... -USER builder -WORKDIR /usr/local/src -RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.15.0 -WORKDIR /usr/local/src/hledger-flow -RUN stack setup -RUN stack build -RUN stack test --interleaved-output --pedantic -RUN stack install --local-bin-path=/usr/local/bin - -# Fetch APIs -WORKDIR /usr/local/lib/php -# NOTE: Coinbase Pro has been "sunsetted" -#RUN composer require mocking-magician/coinbase-pro-sdk -RUN composer require ozdemirburak/json-csv -RUN composer require ccxt/ccxt -USER root -RUN sed -i \ - -e 's:^;extension=bcmath:extension=bcmath:' \ - -e 's:^;extension=gmp:extension=gmp:' \ - -e 's:^;extension=iconv:extension=iconv:' \ - /etc/php/php.ini - -# Minimum requirements (python) USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ RUN pipx install shyaml RUN pipx install csvkit +# +# `fetch` APIs +# + +USER root + +RUN pacman -Syu \ + bc \ + composer \ + --noconfirm --disable-download-timeout + +RUN sed -i \ + -e 's:^;extension=bcmath:extension=bcmath:' \ + -e 's:^;extension=gmp:extension=gmp:' \ + -e 's:^;extension=iconv:extension=iconv:' \ + /etc/php/php.ini + +USER builder +WORKDIR /usr/local/lib/php +# NOTE: Coinbase Pro has been "sunsetted" +#RUN composer require mocking-magician/coinbase-pro-sdk +RUN composer require ozdemirburak/json-csv +RUN composer require ccxt/ccxt + +# # Superscript +# + +USER @DOCKER_FINANCE_USER@ RUN echo "source \"\${DOCKER_FINANCE_CONTAINER_CONF}/shell/superscript.bash\"" | tee -a ~/.bashrc # diff --git a/client/Dockerfiles/finance/Dockerfile.ubuntu.in b/client/Dockerfiles/finance/Dockerfile.ubuntu.in index 5683077..0fd38b7 100644 --- a/client/Dockerfiles/finance/Dockerfile.ubuntu.in +++ b/client/Dockerfiles/finance/Dockerfile.ubuntu.in @@ -18,7 +18,7 @@ FROM ubuntu:rolling # -# System +# System preparation # RUN groupadd -r wheel @@ -29,72 +29,63 @@ RUN userdel -r ubuntu # Add `finance` user RUN useradd -m -s /bin/bash @DOCKER_FINANCE_USER@ -u @DOCKER_FINANCE_UID@ -# System-level user for building (won't pollute user-level UID space) +# Add system-level user for building (won't pollute user-level UID space) RUN useradd -m -s /bin/bash -r builder +RUN gpasswd -a builder wheel + +# Prepare for non-package dependencies +RUN chown root:wheel /usr/local/* && chmod g+rwx /usr/local/* # -# Dependencies +# Package dependencies # RUN apt update -y -# Minimum requirements RUN apt install -y \ - bc \ - cargo \ - composer \ gawk \ - ghc \ git \ - haskell-stack \ hledger \ hledger-ui \ hledger-web \ - php \ - php-bcmath \ - php-curl \ - php-gmp \ pipx \ vim \ visidata \ zlib1g-dev +RUN apt install -y cargo RUN cargo install xsv --root /usr -# Optional requirements (ROOT) -# TODO: the .deb for root does not exist yet -#RUN apt install -y root -#RUN apt install -y botan libcrypto++-dev libsodium-dev googletest libbenchmark-dev - -# Give access to builder -RUN gpasswd -a builder wheel -RUN chown root:wheel /usr/local/* && chmod g+rwx /usr/local/* - -# hledger-flow -# TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... -USER builder -WORKDIR /usr/local/src -RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.15.0 -WORKDIR /usr/local/src/hledger-flow -RUN stack setup -RUN stack build -RUN stack test --interleaved-output --pedantic -RUN stack install --local-bin-path=/usr/local/bin - -# Fetch APIs -# NOTE: Coinbase Pro has been "sunsetted" -WORKDIR /usr/local/lib/php -#RUN composer require mocking-magician/coinbase-pro-sdk -RUN composer require ozdemirburak/json-csv -RUN composer require ccxt/ccxt - -# Minimum requirements (python) USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ RUN pipx install shyaml RUN pipx install csvkit +# +# `fetch` APIs +# + +USER root +RUN apt install -y \ + bc \ + composer \ + php \ + php-bcmath \ + php-curl \ + php-gmp + +USER builder +WORKDIR /usr/local/lib/php +# NOTE: Coinbase Pro has been "sunsetted" +#RUN composer require mocking-magician/coinbase-pro-sdk +RUN composer require ozdemirburak/json-csv +RUN composer require ccxt/ccxt + +# # Superscript +# + +USER @DOCKER_FINANCE_USER@ RUN echo "source \"\${DOCKER_FINANCE_CONTAINER_CONF}/shell/superscript.bash\"" | tee -a ~/.bash_aliases # diff --git a/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.bin.in b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.bin.in new file mode 100644 index 0000000..3f7b77e --- /dev/null +++ b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.bin.in @@ -0,0 +1,30 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# hledger-flow (binary) +# + +USER builder +WORKDIR /usr/local/src +RUN curl --location -O "https://github.com/apauley/hledger-flow/releases/download/v0.15.0/hledger-flow_Linux_x86_64_v0.15.0_2b025fe.tar.gz" +RUN tar xvzf "hledger-flow_Linux_x86_64_v0.15.0_2b025fe.tar.gz" +WORKDIR /usr/local/src/hledger-flow_Linux_x86_64_v0.15.0_2b025fe +RUN sha256sum -c "sha256-hledger-flow_Linux_x86_64_v0.15.0_2b025fe.txt" +RUN mv hledger-flow /usr/local/bin/ + +# vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in new file mode 100644 index 0000000..6f988e8 --- /dev/null +++ b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in @@ -0,0 +1,41 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# hledger-flow (source) +# + +USER root + +RUN pacman -Syu \ + ghc \ + stack \ + --noconfirm --disable-download-timeout + +# TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... +USER builder + +WORKDIR /usr/local/src +RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.15.0 + +WORKDIR /usr/local/src/hledger-flow +RUN stack setup +RUN stack build +RUN stack test --interleaved-output --pedantic +RUN stack install --local-bin-path=/usr/local/bin + +# vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/finance/archlinux/Dockerfile.root.in b/client/Dockerfiles/finance/archlinux/Dockerfile.root.in new file mode 100644 index 0000000..667a30a --- /dev/null +++ b/client/Dockerfiles/finance/archlinux/Dockerfile.root.in @@ -0,0 +1,38 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# ROOT.cern (and docker-finance requirements) +# + +USER root + +# ROOT.cern +RUN pacman -Syu \ + root \ + --noconfirm --disable-download-timeout + +# docker-finance +RUN pacman -Syu \ + benchmark \ + botan2 \ + crypto++ \ + gtest \ + libsodium \ + --noconfirm --disable-download-timeout + +# vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.bin.in b/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.bin.in new file mode 100644 index 0000000..45a03e6 --- /dev/null +++ b/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.bin.in @@ -0,0 +1,33 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# hledger-flow (binary) +# + +USER root +RUN apt install -y curl + +USER builder +WORKDIR /usr/local/src +RUN curl --location -O "https://github.com/apauley/hledger-flow/releases/download/v0.15.0/hledger-flow_Linux_x86_64_v0.15.0_2b025fe.tar.gz" +RUN tar xvzf "hledger-flow_Linux_x86_64_v0.15.0_2b025fe.tar.gz" +WORKDIR /usr/local/src/hledger-flow_Linux_x86_64_v0.15.0_2b025fe +RUN sha256sum -c "sha256-hledger-flow_Linux_x86_64_v0.15.0_2b025fe.txt" +RUN mv hledger-flow /usr/local/bin/ + +# vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.src.in b/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.src.in new file mode 100644 index 0000000..e8ca181 --- /dev/null +++ b/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.src.in @@ -0,0 +1,40 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# hledger-flow (source) +# + +USER root + +RUN apt install -y \ + ghc \ + haskell-stack + +# TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... +USER builder + +WORKDIR /usr/local/src +RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.15.0 + +WORKDIR /usr/local/src/hledger-flow +RUN stack setup +RUN stack build +RUN stack test --interleaved-output --pedantic +RUN stack install --local-bin-path=/usr/local/bin + +# vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/finance/ubuntu/Dockerfile.root.in b/client/Dockerfiles/finance/ubuntu/Dockerfile.root.in new file mode 100644 index 0000000..c54d273 --- /dev/null +++ b/client/Dockerfiles/finance/ubuntu/Dockerfile.root.in @@ -0,0 +1,29 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# ROOT.cern (and docker-finance requirements) +# + +USER root + +RUN apt install -y botan libcrypto++-dev libsodium-dev googletest libbenchmark-dev + +# TODO: the .deb does not yet exist, install manually +#RUN apt install -y root + +# vim: sw=2 sts=2 si ai et