Commit Graph

147 Commits

Author SHA1 Message Date
Albert Hopkins 91b5e962ec Allow per-appliance build directories.
This allows different appliances from the same profile to be built
simultaneously.
2015-09-14 10:22:42 +00:00
Albert Hopkins 1da2ba10dd Set systemd container name according to profile.
This allows more different profiles to with the same appliance to build
simultaneously.
2015-09-14 10:16:56 +00:00
Albert Hopkins 24be5ce588 Allow images/packages to build in a different directory
By setting the VABUILDER_OUTPUT Makefile variable, one can have images
and packages saved to and retrieved from that directory instead of the
default (CURDIR).  This can be use to, e.g., have different profile's
builds in different directories (instead of having to give images
different filenames, etc.).
2015-09-14 10:00:37 +00:00
Albert Hopkins 0b3f6db39e Don't use `-C ../` when extracting portage
This is wrong and potentially can damage the host filesystem.
2015-09-08 16:45:23 +00:00
Albert Hopkins 6ffc462188 Exclude virtuals from the package list file
There's really no point in showing the virtuals.
2015-09-03 14:11:01 +00:00
Albert Hopkins 48cb7905e9 Makefile: remove bogus .PHONY targets
These targets were removed but listed in .PHONY
2015-08-07 22:34:42 +00:00
Albert Hopkins 7144d2d3ec images: change the way checksums are produced 2015-08-02 18:15:26 +00:00
Albert Hopkins 327013b660 Makefile: don't call passwd twice
Instead of calling passwd twice, one to delete the root password and one
to expire it, simply call it once and pass --delete and --expire to the
same command.
2015-08-02 17:48:27 +00:00
Albert Hopkins b0a7dae92b make "etc-update" work
It was using the old method of setting the EDITOR environment variable to
nano, which does not work with systemd-nspawn.  Fixed.
2015-04-10 09:25:44 +00:00
Albert Hopkins cff474da63 Makefile: new target: checksumps
Creates a sha256 checksum file in the $(IMAGES) directory.
2015-03-16 02:08:25 +00:00
Albert Hopkins 5240c6b302 Makefile: Add missing endquote 2015-03-15 12:56:38 +00:00
Albert Hopkins df92b10200 Makefile: fix a typo
"IMAGES" was misspelled.
2015-03-15 12:56:18 +00:00
Albert Hopkins 0504f76a1a Makefile(s): use long option names when calling emerge
Because I can never remember the difference between -n and N, -c and -C,
etc.
2015-03-13 11:31:00 +00:00
Albert Hopkins 1a31e4f951 Makefile: appliance-list: Display appliances in 1 column 2015-03-09 11:20:14 +00:00
Albert Hopkins 5889d9f251 Makefile: touch the portage tarball after downloading
Just in case.
2015-03-09 11:19:23 +00:00
Albert Hopkins b92d617f84 Makefile: clean: Remove temporary image files 2015-03-01 12:49:04 +00:00
Albert Hopkins 58d4bad383 Makefile: PORTAGE_DIR: touch the directory when it's unpacked.
Otherwise it retains the same timestamp as the tarball, which may not
trigger a stage4 rebuild.
2015-03-01 12:47:02 +00:00
Albert Hopkins 1a36e228c0 Makefile:STAGE4_TARBALL: Fix typo
Target should have been "PORTAGE_DIR" and not "PORTAGE"
2015-03-01 12:46:18 +00:00
Albert Hopkins 95e3d1e9af Makefile: make the default target "stage4" instead of "image" 2015-03-01 01:55:57 +00:00
Albert Hopkins f4e8a22ddb Makefile: use /usr/bin/basename in a few echo statements 2015-03-01 01:52:49 +00:00
Albert Hopkins 86311ebd9f Makefile: Get rid of BUILD_SOFTWARE option.
It's hardly useful anymore.
2015-03-01 01:31:55 +00:00
Albert Hopkins 07c96253dc Merge SWAP_FILE and SYSCONFIG targets into PREPROOT
They were small targets and PREPROOT is pretty much responsible for that
anyway.
2015-03-01 01:06:24 +00:00
Albert Hopkins bc22178119 Makefile: add sync_stage3 to .PHONY 2015-02-28 22:36:23 +00:00
Albert Hopkins 9562528920 stage4: Remove "build_stage4" and don't force stage4 to build every time
The stage4 target, specifically the STAGE4_TARBALL target now depends on
the portage/ directory, the appliances/<appliance>/ directory and the
stage3 tarball.  It will not be rebuild if these are up-to-date.  Therefore
other targets that depend on stage4 (e.g. RAW_IMAGE) won't force stage4 to
be rebuilt if it is up to date.

If you want to force a stage4 rebuild, for example if the appliance pulls
from a live VCS, then the recommended way to do this is:

    $ touch appliances/<appliance>
    $ make APPLIANCE=<appliance> stage4
2015-02-28 22:35:45 +00:00
Albert Hopkins c8c9bc1a1f Make the other image/ targets depend on $(RAW_IMAGE).
Instead of "image" so that if the raw image is built and up-to-date then it
need not be rebuilt to satisfy the other image targets.  This excludes the
stage4 "image" which of course is necessary to build the $(RAW_IMAGE)
target.
2015-02-28 22:30:01 +00:00
Albert Hopkins dff2e32481 Makefile: make the $(RAW_IMAGE) target install the stage4 files.
The raw image making was kind of split up, with different targets to create
the image, partition, copy files, install grub, etc.  This change makes it
all one target.  After "make image" is done, or, e.g., "make images/base.img"
then the resulting file will be built and contain all the necessary files.

This make the $(RAW_IMAGE) target more uniform with the other image/
targets.  It will also make the other image/ targets easier to satify.
2015-02-28 22:27:39 +00:00
Albert Hopkins e28fcda122 Fix package.* files installation to work with new stage3's
The new (2015-02) stage3 tarballs use package.* directories instead of
files, causing the files to fail to be copied over.  This change instead
copies them to the directories, creating them if they don't already exist.
2015-02-28 22:20:50 +00:00
Albert Hopkins d66a465456 Makefile: Make the systools target inside the chroot 2015-02-27 22:25:56 +00:00
Albert Hopkins 27f7653ee7 Makefile: Make the sysconfig target inside the chroot 2015-02-27 22:12:46 +00:00
Albert Hopkins 1a9d97d016 Makefile: Make the preproot target inside the chroot 2015-02-27 22:05:17 +00:00
Albert Hopkins 13512c8cbf Makefile: Make the software target inside the chroot 2015-02-27 21:46:57 +00:00
Albert Hopkins 3ca8e68168 Makefile: Make the grub target inside the chroot 2015-02-27 21:35:15 +00:00
Albert Hopkins 8ef1630fdb Makefile: Make the kernel target inside the chroot 2015-02-27 21:20:43 +00:00
Albert Hopkins 0c12afc476 Makefile: build compile_options inside the chroot 2015-02-27 20:44:52 +00:00
Albert Hopkins da9e895652 Makefile: Make the stage3 target inside the chroot
Then we don't have to manually clean it (it gets clean on the stage4
target).
2015-02-27 20:37:14 +00:00
Albert Hopkins 8240a836e1 Makefile:$(RAW_IMAGE) add stage4 tarball as a dependency.
If not then re-making the image won't happen if the image already exists
but older than the stage4.
2015-02-27 20:10:20 +00:00
Albert Hopkins 0799c48705 Makefile:preproot: Make sure we've always got a local copy of resolv.conf
Or else network will fail inside the chroot.
2015-02-27 20:09:13 +00:00
Albert Hopkins c9a81d2806 The great systemd commit.
This change converts the appliances from openrc to systemd.  In addition,
systemd needs to at least be be installed on the build machine as we now
use systemd-nspawn instead of chroot/bind mounts do to the fact that
systemd-nspawn is much more robust and lese prone to errors.  In addition:

* All stage4 tarballs and images are now stored in the images/ directory by
  default.

* A package dir is now required and is set up in the packages/ directory by
  default.

* The portage directory is not unpacked in the chroot every time anymore
  and is instead bind-mounted from a directory by systemd-nspawn.  This is
  the portage/ directory by default.

* In addition there is a distfiles/ directory (by default) which is
  bind-mounted in the chroot.  It does what you'd probably expect.

* The Makefile learned new target, eclean, which will run eclean-dist and
  eclean-pkg to clean out obsolete distfiles and binary packages.

* The REMOVE_PORTAGE_TREE option is removed as portage is no longer
  installed.

* The unused/untested PRUNE_CRITICAL functionality has been removed.  I
  have no idea if it worked and if it didn't I didn't want to fix it.

* As appliances are always using systemd, UDEV is no longer optional.

* Timezones and hostnames are now handled by systemd (systemd-firstboot).

* Stage4 tarballs are now directly importable as systemd containers (and
  probably docker too though I haven't tested that yet).

* A number of packages (for example dhcpd, acpid) have been removed from the
  appliances when systemd provides equivalent functionality.

* We no longer override etc-update.conf.  There's no reason.

* A number of Makefile targets, checkpoints, temp files, etc have been
  removed as they are no longer needed.
2015-02-22 15:32:16 +00:00
Albert Hopkins 50a4a28567 Makefile: Name images/tarball after appliance name not hostname.
The reason being that when you are distributing an image you are likely
distributing an general appliance, not a specific host so it makes sense
that the image name be the name of the appliance and not, e.g., ln33.  This
can always be overriden on the command line or in a profile.
2015-02-21 13:21:05 +00:00
Albert Hopkins efeeb737b6 Makefile: export RSYNC_MIRROR
Another forgotten artifact from cs bcbd924efc3a.
2015-02-21 13:17:08 +00:00
Albert Hopkins f61e01f1dd sync_stage3: Use a helper script
The Makefile logic was lousy and broken.  Add a more robust helper script.
2015-02-16 18:03:44 +00:00
Albert Hopkins 9aecaedcd6 Makefile: image, stage4: clean up after oneself
Make these targets that have temporary targets/mount-points clean up after
themselves.
2014-08-30 18:12:04 +00:00
Albert Hopkins 1fe98b6b7c Makefile: don't pass $(USEPKG) to @preserved-rebuild
... kinda defeats the purpose.
2014-08-30 16:53:30 +00:00
Albert Hopkins fd40aac3bf Makefile: export USEPKG so that submakes can use it.
I thought this was already being done, but apparently not.
2014-06-14 21:51:21 +00:00
Albert Hopkins 4b01342bf1 Makefile: use losetup instead of qemu-nbd for loop mounting.
It's more dynamic, is faster, and the newer versions support auto-creating
device nodes for partions.  So it's prefereable to qemu-nbd.
2014-06-11 15:59:57 +00:00
Albert Hopkins f79cc8a353 Move appliances/configs/scripts to seperate directories.
Instead of having everything in the root directory, split them in seperate
directories (appliances, scripts, & configs).  This makes things a little
tidier.

Also added a now Makefile target, appliance-list, that prints a list of the
available appliances.  The split directory change made this easier.
2014-06-09 02:26:17 +00:00
Albert Hopkins 62e960d256 Makefile: Change the way we sync the stae3 (again)
It wassn't working for x86.. although I swore it did before...
2014-01-06 15:13:31 +00:00
Albert Hopkins 977fcd0d9c Long-overdue updates (phase 1) 2014-01-04 20:22:40 +00:00
Albert Hopkins 65d7f57a96 Makefile: Fix stage3 rsync (again) 2013-12-21 21:17:19 +00:00
Albert Hopkins 1510c83387 Makefile:sysconfig: remove deps for which there is no target.
They were already satisfied by the "preproot" target.

I found these errors when I tried "make -j2" (which still doesn' work yet,
but oh wel...)
2013-10-13 15:56:23 +00:00