User Tools

Site Tools


developersguide:packagingreleases

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developersguide:packagingreleases [2014/11/11 08:52]
127.0.0.1 external edit
developersguide:packagingreleases [2014/11/12 10:03] (current)
lionelsambuc
Line 1: Line 1:
 +====== Overview of release.sh ======
 +/​usr/​src/​tools/​release.sh generates an .iso image, a livecd and installer cd for minix, a.k.a., a Release.
 +
 +It has two major modes: full release with binary packages and package sources; and 'quick cd' which does
 +nothing with the packages, is faster to make and results in a smaller image.
 +
 +====== Things you should know ======
 +
 +===== ramdisks =====
 +
 +The script uses 3 ramdisks for temporary storage to create the image from. You need enough physical RAM
 +for this.
 +
 +===== SVN / copy =====
 +
 +The default, cleanest mode is to check out trunk from subversion and build the whole system from scratch
 +with the checked out source. This is "​clean"​ because it's crystal clear what this image is built from
 +(revision number is known) and is in theory deterministic for the same svn revision number.
 +
 +Another minor mode, invoked with -c, is to copy your working copy of /usr/src and make a cd with that.
 +
 +===== USRMB =====
 +
 +The USRMB environment variable specifies how big /usr will be on the CD, and determines how big the .iso
 +image will be. You have to set this parameter to a reasonable value yourself. Added to this are the
 +boot image (1.44MB), and the minix root filesystem (16MB). 550MB is the default and is OK for the packages
 +but unnecessarily large without packages. (Only a problem if you transfer it uncompressed or have to burn
 +it to a real CD.)
 +
 +===== Packages =====
 +
 +In packages mode, release.sh retrieves sources and binary packages for the current version from the webserver using wget -c, so in continue mode. It also uses the webserver List file to get the package descriptions and generates its own List file with its own packing list and the webserver'​s List descriptions.
 +
 +====== Packages on the webserver side, binary and source ======
 +
 +The web root is /​usr/​local/​www/​docs/​minix3/​.
 +
 +packages/ contains binary packages.
 +software/ contains source tarballs ('​source packages'​),​ and the index.html with all the packages on it. Paths here are relative to the web root.
 +
 +There is one important script in MakeWeb/​Packages
 +called '​run'​ that maintains the server-side package packman index and html page, and makes source packages. The only practical mode to run it is incremental (sh run -i). It uses the bigports checkout in that directory to access the .descr files (update the bits you know have changed with 'svn update'​ first), generates List index files in packages/ and packages/<​arch>/<​version>,​ checks for the existence of the .tar.bz2 in software/ and generates it if it doesn'​t exist, and updates the software/​index.html page.
 +
 +====== Adding a package ======
 +
 +* First build it on a minix system. Using a checked out copy from bigports, use the '​binpackage'​ script to build and install the software, and bundle the package for you. It does this by executing the build script (build+install package) and then scanning the entire filesystem for new files (skipping a few special case paths). Invocation:
 +
 +# binpackage <​packagedir>​ <​destdir>​
 +
 +where <​packagedir>​ is the dir containing the source package, with the build.minix script, and destdir is where you want the bundled package to go. The name is always <​packagedir>​.tar.bz2.
 +
 +* Upload the binary package to packages/<​arch>/<​version>​
 +
 +* Update the bigports directory if necessary in MakeWeb/​Packages
 +
 +* sh run -i in MakeWeb/​Packages to update the webserver packman List and software/​index.html files.
  
developersguide/packagingreleases.txt · Last modified: 2014/11/12 10:03 by lionelsambuc