Commit Graph

62 Commits

Author SHA1 Message Date
Matthew Flatt
3f040f7a1a make site: propagate package dependencies, modules, etc. to catalog 2014-07-04 08:48:46 +01:00
Matthew Flatt
133d7a3c41 distro-build: add "versionless" option
Versionless mode avoids putting a version number in an installer's
name or in installation paths.
2014-06-23 18:42:46 +01:00
Matthew Flatt
1407e0cc9f win32-in-place: fix prep of libraries needed by raco setup 2014-06-16 11:41:00 +01:00
Matthew Flatt
6778604bd2 Makefile: improve DESTDIR support 2014-06-16 11:41:00 +01:00
Matthew Flatt
b7610c405d distro-build: move a file out that is accessed directly
The "pack-all.rkt" file is needed before (and only before) the
distro-build package itself is ready, so move it to the "racket/src"
directory.
2014-06-13 16:32:51 +01:00
Matthew Flatt
52e2d7b1c9 Makefile: add IF EXISTS guard on del for a Win32 target
Fixes Windows installer builds in a fresh working directory.
2014-05-22 17:52:51 +01:00
Matthew Flatt
9b78847be0 add unix-style makefile target
Also, revise "INSTALL.txt" to better explain the build options.
2014-05-20 09:01:40 +01:00
Matthew Flatt
718cbd4c41 distro-build: fix catalog relative paths
The old use of relative paths was unusual and fragile.
Proper relative paths are now supported, so generate paths
consistent with that.
2014-05-09 10:32:14 -06:00
Matthew Flatt
47bc57a7e2 distro-build: fix Windows client setup 2014-05-04 08:53:10 -06:00
Matthew Flatt
23cf3ba11e upgrade pre-built libraries for Windows and Mac OS X
Mostly upgrades the drawing stack to the latest Cairo, Pango, Glib,
etc., but also upgrades the OpenSSL library on Windows to 1.0.1g.

The new "racket/src/native-libs" directory provides scripts to
rebuild the libraries from source. Those script are fragile, because
library sources and configuration scripts are fragile. The
scripts at least archive some expertise/advice in a mostly executable
form.
2014-04-09 07:35:37 -06:00
Matthew Flatt
df857e1c76 distro-build: refine client--server split 2014-03-11 08:10:35 -06:00
Matthew Flatt
1260dd6b2e Makefile: refine support for building an installer from a site 2014-03-11 08:10:35 -06:00
Matthew Flatt
a98582b823 distro-build: split server and client parts 2014-03-09 15:57:40 -06:00
Matthew Flatt
9de2aff3f3 make server: fix config setup for pkg build
When the server installs packages from source, it needs configuration
entry that points documentation indirections to the right place.
A relevant "config.rktd" is written, but to the wrong place, so
that it wasn't being used.

Merge to v6.0 (pending review)
2014-01-05 18:39:21 -07:00
Matthew Flatt
7b89225001 make installers: install required packages, first
This change should fix a problem with the Mac OS X PPC build,
where the "libsqlite3" shared library needs to be installed
early. The same strategy is already used for Windows.

Merge to v6.0
2013-11-22 07:26:43 -07:00
Matthew Flatt
7dd10fc9bd make installers: support Mac OS X ".pkg" format
The ".pkg"-based installer doesn't provide the option of picking
an installation path, but it can add a path in "/etc/paths.d"
so that users do not have to explicitly set the `PATH` environment
variable.
2013-11-11 05:27:08 -07:00
Matthew Flatt
2872f83a17 raco pkg: use a download cache
Downloaded files are keyed on the source URL and checksum, and the
cache is used only when a checksum is known.

The cache addresses two situations:

 * when installing many packages over an unreliable connection,
   the cache effectively lets a retry pick up where a previous
   attempt failed

 * when creating clean builds frequently, the downloads from a
   previous build can be reused (as long as the package's checksum
   does not change)

The cache location and limits are configurable, and they default to
a subdirectory in the user's add-ons directory (not version-specific),
1024 files, and 64 MB.

If a failure happens during staging (checksum and unpackaging) of a
package that has an entry in the cache, the entry is removed. The
file-cache library, meanwhile, implements a limit on the cache size
and defends against uncooperative filesystems.
2013-11-06 15:15:56 -07:00
Matthew Flatt
2054fb79de make installer: add Mac OS X code-signing support 2013-10-19 07:56:00 -06:00
Matthew Flatt
7be22af350 make installers: make the server listen only to "localhost" by default
This makes the build more secure, but it's a backward-incompatible change.
To adapt old site-configuration scripts, the simplest option is to set
`#:server' to "localhost" everywhere and rely on SSH tunneling to let
a client reach a server (though, unfortunately, that option doesn't
seem to work if a Windows machine uses freeSSHd). Another possibility
is to se `#:server-hosts' to the empty list.
2013-10-19 07:56:00 -06:00
Matthew Flatt
acadcd2994 make installer: option to set address & port where server listened
Client SSH connections now create remote port forwarding port back
to the server, so that making the server listen only on "localhost"
provides an easy improvement for security (except that remote port
forwarding seems not to work with freeSSHd on Windows).
2013-10-19 07:56:00 -06:00
Matthew Flatt
1920ac59ab move some test & doc collections out of "racket-" pkgs to new pkgs 2013-10-15 17:50:32 -06:00
Sam Tobin-Hochstadt
4a542969c7 Make 'raco pkg install' with no arguments install the current directory.
This is useful for telling people how to install a new pkg, from
GitHub or elsewhere: just get the files, and then do
`raco pkg install` in the relevant directory.

Also, both cabal (the Haskell package manager) and npm (the node.js
package manager) behave this way.

To explicitly get the old behavior, specify the sources as
`--pkgs pkg-srcs ...`.  This is useful in scripts, when `pkg-srcs`
might be empty.
2013-10-14 14:06:47 -04:00
Matthew Flatt
ba6e1754eb make catalog-based installer build work
A catalog-based installer build (as opposed to an installer build
that uses "pkgs" and "native-pkgs") relies on the new `--all-platforms`
package-install flag and related support for re-packing installed
platform-specific packages.
2013-09-04 08:44:49 -06:00
Matthew Flatt
fc03bbf305 makefile fix for catalog-based installer build 2013-09-04 08:44:49 -06:00
Matthew Flatt
73c458bba0 remove -p' in Windows mkdir' 2013-08-17 13:43:22 -06:00
Matthew Flatt
ec38dbb99a Makefile: fix source mode for snapshots 2013-08-15 06:21:19 -06:00
Matthew Flatt
1cd844d0a6 Support non-GNU `make' 2013-08-13 17:26:21 -06:00
Matthew Flatt
35bff5b683 first cut at script to push PLT packages to pkg.racket-lang.org 2013-08-11 14:30:04 -06:00
Matthew Flatt
15e60c2da1 distro-build: merge and improve package packing and cataloging
Use the `pkg-authors' and `pkg-desc' fields from "info.rkt"
when creating a catalog.

Also add an `archive-catalog' makefile target for assembling
archives (binary for native-library package, source others)
and a catalog in "build/archive".
2013-07-31 07:06:25 -06:00
Matthew Flatt
3c36269d88 distro-build: fix reference to "native-pkgs" 2013-07-27 07:18:25 -06:00
Matthew Flatt
b0984df456 rename "core" makefile targets to "base"
Using "base" is more consistent.
2013-07-26 22:36:21 -06:00
Matthew Flatt
2e067ab28c add build-stamp' configuration and fix repo-time-stamp/stamp'
The "repo-time-stamp" collection used to be omitted from a
release, but to keep things simpler, it's staying in the
"drracket" (and therefore "main-distribution") package. The
build process installs an empty `build-stamp' value (by default)
into a release build, or it installs a useful stamp for
a non-release build.
2013-07-26 22:36:21 -06:00
Matthew Flatt
593daa0dc6 access "native-pkgs" as a git submodule
This looks like a good use case for submodules, because the
native-library packages change infrequently, and no one cares
about the history of changes relative to the rest of the
project (except to be able to get a set of packages that is
consistent with the rest of the repository).

The change avoids the problem that `make' on Mac OS X would
try a `git update', which is no good if you happen to be
offline (and have your "buidl.native-pkgs" repo pull from the
obvious place).

Finally, it's easier for Windows users, since `git submodule init'
and `git submodule update' is easier to use and remember than
`git clone <some-repository-URL>'. The makefile more helpfully
complains if "native-pkgs" doesn't seem to have been initialized
as a submodule.
2013-07-26 22:36:20 -06:00
Matthew Flatt
7e6838b0af distro-build: support installation-name configuration for installers
The default is "snapshot" for non-release builds, left as the
version number for release builds.
2013-07-26 11:52:48 -06:00
Matthew Flatt
82c4e56631 distro-build: change `#:source?' config to mean source packages, too
Use `#:source-runtime?' to make only the run-time system have
source form, while packages are pre-built.
2013-07-20 13:39:33 -06:00
Matthew Flatt
8820ae91a6 distro-build: add support for source installers 2013-07-19 11:52:03 -06:00
Matthew Flatt
67a9889ef7 add "share", move "collects" back out of "lib", move "pkgs"
The "share" directory holds platform-independent files, while
"lib" holds platform-specific files.

In principle, the "collects" directory belongs in "share",
as does "doc". Those directories are put into "share"
by a Unix-style install, but left at top level for an
in-place install.

Packages in installation scope are put in "share" instead
of "lib", and the top-level Makefile puts development links
in "share/devel-pkgs".

The `configure' script now supports `--docdir' and `--collectsdir'.

Changed the version to 5.90.0.1.
2013-07-19 11:52:02 -06:00
Matthew Flatt
1c6257a129 distro-build: support for adding READMEs
This is a first cut; the default "README" configuration will be
improved.
2013-07-17 18:32:21 -06:00
Matthew Flatt
b9fd9ad78c installers site: include documentation of built packages 2013-07-11 10:26:03 -06:00
Matthew Flatt
9cc50dc914 Makefile: make PKGS' not sticky by default, add again' target
More generally, `LINK_MODE' controls how the `PKGS' value is saved
or restored: "--save" saves the value (the default), "--restore"
uses a previously saved value (if any), and "" disables saving or
restoring.

The `again' target recurs to `in-place' with `LINK_MODE=--restore'.
2013-07-08 20:11:26 -06:00
Matthew Flatt
91c43fed9d Clean up site configuration module docs and defaults
As a result, `make installers' produces an installer with no further
configuration on a non-Windows platform, even without `git'.
2013-07-05 17:41:06 -06:00
Matthew Flatt
2f637741e2 switch makefile's parallelism control to `JOB_OPTIONS'
Avoid potential collision with `PLT_SETUP_OPTIONS' as an environment
variable.
2013-07-05 12:09:09 -06:00
Matthew Flatt
a8ed2b1546 Add -j'/--jobs' <n> argument to `raco pkg install', etc.
Also, thread `PLT_SETUP_OPTIONS' though server and client build
(so that a `#:j' configuration works as intended).
2013-07-05 11:33:57 -06:00
Matthew Flatt
ddbc8e5f40 Support a CPUS=<n> argument for the `in-place' makefile target
Also, make `distro-build/drive-clients' use `#:j' configuration
for `PLT_SETUP_OPTIONS'.
2013-07-05 10:52:38 -06:00
Matthew Flatt
41399c1f51 add distro-builds/manage-snapshots 2013-07-05 09:18:00 -06:00
Matthew Flatt
fb052532c0 make in-place: keep non-default `PKGS' value in "racket/etc/link-pkgs.rktd"
This change makes a `PKGS=...' setting sticky for an in-place build via
`make', `make in-place', `make pkg-links', etc.
2013-07-05 08:30:00 -06:00
Matthew Flatt
d2ddfc09bd add `site' makefile target
Also, adjust stamp handling to ensure that it doesn't change
during the build process.
2013-07-03 20:52:16 -06:00
Matthew Flatt
2e657af9b6 Change "farm" terminology to "site", mostly 2013-07-02 10:51:29 -06:00
Matthew Flatt
3264f16b63 Generalize use of farm config file
Change `FARM_CONFIG' to just `CONFIG' and use it on the server, too.
2013-07-02 06:40:16 -06:00
Matthew Flatt
00a4cb611b make doc-search URL configurable for installer builds
Also, add an initial-catalogs configuration to clients and
`farm' builds.
2013-07-02 06:40:16 -06:00