Here are the current steps to perform when releasing a new version of picolibc:
- 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)
-
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
-
Use glibc test suite for RISC-V and ARM 32-bit
-
Build and install minsize and release builds, using --buildtype=release -Dbuild-type-subdir=release
-
Build and run glibc test suite against all four builds
-
-
Test c++ builds using hello-world example on ARM
-
Verify that COPYING.picolibc includes information about the current source files
-
Add release notes to README.md
-
Update meson.build and CMakeLists.txt with new version number
-
Commit release notes and meson.build
$ git commit -m'Version ' README.md meson.build CMakeLists.txt
-
Use native configuration to build release:
$ mkdir -p builds/build-native $ cd builds/build-native $ ../../scripts/do-native-configure $ ninja dist
-
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 ../../../picolibc--.zip . $ scp picolibc--.zip keithp.com:/var/www/picolibc/dist/gnu-arm-embedded
-
Tag release
$ git tag -m'Version <version>' <version> main
- Push tag and branch to repositories
$ git push origin main <version>
- Upload release to web site:
$ scp build-native/meson-dist/* keithp.com:/var/www/picolibc/dist
-
Create new release on picolibc wiki pasting in relevant README.md section.
-
Create new release on github site, pasting in relevant README.md section. Upload release tar and arm embedded toolkit zip files.
-
Email release message to mailing list. Paste in README.md section about the new release.
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:
-
Release upstream picolibc first
-
Checkout debian branch
$ git checkout debian
-
Merge in main at the release tag
$ git merge
-
Update debian packaging to current standards
-
Update debian/copyright from COPYING.picolibc
$ cp COPYING.picolibc
-
Add new Debian change log entry
$ dch -v -1 -D unstable
-
Commit debian changes to repository
$ git commit -m'debian: Version -1' debian/changelog
-
Build debian packages
$ gbp buildpackage
-
Verify package results remain lintian-clean:
$ lintian --info --display-info --pedantic picolibc_-1_amd64.changes
-
Tag release
$ git tag -m'debian: Version <version>-1' <version>-1 debian
- Push tags and branches to salsa
$ git push salsa main debian <version> <version>-1
- Sign and upload source changes:
$ debsign picolibc_<version>-1_source.changes
$ dput picolibc_<version>-1_source.changes