Commit Graph

58 Commits

Author SHA1 Message Date
Matthew Flatt
0ebcb23244 io: repairs for Windows path maniplation
Perpetuate a failure to make Windows paths behave reasonably with
path-manipulation functions.

In one case, the new implementation seemed better than the old one, so
I've changed the old implementation (by deleting code) and test cases.
The old code would split "x /y" to "\\?\REL\x " and "y", and the new
one splits to "x /" and "y"; the trailing separator is now enough to
preserve the space character, and it also preserves the directoryness
of the path. Of course, "x /" splits to 'relative and "\\?\REL\x " as
it strips away the trailing "/".

A remaining problem in both implementations: some Windows API
functions implicitly erase a trailing "." in a directory name, making
"x./y" equivalent to "x/y". The Racket path-manipulation functions
don't do that, so splitting and recombining "x./y" does not access the
same path as the original. This apparently hasn't been a problem in
practice, and there are so many terrible hacks already, so I left it
alone.

The new implementation perpetuates also the implementation mistake of
representing paths internally as byte strings. If, in some terrible
universe, I'm forced to do this again, the right choice is probably to
keep the path in a parsed form with enough information to reconstruct
the original, but with the information sorted nicely to make various
normalizations and combinations easy.
2018-03-23 10:37:59 -06:00
Matthew Flatt
59ef254318 switch to a new, Racket-implemented expander & module system
This commit merges changes that were developed in the "racket7" repo.
See that repo (which is no longer modified) for a more fine-grained
change history.

The commit includes experimental support for running Racket on Chez
Scheme, but that "CS" variant is not built by default.
2018-02-26 13:19:53 -07:00
Matthew Flatt
d469265a6e Makefile: support both cross-platform and non-cross installers
In non-cross mode, `-C` needs to go after `-G` and `-X` when setting
up a "bundle" directory to turn into an installer, because that mode
needs to use foreign libraries (such as SQLite) at build time, and it
can use the instances that are being set up for the installer.

Meanwhile, improve the advice for setting `PLAIN_RACKET` to use `-C`
for a cross-platform build mode, even though things tend to work
anyway without it.
2017-04-26 15:59:04 -06:00
Leandro Facchinetti
ec5923a5c7 Fix typo in “INSTALL.txt” 2017-02-17 06:31:10 -07:00
Matthew Flatt
710320e3dc "Mac OS X" -> "Mac OS"
Although "macOS" is the correct name for Apple's current desktop OS,
we've decided to go with "Mac OS" to cover all of Apple's Unix-like
desktop OS versions. The label "Mac OS" is more readable, clear in
context (i.e., unlikely to be confused with the Mac OSes that
proceeded Mac OS X), and as likely to match Apple's future OS names
as anything.
2016-12-23 12:18:36 -07:00
Bernardo Sulzbach
c98986c622 Corrected a few typos in INSTALL.txt 2016-06-02 13:39:39 -05:00
Matthew Flatt
666c5f1557 Windows code-signing and ".tgz" options for distro-build 2016-01-07 17:25:26 -07:00
Matthew Flatt
658bac7f52 note on catalogs and building from a tag
Closes #1058.
2015-09-19 09:40:43 -06:00
Matthew Flatt
e318257a7f support Visual Studio 2015
Closes #996
2015-09-09 13:34:31 -06:00
Matthew Flatt
ad4dcdeac0 cross-compilation support in the top-level makefile 2015-08-29 20:54:27 -06:00
Matthew Flatt
a3e359d9e1 refine use of "Unix" in the installation instructions
Based on a suggestion from enedil <enedil@outlook.com>, avoid
suggesting that OS X is not Unix or that Linux is truly Unix.
2015-08-17 07:22:07 -06:00
Matthew Flatt
0304fedf92 Makefile: make SRC_CATALOG work for in-place and unix-style
Configure an in-place or unix-style build to use the given
SRC_CATALOG before the default catalogs.
2015-05-03 21:41:46 -07:00
Matthew Flatt
5e6debf854 make: DESTDIR must be an absolute path
Clarify in the installation notes, and add a check in the makefile.

Closes PR 14935
2015-01-15 06:09:21 -07:00
Matthew Flatt
513cee5e20 makefile: add an as-is target
The `as-is` target is like the default target, but it skips package
update and installation, so it's suitable for rebuilding after local
changes that might include changes to the core.
2015-01-03 07:11:08 -07:00
Matthew Flatt
e2f1ede981 makefile: change the default target to imply raco pkg update -a
As a result of this change, `make` will access the network (unless an
alternative catalog is specified). A `make base` is always local,
though.
2015-01-02 21:13:55 -07:00
Matthew Flatt
c6d2548e22 make: fix Unix-style build 2014-12-04 19:30:01 -07:00
Matthew Flatt
ae1e459a53 make: clear out "local" installer mode
The "local" installer mode made sense only with a "pkgs"
directory that had everything to be included in the installer.
2014-12-04 14:21:34 -07:00
Matthew Flatt
d593f5420b make: link packages via local catalog
Change the way that packages in "pkgs" are handled by `make`:
create a catalog that causes them to be installed on demand
as directory links.
2014-12-04 12:46:03 -07:00
Matthew Flatt
cdf0dc8ed2 Windows: MinGW fixes 2014-11-01 08:17:52 -06:00
Matthew Flatt
40f5ec070a configure: add --enable-natipkg and 64-bit Linux native libraries
The `--enable-natipkg` configuration option adds "-natipkg" to the
platform library subpath. The suffix is intended to trigger the
installation of packages that supply native libraries for supported
platforms (where 64-bit Linux is the supported platform, for now, for
main-distribution packages), instead of relying on libraries installed
via the OS's package manager.

The intended client for "-natipkg" is the package-build service, where
installing packages via the OS package manager would require network
access and either trust or constrained installations. The build
machine is intentionally disconnected from the network and can only
access Racket packages, so repackaging native libraries as Racket
packages makes those libraries accessible.

A disadvantage of this approach to installing native libraries is that
it creates work for implementers of packages that access native
libraries. Those implementers will have to supply packages for 64-bit
Linux versions of native libraries to the degree needed to build and
(eventually) test the package. An advantage of the approach is that it
requires no changes to the package system; it will be cheap to replace
this approach if we find a better way to deal with native libraries
and/or OS packages in the package-build service.
2014-10-08 05:19:33 -06: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
9c05eff875 make installers: give MSVC setup "x86_amd64" instead of "x64" by default
The "x86_amd64" mode seems to work more often, especially with
Visual Studio Express installations.
2014-06-19 15:09:26 +01:00
Matthew Flatt
6778604bd2 Makefile: improve DESTDIR support 2014-06-16 11:41:00 +01:00
Matthew Flatt
65b564566b INSTALL.txt: fix instructions for make unix-style 2014-06-15 09:26:18 +01:00
Matthew Flatt
16114823dc make installers: propagate SOURCE_MODE to clients 2014-06-15 07:37:10 +01:00
Matthew Flatt
aa487175ad change default MSVC projects to Visual Studio 2010 (version 10) and up
Visual Studio 2008 is still supported by "9.sln" projects and
".vcproj" files, while ".sln" and ".vcxproj" work for 2010, 2012,
and 2013. The "build.bat" script detects which version of
Visual Studio is active and uses the appropriate ".sln" files.

The bad news is that we have two copies of each project until we
decide to drop support for Visual Studio 2008. (We had two copies
before, but one copy was unmaintained.) The good news is that
we have only 2 copies of each project, because recent versions of
Visual Studio are willing to use 2010 projects as-is.

Change project and related files to text instead of always CRLF,
because that seems to be ok for modern Windows tools.
2014-06-13 16:32: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
1260dd6b2e Makefile: refine support for building an installer from a site 2014-03-11 08:10:35 -06:00
Richard Hopkins
7a2be548c8 Correct typos: INSTALL.txt, MzCOM, ffi/com 2014-01-19 16:09:32 -05: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
2a6962df13 typo 2013-09-06 20:02:04 -06:00
Matthew Flatt
80c72ad1dd make the quick install instrustions jusr a little slower
Highlight the git submodule issue, which is likely to surprise anyone
who tries to build on Mac OS X or Windows.
2013-08-17 13:54:34 -06:00
Matthew Flatt
1cd844d0a6 Support non-GNU `make' 2013-08-13 17:26:21 -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
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
68f4d297f7 make a build via the top-level makefile set scope to `installation'
Also, set the installation name to "development".
2013-07-26 11:52:48 -06:00
MerelyAPseudonym
047af23e4a Fix typito in INSTALL.txt 2013-07-20 07:14:51 -06:00
Robby Findler
3d61181c36 typo 2013-07-19 06:38:35 -05: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
592a84d55c make installers: save client logs in "build/log" instead of "build/drive"
Also, copy log files to the destination of `make site', and report
the current time more frequently.
2013-07-17 09:27:41 -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
7e27bda44c move configuration-file info from "INSTALL.txt" to "pkgs/distro-build" 2013-07-06 05:53:01 -06:00
Asumu Takikawa
4767c58ac3 Fix some INSTALL.txt typos 2013-07-05 22:06:19 -04: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
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
2e657af9b6 Change "farm" terminology to "site", mostly 2013-07-02 10:51:29 -06:00