diff --git a/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in index 6f988e8..31c73fe 100644 --- a/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in +++ b/client/Dockerfiles/finance/archlinux/Dockerfile.hledger-flow.src.in @@ -22,7 +22,6 @@ USER root RUN pacman -Syu \ - ghc \ stack \ --noconfirm --disable-download-timeout @@ -35,7 +34,6 @@ 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/experimental/Dockerfile.hledger-flow.src.in b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.hledger-flow.src.in new file mode 100644 index 0000000..8d52384 --- /dev/null +++ b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.hledger-flow.src.in @@ -0,0 +1,39 @@ +# 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 \ + stack \ + --noconfirm --disable-download-timeout + +USER builder + +WORKDIR /usr/local/src +RUN git clone https://github.com/apauley/hledger-flow -b master + +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.hledger.src.in b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.hledger.src.in similarity index 87% rename from client/Dockerfiles/finance/archlinux/Dockerfile.hledger.src.in rename to client/Dockerfiles/finance/archlinux/experimental/Dockerfile.hledger.src.in index e69ddd5..decfa31 100644 --- a/client/Dockerfiles/finance/archlinux/Dockerfile.hledger.src.in +++ b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.hledger.src.in @@ -28,14 +28,9 @@ RUN pacman -Rsc \ hledger-web \ --noconfirm -# Remove incompatible (need `ghc` via `stack`) -RUN pacman -Rsc \ - ghc \ - --noconfirm - USER builder WORKDIR /usr/local/src -RUN git clone --depth=1 https://github.com/simonmichael/hledger +RUN git clone https://github.com/simonmichael/hledger -b master WORKDIR /usr/local/src/hledger RUN stack update diff --git a/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.root.in b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.root.in new file mode 100644 index 0000000..faaac1e --- /dev/null +++ b/client/Dockerfiles/finance/archlinux/experimental/Dockerfile.root.in @@ -0,0 +1,43 @@ +# 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 + +# docker-finance (experimental / testing) +RUN pacman -Syu \ + unuran \ + --noconfirm --disable-download-timeout + +# 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 index 282f657..16de2af 100644 --- a/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.src.in +++ b/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger-flow.src.in @@ -22,7 +22,7 @@ USER root RUN apt-get install -y \ - ghc \ + g++ \ haskell-stack # TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... @@ -34,7 +34,6 @@ 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/experimental/Dockerfile.hledger-flow.src.in b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.hledger-flow.src.in new file mode 100644 index 0000000..0946261 --- /dev/null +++ b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.hledger-flow.src.in @@ -0,0 +1,39 @@ +# 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-get install -y \ + g++ \ + haskell-stack + +USER builder + +WORKDIR /usr/local/src +RUN git clone https://github.com/apauley/hledger-flow -b master + +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.hledger.src.in b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.hledger.src.in similarity index 94% rename from client/Dockerfiles/finance/ubuntu/Dockerfile.hledger.src.in rename to client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.hledger.src.in index cc6fdb5..499ba3f 100644 --- a/client/Dockerfiles/finance/ubuntu/Dockerfile.hledger.src.in +++ b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.hledger.src.in @@ -32,7 +32,7 @@ RUN apt-get install -y \ USER builder WORKDIR /usr/local/src -RUN git clone --depth=1 https://github.com/simonmichael/hledger +RUN git clone https://github.com/simonmichael/hledger -b master WORKDIR /usr/local/src/hledger RUN stack update diff --git a/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.root.in b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.root.in new file mode 100644 index 0000000..297fa15 --- /dev/null +++ b/client/Dockerfiles/finance/ubuntu/experimental/Dockerfile.root.in @@ -0,0 +1,75 @@ +# 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 dependencies (regardless of building or not) +RUN apt-get install -y \ + binutils \ + cmake \ + dpkg-dev \ + g++ \ + gcc \ + libssl-dev \ + libtbb-dev \ + libx11-dev \ + libxext-dev \ + libxft-dev \ + libxpm-dev \ + python3 + +# ROOT.cern pre-compiled installation +RUN apt-get install -y curl +USER builder +WORKDIR /usr/local/src +RUN curl --location -O "https://root.cern/download/root_v6.32.02.Linux-ubuntu24.04-x86_64-gcc13.2.tar.gz" +RUN tar xvzf "root_v6.32.02.Linux-ubuntu24.04-x86_64-gcc13.2.tar.gz" + +# ROOT.cern environment +# +# bash_aliases notes: +# +# - *MUST* source thisroot.sh (from any directory) +# +# - For `docker-finance version` command: +# +# - To avoid thisroot.sh error, pushd/popd is required (per thisroot.sh) +# +# - Although $ROOTSYS will be available during normal operation, it won't +# be avaialble to `docker-finance version`- so add binary to PATH here. +USER @DOCKER_FINANCE_USER@ +RUN echo "pushd /usr/local/src/root/bin 1>/dev/null && source \"/usr/local/src/root/bin/thisroot.sh\" && popd 1>/dev/null" | tee -a ~/.bash_aliases +RUN echo "export PATH=\"\$PATH::/usr/local/src/root/bin\"" | tee -a ~/.bash_aliases + +# docker-finance +USER root +RUN apt-get install -y \ + googletest \ + libbenchmark-dev \ + libbotan-2-dev \ + libcrypto++-dev \ + libsodium-dev + +# docker-finance (experimental / testing) +RUN apt-get install -y \ + libunuran-dev + +# vim: sw=2 sts=2 si ai et diff --git a/client/docker-finance.yaml b/client/docker-finance.yaml index 411e2de..d35bf2a 100644 --- a/client/docker-finance.yaml +++ b/client/docker-finance.yaml @@ -37,7 +37,6 @@ container: base: packages: - "bc" - - "ghc" - "git" - "hledger-iadd" - "hledger-ui" @@ -48,8 +47,11 @@ container: - "vim" - "visidata" - "xsv" + # For experimental build + #- "unuran" commands: - "csvstat --version" + - "ghc-pkg --version" - "hledger-flow --version" - "shyaml --version" fetch: @@ -80,21 +82,24 @@ container: packages: - "bc" - "cargo" - - "ghc" + - "g++" - "git" - "haskell-stack" + - "hledger" - "hledger-ui" - "hledger-web" - - "hledger" - "pipx" - "vim" - "visidata" - "zlib1g-dev" + # For experimental build + #- "libunuran-dev" commands: - - "xsv --version" - "csvstat --version" + - "ghc-pkg --version" - "hledger-flow --version" - "shyaml --version" + - "xsv --version" fetch: packages: - "composer" diff --git a/client/src/docker/lib/internal/lib_docker.bash b/client/src/docker/lib/internal/lib_docker.bash index e852fa0..b6bb5b8 100644 --- a/client/src/docker/lib/internal/lib_docker.bash +++ b/client/src/docker/lib/internal/lib_docker.bash @@ -235,29 +235,40 @@ function lib_docker::__build() if [[ "$global_platform" != "dev-tools" ]]; then - local _in_files=() + local _files=() + local _path="${global_repo_dockerfiles}/${global_platform}" case "$global_arg_type" in - default | slim | experimental) - _in_files+=("hledger-flow.src") - [[ "$global_arg_type" =~ ^default$|^experimental$ ]] && _in_files+=("root") - [[ "$global_arg_type" =~ ^experimental$ ]] && _in_files+=("hledger.src") + default) + _files+=("${_path}/Dockerfile.hledger-flow.src.in") + _files+=("${_path}/Dockerfile.root.in") ;; - tiny | micro) - _in_files+=("hledger-flow.bin") - [[ "$global_arg_type" == "tiny" ]] && _in_files+=("root") + slim) + _files+=("${_path}/Dockerfile.hledger-flow.src.in") + ;; + tiny) + _files+=("${_path}/Dockerfile.hledger-flow.bin.in") + _files+=("${_path}/Dockerfile.root.in") + ;; + micro) + _files+=("${_path}/Dockerfile.hledger-flow.bin.in") + ;; + experimental) + _path+="/experimental" + _files+=("${_path}/Dockerfile.hledger-flow.src.in") + _files+=("${_path}/Dockerfile.hledger.src.in") + _files+=("${_path}/Dockerfile.root.in") ;; *) lib_utils::die_fatal "unsupported build" ;; esac - for _file in "${_in_files[@]}"; do - local _path="${global_repo_dockerfiles}/${global_platform}/Dockerfile.${_file}.in" - lib_utils::print_debug "Appending '${_path}' to '${_final}'" + for _file in "${_files[@]}"; do + lib_utils::print_debug "Appending '${_file}' to '${_final}'" sed \ -e "s:@DOCKER_FINANCE_USER@:${DOCKER_FINANCE_USER}:g" \ - "$_path" >>"$_final" || return $? + "$_file" >>"$_final" || return $? done fi