SWUGENERATOR(1)

πŸ’– NAME πŸ’–

okay bestie, meet swugenerator β€” section 1 of the manual, host-side icon behavior only ✨

swugenerator β€” generate SWUpdate bundles from a manifest

πŸŽ€ Name πŸŽ€

swugenerator β€”

A host tool to generate SWU update package for SWUpdate. fr fr that's the whole job description and she does it gorgeously πŸ’…


🌸 SYNOPSIS 🌸

here's the whole vibe at a glance:

usage: SWUGenerator [-h] [-K ENCRYPTION_KEY_FILE] [-k SIGN] [-s
SW_DESCRIPTION]
       [-a ARTIFACTORY] -o SWU_FILE [-c CONFIG] command

Generator SWU Packages for SWUpdate πŸ”₯

πŸ¦‹ positional arguments πŸ¦‹

  • command β€” the thing you're telling her to do, and you gotta pick one:
    • {create,sign} β€” command to be executed
      • create β€” creates a SWU file
      • sign β€” signs an existing SWU file provided by -i

πŸ‘‘ optional arguments πŸ‘‘

  • -h, --help β€” show this help message and exit. the classic. she's always there for u 🫢
  • -K ENCRYPTION_KEY_FILE, --encryption-key-file ENCRYPTION_KEY_FILE β€” AES Key to encrypt artifacts
  • -n, --no-compress β€” Do not compress files
  • -e, --no-encrypt β€” Do not encrypt files
  • -x, --no-ivt β€” Do not generate IV when encrypting
  • -y, --no-hash β€” Do not store sha256 hash in sw-description
  • -k SIGN, --sign SIGN β€” RSA key or certificate to sign the SWU
  • -s SW_DESCRIPTION, --sw-description SW_DESCRIPTION β€” sw-description template for the create command
  • -t, --encrypt-swdesc β€” Encrypt sw-description
  • -a ARTIFACTORY, --artifactory ARTIFACTORY β€” list of directories where artifacts are searched
  • -o SWU_FILE, --swu-file SWU_FILE β€” SWU output file
  • -i,--swu-in-file SWU_IN_FILE β€” SWU input file to be signed for the sign command
  • -c CONFIG, --config CONFIG β€” configuration file

✨ Description ✨

so swugenerator is a tool running on host to create and modify SWUpdate's Update files (SWU). An SWU file contains a meta description of the release (sw-description), and swugenerator adds components to a template passed from command line. πŸ“¦βœ¨

This tool requires openssl to run and to sign the SWU. It is goal of the tool to fill the gap with Yocto/OE, where SWU generation is done by classes in the meta-swupdate layer, but other buildsystems like Debian or Buildroot have no tools to create a SWU. not her being the main character solving everyone's problems πŸ˜­πŸ‘‘

The tool signs the SWU and can encrypt the artifacts. The tool parses the libconf based sw-description and provides the following features:

⚠️ heads up bestie: tool does not work for JSON based sw-description β€” libconf only, no cap πŸ’€
  • replace occurrencies of variables found in the CONFIG file
  • add sha256 to each artifact
  • check if an artifact should be encrypted and encrypts it
  • sign sw-description with one of the methods accepted by SWUpdate
  • pack all artifacts into a SWU file

It maybe run in two steps to create an unsigned swu file and then sign it later in a second call:

swugenerator -o output.swu -a . -s sw-description.in create
swugenerator -o signed_output.swu -i output.swu -k CMS,key.pem,ca.crt sign

two-step era, the way that she lets you split create and sign is honestly so considerate 🌈


🧚 Installation 🧚

To install swugenerator clone the repository, and from the main project folder run pip (pip3 required): For new Linux distributions, replace it with pipx. πŸ“

pip install .

To uninstall:

pip uninstall swugenerator

and that's the whole page bestie, hope it slayed πŸ’œ shine on β€” the source/version slot and the date slot on this page are literally just sitting there as swugenerator() with nothing in them, staying mysterious, and honestly? iconic. βœ¨πŸŽ€

πŸ“¦ where this page comes from