Commit Graph

44 Commits

Author SHA1 Message Date
78ee492c46 client: Dockerfiles: local: root: use evergreencrypto/root image
- Provides C++20 support and a slimmer package (~18% smaller)
- Required for issue #23 (bitcoin-core lib support)
2025-11-06 16:22:40 -08:00
7b67bcf115 client: Dockerfiles: remote: root: add evergreencrypto/root image
Provides C++20 support and a slimmer package (~18% smaller).
2025-11-06 16:22:40 -08:00
5e02aa4825 client: migrate from xsv to xan
`xsv` is no longer maintained and the author recommends `xan` instead.

Fortunately, `xan` is very suitable for our use-case; is very efficient,
and produces no differences in our expected output.
2025-10-03 14:09:34 -07:00
1dafa487ad client: Dockerfiles: remote: hledger-suite: bump hledger to 1.50.2 2025-09-29 11:45:02 -07:00
f28a148f5c client: Dockerfiles: remote: hledger-suite: bump hledger to 1.50.1
Also update build process for a successful build and better caching.
2025-09-18 20:52:45 -07:00
6c1b7a0fb1 client: Dockerfiles: remote: hledger-suite: bump hledger-iadd to v1.3.22
Also update build process for a successful build and better caching.

Despite recent releases, hledger-iadd's stack configuration is not
regularly maintained (very out of date). The install documentation is
also very out of date. The maintainer appears to be using cabal for
building.
2025-09-18 20:50:43 -07:00
4c0474ea9f client: Dockerfiles: remote: hledger-suite: bump hledger-flow to v0.16.0
Also update build process for a successful build and better caching.
2025-09-18 20:50:00 -07:00
cc0ec7a112 client: Dockerfiles: remote: hledger-suite: use hledger-flow master tip
As discussed in #216, hledger-flow breaks with the latest hledger
release (1.50).

Until hledger-flow has another release, current master tip appears to be
as stable as v0.15.0 and includes fixes that work with hledger 1.50.
2025-09-05 16:36:50 -07:00
a7289bde16 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.50 2025-09-04 15:14:54 -07:00
5baf3359e6 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.43.2 2025-06-16 16:10:07 -07:00
8a969c9877 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.43.1 2025-06-05 18:35:16 -07:00
0cb63afe60 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.43 2025-06-03 19:12:36 -07:00
ed76b516c4 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.42.2 2025-05-27 13:10:50 -07:00
202601b2cf client: Dockerfiles: remote: hledger-suite: bump hledger to 1.42.1 2025-03-14 18:43:45 -07:00
5fbf811bda client: Dockerfiles: remote: hledger-suite: bump hledger to 1.42
Also update resolver for a successful build.
2025-03-07 20:04:35 -08:00
6704b3ec21 client: Dockerfiles: local: finance: remove coinbase-pro 2025-01-04 01:16:05 -08:00
83f5355dc3 client: Dockerfiles: remote: hledger-suite: update hledger-iadd resolver
Uses older resolver (should be appropriate to v1.3.21).

Fixes build breakage.
2024-12-12 19:58:40 -08:00
d0a9384648 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.41 2024-12-12 00:23:53 -08:00
dc4990ab90 client: docker: complete build overhaul, optimize
This commit brings a complete overhaul of the build system:

- Creates a separation of concerns for 'local' and 'remote' building
  * 'local' is built locally via the docker-finance `build` command
  * 'remote' is built *outside* of the docker-finance `build` command
    (pushed to a remote registry and then pulled by the 'local' build)
  * Related refactoring
    - Dockerfiles
    - `lib_gen`

- Adds remote image 'hledger-suite'
  * Provides the latest versions of all `hledger` related binaries
  * No longer relies on package maintainers / out-dated packages

- Adds remote image 'docker-finance'
  * Provides base image for 'finance' and 'dev-tools' images
    - tags 'archlinux' | 'ubuntu' | 'dev-tools'

- Removes previous `hledger` related build modules
  * Removes building any `hledger` related binaries locally

- Removes 'experimental' build
  * End-user can use local custom Dockerfile and/or custom tag instead

- Updates the 'default' | 'slim' | 'tiny' | 'micro' build types
  * Refactors build type requirements into separate build modules
    - Adds 'fetch' module
    - Adds 'track' module
    - Adds 'user' module
      * creates container user *after* base and all other modules
      * allows for quick re-building across multiple local users
    - Updates 'root' module
  * `lib_docker`
    - Updates usage help
    - Adds build modules per build type

- Huge optimizations
  * Vastly improves build times
    - ~60% faster w/ a fresh build
    - ~60%-90% faster rebuild (depending on image type)
  * Vastly improves image sizes
    - e.g., 'default' Arch Linux image size is ~50% smaller
2024-09-17 20:06:33 -07:00
75ed30a05d client: Dockerfiles: dev-tools: add DOCKER_FINANCE_CLIENT_PLUGINS 2024-09-07 16:48:27 -07:00
a9e2976748 client: Dockerfiles: optimize by moving useradd
Adding the finance user as late as possible within the base Dockerfile
will allow for faster build times when rebuilding with different users
(the base layers won't need to be rebuilt).
2024-08-20 17:40:23 -07:00
3b01ce8cc7 client: Dockerfiles: remove pipx, replace with packaged csvkit 2024-08-19 15:57:54 -07:00
569db8a1e6 client: Dockerfiles: dev-tools: refactor to use yq
Replaces `shyaml` dependency with `yq`.
2024-08-17 23:19:57 -07:00
237a4c20ab client: Dockerfiles: remove shyaml package, add yq
- Replaces `shyaml` dependency with `yq`
  * Less dependency upon `pipx` (`csvcut` is next to go)
  * `yq` will be needed by a container plugin
2024-08-17 19:36:47 -07:00
59d11b47d3 client: Dockerfiles: add proxychains-ng package
Needed for Tor support (and any potential future proxy support).
2024-08-14 21:35:25 -07:00
bbb5d7c238 client: Dockerfiles: add plugins env to docker-compose 2024-08-12 18:36:26 -07:00
e50f4b62cb client: Dockerfiles: add timew package 2024-08-09 00:01:40 -07:00
646ca3af85 Dockerfiles: source container bash completion 2024-08-05 16:22:22 -07:00
9975d3471c client: remove ghc package requirement
Will be managed by `stack` via respective source builds.
2024-07-16 17:44:16 -07:00
b7900f1eef client: reorg/factoring for 'experimental' builds
- Dockerfiles: separation of concerns for build types
- Dockerfiles: pull from respective hledger-based branches/tags
- Dockerfiles: move hledger-based test building into experimental
- docker-finance.yaml: add commented package 'unuran' (experimental)
2024-07-16 17:44:16 -07:00
e58bc578cd client: Dockerfiles: ubuntu: fix botan dependency
- The library is needed, not the utility binary
- Fixes `root` loading errors about missing headers
2024-07-13 19:06:20 -07:00
4d3eef6067 client: new internal client versioning system
- Version is now determined on-the-fly from manifest file
- Internal versioning no longer depends on environment file
2024-07-13 03:01:06 -07:00
f2df54d3cc client: Dockerfiles: resolve apt CLI warning 2024-07-11 16:48:58 -07:00
c74a76bd0b client: Dockerfiles: add hledger source build 2024-07-09 22:56:03 -07:00
cb7991b187 client: Dockerfiles: ubuntu: 'USER root' to install
Fixup to #68
2024-06-28 18:38:33 -07:00
dffb3e5b14 client: Dockerfiles: ubuntu: add ROOT.cern support 2024-06-28 17:30:36 -07:00
19cbd05a5d client: Dockerfiles: refactor for build options 2024-06-28 17:30:36 -07:00
decef35be4 client: create templated custom Dockerfiles 2024-06-26 14:58:19 -07:00
51ef36b2bb client: Dockerfiles: dev-tools: add version dependency
Already present in the 'finance' images.
2024-06-21 16:34:50 -07:00
55c893e010 Dockerfiles: remove PHP codenixsv/coingecko-api
Replaced by custom implementation.
2024-06-17 23:15:22 -07:00
5eaf261875 Dockerfiles: finance/dev-tools: remove default 'ubuntu' user
For Ubuntu-based images, remove upstream-added default 'ubuntu' user as
it may conflict with host's given UID/GID during docker-finance build.
2024-06-13 15:20:55 -07:00
958cf11be3 Dockerfiles: finance/dev-tools: remove timezone mount
When running `finance` image's `import` command (but only when
container's hledger-flow coinbase/coinbase-pro accounts are imported),
the following error is given:

  ```
  IsADirectoryError: [Errno 21] Is a directory: '/etc/timezone'
  Selector name 'id' does not exist as a named header in the given CSV data.
  ```

specifically, after enabling verbose printing of `csvjoin` (which is only
used within these accounts), the following error is given:

  ```
  File "/home/user/.local/share/pipx/venvs/csvkit/lib/python3.12/site-packages/babel/localtime/_unix.py", line 57, in _get_localzone
    with open(tzpath, 'rb') as tzfile:
         ^^^^^^^^^^^^^^^^^^
  ```

where all errors prevent the successful import of applicable accounts.

The python error appears to have been introduced in csvkit 2.0.0 and
appears to be the result of an upstream decision (or bug) to not test
whether /etc/timezone is a directory or a file (Arch Linux treats
/etc/timezone as a directory).

Fortunately, docker-finance's mounting of /etc/localtime appears to
satisfy use-case requirements; so, /etc/timezone is no longer needed.

Removing /etc/timezone resolves all errors.
2024-06-13 15:20:33 -07:00
7e2e4227b1 client: Dockerfiles: remove obsolete 'version' element
Resolves warning when internally running docker compose.
2024-03-26 22:53:23 -07:00
b621e87df2 docker-finance | modern accounting for the power-user
Dedicated to Michael Morgan: a beautiful, beautiful soul.

---

Internal signing keys:

  Aaron Fiore (sole author)

    - 518A22F85BEFD32BCC99C48603F90C4F35E0213E
    - 31ECA5C347A0CC0815EDE730A3EACCFCDA7E685E
    - C8187C585CB07A4DA81CC0F37318B50EBE9C0DA8

Internal repositories (rebased from):

  Staging:

    $ git log -n1 --pretty=format:"%H"
    c8e0cd66f6c89fa7b3c62f72fb524a4cc454b7b6

    $ git rev-list --max-parents=0 HEAD
    ac3863b8c234755855f1aea3a07a853122decdf2

  Private:

    $ git log -n1 --pretty=format:"%H"
    69bb3591eaa2990a9637832bb484690e00c4f926

    $ git rev-list --max-parents=0 HEAD
    a5c1cc9fb593c4cf09bc0adfef6cb6d2964511ae
2024-03-08 23:42:21 -08:00