Skip to content

Platform_Bootstrap

jrmarino edited this page Sep 10, 2018 · 99 revisions

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 pkg(8).

Programs that must be hand-compiled:

  1. bmake with modifications
  2. custom uname
  3. coreutils
  4. pkg(8)
  5. ravenadm (requires ada compiler)
  6. ravensys-toolchain

Compiling bmake

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

Start manually-assembled jail

mkdir -p ~/ravjail/usr/bin 
cp ~/workzone/bmake/bmake ~/ravjail/usr/bin/make

compiling custom uname

Download https://raw.githubusercontent.com/jrmarino/ravensource/master/bucket_BC/ravensys-uname/files/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/

compiling coreutils

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

Use native versions in our assembled jail

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/

Mtree

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 over headers and system libraries

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/

Build pkg(8) from scratch

Currently pkg(8) is still built with libarchive. Hopefully this will change in the future. Moreover, the ravenport's pkg(8) requires zstd support which is only available in release 3.3.3 of libarchive, which doesn't exist yet.

Build autoconf from source

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

Build automake from source

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

Build zstd from source

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

Build libtoolize from source

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

Build pkgconfig from source

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

Build XZ from source

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

Build libarchive from source

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

build libressl (simpler than openssl)

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

Finally, build pkg(8)

We're going to use an older version of pkg(8) because the build system conversion to autosetup introduced the use of "ar -M" which is a gnu AR-specific command. So download https://codeload.github.com/jrmarino/pkg/tar.gz/38c8e9f?dummy=/pkg-38c8e9f.tar.gz and put it in the distfiles directory.

> cd ~/workzone
> tar -xf distfiles/pkg-38c8e9f.tar.gz
> cd pkg-38c8e9f
> 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

Note: pkg-static wouldn't link statically (similar to linux/solaris).

> cp src/pkg-static ~/ravjail/usr/bin/

Build ravenadm

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.

Build adacurses

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;

Start actual ravenadm build

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/

Build the ravensys-toolchain

build gmp library (static)

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

build mpfr library (static)

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

build mpc library (static)

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

build toolchain binutils

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/

build toolchain gcc

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

compiling digest programs (requires openssl)

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/

Add fake compiler packages

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

Configure ravenadm

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]

Build the fetch program

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

Establish platform information

> 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

Install replicant information

> cd ~/ravjail/usr/share
> cp -a /etc/passwd .
> cp -a /etc/master.passwd .
> cp -a /etc/group .

Try to build something

> 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
You can’t perform that action at this time.