Publishing &os; Installation Media to Project Mirrors This section describes the procedure to publish &os; development snapshots and releases to the Project mirrors. Staging &os; Installation Media Images Staging &os; snapshots and releases is a two part process: Creating the directory structure to match the hierarchy on ftp-master If EVERYTHINGISFINE is defined in the build configuration files, main.conf in the case of the build scripts referenced above, this happens automatically in the &man.chroot.8; after the build is complete, creating the directory structure in ${DESTDIR}/R/ftp-stage with a path structure matching what is expected on ftp-master. This is equivalent to running the following in the &man.chroot.8; directly: &prompt.root; make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage After each architecture is built, thermite.sh will rsync the ${DESTDIR}/R/ftp-stage from the build &man.chroot.8; to /snap/ftp/snapshots or /snap/ftp/releases on the build host, respectively. Copying the files to a staging directory on ftp-master before moving the files into pub/ to begin propagation to the Project mirrors Once all builds have finished, /snap/ftp/snapshots, or /snap/ftp/releases for a release, is polled by ftp-master using rsync to /archive/tmp/snapshots or /archive/tmp/releases, respectively. On ftp-master in the &os; Project infrastructure, this step requires root level access, as this step must be executed as the archive user. Publishing &os; Installation Media Once the images are staged in /archive/tmp/, they are ready to be made public by putting them in /archive/pub/FreeBSD. In order to reduce propagation time, &man.pax.1; is used to create hard links from /archive/tmp to /archive/pub/FreeBSD. In order for this to be effective, both /archive/tmp and /archive/pub must reside on the same logical filesystem. There is a caveat, however, where rsync must be used after &man.pax.1; in order to correct the symbolic links in pub/FreeBSD/snapshots/ISO-IMAGES which &man.pax.1; will replace with a hard link, increasing the propagation time. As with the staging steps, this requires root level access, as this step must be executed as the archive user. As the archive user: &prompt.user; cd /archive/tmp/snapshots &prompt.user; pax -r -w -l . /archive/pub/FreeBSD/snapshots &prompt.user; /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/snapshots/ Replace snapshots with releases as appropriate.