Some helpful info about using these scripts.... There are a few categories of scripts: - release scripts * release.py * uninative.py * unihash.py (used along with uninative.py for a uninative release) - release notes generation scripts * relnotes.py - utils/reused code * utils.py - useful things * get_cves.py Takes a revision range and spits out the CVES in the git log between the revisions. Works for poky. Not intended to necessarily work elsewhere. This is handy if you have a release that does not include some CVE fixes, but you want to list them in the Known Issues in RELEASENOTES for that release. The 2.6 Thud release is an example. This script was used to generate the list included in the Known Issues for the Thud release. * get_hashes.py This looks in the RC directory and snags the hashes for the various tarballs we release. This info is passed to Michael Halstead who uses it for tagging repos. Also just generally useful. * rel_type.py This lives in utils.py (definitive version), but is kind of handy by itself from time to time. * where_am_i.py This snippet looks at the hostname and make a guess as to what path the autobuilder output will be found. The legacy path was /srv/www/vhosts. On newer AB clusters, this is now generally /srv/autobuilder. There is at least one case where this still applies. This wagers a guess as to which one to use based on which cluster we are on. Also lives in utils.py (definitive version), but is occasionally useful standalone. Since usage help is available in each script, it is not included here. Yocto Release Process ===================== This section deals with the Yocto release process as it pertains to the tools in this repo. There are other release activities that happen which outside the scope of this document. For more information on Yocto releases, please see: https://wiki.yoctoproject.org/wiki/Yocto_Release_Engineering Preparing the Release --------------------- The scripts in this repo do two primary things: prepare the release directory containing all the release artifacts, and generate the errata and release notes as needed releases for each type of release (Major, Point or "Dot", and Milestone). Preparing, or "staging," the release entails the following: 1) Rsync the rc candidate to a staging dir where all work happens. We NEVER touch the actual RC directory, for safety, in case something goes wrong. 2) Convert the symlinks in build-appliance dir. The build creates symlinks in some places, and we don't want to release those. This is one such occurance, so we convert that link to a real file. 3) Convert the symlinks in the machines subdirectory and clean up any files that we don't wish to publish, such as .iso and .tgz files. 4) Rename the release tarballs with the release naming conventions. They start out with just the commit hash in the filename. We "clean" that up and replace it with the release codename (i.e. rocko, sumo, thud) and the Poky version (i.e. 18.0.0, 19.0.1, 20.0.0, etc). We then create a symlink with the original filename with the hash to the new tarball. Not done for milestone releases. 5) We copy the Eclipse artifacts to a staging directory where they are made available externally. To do this, we copy the Eclipse plugin archive file over to the correct location, and explode it. This is not done for milestone releases. 6) Make the BSP tarballs. For each machine in the machines subdirectory, we repackage the :wq print "Generating the BSP tarballs." logging.info('Generating BSP tarballs.') make_bsps(BSP_LIST, BSP_DIR) logging.info('Successful.') # 7) Generate the master sha256sum file for the release (for all releases, except milestones) print "Generating the master sha256sum table." logging.info('Generating the master sha256sum table.') gen_rel_sha(RELEASE_DIR, REL_SHA_FILE) logging.info('Successful.') Contributing ============ This module is owned by Lee Chee Yang . Patches should be sent via git-send-email to the yocto@yoctoproject.org mailing list with [release-tools] in the subject, CC'd to Chee Yang. The following commands will configure this if ran inside a clone of release-tools: $ git config --local --add format.subjectprefix 'PATCH release-tools' $ git config --local --add sendemail.to yocto@yoctoproject.org $ git config --local --add sendemail.cc chee.yang.lee@intel.com Then sending a patch is as simple as: $ git send-email origin/master