This shows you the differences between two versions of the page.
developersguide:packagingreleases [2014/11/11 14:52] 127.0.0.1 external edit |
developersguide:packagingreleases [2014/11/12 16: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. | ||