Commit graph

68 commits

Author SHA1 Message Date
Stas Boukarev e6455a7841 Remove an ignore
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
2026-09-09 11:01:39 +03:00
Stas Boukarev 4669caad14 make-host-1: better diagnostics on style-warning stoppage
Give with-compilation-unit to finish and print its thing.
2026-09-09 11:00:17 +03:00
Stas Boukarev 0dc9bd7f2f Stop early on make-host-1 warnings 2026-09-09 09:18:38 +03:00
Douglas Katzman d3fa62156f Limit the scope of warning suppressions
* Rev 906a406a quieted all compiler notes coming from make-host-1,
  rendering moot the muffle-conditions code-deletion-note in shared.lisp,
  not to mention (satisfies unable-to-optimize-note-p) there as well.
* Prevent introduction of new occurrences of the optional+key warning
  by confining the suppression to precisely where there is old code.

We need to fix whatever is wrong with cross-typep so that make-host-2
correctly utilizes the &OPTIONAL-AND-&KEY-IN-LAMBDA-LIST condition.
2026-07-17 23:59:27 +00:00
Douglas Katzman 64ff407f81 Allow make-host-1 warnings if host SBCL is older than 2.1
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / self (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
Fixes lp#2064671
2024-08-28 00:46:19 +00:00
Stas Boukarev a5f36524ab clean.sh: optionally don't delete ucd output files.
They are recomputed as needed.
2023-08-04 23:12:44 +03:00
Douglas Katzman c30d8e005b Store the unicode input/output specification elsewhere
Easier to parse and rewrite into other syntax
2023-06-01 17:22:51 -04:00
Christophe Rhodes 49a8fdf033 Update to Unicode 12.1.0
Minor changes needed to word- and sentence-breaking character classes.
2023-05-14 20:08:52 +01:00
Christophe Rhodes 25cf4760d8 Update to Unicode 11.0.0
Other than new defined characters, the most significant change is
revisions to the grapheme, word and line-breaking algorithms,
particularly as relates to emoji.

Grapheme-breaking needs a new mini-state-machine in order to track the
extended pictographic state.

Word-breaking changes just enough to invalidate our previous
strategy of (attempting to) implement Replacing Ignore Rules (section
6.2 of UAX 29); instead, we now look back when we are in an extended
context to find the correct class.  This is not maximally efficient,
and the strategy in line-breaking is probably better, but it is not
terrible either.  We also need to handle the new requirement to
consider non-Glue Zs characters as their own WSegSpace class.

The line-breaking needs a very minor adjustment: nothing breaks after
a zero-width joiner.
2023-05-13 23:49:21 +01:00
Douglas Katzman b138ca78a4 Allow warnings from make-host-1 in SBCL older than 2.x
Fixes lp#2009493
2023-03-06 09:56:59 -05:00
Douglas Katzman 1f60a570bf Delete baroque logic from ucd
Reading allkeys would parse, then encode then decode then encode
(and decode upon use). We only care about the final form.
This change produces an EQUALP hash table in far fewer convolutions.
I think we have no assertions to check it though.
2022-07-06 12:27:10 -04:00
Douglas Katzman a78a183cc0 Remove **character-primary-compositions** as a thing
Don't use the custom UTF-24 codec to write it out and re-read and re-pack
it for no ostensible purpose. It's just a hash-table ultimately.
2022-07-06 09:03:31 -04:00
Christophe Rhodes e20b4d522f Update to Unicode 9.0
As well as updates to data files, this involves minor changes to the
build process to accommodate the fact that Unicode data files now
contain copyright/registered symbols, and updates to the collation and
grapheme/word/line-breaking algorithms.
2022-07-02 12:00:17 +01:00
Douglas Katzman 75919da1a0 Revert "Remove all ECL and CMU CL workarounds."
This reverts commit 74605eae02.

Restores build with ECL 16.1.3 host. See lp#1956852
2022-01-09 22:06:55 -05:00
Douglas Katzman 3255f71e11 Fix warning 2021-10-11 23:26:35 -04:00
Charles Zhang 74605eae02 Remove all ECL and CMU CL workarounds.
ECL's issues have been fixed for more than a year now.

The issue with ADJUST-ARRAY is unfortunate, as the spec explicitly
states that the dimensions of ARRAY is changed, but using the result
explicitly hurts no one.
2021-10-10 22:39:22 -07:00
Charles Zhang ebc4f2035d Remove stale code.
PPC no longer has this quirk.
2021-10-10 10:20:03 -07:00
Charles Zhang 906a406a00 Hide host compiler notes when building the cross-compiler.
The notes emitted while building cross-compiler are not important; we
only care about efficiency notes for the built system. This keeps
make-host-1 output free.
2021-10-09 23:18:55 -07:00
Douglas Katzman 3f73167712 Use "make -j9" to test all cross-builds at once 2021-09-14 20:16:53 -04:00
Douglas Katzman 0abf67fd58 Relax requirement on current directory during build
After this it is more-or-less possible to have the SBCL root directory
be a subdirectory of the current dir. Everything in src/cold finds required
files as siblings, so if SBCL is in "mumble/something/sbcl", you needn't
change dir into "sbcl" but instead, while in "mumble" it works to load
"something/sbcl/src/cold/shared"

A quick not-too-exciting example:
* (setq *sbcl-local-target-features-file* "sbcl/local-target-features.lisp-expr")
"sbcl/local-target-features.lisp-expr"
* (load "sbcl/src/cold/shared")
T

In real-world usage, the SBCL directory would be buried deeper in the tree
and you don't want to physically change dir into it because reasons.

It should be easier to parallelize crossbuild-runner too. With suitable
input and output directories, each architecture can place its artifacts into
a different fasl tree while pulling sources from the common location.
2021-06-30 11:25:13 -04:00
Richard M Kreuter 57b39145d7 Support building & testing in a tree whose leaves are symlinks. 2021-05-02 14:28:34 -04:00
Douglas Katzman d1479425ed Move a defvar 2021-03-29 12:55:32 -04:00
Douglas Katzman d575028ae3 Disallow unexpected warnings of any severity in make-host-1
All architectures are warning-free now.
But of course only trust our own warnings. Other Lisps' warnings are
mostly unhelpful as far as we're concerned. e.g. Clozure warns about
an unused binding in (loop for ((a . b) . c) in x do (frob a b))),
but the workaround is ugly - an effectless (PROGN C) or similar.
2021-03-29 12:19:27 -04:00
Douglas Katzman 6c4038fe96 Fix warning muffler
The format control for the &OPTIONAL+&KEY warnings changed, so STRING=
is a bad test. But muffling has been broken for a while because nested
LOAD rebinds *HANDLED-CONDITIONS* so duplicate the DECLAIM.
2021-03-27 12:24:06 -04:00
Douglas Katzman 30b7b2ef26 Remove #+vop-something reader syntax 2020-11-01 11:48:04 -05:00
Douglas Katzman 534efc7542 Remove HPPA, part 1 of 2
Edit out conditionalized bits from machine-independent files.
2020-08-31 19:43:51 -04:00
Douglas Katzman 914231fdb5 Remove Alpha, part 1 of 2
Edit out conditionalized bits from machine-independent files.
2020-08-31 15:27:35 -04:00
Douglas Katzman e77ad2a355 Remove :HOST mode from SB-COLD::FEATURE-IN-LIST-P 2020-07-13 11:02:18 -04:00
Douglas Katzman bbb6ac4ad0 Cease generating ldso-stubs except as needed
And stop copying it in the build scripts, ignoring it in .gitignore,
and removing it in clean.sh
2020-03-06 16:32:46 -05:00
Douglas Katzman 9c0f491dcf Reduce confusion in parallelized make-host-1
* Do not attempt to place the host in a state in which all fasls are
  loadedable after having loading sources.

* Move sanity checks where load-or-cload-xcompiler always performs them.
2020-01-21 13:02:52 -05:00
Christophe Rhodes d76374aac3 build CaseFolding data identically on all hosts
Tighten the conversion of the Unicode-supplied data file to assert
that we convert exactly one high-octet pair, an eszet, and that
there are no other high-octet characters in the file.  Fail with
errors if these are not true: if they aren't, then Unicode has
probably put other important information in there that the intrepid
SBCL developer should read.  (Or the file has been encoded using
EBCDIC-high or something.)

The sandboxed build issue referred to in a previous commit message
is solved another way.
2019-10-11 08:48:41 +01:00
Douglas Katzman a89dfcb1a2 Unbreak sandboxed build 2019-10-09 00:56:47 -04:00
Christophe Rhodes 37fdffc9a9 track access to ucd input/output files
The tracking here is potentially lossy, in that it requires ucd.lisp
to cooperate to mark files as accessed or created.  But this approach
should be enough to catch renames, introduction of new files and
removal of existing ones.
2019-09-28 18:16:57 +01:00
Christophe Rhodes 6b12fc4091 rename a previously-renamed Unicode data file
It's a bit painful to have a file which embeds the Unicode version in
its name: each time it is update, the SBCL sources have to change.
Name allkeys.txt generically (aiming in the end for an unmodified data
file, though we're not there yet).
2019-09-28 18:16:57 +01:00
Christophe Rhodes bb63caa568 remove a Unicode not-constant
The number of collation entries varies between versions of Unicode.
It is useful to check that our binary database has the right number of
entries, but generate that number of entries to check against from the
initial parse of the Unicode data file, rather than hard-coding the
value in SBCL sources.
2019-09-28 18:16:57 +01:00
Douglas Katzman 408680ba99 Update list of ucd.lisp input files 2019-09-21 21:52:24 -04:00
Douglas Katzman d4c045bc32 Autogenerate Unicode char-block names 2019-05-15 09:16:13 -04:00
Douglas Katzman b70bf78280 Invoke ucd.lisp only if needed
This reduces realtime spent in make-host-1 by as much as 20% when parallelized
and run more than once (as in crossbuild-runner)
2019-05-06 22:37:46 -04:00
Douglas Katzman eb6b537de0 Implement cross-compiler floating-point math abstraction layer
as proposed in https://sourceforge.net/p/sbcl/mailman/message/36607624/.

The most important takeaway is that floating-point literals must be spelled
in source with a leading dollar sign. Regarding other aspects of the change:

* src/code/unportable-float is gone

* a few transforms that were conditional on #+/-sb-xc-host are enabled
  - constant-folding of MAKE-{single,double}-FLOAT
  - transform of <,>,= of rational vs constant float

* inner-coerce-real-bound and inner-coerce-float-bound can directly use
  the most-{positive,negative} constants

Cleanup of more code containing comments about cross-float-infinity-kludge
remains to be done in a subsequent series of changes.

Tested with crossbuild-runner and a few alternate choices of host lisp.
2019-03-22 09:37:50 -04:00
Douglas Katzman 04abafe19f Get ABCL-hosted build to work
* Miscompiled DO-SC-LOCATIONS. It appeared not to handle the LABELS form,
  but personally I didn't like that we called EVAL so I removed that too,
  and one thing or another fixed their compiler crash.

* Workaround https://abcl.org/trac/ticket/231

* One files produce some build-breaking warnings during make-host-1.
  The mechanism for ignoring failures remains useful after all.

* ETYPECASE warns if the final clause is T, so we might as well use TYPECASE.

* Use symbolicate instead of (FORMAT nil "~S") because FORMAT puts
  package names on symbols even if accessible without:
    SB-C(8): (format nil "fast-~s-foo" '+) => "fast-COMMON-LISP:+-foo"

As of this change, there are at least 6 open-source implementations
that can compile SBCL: ABCL, CCL, CLISP, CMUCL, ECL, and SBCL.
I have not recently tested CMUCL, but at last check it still worked.
2019-02-01 20:47:00 -05:00
Douglas Katzman e2752c4b38 Tweak things to allow use of ECL as host lisp
* Call SB-XC:SUBTYPEP in GENERATE-NUMBER-DISPATCH, not the host's

* Don't pass improper lists to MAPC in the disassembler.
  This looks to have been a genuine bug in our code.

* Ignore contents of COMMON-LISP-USER package in genesis

* Workaround ECL compiler bugs

  - discrimination of complex floats in compiled code is wrong.

  - disable the SB-INT:INFO compiler macro.

  - miscompilation of SB-ASSEM::LABEL-POSITION which is mysteriously fixed
    by not proclaiming the ftype.

Build succeeds with ECL 16.1.3
2019-01-31 01:54:02 -05:00
Douglas Katzman 825d4d0070 Really prevent #!+ vs #+ confusion now
Files which are part of the build framework, namely "make-*.lisp" and anything
under src/cold except for src/cold/warm always interpret #+/- as host features,
which is obvious. In those files, the reader can't parse target feature sexprs,
but the value of SB-XC:*FEATURES* may be tested with code.

Files which are sources, namely everything else, can _only_ refer to target
features in "#+"/"#-" (sans #\!) expressions, unless within a #+(host-feature)
escape. Thus it is identical, for the time being, to using #!+ or #!-.

As far as implementation, the default *READTABLE* never has its macros changed,
so you can't just slurp a file containing target feature conditionals -
instead *READTABLE* must be bound from *XC-READTABLE*. You may continue to use
the features named :sb-xc-host and :sb-xc with either the bang or non-bang
conditional syntax. So ultimately, "#!" syntax serves no purpose at all,
and we can replace every occurrence with normal syntax.

Note also that DO-STEMS-AND-FLAGS requires a third argument to indicate whether
the flags pertain to make-host-1 or -2 which avoid erroneous injection of
the :IGNORE-FAILURE-P flag when it is intended for the host. I don't love it,
but lacking proof that the CMUCL workaround isn't needed, I preserved the
behavior while improving upon it as well.
2019-01-28 00:52:12 -05:00
Douglas Katzman 2def8ebf95 Search-and-replace SB!XC with SB-XC 2018-12-05 11:54:16 -05:00
Douglas Katzman d27fc52fa3 Check STRINGP before search on simple-condition-format-control 2018-10-19 23:32:39 -04:00
Douglas Katzman 5c95026f46 Add safety check for vop-named/translates reader
Fix build order some more: LAYOUT-EQ was not defined soon enough to
use in typetran, and the SYMBOL-INFO-VECTOR thingy was correct but
warned without a slight tweak.
2018-09-20 18:57:08 -04:00
Douglas Katzman de2e9fa568 Generate Unicode tables outside of with-compilation-unit
Also remove unnecessary limit on print-length/level in make-host-1
because if the host printer crashes, that's on it, nor us.
(for suitable values of "it" and "us")
2018-09-20 18:09:46 -04:00
Douglas Katzman 1a5917ddc9 Rename *SHEBANG-FEATURES* -> SB!XC:*FEATURES* 2018-03-31 22:49:51 -04:00
Douglas Katzman ea395cb6fb Share magic constants between genesis and editcore 2018-01-15 13:53:38 -05:00
Douglas Katzman 4d146e6d6b Optionally be less noisy during build
if --noinform is added to the SBCL invocation options in make-target-2
2017-11-17 16:10:06 -05:00
Douglas Katzman 18d09df3c3 arm64: Enforce no "undefined" warnings from make-host-1 2017-04-18 12:58:41 -04:00