tvl-depot/third_party
sterni 02566cdcfb feat(nix/buildLisp): add ecl
Adds ECL as a second supported implementation, specifically a statically
linked ECL. This is interesting because we can create statically linked
binaries, but has a few drawbacks which doesn't make it generally
useful:

* Loading things is very slow: The statically linked ECL only has byte
  compilation available, so when we do load things or use the REPL it is
  significantly worse than with e. g. SBCL.

* We can't load shared objects via the FFI since ECL's dffi is not
  available when linked statically. This means that as it stands, we
  can't build a statically linked //web/panettone for example.

Since ECL is quite slow anyways, I think these drawbacks are worth it
since the biggest reason for using ECL would be to get a statically
linked binary. If we change our minds, it shouldn't be too hard to
provide ecl-static and ecl-dynamic as separate implementations.

ECL is LGPL and some libraries it uses as part of its runtime are as
well. I've outlined in the ecl-static overlay why this should be of no
concern in the context of depot even though we are statically linking.

Currently everything is building except projects that are using cffi to
load shared libaries which have gotten an appropriate
`badImplementations` entry. To get the rest building the following
changes were made:

* Anywhere a dependency on UIOP is expressed as `bundled "uiop"` we now
  use `bundled "asdf"` for all implementations except SBCL. From my
  testing, SBCL seems to be the only implementation to support using
  `(require 'uiop)` to only load the UIOP package. Where both a
  dependency on ASDF and UIOP exists, we just delete the UIOP one.
  `(require 'asdf)` always causes UIOP to be available.

* Where appropriate only conditionally compile SBCL-specific code and
  if any build the corresponding files for ECL.

* //lisp/klatre: Use the standard condition parse-error for all
  implementations except SBCL in try-parse-integer.

* //3p/lisp/ironclad: disable SBCL assembly optimization hack for all
  other platforms as it may interfere with compilation.

* //3p/lisp/trivial-mimes: prevent call to asdf function by substituting
  it out of the source since it always errors out in ECL and we hardcode
  the correct path elsewhere anyways.

As it stands ECL still suffers from a very weird problem which happens
when compiling postmodern and moptilities:
https://gitlab.com/embeddable-common-lisp/ecl/-/issues/651

Change-Id: I0285924f92ac154126b4c42145073c3fb33702ed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3297
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: eta <tvl@eta.st>
2021-08-24 22:00:15 +00:00
..
abseil_cpp chore(3p/overlays): Remove LLVM11 bump from overlay 2021-05-24 18:15:05 +00:00
alsi refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
apereo-cas chore(3p/nixpkgs): Bump unstable channel to 2021-06-14 2021-06-14 21:47:57 +00:00
bat_syntaxes feat(3p/bat_syntaxes): Add a derivation to extend bat syntaxes 2020-06-15 16:52:23 +00:00
bufbuild chore(3p): Bump nixos-unstable channel 2020-08-17 09:54:18 +00:00
buzz chore(3p/nixpkgs): update channels to 2021-07-25 2021-07-28 12:10:59 +00:00
cgit refactor(third_party): Consistent use of depot.third_party vs. pkgs 2021-04-10 11:48:55 +00:00
dhall refactor(3p/dhall): Move easy-dhall-nix import into separate folder 2021-04-10 14:32:02 +00:00
elmPackages_0_18 fix(gemma): Fix build by backporting Elm 0.18 2021-03-24 00:54:43 +00:00
emacs fix(tazjin/emacs): Remove temporary override for telega 2021-08-24 17:11:49 +00:00
farmhash feat(third_party): Add Google's farmhash library 2020-05-08 18:39:43 +01:00
gerrit fix(3p/gerrit): Fix hash mismatch in dependency blob 2021-08-24 21:58:24 +00:00
gerrit_plugins chore(nixpkgs): Bump channels to 2021-05-25 2021-05-25 17:09:28 +00:00
git refactor: Move nixpkgs attribute to third_party.nixpkgs 2021-04-10 21:18:55 +00:00
gitignoreSource fix(gs/xanthous): update xanthous.cabal, make CI catch such errors 2021-03-19 23:21:54 +00:00
glog chore(3p/overlays): Remove LLVM11 bump from overlay 2021-05-24 18:15:05 +00:00
gopkgs feat(third_party/gopkgs): add charmbracelet/{bubbletea,bubbles} 2021-04-23 18:30:06 +00:00
grpc chore(nixpkgs): Bump channels to 2021-05-25 2021-05-25 17:09:28 +00:00
gtest chore(3p/overlays): Remove LLVM11 bump from overlay 2021-05-24 18:15:05 +00:00
hii feat(third_party): init hii at 1.0.0 2021-04-01 11:29:51 +00:00
impermanence feat(3p): Import nix-community/impermanence module 2021-03-21 00:55:58 +00:00
irccat feat(3p/irccat): init at '06a985y4' 2020-11-08 18:38:08 +00:00
josh fix(3p/josh): Temporarily patch instances of master->canon 2021-06-02 08:00:07 +00:00
kernelPatches/trx40_usb_audio feat(3p/kernelPatches): Add kernel audio patch for ASUS TRX40 Pro 2020-06-20 22:27:03 +00:00
lisp feat(nix/buildLisp): add ecl 2021-08-24 22:00:15 +00:00
litestream feat(3p/litestream): Add derivation for litestream 2021-05-22 17:58:31 +00:00
naersk chore(3p/naersk): Bump version to latest commit 2021-06-02 08:00:07 +00:00
nix chore(nixpkgs): Bump channels to 2021-05-25 2021-05-25 17:09:28 +00:00
nixery feat(3p/nixery): Import Nixery repository build targets 2021-08-06 13:24:48 +00:00
nixpkgs feat(nix/buildLisp): add ecl 2021-08-24 22:00:15 +00:00
notmuch refactor: Move nixpkgs attribute to third_party.nixpkgs 2021-04-10 21:18:55 +00:00
nsfv feat(3p/nsfv): Add derivation for NSFV 2020-06-25 02:27:38 +00:00
overlays feat(nix/buildLisp): add ecl 2021-08-24 22:00:15 +00:00
prometheus-fail2ban-exporter refactor(ops): Break out prometheus-fail2ban-exporter module 2021-06-12 15:51:49 +00:00
protobuf chore(3p/overlays): Remove LLVM11 bump from overlay 2021-05-24 18:15:05 +00:00
python/broadlink feat(3p/python/broadlink): Add max_devices discovery parameter 2020-04-26 14:50:04 +01:00
rapidcheck chore(3p/overlays): Remove LLVM11 bump from overlay 2021-05-24 18:15:05 +00:00
rust-crates feat(tools): add rust-crates-advisory 2021-05-17 23:00:57 +00:00
smtprelay feat(nixos/smtprelay): Add derivation & module for SMTP relay 2020-06-13 01:23:01 +00:00
default.nix refactor(ops/nixos): Pass depot as a special argument 2021-05-24 21:48:37 +00:00
README.md docs(third_party): Add README 2019-06-29 14:12:38 +01:00

Third-Party Code

Code under this folder is one of the following:

  1. Externally developed dependencies which have been imported ("vendored") into this repository. These dependencies come with their own licenses and whatever else.

  2. Code that is developed inside of this repository, but released to an external repository via Copybara.