-
Notifications
You must be signed in to change notification settings - Fork 8
Platform_Bootstrap
The objective here is to hand-construct a build environment for Ravenadm, one that is capable enough to build a brand new environment, ravenadm, and ravensw(8).
Programs that must be hand-compiled:
- bmake with modifications
- custom uname
- coreutils
- ravensw(8)
- ravenadm (requires ada compiler)
- ravensys-toolchain
The BSD make that ravenports uses is modified to provide additional information and this modification is required for the bootstrap environment. Use the following patch as a template:
--- main.c.orig 2017-01-14 23:09:40 UTC
+++ main.c
@@ -1063,6 +1063,12 @@ main(int argc, char **argv)
Var_Set(".MAKE.PID", tmp, VAR_GLOBAL, 0);
snprintf(tmp, sizeof(tmp), "%u", getppid());
Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.NAME", OSNAME, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.VERSION", OSVERSION, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.RELEASE", OSRELEASE, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.MAJOR", OSMAJOR, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.ARCHITECTURE", OSARCH, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.ARCH.STANDARD", STDARCH, VAR_GLOBAL, 0);
}
if (makelevel > 0) {
char pn[1024];
so for macos, this converts to:
--- main.c.orig 2017-01-14 23:09:40 UTC
+++ main.c
@@ -1063,6 +1063,12 @@ main(int argc, char **argv)
Var_Set(".MAKE.PID", tmp, VAR_GLOBAL, 0);
snprintf(tmp, sizeof(tmp), "%u", getppid());
Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.NAME", "MacOS", VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.VERSION", "170700", VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.RELEASE", "17.7.0", VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.MAJOR", "17.7", VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.ARCHITECTURE", "x86_64", VAR_GLOBAL, 0);
+ Var_Set(".MAKE.OS.ARCH.STANDARD", "x86_64", VAR_GLOBAL, 0);
}
if (makelevel > 0) {
char pn[1024];
In the above case, the .MAKE.OS.VERSION is invented based on Darwin Kernel Version 17.7.0. This information will likely never be used by a Ravenport (Its much more likely to be used to distinguish BSD versions). The release version was provided by /usr/bin/sw_vers.
> cd ~/
> mkdir -p workzone/distfiles
Download ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg/bmake-20180512.tar.gz into ~/workzone/distfiles (e.g. with curl or browser). Also create the patch above and put it at ~/workzone/distfiles/patch-bmake
> cd ~/workzone
> tar -xf ~/downloads/bmake-20180512.tar.gz
> cd bmake
> patch < ../distfiles/patch-bmake
./configure --prefix=/raven \
--with-default-sys-path="/xports/Mk:/raven/share/mk" \
--with-machine-arch=x86_64 \
--with-mksrc=no
> /bin/sh ./make-bootstrap.sh
mkdir -p ~/ravjail/usr/bin
cp ~/workzone/bmake/bmake ~/ravjail/usr/bin/make
Download https://raw.githubusercontent.com/Ravenports/ravensys-utils/master/uname/uname.c.in to ~/workzone/distfiles
> mkdir -p ~/workzone/uname
> cd ~/workzone/uname
> sed -e 's|@OPSYS@|Darwin|g' \
-e 's|@ARCH@|x86_64|g' \
-e 's|@PLATFORM@|x86_64|g' \
-e 's|@RELEASE@|17-RAVEN|g' \
-e 's|@USERVER@|170700|g' \
../distfiles/uname.c.in > uname.c
> cc uname.c -o uname
> cp uname ~/ravjail/usr/bin/
Download the latest coreutils https://ftp.gnu.org/gnu/coreutils/coreutils-8.30.tar.xz into the distfiles directory.
> cd ~/workzone
> tar -xf ~/distfiles/coreutils-8.30.tar.xz
> cd ~/coreutils-8.30
> ./configure --prefix=/raven --disable-nls --without-gmp
> make
> sudo make install
Copy from /raven/bin into ~/ravjail/bin: [, cat, chmod, cp, date, echo, expr, kill, link, ln, ls, mkdir, mv, pwd, realpath, rm, rmdir, sleep, test, unlink
Copy from /raven/bin into ~/ravjail/usr/bin: basename, chgrp, chown, comm, cut, dirname, env, false, head, id, install, join, mkfifo, od, printenv, printf, readlink, seq, sort, tail, tee, touch, tr, true, tsort, uniq, wc, whoami
cp /bin/pax ~/ravjail/bin/
cp /bin/sh ~/ravjail/bin/
cp /bin/hostname ~/ravjail/bin/
cp /usr/bin/awk ~/ravjail/usr/bin/
cp /usr/bin/bunzip2 ~/ravjail/usr/bin/
cp /usr/bin/bzip2 ~/ravjail/usr/bin/
cp /usr/bin/cmp ~/ravjail/usr/bin/
cp /usr/bin/cpio ~/ravjail/usr/bin/
cp /usr/bin/egrep ~/ravjail/usr/bin/
cp /usr/bin/grep ~/ravjail/usr/bin/
cp /usr/bin/fgrep ~/ravjail/usr/bin/
cp /usr/bin/flex ~/ravjail/usr/bin/
cp /usr/bin/flex++ ~/ravjail/usr/bin/
cp /usr/bin/gunzip ~/ravjail/usr/bin/
cp /usr/bin/gzip ~/ravjail/usr/bin/
cp /usr/bin/patch ~/ravjail/usr/bin/
cp /usr/bin/which ~/ravjail/usr/bin/
cp /usr/bin/xargs ~/ravjail/usr/bin/
cp /usr/bin/find ~/ravjail/usr/bin/
cp /usr/bin/diff ~/ravjail/usr/bin/
cp /usr/bin/yacc ~/ravjail/usr/bin/
cp /usr/bin/sed ~/ravjail/usr/bin/
cp /usr/bin/tar ~/ravjail/usr/bin/
cp /usr/bin/m4 ~/ravjail/usr/bin/
mkdir -p ~/ravjail/usr/share/file/
cp /usr/bin/file ~/ravjail/usr/bin/
cp /usr/share/file/magic.mgc ~/ravjail/usr/share/file/
Often mtree has to be built from source (see ravenports mtree port for source) However, on MacOS, it's a native program, so just copy it over
cp /usr/sbin/mtree ~/ravjail/usr/bin/
Copy everything over, then weed out directories that could cause configuration and build issues
cp -a /usr/include ~/ravjail/usr/
cd ~/ravjail/usr/include
rm -rf python2.6/
rm -rf python2.7/
rm -rf php/
rm -rf c++/
rm -rf libxml2/
rm -rf libxslt/
rm -rf apache2/
cp -a /usr/lib ~/ravjail/usr/
Currently ravensw(8) is still built with libarchive. Hopefully this will change in the future. Moreover, the ravenport's ravensw(8) requires zstd support which is only available in release 3.3.3 of libarchive, which doesn't exist yet.
Download ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz and put in distfiles directory.
> cd ~/workzone
> tar -xf distfiles/autoconf-2.69.tar.xz
> cd autoconf-2.69
> ./configure --prefix=/raven --without-lispdir
> make
> make install
Download ftp://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz and put in distfiles directory.
> cd ~/workzone
> tar -xf distfiles/automake-1.16.1.tar.xz
> cd automake-1.16.1
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure --prefix=/raven
> make
> sudo make install
Download tarball from https://github.com/facebook/zstd/archive/v1.3.5.tar.gz and put in distfiles directory.
> cd ~/workzone
> tar -xf distfiles/zstd-1.3.5.tar.gz
> cd zstd-1.3.5
> make prefix=/raven
> sudo make prefix=/raven install
Download tarball from http://mirrors.syringanetworks.net/gnu/libtool/libtool-2.4.6.tar.xz and put in the distfiles directory.
> cd ~/workzone
> tar -xf disfiles/libtool-2.4.6.tar.xz
> cd libtool-2.4.6.tar.xz
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--disable-ltdl-install \
--program-prefix=g
> make
> sudo make install
Download tarball from https://distfiles.dereferenced.org/pkgconf/pkgconf-1.5.3.tar.xz and put in distfiles directory.
> cd ~/workzone
> tar -xf distfiles/pkgconf-1.5.3.tar.xz
> cd pkgconf-1.5.3
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--with-pkg-config-dir=/usr/lib/pkgconfig:/raven/lib/pkgconfig \
--with-system-libdir=/lib:/usr/lib \
--with-system-includedir=/usr/include
> make
> sudo make install
Download tarball from https://tukaani.org/xz/xz-5.2.4.tar.gz and put in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/xz-5.2.4.tar.gz
> cd xz-5.2.4
> ./configure --prefix=/raven --disable-nls --disable-doc
> make
> sudo make install
Download libarchive-3.3.3.tar.gz tarball from http://libarchive.org/downloads/ and put in in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/libarchive-3.3.3.tar.gz
> cd libarchive-3.3.3
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin CFLAGS=-I/raven/include CPPFLAGS=-I/raven/include ./configure \
--prefix=/raven \
--without-xml2 \
--without-iconv \
--without-lz4 \
--without-xml2 \
--without-expat \
--with-bz2lib \
--with-lzma \
--with-zlib \
--with-zstd \
--enable-shared=yes \
--enable-bsdtar=no \
--enable-bsdcat=no \
--enable-bsdcpio=no
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Download tarball from https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.4.tar.gz and put it in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/libressl-2.7.4.tar.gz
> cd libressl
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--disable-hardening
> make
> sudo make install
Download https://github.com/Ravenports/ravensw/archive/refs/tags/1.11.1_rev10.tar.gz and put it in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/1.11.1_rev10.tar.gz
> cd ravensw-1.11.1_rev10
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin LIBTOOLIZE=glibtoolize ./autogen.sh
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin \
CFLAGS=-I/raven/include LDFLAGS="-L/raven/lib -Wl,-rpath,/raven/lib" ./configure \
--mandir=/raven/share/man \
--disable-maintainer-mode \
--prefix=/raven
> ~/ravjail/usr/bin/make -m ~/workzone/mk CFLAGS=-I/raven/include \
LDFLAGS="-L/raven/lib -Wl,-rpath,/raven/lib"
> sudo make install
> cp src/ravensw ~/ravjail/usr/bin/
Macos already has libncurses installed on the system. We're going to use that for the bootstrap. The Ada Compiler with downloaded from https://www.adacore.com/download and installed.
Obtain the tarball from https://invisible-mirror.net/archives/AdaCurses/AdaCurses-20180127.tgz and put into distfiles directory.
> cd ~/workzone
> tar -xf distfiles/AdaCurses-20180127.tgz
> cd AdaCurses-20180127
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--with-ada-include=/raven/include/adacurses \
--with-ada-objects=/raven/lib/adacurses \
--libdir=/raven/lib/adacurses \
--prefix=/raven
env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ~/ravjail/usr/bin/make -m ~/workzone/mk
sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ~/ravjail/usr/bin/make -m ~/workzone/mk install
Add the following file to /raven/share/gprconfig/adacurses.gpr
library project ADACURSES is
for Languages use ("Ada");
type Link_Style is ("dynamic", "static");
type Capability is ("yes", "no");
Ncurses_Link : Link_Style := external ("NCURSES_LINK", "dynamic");
Add_Menu : Capability := external ("NCURSES_MENU", "no");
Add_Form : Capability := external ("NCURSES_FORM", "no");
Add_Panel : Capability := external ("NCURSES_PANEL", "no");
for Source_Dirs use ("../../include/adacurses");
for Library_Dir use "../../lib/adacurses";
for Library_Name use "AdaCurses";
for Library_Kind use "static";
for Externally_Built use "True";
D_Base_Flags := ("-lncurses");
S_Base_Flags := ("/usr/lib/libncurses.a");
D_Menu_Flags := ();
S_Menu_Flags := ();
D_Form_Flags := ();
S_Form_Flags := ();
D_Panel_Flags := ();
S_Panel_Flags := ();
case Add_Menu is
when "no" => null;
when "yes" => D_Menu_Flags := ("-lmenu");
S_Menu_Flags := ("/usr/lib/libmenu.a");
end case;
case Add_Form is
when "no" => null;
when "yes" => D_Form_Flags := ("-lform");
S_Form_Flags := ("/usr/lib/libform.a");
end case;
case Add_Panel is
when "no" => null;
when "yes" => D_Panel_Flags := ("-lpanel");
S_Panel_Flags := ("/usr/lib/libpanel.a");
end case;
package Linker is
case Ncurses_Link is
when "dynamic" =>
for Linker_Options use
D_Base_Flags & D_Menu_Flags & D_Form_Flags & D_Panel_Flags;
when "static" =>
for Linker_Options use
S_Base_Flags & S_Menu_Flags & S_Form_Flags & S_Panel_Flags;
end case;
end Linker;
end ADACURSES;
Download latest release (e.g. https://github.com/jrmarino/ravenadm/archive/v1.10.tar.gz) and put it in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/ravenadm-1.10.tar.gz
> cd ravenadm-1.10
> sed -i'' -e 's|:= dragonfly|:= macos|' src/definitions.ads
> sed -i'' -e 's|"-gnat|"-g", "-gnat|' ravenadm.gpr
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin \
gprbuild -aP /raven/share/gprconfig -p -P ravenadm
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin \
gcc ravenexec/ravenexec.c -o build/ravenexec
> sudo mkdir -p /raven/libexec /raven/share/ravenadm
> sudo cp build/ravenexec /raven/libexec/
> sudo cp www/* /raven/share/ravenadm/
Download gmp-6.1.2.tar.tx from https://ftp.gnu.org/gnu/gmp/ and put it into the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/gmp-6.1.2.tar.xz
> cd gmp-6.1.2
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--build=x86_64-raven-darwin17.7.0 \
--enable-cxx \
--enable-shared=no \
--enable-static=yes
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Download mpfr-4.0.1.tar.xz from http://www.mpfr.org/mpfr-4.0.1/ and put it into the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/mpfr-4.0.1.xz
> cd mpfr-4.0.1
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--with-gmp=/raven \
--enable-shared=no \
--enable-static=yes
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Download mpc-1.0.0.tar.gz from https://ftp.gnu.org/gnu/mpc/ and put it into the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/mpc-1.0.0.tar.gz
> cd mpc-1.0.0
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--prefix=/raven \
--with-gmp=/raven \
--with-mpfr=/raven \
--enable-shared=no \
--enable-static=yes
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Download binutils-2.30.tar.xz from https://ftp.gnu.org/gnu/binutils/ and put it in distfiles directory.
> cd ~/workzone
> tar -xf distfiles/binutils-2.30.tar.xz
> cd binutils-2.30
> env PATH=/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ./configure \
--build=x86_64-raven-darwin17.7.0 \
--target=x86_64-raven-darwin17.7.0 \
--prefix=/raven/toolchain \
--disable-werror \
--disable-shared \
--with-system-zlib \
--with-gmp=/raven \
--with-mpfr=/raven \
--with-lib-path=/usr/lib \
--enable-targets-all \
--enable-x86-relax-relocations=no \
--enable-plugins \
--enable-relro=no
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Note that "ld" and "as" and "gprof" programs will not build on MacOS. The gold linker is ELF-only so it will not build either. The "nm", "ar", and "ranlib" program are not usable by gcc on macos, so they need to be replaced by native versions. The "strip" program also works differently.
> sudo cp /usr/bin/as /raven/toolchain/bin/
> sudo cp /usr/bin/ld /raven/toolchain/bin/
Download gcc-8.2.0.tar.xz from gnu mirror and put it distfiles directory. Download patch-diff-ada, patch-diff-core, patch-diff-cxx from https://github.com/jrmarino/ravensource/tree/master/bucket_D6/gcc8/patches and put them in the distfiles directory.
> cd ~/workzone
> tar -xf distfiles/gcc-8.2.0.tar.xz
> cd gcc-8.2.0
> patch -p0 < ../distfiles/patch-diff-ada
> patch -p0 < ../distfiles/patch-diff-core
> patch -p0 < ../distfiles/patch-diff-cxx
> sed -i.bak -e 's;\@PREFIX\@;/raven/toolchain;' -e 's;\@GCCAUX\@;gcc8;' gcc/config/darwin.h
> sed -i.bak -e 's|/usr/bin/addr2line|/raven/toolchain/bin/addr2line|g' gcc/ada/traceback_symbolic.c
> mkdir ../gcc8-build
> cd ../gcc8-build
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/toolchain/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin ../gcc-8.2.0/configure \
--build=x86_64-raven-darwin17.7.0 \
--target=x86_64-raven-darwin17.7.0 \
--prefix=/raven/toolchain/gcc8 \
--with-local-prefix=/raven \
--enable-languages="c,c++,ada,fortran" \
--with-system-zlib \
--with-gmp=/raven \
--with-mpc=/raven \
--with-mpfr=/raven \
--enable-shared \
--enable-threads=posix \
--enable-checking=release \
--enable-libquadmath \
--disable-nls \
--disable-multilib \
--disable-libsanitizer \
--disable-libvtv \
--disable-libmpx \
--disable-libcilkrts \
--with-as=/raven/toolchain/bin/as \
--with-ld=/raven/toolchain/bin/ld \
--with-pkgversion="Ravenports"
> env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/toolchain/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make
> sudo env PATH=/Users/jrmarino/opt/GNAT/2018/bin:/raven/toolchain/bin:/raven/bin:/usr/bin:/bin:/usr/sbin:/sbin make install
Download all files from https://github.com/jrmarino/ravensource/tree/master/bucket_B3/sha256/files and place them in ~/workzone/sha256
> cd ~/workzone/sha256
> ~/ravjail/usr/bin/make -m ~/workzone/mk PREFIX=/raven
> sudo cp sha256 md5 ~/ravjail/bin/
These packages don't exist yet, so we'll put in placeholders and use an environment variable to build packages without them (only during the bootstrap process, of course)
> sudo mkdir /raven/toolchain/share
> cd /raven/toolchain/share
> sudo touch binutils-single-ravensys-2.31.1.tzst
> sudo touch gcc8-ada_run-standard-8.2.0.tzst
> sudo touch gcc8-compilers-standard-8.2.0.tzst
> sudo touch gcc8-complete-standard-8.2.0.tzst
> sudo touch gcc8-cxx_run-standard-8.2.0.tzst
> sudo touch gcc8-fortran_run-standard-8.2.0.tzst
> sudo touch gcc8-infopages-standard-8.2.0.tzst
> sudo touch gcc8-libs-standard-8.2.0.tzst
> cd /raven/toolchain/gcc8/bin
> cp gcc cc
> cp g++ CC
Change directory to where ravenadm was built, then:
> sudo mkdir -p /var/obj/ravenports
> sudo ./ravenadm configure
=> press [>] to create a new profile
=> name the new profile "bootstrap"
=> press [A] to set root directory
=> enter something like "/Users/jrmarino/ravjail"
=> press [B] to set toolchain
=> enter "/raven/toolchain"
=> press [J] to set build base (/usr/obj can't be used on macos)
=> enter "/var/obj/ravenports"
=> press [return]
First, download all the files from https://github.com/jrmarino/ravensource/tree/master/bucket_AD/fetch/files into ~/workzone/fetch-files
> cd ~/workzone/fetch-files
> ~/ravjail/usr/bin/make -m ~/workzone/mk PREFIX=/raven
> sudo cp fetch ~/ravjail/usr/bin
> echo "170700" > ~/ravjail/usr/share/OSVERSION
> echo "17.7.0" > ~/ravjail/usr/share/OSRELEASE
> echo "17.7" > ~/ravjail/usr/share/OSMAJOR
> echo "x86_64" > ~/ravjail/usr/share/STDARCH
> cd ~/ravjail/usr/share
> cp -a /etc/passwd .
> cp -a /etc/master.passwd .
> cp -a /etc/group .
> sudo mkdir -p /var/ravenports/conspiracy
> sudo mkdir -p /var/ravenports/distfiles
> sudo mkdir -p /var/ravenports/bootstrap
> sudo ./ravenadm update-ports
> sudo ./ravenadm test indexinfo
- RPG Ch. 1: Introduction
- RPG Ch. 2: Making a new port
- RPG Ch. 3: Specification File
- RPG Ch. 4: Description Files
- RPG Ch. 5: Distinfo File
- RPG Ch. 6: Manifest Files
- RPG Ch. 7: Patches, Triggers, etc
- RPG Ch. 8: Package Operations Scripts
- RPG Ch. 9: Port Options
- RPG Ch. 10: USES Modules
- RPG Ch. 11: Special Considerations
- RPG Ch. 12: Testing
- RPG Ch. 13: Updating
- RPG Ch. 14: Walk-Through