For the time being, I have decided to create a custom shell script in the spirit of etcmanage, after looking over BUILD-NetBSD; perhaps an INSTALL-NETBSD custom shell script will follow. I do a large amount of cross-building (my NetBSD compiling box is an Ubuntu machine), and I'm not sure how easy it is to use use etcmanage on a Linux host, where the only access to the target NetBSD's /etc files would either be SSHFS, SMB, FTP, or NFS.
This is probably overkill, but this m4 script generates a number of variables which can be used to start a ./build.sh session where directories are separated based on target. It current supports rebuilding from scratch and updating after "cvs update/git pull". The script also supports choosing MAKECONF and the kernel to be compiled. The script assumes the tools directory already exists, but this is okay, since the same tools directory can be used for all possible targets. m4 is used to reduce the chance I make a mistake on a per-architecture basis. https://gist.github.com/cr1901/07b8e6810caedc31fe7c Hopefully this is useful to somebody... and since it's a gist, it can be forked as well :P. ----- Original Message ----- From: "Greg Troxel" <[email protected]> To: [email protected] Cc: [email protected] Sent: Saturday, July 12, 2014 10:54:21 AM Subject: Re: Multiple NetBSD targets using the same OBJDIR [email protected] writes: > I have a need to build NetBSD for multiple architectures using the > same source tree. While I understand that one can use the same tools This is normal. > directory for all possible targets, I have not found an option to > separate objects, releasedir, and destdir according to the target or > some chosen ID (I also have the need to build NetBSD for the same > architecture in two different configurations). If you set all of those, you can separate the builds. But what "configuration" are you changing, and does that result in changes to the tree, or are you passing a different mk.conf, or something else? See pkgsrc/sysutils/etcmanage for the scripts I use, which are aimed at having a source tree per branch and organizing tool/obj/release/dest directories in a way I like. If you want to pass different mk.conf files and have different paths, that should be pretty easy. The basic hint is to not insist on passing one argument, and accept that you will set multiple options. My script invokes build.sh as ./build.sh -m i386 -j8 -x -u -U -O /usr/obj/gdt-current/i386 -T /usr/obj/gdt-current/tools -D /usr/obj/gdt-current/destdir/i386 -R /usr/obj/gdt-current/releasedir -X /u0/n0/gdt/NetBSD-current/xsrc release which sets 4 output options in a way that I the human find consistent. Arguably I should change -O to make it objdir/i386; there's no good reason to have the per-arch objdirs not in a container.
