taler-deployment

Deployment scripts and configuration files
Log | Files | Refs | README

README.md (2222B)


      1 # taler-packaging ng
      2 
      3 This directory contains the improved implementation of container-based
      4 packaging for GNU Taler and associated packages.
      5 
      6 The major improvement is that a component can be built *without* having to
      7 rebuild every single package.
      8 
      9 Instead, all dependencies are managed via apt.  Each package is built in a
     10 fresh environment, with build dependencies pulled in via apt.  Previously built
     11 packages are available via a file-based apt source.
     12 
     13 Build-time dependencies are automatically installed, making sure that
     14 missing build-time dependencies would be detected.
     15 
     16 The packaging logic is also the same for Debian and Ubuntu.
     17 
     18 ## Prerequisites
     19 
     20 You need "podman". On Debian bookworm, you will get shitty performance unless you:
     21 
     22 ```
     23 # apt install containers-storage
     24 ```
     25 
     26 Then check with
     27 
     28 ```
     29 # podman info --debug
     30 ```
     31 
     32 that you get "graphDriverName: overlay"
     33 
     34 If not, try
     35 
     36 ```
     37 # podman system reset
     38 ```
     39 
     40 (deletes all containers, enables reset of the storage layer).
     41 
     42 
     43 ## Prerequisites for Cross-Builds
     44 
     45 To build for other architecture, you need to install the following packages:
     46 ```
     47 apt-get install qemu-user-static binfmt-support
     48 ```
     49 
     50 ## Structure
     51 
     52 * `packages/$DISTRO-$DISTRO_VERNAME`: Output folder for debian packages.
     53 Also contains a `Packages.gz` metadata file generated by `dpkg-scanpackages`
     54 so that this folder can be directly consumed as a trusted package source.
     55 
     56 * `buildscripts/*`: Build scripts used during the package build steps.
     57 * `distros/*`: Files for building for a specific distro.
     58 * `server-side/*.sh`: Scripts that must be installed in taler-packaing@taler.net:$HOME
     59 
     60 
     61 ## Recipes
     62 
     63 ### Building for a distribution
     64 
     65 ```
     66 ./taler-pkg build $DISTRO
     67 ```
     68 
     69 ### Updating component versions
     70 
     71 ```
     72 # will output current vs latest version
     73 ./taler-pkg show-latest
     74 
     75 # Update component version
     76 echo $desired_version > buildconfig/$component.tag
     77 ```
     78 
     79 ### Forcing a rebuild
     80 
     81 ```
     82 rm packages/$distro/$component.built.tag
     83 ```
     84 
     85 ### Adding a new distro
     86 
     87 A new distro needs just needs a Dockerfile in ``distros/Dockerfile.$distro``.
     88 
     89 
     90 ## Future Improvements
     91 
     92 * caching (gradle, npm, ...) between builds
     93 * git checkouts on host, allowing fully offline builds
     94 * more automation for common tasks
     95 * more distros