Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time

Releasing Picolibc

Here are the current steps to perform when releasing a new version of picolibc:

  1. Make sure the current code builds on all supported architectures:

** native ** 32-bit x86 ** RISC-V ** ARM 32-bit ** ARM 64-bit (aarch64) ** Xtensa (ESP8266, ESP32)

  1. Test on architectures that can do so

    • native
    • 64-bit x86
    • 32-bit x86
    • RISC-V, all targets (qemu)
    • ARM 32-bit, almost all targets (qemu)
    • ARM 64-bit
  2. Use glibc test suite for RISC-V and ARM 32-bit

    • Enable errno in the math functions using -Dwant-math-errno=true

    • Build and install minsize and release builds, using --buildtype=release -Dbuild-type-subdir=release

    • Build and run glibc test suite against all four builds

  3. Test c++ builds using hello-world example on ARM

  4. Verify that COPYING.picolibc includes information about the current source files

  5. Add release notes to

  6. Update and CMakeLists.txt with new version number

  7. Commit release notes and

    $ git commit -m'Version ' CMakeLists.txt

  8. Use native configuration to build release:

    $ mkdir -p builds/build-native $ cd builds/build-native $ ../../scripts/do-native-configure $ ninja dist

  9. Use arm configuration to build bits for the Arm embedded toolkit:

    $ mkdir -p builds/build-arm-tk builds/build-arm-tk-release $ cd builds/build-arm-tk $ PATH=$ARM_TK/bin:$PATH ../../scripts/do-arm-configure -Dsysroot-install=true $ PATH=$ARM_TK/bin:$PATH DESTDIR=$PWD/../dist ninja test install $ cd ../build-arm-tk-release $ PATH=$ARM_TK/bin:$PATH ../../scripts/do-arm-configure -Dsysroot-install=true -Dbuild-type-subdir=release --buildtype=release $ PATH=$ARM_TK/bin:$PATH DESTDIR=$PWD/../dist ninja test install $ cd ../dist/$ARM_TK $ zip -r ../../../ . $ scp

  10. Tag release

$ git tag -m'Version <version>' <version> main
  1. Push tag and branch to repositories
$ git push origin main <version>
  1. Upload release to web site:
$ scp build-native/meson-dist/*
  1. Create new release on picolibc wiki pasting in relevant section.

  2. Create new release on github site, pasting in relevant section. Upload release tar and arm embedded toolkit zip files.

  3. Email release message to mailing list. Paste in section about the new release.

Debian Packages

Debian packaging information is contained on the 'debian' branch in the main picolibc repository. It's designed to be build using 'gbp buildpackage', the git-based debian package building system. Here's how to build debian packages:

  1. Release upstream picolibc first

  2. Checkout debian branch

    $ git checkout debian

  3. Merge in main at the release tag

    $ git merge

  4. Update debian packaging to current standards

  5. Update debian/copyright from COPYING.picolibc

    $ cp COPYING.picolibc

  6. Add new Debian change log entry

    $ dch -v -1 -D unstable

  7. Commit debian changes to repository

    $ git commit -m'debian: Version -1' debian/changelog

  8. Build debian packages

    $ gbp buildpackage

  9. Verify package results remain lintian-clean:

    $ lintian --info --display-info --pedantic picolibc_-1_amd64.changes

  10. Tag release

$ git tag -m'debian: Version <version>-1' <version>-1 debian
  1. Push tags and branches to salsa
$ git push salsa main debian <version> <version>-1
  1. Sign and upload source changes:
$ debsign picolibc_<version>-1_source.changes
$ dput picolibc_<version>-1_source.changes