From 2005fe8e66d5908786530e14bc12c218a887fbb9 Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Wed, 23 Nov 2022 15:09:21 +0100 Subject: [PATCH 1/3] Switch max jobs to something auto adjusting --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 684a6f8..967478f 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ STAMPS=$(PWD)/stamps ARCHIVES=$(PWD)/archives # Max jobs for sub-builds -MAX_JOBS= 12 +MAX_JOBS=$(shell psrinfo -t -c) BLDENV= $(PWD)/illumos-gate/usr/src/tools/scripts/bldenv From e926c29d8669a666f3ce7b2123a88fbe3f2a44b3 Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Sat, 10 Dec 2022 16:44:43 +0100 Subject: [PATCH 2/3] WIP --- Makefile | 87 ++++++++++++++------------- openindiana-vagrant-setup/.gitignore | 1 + openindiana-vagrant-setup/Vagrantfile | 86 ++++++++++++++++++++++++++ 3 files changed, 131 insertions(+), 43 deletions(-) create mode 100644 openindiana-vagrant-setup/.gitignore create mode 100644 openindiana-vagrant-setup/Vagrantfile diff --git a/Makefile b/Makefile index 967478f..a2ffc47 100644 --- a/Makefile +++ b/Makefile @@ -13,9 +13,6 @@ STAMPS=$(PWD)/stamps # Where source archives end up ARCHIVES=$(PWD)/archives -# Max jobs for sub-builds -MAX_JOBS=$(shell psrinfo -t -c) - BLDENV= $(PWD)/illumos-gate/usr/src/tools/scripts/bldenv # OmniOS puts GMP headers in a weird place, know where to find them. @@ -25,6 +22,10 @@ GMPINCDIR= /usr/include/gmp # (directory changes in rules?) and it gets bogus dependencies and always # rebuilds everything (which, to be fair, often happens anyway). +.KEEP_STATE: + +.NOTPARALLEL: + SETUP_TARGETS = \ binutils-gdb \ crt \ @@ -124,15 +125,15 @@ $(STAMPS)/binutils-gdb-stamp: --target=aarch64-unknown-solaris2.11 \ --prefix=$(CROSS) \ --enable-initfini-array && \ - gmake -j $(MAX_JOBS) CPPFLAGS+='-I$(GMPINCDIR)' && \ - gmake -j $(MAX_JOBS) install) && \ + gmake CPPFLAGS+='-I$(GMPINCDIR)' && \ + gmake install) && \ touch $@ # Build a tools ld and headers and copy them into the sysroot (in the normal place) sgs: $(STAMPS)/sgs-stamp $(STAMPS)/sgs-stamp: (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/; make -j $(MAX_JOBS) bldtools sgs' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/; make bldtools sgs' && \ rsync -a usr/src/tools/proto/root_i386-nd/ $(CROSS)/ && \ mkdir -p $(SYSROOT)/usr/include && \ rsync -a proto/root_aarch64/usr/include/ $(SYSROOT)/usr/include/) && \ @@ -168,15 +169,15 @@ $(STAMPS)/gcc-stamp: sgs binutils-gdb --with-as=$(CROSS)/bin/aarch64-unknown-solaris2.11-as \ --without-gnu-ld \ --with-ld=$(CROSS)/opt/onbld/bin/amd64/ld && \ - gmake -j $(MAX_JOBS) && \ - gmake -j $(MAX_JOBS) install && \ + gmake && \ + gmake install && \ rm -fr $(CROSS)/lib/gcc/aarch64-unknown-solaris2.11/10.3.0/include-fixed) && \ touch $@ crt: $(STAMPS)/crt-stamp $(STAMPS)/crt-stamp: sgs gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/crt; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/crt; make install' && \ mkdir -p $(SYSROOT)/usr/lib/aarch64 && \ cp proto/root_aarch64/usr/lib/*.o $(SYSROOT)/usr/lib/) && \ touch $@ @@ -184,7 +185,7 @@ $(STAMPS)/crt-stamp: sgs gcc libc: $(STAMPS)/libc-stamp $(STAMPS)/libc-stamp: ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libc; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libc; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libc.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -194,7 +195,7 @@ $(STAMPS)/libc-stamp: ssp_ns gcc libm: $(STAMPS)/libm-stamp $(STAMPS)/libm-stamp: ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libm_aarch64; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libm_aarch64; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libm.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -204,7 +205,7 @@ $(STAMPS)/libm-stamp: ssp_ns gcc libsocket: $(STAMPS)/libsocket-stamp $(STAMPS)/libsocket-stamp: libnsl ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libsocket; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libsocket; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libsocket.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -214,7 +215,7 @@ $(STAMPS)/libsocket-stamp: libnsl ssp_ns gcc libkstat: $(STAMPS)/libkstat-stamp $(STAMPS)/libkstat-stamp: libc ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libkstat; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libkstat; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libkstat.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -224,7 +225,7 @@ $(STAMPS)/libkstat-stamp: libc ssp_ns gcc libnsl: $(STAMPS)/libnsl-stamp $(STAMPS)/libnsl-stamp: libmp libmd libc ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libnsl; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libnsl; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libnsl.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -234,7 +235,7 @@ $(STAMPS)/libnsl-stamp: libmp libmd libc ssp_ns gcc libmd: $(STAMPS)/libmd-stamp $(STAMPS)/libmd-stamp: libc ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmd; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmd; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libmd.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -244,7 +245,7 @@ $(STAMPS)/libmd-stamp: libc ssp_ns gcc libmp: $(STAMPS)/libmp-stamp $(STAMPS)/libmp-stamp: libc ssp_ns gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmp; make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmp; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libmp.* $(SYSROOT)/usr/lib/ && \ mkdir -p $(SYSROOT)/lib && \ @@ -261,8 +262,8 @@ $(STAMPS)/zlib-stamp: libc ssp_ns gcc LDSHARED="$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc -shared" \ CFLAGS="--sysroot=$(SYSROOT) -fpic" \ ../../zlib-1.2.12/configure --shared --prefix=$(SYSROOT)/usr && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin:$$PATH" gmake && \ + env PATH="$(CROSS)/bin:$$PATH" gmake install) && \ touch $@ libxml2: $(STAMPS)/libxml2-stamp @@ -278,8 +279,8 @@ $(STAMPS)/libxml2-stamp: libc libm libmp libmd zlib ssp_ns gcc --without-zlib \ --without-lzma \ --without-python && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) LDFLAGS+="-lsocket -lnsl -lmd" && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin:$$PATH" gmake LDFLAGS+="-lsocket -lnsl -lmd" && \ + env PATH="$(CROSS)/bin:$$PATH" gmake install) && \ touch $@ idnkit: $(STAMPS)/idnkit-stamp @@ -292,14 +293,14 @@ $(STAMPS)/idnkit-stamp: libc ssp_ns gcc --host=aarch64-unknown-solaris2.11 \ --with-sysroot=$(SYSROOT) \ --prefix=$(SYSROOT)/usr && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin:$$PATH" gmake && \ + env PATH="$(CROSS)/bin:$$PATH" gmake install) && \ touch $@ ssp_ns: $(STAMPS)/ssp_ns-stamp $(STAMPS)/ssp_ns-stamp: gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/ssp_ns && make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/ssp_ns && make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libssp* $(SYSROOT)/usr/lib/) && \ touch $@ @@ -307,9 +308,9 @@ $(STAMPS)/ssp_ns-stamp: gcc libc-filters: $(STAMPS)/libc-filters-stamp $(STAMPS)/libc-filters-stamp: libc gcc (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/librt && make -j $(MAX_JOBS) install' && \ - $(BLDENV) ../env/aarch64 'cd usr/src/cmd/sgs/libdl && make -j $(MAX_JOBS) install' && \ - $(BLDENV) ../env/aarch64 'cd usr/src/lib/libpthread && make -j $(MAX_JOBS) install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/librt && make install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/cmd/sgs/libdl && make install' && \ + $(BLDENV) ../env/aarch64 'cd usr/src/lib/libpthread && make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/librt.* $(SYSROOT)/usr/lib/ && \ rsync -a proto/root_aarch64/usr/lib/libdl.* $(SYSROOT)/usr/lib/ && \ @@ -335,8 +336,8 @@ $(STAMPS)/libstdc++-stamp: libc libc-filters ssp_ns gcc ../../gcc/libstdc++-v3/configure \ --host=aarch64-unknown-solaris2.11 \ --prefix=$(SYSROOT)/usr && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin:$$PATH" gmake && \ + env PATH="$(CROSS)/bin:$$PATH" gmake install) && \ touch $@ nspr: $(STAMPS)/nspr-stamp @@ -351,8 +352,8 @@ $(STAMPS)/nspr-stamp: libc libc-filters ssp_ns gcc --libdir=$(SYSROOT)/usr/lib/mps \ --bindir=$(SYSROOT)/usr/bin \ --includedir=$(SYSROOT)/usr/include/mps && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake install) && \ touch $@ # XXXARM: This is horrid, I'm sorry @@ -368,8 +369,8 @@ $(STAMPS)/nss-stamp: libc libc-filters libkstat ssp_ns gcc ROOT=$(SYSROOT) \ aarch64_PRIMARY_CC=gcc10,$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc,gnu \ aarch64_SYSROOT=$(SYSROOT); \ - make -j $(MAX_JOBS) -e install_h && \ - make -j $(MAX_JOBS) -e install) && \ + make -e install_h && \ + make -e install) && \ touch $@ openssl: $(STAMPS)/openssl-stamp @@ -387,8 +388,8 @@ $(STAMPS)/openssl-stamp: libc libc-filters libsocket libnsl zlib ssp_ns gcc shared threads zlib enable-ec_nistp_64_gcc_128 no-asm \ solaris-aarch64-gcc \ && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake install) && \ touch $@ xorriso: $(STAMPS)/xorriso-stamp @@ -401,19 +402,19 @@ $(STAMPS)/xorriso-stamp: libc libc-filters ssp_ns gcc --build=i386-pc-solaris2.11 \ --host=aarch64-unknown-solaris2.11 \ --prefix=$(SYSROOT)/usr && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) && \ - env PATH="$(CROSS)/bin/:$$PATH" gmake -j $(MAX_JOBS) install) && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake && \ + env PATH="$(CROSS)/bin/:$$PATH" gmake install) && \ touch $@ u-boot: $(STAMPS)/u-boot-stamp $(STAMPS)/u-boot-stamp: cd u-boot && \ - gmake V=1 O=$(PWD)/build/u-boot \ + gmake -s V=1 O=$(PWD)/build/u-boot \ HOSTCC="gcc -m64" \ HOSTCFLAGS+="-I/opt/ooce/include" \ HOSTLDLIBS+="-L/opt/ooce/lib/amd64 -lnsl -lsocket" \ sandbox_defconfig && \ - gmake V=1 O=$(PWD)/build/u-boot \ + gmake -s V=1 O=$(PWD)/build/u-boot \ HOSTCC="gcc -m64" \ HOSTCFLAGS+="-I/opt/ooce/include" \ HOSTLDLIBS+="-L/opt/ooce/lib/amd64 -lnsl -lsocket" tools && \ @@ -434,14 +435,14 @@ $(STAMPS)/dtc-stamp: illumos: $(STAMPS)/illumos-stamp $(STAMPS)/illumos-stamp: setup (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src; make -j $(MAX_JOBS) setup' && \ - $(BLDENV) ../env/aarch64 'cd usr/src; make -j $(MAX_JOBS) install') && \ + $(BLDENV) ../env/aarch64 'cd usr/src; make setup' && \ + $(BLDENV) ../env/aarch64 'cd usr/src; make install') && \ touch $@ illumos-pkgs: $(STAMPS)/illumos-pkgs $(STAMPS)/illumos-pkgs: (cd illumos-gate && \ - $(BLDENV) ../env/aarch64 'cd usr/src/pkg; make -j $(MAX_JOBS) install') && \ + $(BLDENV) ../env/aarch64 'cd usr/src/pkg; make install') && \ touch $@ disk: illumos-pkgs @@ -467,7 +468,7 @@ clean-illumos: (cd illumos-gate && \ rm -fr packages && \ rm -fr proto && \ - $(BLDENV) ../env/aarch64 'cd usr/src; make -j $(MAX_JOBS) clobber') + $(BLDENV) ../env/aarch64 'cd usr/src; make clobber') # XXXARM: I am, once again, sorry about this. clean-nss: @@ -481,7 +482,7 @@ clean-nss: ROOT=$(SYSROOT) \ aarch64_PRIMARY_CC=gcc10,$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc,gnu \ aarch64_SYSROOT=$(SYSROOT); \ - make -j $(MAX_JOBS) -e clobber) + make -e clobber) clean: clean-dtc clean-illumos clean-nss rm -fr $(SYSROOT) $(BUILDS) $(STAMPS) $(CROSS) diff --git a/openindiana-vagrant-setup/.gitignore b/openindiana-vagrant-setup/.gitignore new file mode 100644 index 0000000..8000dd9 --- /dev/null +++ b/openindiana-vagrant-setup/.gitignore @@ -0,0 +1 @@ +.vagrant diff --git a/openindiana-vagrant-setup/Vagrantfile b/openindiana-vagrant-setup/Vagrantfile new file mode 100644 index 0000000..b5188c8 --- /dev/null +++ b/openindiana-vagrant-setup/Vagrantfile @@ -0,0 +1,86 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure("2") do |config| + # Every Vagrant development environment requires a box. You can search for + # boxes at https://atlas.hashicorp.com/search. + config.vm.box = "openindiana/hipster" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + config.vm.box_check_update = true + + # Unless OpenIndiana is better supported in vagrant, we have to use this + # workaround. The problem with vagrant is that it creates folder as root:root, + # but rsync connects as vagrant and thus fails to write. + config.vm.synced_folder "..", "/vagrant", type: "rsync", + rsync__args: ["--verbose", "--archive", "-zz", "--copy-links"], + rsync__rsync_path: "pfexec rsync", owner: "vagrant", group: "vagrant" + + # Autoconfigure resources for development VM. The snippet is taken from + # https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck. + # We allocate 1/4 of available system memory and CPU core count of the host + # to the VM, so performance does not suck. + host = RbConfig::CONFIG['host_os'] + + # Get memory size and CPU cores amount + if host =~ /solaris/ + mem = `/usr/sbin/prtconf|grep Memory|cut -f3 -d' '`.to_i * 1024 * 1024 + cpus = `/usr/sbin/psrinfo|wc -l`.to_i + elsif host =~ /darwin/ + # sysctl returns Bytes + mem = `sysctl -n hw.memsize`.to_i + cpus = `sysctl -n hw.ncpu`.to_i + elsif host =~ /linux/ + # meminfo shows size in kB; convert to Bytes + mem = `awk '/MemTotal/ {print $2}' /proc/meminfo`.to_i * 1024 + cpus = `getconf _NPROCESSORS_ONLN`.to_i + elsif host =~ /mswin|mingw|cygwin/ + # Windows code via https://github.com/rdsubhas/vagrant-faster + mem = `wmic computersystem Get TotalPhysicalMemory`.split[1].to_i + cpus = `echo %NUMBER_OF_PROCESSORS%`.to_i + else + puts "Unsupported operating system" + exit + end + + # Give VM 1/4 system memory as well as CPU core count + mem /= 1024 ** 2 * 4 + cpus /= 4 + + config.vm.provider "virtualbox" do |v| + v.customize ["modifyvm", :id, "--memory", mem] + v.customize ["modifyvm", :id, "--cpus", cpus] + + v.customize ["storagectl", :id, "--name", "SATA Controller", "--hostiocache", "on"] + # Enable following line, if oi-userland directory is on non-rotational + # drive (e.g. SSD). (This could be automated, but with all those storage + # technologies (LVM, partitions, ...) on all three operationg systems, + # it's actually error prone to detect it automatically.) macOS has it + # enabled by default as recent Macs have SSD anyway. + if host =~ /darwin/ + v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--nonrotational", "on"] + else + #v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--nonrotational", "on"] + end + # Should we ever support `--discard` option, we need to switch to VDI + # virtual disk format first. + #v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--discard", "on"] + #config.vm.synced_folder ".", "/vagrant_mounted" + end + + config.vm.provider :libvirt do |libvirt| + libvirt.memory = mem + libvirt.cpus = cpus + libvirt.storage :file, :size => '50G' + end + + # Once vagrant is able to chown files on OpenIndiana, chown line should be + # removed from this part. + config.vm.provision "shell", inline: <<-SHELL + pfexec chown -R vagrant:vagrant /vagrant + pfexec pkg install security/sudo media/cdrtools network/rsync library/security/openssl-11 developer/swig library/gnutls-3 file/gnu-coreutils developer/gcc-10 developer/gcc-7 metapackages/build-essential library/mpc + SHELL +end + From 378507c92b5bebb45b81d6e8a9c134f21b77f7d3 Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Fri, 10 Feb 2023 14:32:01 +0100 Subject: [PATCH 3/3] WIP Signed-off-by: Till Wegmueller --- Makefile | 163 +++++++++++++------------- openindiana-vagrant-setup/Vagrantfile | 32 +++-- tools/build_disk.sh | 12 +- 3 files changed, 109 insertions(+), 98 deletions(-) diff --git a/Makefile b/Makefile index a2ffc47..25131c6 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,26 @@ # An AArch64 sysroot to the degree we need one -SYSROOT=$(PWD)/sysroot +SYSROOT=$(HOME)/sysroot # The area where our cross tools land -CROSS=$(PWD)/cross +CROSS=$(HOME)/cross # The directory where build output lands for extra bits -BUILDS=$(PWD)/build +BUILDS=$(HOME)/build # The directory where we mark things as built, because we're lazy -STAMPS=$(PWD)/stamps +STAMPS=$(HOME)/stamps # Where source archives end up -ARCHIVES=$(PWD)/archives +ARCHIVES=$(HOME)/archives -BLDENV= $(PWD)/illumos-gate/usr/src/tools/scripts/bldenv +BLDENV= $(ARCHIVES)/illumos-gate/usr/src/tools/scripts/bldenv # OmniOS puts GMP headers in a weird place, know where to find them. GMPINCDIR= /usr/include/gmp +# Directory where all patches are located (usually inside this repository) +PATCHES= $(PWD)/patches + # XXXARM: We can't .KEEP_STATE because something confuses everything # (directory changes in rules?) and it gets bogus dependencies and always # rebuilds everything (which, to be fair, often happens anyway). @@ -64,63 +67,63 @@ DOWNLOADS= \ xorriso \ zlib -download-zlib: $(ARCHIVES) - wget -O archives/zlib-1.2.12.tar.gz https://zlib.net/fossils/zlib-1.2.12.tar.gz - tar xf archives/zlib-1.2.12.tar.gz +$(ARCHIVES)/zlib: $(ARCHIVES) + wget -O $(ARCHIVES)/zlib-1.2.12.tar.gz https://zlib.net/fossils/zlib-1.2.12.tar.gz + tar -C $(ARCHIVES) xf $(ARCHIVES)/zlib-1.2.12.tar.gz -download-libxml2: $(ARCHIVES) - wget -O archives/libxml2-2.9.9.tar.gz http://xmlsoft.org/download/libxml2-2.9.9.tar.gz - tar xf archives/libxml2-2.9.9.tar.gz +$(ARCHIVES)/libxml2: $(ARCHIVES) + wget -O $(ARCHIVES)/libxml2-2.9.9.tar.gz http://xmlsoft.org/download/libxml2-2.9.9.tar.gz + tar -C $(ARCHIVES) xf $(ARCHIVES)/libxml2-2.9.9.tar.gz -download-idnkit: $(ARCHIVES) - wget -O archives/idnkit-2.3.tar.bz2 http://jprs.co.jp/idn/idnkit-2.3.tar.bz2 - tar xf archives/idnkit-2.3.tar.bz2 +$(ARCHIVES)/idnkit: $(ARCHIVES) + wget -O $(ARCHIVES)/idnkit-2.3.tar.bz2 http://jprs.co.jp/idn/idnkit-2.3.tar.bz2 + tar -C $(ARCHIVES) xf $(ARCHIVES)/idnkit-2.3.tar.bz2 # XXXARM: We specify what we extract, because the release tarball contains a # GNU tar-ism we don't understand. -download-openssl: $(ARCHIVES) - wget -O archives/openssl-3.0.7.tar.gz https://www.openssl.org/source/openssl-3.0.7.tar.gz - tar xf archives/openssl-3.0.7.tar.gz openssl-3.0.7 +$(ARCHIVES)/openssl: $(ARCHIVES) + wget -O $(ARCHIVES)/openssl-3.0.7.tar.gz https://www.openssl.org/source/openssl-3.0.7.tar.gz + tar -C $(ARCHIVES) xf $(ARCHIVES)/openssl-3.0.7.tar.gz openssl-3.0.7 cp files/openssl-15-illumos-aarch.conf \ - openssl-3.0.7/Configurations/15-illumos-aarch.conf + $(ARCHIVES)/openssl-3.0.7/Configurations/15-illumos-aarch.conf -download-gcc: $(ARCHIVES) - git clone --shallow-since=2019-01-01 -b il-10_3_0-arm64 https://github.com/richlowe/gcc +$(ARCHIVES)/gcc: $(ARCHIVES) + git clone --shallow-since=2019-01-01 -b il-10_3_0-arm64 https://github.com/richlowe/gcc $(ARCHIVES)/gcc -download-binutils-gdb: $(ARCHIVES) - git clone --shallow-since=2019-01-01 -b illumos-arm64 https://github.com/richlowe/binutils-gdb +$(ARCHIVES)/binutils-gdb: $(ARCHIVES) + git clone --shallow-since=2019-01-01 -b illumos-arm64 https://github.com/richlowe/binutils-gdb $(ARCHIVES)/binutils-gdb -download-nss: $(ARCHIVES) - git clone -b illumos-arm64 https://github.com/richlowe/nss +$(ARCHIVES)/nss: $(ARCHIVES) + git clone -b illumos-arm64 https://github.com/richlowe/nss $(ARCHIVES)/nss -download-nspr: $(ARCHIVES) - git clone -b illumos-arm64 https://github.com/richlowe/nspr +$(ARCHIVES)/nspr: $(ARCHIVES) + git clone -b illumos-arm64 https://github.com/richlowe/nspr $(ARCHIVES)/nspr -download-illumos-gate: $(ARCHIVES) - git clone -b arm64-gate https://github.com/richlowe/illumos-gate +$(ARCHIVES)/illumos-gate: $(ARCHIVES) + git clone -b arm64-gate https://github.com/richlowe/illumos-gate $(ARCHIVES)/illumos-gate -download-u-boot: $(ARCHIVES) - git clone --shallow-since=2019-01-01 -b v2022.10 https://github.com/u-boot/u-boot/ +$(ARCHIVES)/u-boot: $(ARCHIVES) + git clone --shallow-since=2019-01-01 -b v2022.10 https://github.com/u-boot/u-boot $(ARCHIVES)/u-boot # XXXARM: We specify what we extract, because the release tarball contains a # GNU tar-ism we don't understand. -download-dtc: $(ARCHIVES) - wget -O archives/dtc-1.6.1.tar.gz https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/dtc-1.6.1.tar.gz - tar xf archives/dtc-1.6.1.tar.gz dtc-1.6.1 +$(ARCHIVES)/dtc: $(ARCHIVES) + wget -O $(ARCHIVES)/dtc-1.6.1.tar.gz https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/dtc-1.6.1.tar.gz + tar -C $(ARCHIVES) xf $(ARCHIVES)/dtc-1.6.1.tar.gz dtc-1.6.1 -download-xorriso: $(ARCHIVES) - wget -O archives/xorriso-1.5.4.pl02.tar.gz https://www.gnu.org/software/xorriso/xorriso-1.5.4.pl02.tar.gz - tar xf archives/xorriso-1.5.4.pl02.tar.gz - (cd xorriso-1.5.4 && patch -p1 < ../patches/xorriso-no-libvol.patch) +$(ARCHIVES)/xorriso: $(ARCHIVES) + wget -O $(ARCHIVES)/xorriso-1.5.4.pl02.tar.gz https://www.gnu.org/software/xorriso/xorriso-1.5.4.pl02.tar.gz + tar -C $(ARCHIVES) xf $(ARCHIVES)/xorriso-1.5.4.pl02.tar.gz + (cd $(ARCHIVES)/xorriso-1.5.4 && patch -p1 < $(PATCHES)/xorriso-no-libvol.patch) -download: $(DOWNLOADS:%=download-%) +download: $(DOWNLOADS:%=$(ARCHIVES)/%) setup: $(SETUP_TARGETS) $(SETUP_TARGETS): $(SETUP_TARGETS:%=$(BUILDS)/%) $(SYSROOT) $(CROSS) $(BUILDS) $(STAMPS) binutils-gdb: $(STAMPS)/binutils-gdb-stamp $(STAMPS)/binutils-gdb-stamp: (cd $(BUILDS)/binutils-gdb && \ - ../../binutils-gdb/configure \ + $(ARCHIVES)/binutils-gdb/configure \ --with-sysroot \ --target=aarch64-unknown-solaris2.11 \ --prefix=$(CROSS) \ @@ -132,7 +135,7 @@ $(STAMPS)/binutils-gdb-stamp: # Build a tools ld and headers and copy them into the sysroot (in the normal place) sgs: $(STAMPS)/sgs-stamp $(STAMPS)/sgs-stamp: - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/; make bldtools sgs' && \ rsync -a usr/src/tools/proto/root_i386-nd/ $(CROSS)/ && \ mkdir -p $(SYSROOT)/usr/include && \ @@ -143,7 +146,7 @@ $(STAMPS)/sgs-stamp: gcc: $(STAMPS)/gcc-stamp $(STAMPS)/gcc-stamp: sgs binutils-gdb (cd $(BUILDS)/gcc; \ - ../../gcc/configure \ + $(ARCHIVES)/gcc/configure \ --with-gmp-include=$(GMPINCDIR) \ --target=aarch64-unknown-solaris2.11 \ --with-abi=lp64 \ @@ -176,7 +179,7 @@ $(STAMPS)/gcc-stamp: sgs binutils-gdb crt: $(STAMPS)/crt-stamp $(STAMPS)/crt-stamp: sgs gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/crt; make install' && \ mkdir -p $(SYSROOT)/usr/lib/aarch64 && \ cp proto/root_aarch64/usr/lib/*.o $(SYSROOT)/usr/lib/) && \ @@ -184,7 +187,7 @@ $(STAMPS)/crt-stamp: sgs gcc libc: $(STAMPS)/libc-stamp $(STAMPS)/libc-stamp: ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libc; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libc.* $(SYSROOT)/usr/lib/ && \ @@ -194,7 +197,7 @@ $(STAMPS)/libc-stamp: ssp_ns gcc libm: $(STAMPS)/libm-stamp $(STAMPS)/libm-stamp: ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libm_aarch64; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libm.* $(SYSROOT)/usr/lib/ && \ @@ -204,7 +207,7 @@ $(STAMPS)/libm-stamp: ssp_ns gcc libsocket: $(STAMPS)/libsocket-stamp $(STAMPS)/libsocket-stamp: libnsl ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libsocket; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libsocket.* $(SYSROOT)/usr/lib/ && \ @@ -214,7 +217,7 @@ $(STAMPS)/libsocket-stamp: libnsl ssp_ns gcc libkstat: $(STAMPS)/libkstat-stamp $(STAMPS)/libkstat-stamp: libc ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libkstat; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libkstat.* $(SYSROOT)/usr/lib/ && \ @@ -224,7 +227,7 @@ $(STAMPS)/libkstat-stamp: libc ssp_ns gcc libnsl: $(STAMPS)/libnsl-stamp $(STAMPS)/libnsl-stamp: libmp libmd libc ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libnsl; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libnsl.* $(SYSROOT)/usr/lib/ && \ @@ -234,7 +237,7 @@ $(STAMPS)/libnsl-stamp: libmp libmd libc ssp_ns gcc libmd: $(STAMPS)/libmd-stamp $(STAMPS)/libmd-stamp: libc ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmd; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libmd.* $(SYSROOT)/usr/lib/ && \ @@ -244,7 +247,7 @@ $(STAMPS)/libmd-stamp: libc ssp_ns gcc libmp: $(STAMPS)/libmp-stamp $(STAMPS)/libmp-stamp: libc ssp_ns gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libmp; make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libmp.* $(SYSROOT)/usr/lib/ && \ @@ -254,25 +257,25 @@ $(STAMPS)/libmp-stamp: libc ssp_ns gcc zlib: $(STAMPS)/zlib-stamp $(STAMPS)/zlib-stamp: libc ssp_ns gcc - (cd build/zlib && \ + (cd $(BUILDS)/zlib && \ env PATH="$(CROSS)/bin:$$PATH" \ CC=$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc \ AR=$(CROSS)/bin/aarch64-unknown-solaris2.11-ar \ RANLIB=$(CROSS)/bin/aarch64-unknown-solaris2.11-ar \ LDSHARED="$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc -shared" \ CFLAGS="--sysroot=$(SYSROOT) -fpic" \ - ../../zlib-1.2.12/configure --shared --prefix=$(SYSROOT)/usr && \ + $(ARCHIVES)/zlib-1.2.12/configure --shared --prefix=$(SYSROOT)/usr && \ env PATH="$(CROSS)/bin:$$PATH" gmake && \ env PATH="$(CROSS)/bin:$$PATH" gmake install) && \ touch $@ libxml2: $(STAMPS)/libxml2-stamp $(STAMPS)/libxml2-stamp: libc libm libmp libmd zlib ssp_ns gcc - (cd build/libxml2 && \ + (cd $(BUILDS)/libxml2 && \ env PATH="$(CROSS)/bin:$$PATH" \ CC=$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc \ CFLAGS="--sysroot=$(SYSROOT)" \ - ../../libxml2-2.9.9/configure \ + $(ARCHIVES)/libxml2-2.9.9/configure \ --host=aarch64-unknown-solaris2.11 \ --with-sysroot=$(SYSROOT) \ --prefix=$(SYSROOT)/usr \ @@ -285,11 +288,11 @@ $(STAMPS)/libxml2-stamp: libc libm libmp libmd zlib ssp_ns gcc idnkit: $(STAMPS)/idnkit-stamp $(STAMPS)/idnkit-stamp: libc ssp_ns gcc - (cd build/idnkit && \ + (cd $(BUILDS)/idnkit && \ env PATH="$(CROSS)/bin:$$PATH" \ CC=$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc \ CFLAGS="--sysroot=$(SYSROOT)" \ - ../../idnkit-2.3/configure \ + $(ARCHIVES)/idnkit-2.3/configure \ --host=aarch64-unknown-solaris2.11 \ --with-sysroot=$(SYSROOT) \ --prefix=$(SYSROOT)/usr && \ @@ -299,7 +302,7 @@ $(STAMPS)/idnkit-stamp: libc ssp_ns gcc ssp_ns: $(STAMPS)/ssp_ns-stamp $(STAMPS)/ssp_ns-stamp: gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/ssp_ns && make install' && \ mkdir -p $(SYSROOT)/usr/lib && \ rsync -a proto/root_aarch64/usr/lib/libssp* $(SYSROOT)/usr/lib/) && \ @@ -307,7 +310,7 @@ $(STAMPS)/ssp_ns-stamp: gcc libc-filters: $(STAMPS)/libc-filters-stamp $(STAMPS)/libc-filters-stamp: libc gcc - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/librt && make install' && \ $(BLDENV) ../env/aarch64 'cd usr/src/cmd/sgs/libdl && make install' && \ $(BLDENV) ../env/aarch64 'cd usr/src/lib/libpthread && make install' && \ @@ -325,7 +328,7 @@ $(STAMPS)/libc-filters-stamp: libc gcc libstdc++: $(STAMPS)/libstdc++-stamp $(STAMPS)/libstdc++-stamp: libc libc-filters ssp_ns gcc - (cd build/libstdc++ && \ + (cd $(BUILDS)/libstdc++ && \ env PATH="$(CROSS)/bin:$$PATH" \ CC=$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc \ CXX=$(CROSS)/bin/aarch64-unknown-solaris2.11-g++ \ @@ -333,7 +336,7 @@ $(STAMPS)/libstdc++-stamp: libc libc-filters ssp_ns gcc CXXFLAGS="--sysroot=$(SYSROOT) -mno-outline-atomics -mtls-dialect=trad" \ LDFLAGS="--sysroot=$(SYSROOT)" \ CPPFLAGS="-I$(SYSROOT)/usr/include" \ - ../../gcc/libstdc++-v3/configure \ + $(ARCHIVES)/gcc/libstdc++-v3/configure \ --host=aarch64-unknown-solaris2.11 \ --prefix=$(SYSROOT)/usr && \ env PATH="$(CROSS)/bin:$$PATH" gmake && \ @@ -342,10 +345,10 @@ $(STAMPS)/libstdc++-stamp: libc libc-filters ssp_ns gcc nspr: $(STAMPS)/nspr-stamp $(STAMPS)/nspr-stamp: libc libc-filters ssp_ns gcc - (cd build/nspr && \ + (cd $(BUILDS)/nspr && \ env PATH="$(CROSS)/bin/:$$PATH" \ CC="$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc --sysroot=$(SYSROOT)" \ - ../../nspr/configure \ + $(ARCHIVES)/nspr/configure \ --build=i386-pc-solaris2.11 \ --target=aarch64-unknown-solaris2.11 \ --prefix=$(SYSROOT) \ @@ -362,10 +365,10 @@ $(STAMPS)/nss-stamp: libc libc-filters libkstat ssp_ns gcc (cd nss_build && \ export NATIVE_MACH=i386 \ MACH=aarch64 \ - SRC=$(PWD)/illumos-gate/usr/src/ \ - NSS_BASE=$(PWD)/nss \ + SRC=$(ARCHIVES)/illumos-gate/usr/src/ \ + NSS_BASE=$(ARCHIVES)/nss \ NSS_BUILD=$(PWD) \ - ONBLD_TOOLS=$(PWD)/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld \ + ONBLD_TOOLS=$(ARCHIVES)/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld \ ROOT=$(SYSROOT) \ aarch64_PRIMARY_CC=gcc10,$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc,gnu \ aarch64_SYSROOT=$(SYSROOT); \ @@ -375,13 +378,13 @@ $(STAMPS)/nss-stamp: libc libc-filters libkstat ssp_ns gcc openssl: $(STAMPS)/openssl-stamp $(STAMPS)/openssl-stamp: libc libc-filters libsocket libnsl zlib ssp_ns gcc - (cd build/openssl && \ + (cd $(BUILDS)/openssl && \ env PATH="$(CROSS)/bin/:$$PATH" \ CC="gcc --sysroot=$(SYSROOT)" \ CFLAGS="-I$(SYSROOT)/usr/include" \ LDFLAGS="-shared -Wl,-z,text,-z,aslr,-z,ignore" \ MAKE=gmake \ - ../../openssl-3.0.7/Configure \ + $(ARCHIVES)/openssl-3.0.7/Configure \ --prefix=$(SYSROOT)/usr \ --cross-compile-prefix=aarch64-unknown-solaris2.11- \ --api=1.1.1 \ @@ -394,11 +397,11 @@ $(STAMPS)/openssl-stamp: libc libc-filters libsocket libnsl zlib ssp_ns gcc xorriso: $(STAMPS)/xorriso-stamp $(STAMPS)/xorriso-stamp: libc libc-filters ssp_ns gcc - (cd build/xorriso && \ + (cd $(BUILDS)/xorriso && \ env PATH="$(CROSS)/bin/:$$PATH" \ CC="$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc --sysroot=$(SYSROOT)" \ MAKE=gmake \ - ../../xorriso-1.5.4/configure \ + $(ARCHIVES)/xorriso-1.5.4/configure \ --build=i386-pc-solaris2.11 \ --host=aarch64-unknown-solaris2.11 \ --prefix=$(SYSROOT)/usr && \ @@ -408,13 +411,13 @@ $(STAMPS)/xorriso-stamp: libc libc-filters ssp_ns gcc u-boot: $(STAMPS)/u-boot-stamp $(STAMPS)/u-boot-stamp: - cd u-boot && \ - gmake -s V=1 O=$(PWD)/build/u-boot \ + cd $(ARCHIVES)/u-boot && \ + gmake -s V=1 O=$(BUILDS)/u-boot \ HOSTCC="gcc -m64" \ HOSTCFLAGS+="-I/opt/ooce/include" \ HOSTLDLIBS+="-L/opt/ooce/lib/amd64 -lnsl -lsocket" \ sandbox_defconfig && \ - gmake -s V=1 O=$(PWD)/build/u-boot \ + gmake -s V=1 O=$(BUILDS)/u-boot \ HOSTCC="gcc -m64" \ HOSTCFLAGS+="-I/opt/ooce/include" \ HOSTLDLIBS+="-L/opt/ooce/lib/amd64 -lnsl -lsocket" tools && \ @@ -422,7 +425,7 @@ $(STAMPS)/u-boot-stamp: dtc: $(STAMPS)/dtc-stamp $(STAMPS)/dtc-stamp: - cd dtc-1.6.1 && \ + cd $(ARCHIVES)/dtc-1.6.1 && \ gmake NO_YAML=1 \ NO_PYTHON=1 \ SHAREDLIB_LDFLAGS="-shared -Wl,-soname" && \ @@ -434,14 +437,14 @@ $(STAMPS)/dtc-stamp: illumos: $(STAMPS)/illumos-stamp $(STAMPS)/illumos-stamp: setup - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src; make setup' && \ $(BLDENV) ../env/aarch64 'cd usr/src; make install') && \ touch $@ illumos-pkgs: $(STAMPS)/illumos-pkgs $(STAMPS)/illumos-pkgs: - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ $(BLDENV) ../env/aarch64 'cd usr/src/pkg; make install') && \ touch $@ @@ -462,10 +465,10 @@ $(SETUP_TARGETS:%=$(BUILDS)/%): mkdir -p $@ clean-dtc: - cd dtc-1.6.1 && gmake clean + cd $(ARCHIVES)/dtc-1.6.1 && gmake clean clean-illumos: - (cd illumos-gate && \ + (cd $(ARCHIVES)/illumos-gate && \ rm -fr packages && \ rm -fr proto && \ $(BLDENV) ../env/aarch64 'cd usr/src; make clobber') @@ -475,10 +478,10 @@ clean-nss: (cd nss_build && \ export NATIVE_MACH=i386 \ MACH=aarch64 \ - SRC=$(PWD)/illumos-gate/usr/src/ \ - NSS_BASE=$(PWD)/nss \ + SRC=$(ARCHIVES)/illumos-gate/usr/src/ \ + NSS_BASE=$(ARCHIVES)/nss \ NSS_BUILD=$(PWD) \ - ONBLD_TOOLS=$(PWD)/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld \ + ONBLD_TOOLS=$(ARCHIVES)/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld \ ROOT=$(SYSROOT) \ aarch64_PRIMARY_CC=gcc10,$(CROSS)/bin/aarch64-unknown-solaris2.11-gcc,gnu \ aarch64_SYSROOT=$(SYSROOT); \ diff --git a/openindiana-vagrant-setup/Vagrantfile b/openindiana-vagrant-setup/Vagrantfile index b5188c8..b2c81ef 100644 --- a/openindiana-vagrant-setup/Vagrantfile +++ b/openindiana-vagrant-setup/Vagrantfile @@ -14,9 +14,9 @@ Vagrant.configure("2") do |config| # Unless OpenIndiana is better supported in vagrant, we have to use this # workaround. The problem with vagrant is that it creates folder as root:root, # but rsync connects as vagrant and thus fails to write. - config.vm.synced_folder "..", "/vagrant", type: "rsync", - rsync__args: ["--verbose", "--archive", "-zz", "--copy-links"], - rsync__rsync_path: "pfexec rsync", owner: "vagrant", group: "vagrant" + config.vm.synced_folder "..", "/vagrant" #, type: "rsync", + # rsync__args: ["--verbose", "--archive", "-zz", "--copy-links"], + # rsync__rsync_path: "pfexec rsync", owner: "vagrant", group: "vagrant" # Autoconfigure resources for development VM. The snippet is taken from # https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck. @@ -26,8 +26,8 @@ Vagrant.configure("2") do |config| # Get memory size and CPU cores amount if host =~ /solaris/ - mem = `/usr/sbin/prtconf|grep Memory|cut -f3 -d' '`.to_i * 1024 * 1024 - cpus = `/usr/sbin/psrinfo|wc -l`.to_i + mem = `/usr/sbin/prtconf|grep Memory|cut -f3 -d' '`.to_i * 1024 * 1024 + cpus = `/usr/sbin/psrinfo|wc -l`.to_i elsif host =~ /darwin/ # sysctl returns Bytes mem = `sysctl -n hw.memsize`.to_i @@ -41,8 +41,8 @@ Vagrant.configure("2") do |config| mem = `wmic computersystem Get TotalPhysicalMemory`.split[1].to_i cpus = `echo %NUMBER_OF_PROCESSORS%`.to_i else - puts "Unsupported operating system" - exit + puts "Unsupported operating system" + exit end # Give VM 1/4 system memory as well as CPU core count @@ -62,12 +62,8 @@ Vagrant.configure("2") do |config| if host =~ /darwin/ v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--nonrotational", "on"] else - #v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--nonrotational", "on"] + v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--nonrotational", "on"] end - # Should we ever support `--discard` option, we need to switch to VDI - # virtual disk format first. - #v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--discard", "on"] - #config.vm.synced_folder ".", "/vagrant_mounted" end config.vm.provider :libvirt do |libvirt| @@ -80,7 +76,17 @@ Vagrant.configure("2") do |config| # removed from this part. config.vm.provision "shell", inline: <<-SHELL pfexec chown -R vagrant:vagrant /vagrant - pfexec pkg install security/sudo media/cdrtools network/rsync library/security/openssl-11 developer/swig library/gnutls-3 file/gnu-coreutils developer/gcc-10 developer/gcc-7 metapackages/build-essential library/mpc + pfexec pkg install security/sudo \ + media/cdrtools \ + network/rsync \ + library/security/openssl-11 \ + developer/swig \ + library/gnutls-3 \ + file/gnu-coreutils \ + developer/gcc-10 \ + developer/gcc-7 \ + metapackages/build-essential \ + library/mpc SHELL end diff --git a/tools/build_disk.sh b/tools/build_disk.sh index 3fd93c4..792c29f 100644 --- a/tools/build_disk.sh +++ b/tools/build_disk.sh @@ -2,19 +2,20 @@ set -e -DISK=$PWD/qemu-setup/illumos-disk.img +QEMU_FOLDER=${BUILDS}/qemu-setup +DISK=${QEMU_FOLDER}/illumos-disk.img POOL=armpool MNT=/mnt ROOTFS=ROOT/braich ROOT=$MNT/$ROOTFS DISKSIZE=6g -if [[ ! -f Makefile || ! -d illumos-gate ]]; then +if [[ ! -f Makefile || ! -d ${ARCHIVES}/illumos-gate ]]; then print -u2 "$0 should be run from the root of arm64-gate" exit 2 fi -mkdir -p $PWD/qemu-setup +mkdir -p ${QEMU_FOLDER} mkfile $DISKSIZE $DISK @@ -47,7 +48,7 @@ pkgsend publish -s illumos-gate/packages/aarch64/nightly/repo.redist \ sudo pkg image-create -F \ --variant variant.arch=aarch64 \ - -p $PWD/illumos-gate/packages/aarch64/nightly/repo.redist $MNT/$ROOTFS + -p ${ARCHIVES}/illumos-gate/packages/aarch64/nightly/repo.redist $MNT/$ROOTFS sudo pkg -R $ROOT set-property flush-content-cache-on-success True @@ -91,6 +92,7 @@ echo "set kmem_flags = 0x6" | sudo tee -a $ROOT/etc/system > /dev/null sudo sed -i'' -e 's/PASSREQ=YES/PASSREQ=NO/' $ROOT/etc/default/login # Have a host name etc, in case dhcp +# Note this is the Welsh meaning of braich not the Irish one echo "braich" | sudo tee -a $ROOT/etc/nodename > /dev/null # Have some swap space @@ -148,4 +150,4 @@ sudo zfs set mountpoint=/ $POOL/$ROOTFS sudo zpool export $POOL sudo lofiadm -d $DISK -cp illumos-gate/proto/root_aarch64/platform/QEMU,virt-4.1/inetboot.bin qemu-setup +cp $(ARCHIVES)/illumos-gate/proto/root_aarch64/platform/QEMU,virt-4.1/inetboot.bin $(QEMU_FOLDER)