makefile: add fake-installers target

The `fake-installers[-from-built]` target drives a distribution build
like `installers[-from-built]`, but instead of building on clients,
just copies a "README" as an installer.
This commit is contained in:
Matthew Flatt 2020-12-27 14:30:26 -07:00
parent 250f5ca661
commit 2110b3c753
4 changed files with 30 additions and 3 deletions

View File

@ -1025,6 +1025,12 @@ drive-clients:
describe-clients:
$(MAKE) drive-clients DRIVE_DESCRIBE=--describe
fake-installers:
$(MAKE) installers DRIVE_DESCRIBE="--dry-run fake"
fake-installers-from-built:
$(MAKE) installers-from-built DRIVE_DESCRIBE="--dry-run fake"
# ------------------------------------------------------------
# Create installers, then assemble as a web site:

View File

@ -494,6 +494,10 @@ drive-clients:
$(PLAIN_RACKET) -l- distro-build/drive-clients $(DRIVE_DESCRIBE) $(RELEASE_MODE) $(VERSIONLESS_MODE) $(SOURCE_MODE) $(CLEAN_MODE) $(SERVER_COMPILE_MACHINE) "$(CONFIG)" "$(CONFIG_MODE)" $(SERVER) $(SERVER_PORT) "$(SERVER_HOSTS)" "$(PKGS)" "$(DOC_SEARCH)" "$(DIST_NAME)" $(DIST_BASE) $(DIST_DIR)
describe-clients:
$(MAKE) drive-clients DRIVE_DESCRIBE=--describe CLEAN_MODE="$(CLEAN_MODE)" CONFIG="$(CONFIG)" CONFIG_MODE="$(CONFIG_MODE)" DIST_BASE="$(DIST_BASE)" DIST_DIR="$(DIST_DIR)" DIST_NAME="$(DIST_NAME)" DOC_SEARCH="$(DOC_SEARCH)" PKGS="$(PKGS)" PLAIN_RACKET="$(PLAIN_RACKET)" RELEASE_MODE="$(RELEASE_MODE)" SERVER="$(SERVER)" SERVER_COMPILE_MACHINE="$(SERVER_COMPILE_MACHINE)" SERVER_HOSTS="$(SERVER_HOSTS)" SERVER_PORT="$(SERVER_PORT)" SOURCE_MODE="$(SOURCE_MODE)" VERSIONLESS_MODE="$(VERSIONLESS_MODE)"
fake-installers:
$(MAKE) installers DRIVE_DESCRIBE="--dry-run fake" AS_IS="$(AS_IS)" BUILD_STAMP="$(BUILD_STAMP)" CLEAN_MODE="$(CLEAN_MODE)" CONFIG="$(CONFIG)" CONFIGURE_ARGS="$(CONFIGURE_ARGS)" CONFIG_IN_PLACE_ARGS="$(CONFIG_IN_PLACE_ARGS)" CONFIG_MODE="$(CONFIG_MODE)" CS_CONFIGURE_ARGS="$(CS_CONFIGURE_ARGS)" CS_HOST_WORKAREA_PREFIX="$(CS_HOST_WORKAREA_PREFIX)" DIST_BASE="$(DIST_BASE)" DIST_DIR="$(DIST_DIR)" DIST_NAME="$(DIST_NAME)" DOC_CATALOGS="$(DOC_CATALOGS)" DOC_SEARCH="$(DOC_SEARCH)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" MORE_CONFIGURE_ARGS="$(MORE_CONFIGURE_ARGS)" PACK_BUILT_OPTIONS="$(PACK_BUILT_OPTIONS)" PB_REPO="$(PB_REPO)" PKGS="$(PKGS)" PLAIN_RACKET="$(PLAIN_RACKET)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" PROP_ARGS="$(PROP_ARGS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BOOTFILES="$(RACKET_FOR_BOOTFILES)" RELEASE_MODE="$(RELEASE_MODE)" SELF_ROOT_CONFIG_FLAG="$(SELF_ROOT_CONFIG_FLAG)" SERVER="$(SERVER)" SERVER_COMPILE_MACHINE="$(SERVER_COMPILE_MACHINE)" SERVER_HOSTS="$(SERVER_HOSTS)" SERVER_PKG_INSTALL_OPTIONS="$(SERVER_PKG_INSTALL_OPTIONS)" SERVER_PORT="$(SERVER_PORT)" SERVER_URL_SCHEME="$(SERVER_URL_SCHEME)" SETUP_MACHINE_FLAGS="$(SETUP_MACHINE_FLAGS)" SITE_PATH="$(SITE_PATH)" SOURCE_MODE="$(SOURCE_MODE)" SRC_CATALOG="$(SRC_CATALOG)" TEST_PKGS="$(TEST_PKGS)" VERSIONLESS_MODE="$(VERSIONLESS_MODE)" VM="$(VM)"
fake-installers-from-built:
$(MAKE) installers-from-built DRIVE_DESCRIBE="--dry-run fake" AS_IS="$(AS_IS)" BUILD_STAMP="$(BUILD_STAMP)" CLEAN_MODE="$(CLEAN_MODE)" CONFIG="$(CONFIG)" CONFIGURE_ARGS="$(CONFIGURE_ARGS)" CONFIG_IN_PLACE_ARGS="$(CONFIG_IN_PLACE_ARGS)" CONFIG_MODE="$(CONFIG_MODE)" CS_CONFIGURE_ARGS="$(CS_CONFIGURE_ARGS)" CS_HOST_WORKAREA_PREFIX="$(CS_HOST_WORKAREA_PREFIX)" DIST_BASE="$(DIST_BASE)" DIST_DIR="$(DIST_DIR)" DIST_NAME="$(DIST_NAME)" DOC_CATALOGS="$(DOC_CATALOGS)" DOC_SEARCH="$(DOC_SEARCH)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" MORE_CONFIGURE_ARGS="$(MORE_CONFIGURE_ARGS)" PACK_BUILT_OPTIONS="$(PACK_BUILT_OPTIONS)" PB_REPO="$(PB_REPO)" PKGS="$(PKGS)" PLAIN_RACKET="$(PLAIN_RACKET)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" PROP_ARGS="$(PROP_ARGS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BOOTFILES="$(RACKET_FOR_BOOTFILES)" RELEASE_MODE="$(RELEASE_MODE)" SELF_ROOT_CONFIG_FLAG="$(SELF_ROOT_CONFIG_FLAG)" SERVER="$(SERVER)" SERVER_COMPILE_MACHINE="$(SERVER_COMPILE_MACHINE)" SERVER_HOSTS="$(SERVER_HOSTS)" SERVER_PKG_INSTALL_OPTIONS="$(SERVER_PKG_INSTALL_OPTIONS)" SERVER_PORT="$(SERVER_PORT)" SERVER_URL_SCHEME="$(SERVER_URL_SCHEME)" SETUP_MACHINE_FLAGS="$(SETUP_MACHINE_FLAGS)" SITE_PATH="$(SITE_PATH)" SOURCE_MODE="$(SOURCE_MODE)" SRC_CATALOG="$(SRC_CATALOG)" TEST_PKGS="$(TEST_PKGS)" VERSIONLESS_MODE="$(VERSIONLESS_MODE)" VM="$(VM)"
site:
$(MAKE) installers AS_IS="$(AS_IS)" BUILD_STAMP="$(BUILD_STAMP)" CLEAN_MODE="$(CLEAN_MODE)" CONFIG="$(CONFIG)" CONFIGURE_ARGS="$(CONFIGURE_ARGS)" CONFIG_IN_PLACE_ARGS="$(CONFIG_IN_PLACE_ARGS)" CONFIG_MODE="$(CONFIG_MODE)" CS_CONFIGURE_ARGS="$(CS_CONFIGURE_ARGS)" CS_HOST_WORKAREA_PREFIX="$(CS_HOST_WORKAREA_PREFIX)" DIST_BASE="$(DIST_BASE)" DIST_DIR="$(DIST_DIR)" DIST_NAME="$(DIST_NAME)" DOC_CATALOGS="$(DOC_CATALOGS)" DOC_SEARCH="$(DOC_SEARCH)" DRIVE_DESCRIBE="$(DRIVE_DESCRIBE)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" MORE_CONFIGURE_ARGS="$(MORE_CONFIGURE_ARGS)" PACK_BUILT_OPTIONS="$(PACK_BUILT_OPTIONS)" PB_REPO="$(PB_REPO)" PKGS="$(PKGS)" PLAIN_RACKET="$(PLAIN_RACKET)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" PROP_ARGS="$(PROP_ARGS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BOOTFILES="$(RACKET_FOR_BOOTFILES)" RELEASE_MODE="$(RELEASE_MODE)" SELF_ROOT_CONFIG_FLAG="$(SELF_ROOT_CONFIG_FLAG)" SERVER="$(SERVER)" SERVER_COMPILE_MACHINE="$(SERVER_COMPILE_MACHINE)" SERVER_HOSTS="$(SERVER_HOSTS)" SERVER_PKG_INSTALL_OPTIONS="$(SERVER_PKG_INSTALL_OPTIONS)" SERVER_PORT="$(SERVER_PORT)" SERVER_URL_SCHEME="$(SERVER_URL_SCHEME)" SETUP_MACHINE_FLAGS="$(SETUP_MACHINE_FLAGS)" SITE_PATH="$(SITE_PATH)" SOURCE_MODE="$(SOURCE_MODE)" SRC_CATALOG="$(SRC_CATALOG)" TEST_PKGS="$(TEST_PKGS)" VERSIONLESS_MODE="$(VERSIONLESS_MODE)" VM="$(VM)"
$(MAKE) site-from-installers AS_IS="$(AS_IS)" BUILD_STAMP="$(BUILD_STAMP)" CLEAN_MODE="$(CLEAN_MODE)" CONFIG="$(CONFIG)" CONFIGURE_ARGS="$(CONFIGURE_ARGS)" CONFIG_IN_PLACE_ARGS="$(CONFIG_IN_PLACE_ARGS)" CONFIG_MODE="$(CONFIG_MODE)" CS_CONFIGURE_ARGS="$(CS_CONFIGURE_ARGS)" CS_HOST_WORKAREA_PREFIX="$(CS_HOST_WORKAREA_PREFIX)" DIST_BASE="$(DIST_BASE)" DIST_DIR="$(DIST_DIR)" DIST_NAME="$(DIST_NAME)" DOC_CATALOGS="$(DOC_CATALOGS)" DOC_SEARCH="$(DOC_SEARCH)" DRIVE_DESCRIBE="$(DRIVE_DESCRIBE)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" MORE_CONFIGURE_ARGS="$(MORE_CONFIGURE_ARGS)" PACK_BUILT_OPTIONS="$(PACK_BUILT_OPTIONS)" PB_REPO="$(PB_REPO)" PKGS="$(PKGS)" PLAIN_RACKET="$(PLAIN_RACKET)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" PROP_ARGS="$(PROP_ARGS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BOOTFILES="$(RACKET_FOR_BOOTFILES)" RELEASE_MODE="$(RELEASE_MODE)" SELF_ROOT_CONFIG_FLAG="$(SELF_ROOT_CONFIG_FLAG)" SERVER="$(SERVER)" SERVER_COMPILE_MACHINE="$(SERVER_COMPILE_MACHINE)" SERVER_HOSTS="$(SERVER_HOSTS)" SERVER_PKG_INSTALL_OPTIONS="$(SERVER_PKG_INSTALL_OPTIONS)" SERVER_PORT="$(SERVER_PORT)" SERVER_URL_SCHEME="$(SERVER_URL_SCHEME)" SETUP_MACHINE_FLAGS="$(SETUP_MACHINE_FLAGS)" SITE_PATH="$(SITE_PATH)" SOURCE_MODE="$(SOURCE_MODE)" SRC_CATALOG="$(SRC_CATALOG)" TEST_PKGS="$(TEST_PKGS)" VERSIONLESS_MODE="$(VERSIONLESS_MODE)" VM="$(VM)"

View File

@ -368,8 +368,8 @@ repositorys top-level makefile and the `"distro-build"` package.
The `installers` target of the makefile will do everything to generate
installers: build a server on the current machine, run clients on hosts
specified via `CONFIG`, and start/stop VirtualBox virtual machines that
act as client machines.
specified via `CONFIG`, and start/stop VirtualBox virtual machines or
Docker containers that act as client machines.
If the server is already built, the `installers-from-built` target will
drive the client builds without re-building the server.
@ -394,6 +394,14 @@ build (not the one for building installers), you can use
to see, without building anything, the effect of the configuration in
`"my-site-config.rkt"` and the planned build steps.
As an intermediate point, use `make fake-installers` instead of `make
installers` to create “installers” on the server side that just contain
the corresponding `"README"` text without running any build clients.
Beware, however, that installer names are normally determined on the
client side, so `make fake-installers` has to guess about each installer
name based on the description (e.g., “Windows” in the description
implies a Windows installer).
The default `CONFIG` path is `"build/site.rkt"`, so you could put your
configuration file there and omit the `CONFIG` argument to `make`. A
default configuration file is created there automatically. Supply

View File

@ -36,7 +36,8 @@ Git repository's top-level makefile and @|distro-build-package|.
The @exec{installers} target of the makefile will do everything to
generate installers: build a server on the current machine, run
clients on hosts specified via @exec{CONFIG}, and start/stop
VirtualBox virtual machines that act as client machines.
VirtualBox virtual machines or Docker containers that act as client
machines.
If the server is already built, the @exec{installers-from-built}
target will drive the client builds without re-building the server.
@ -61,6 +62,14 @@ some Racket build (not the one for building installers), you can use
to see, without building anything, the effect of the configuration in
@filepath{my-site-config.rkt} and the planned build steps.
As an intermediate point, use @exec{make fake-installers} instead of
@exec{make installers} to create ``installers'' on the server side
that just contain the corresponding @filepath{README} text without
running any build clients. Beware, however, that installer names are
normally determined on the client side, so @exec{make fake-installers}
has to guess about each installer name based on the description (e.g.,
``Windows'' in the description implies a Windows installer).
The default @exec{CONFIG} path is @filepath{build/site.rkt}, so you
could put your configuration file there and omit the @exec{CONFIG}
argument to @exec{make}. A default configuration file is created there