Merge master into staging-next
This commit is contained in:
commit
9546b65417
@ -2,7 +2,7 @@
|
||||
let
|
||||
versionForFile = v: builtins.replaceStrings ["."] [""] v;
|
||||
|
||||
mkPianoteq = { name, src, version, archdir, ... }:
|
||||
mkPianoteq = { name, src, version, archdir ? if (stdenv.hostPlatform.system == "aarch64-linux") then "arm-64bit" else "x86-64bit", ... }:
|
||||
stdenv.mkDerivation rec {
|
||||
inherit src version;
|
||||
|
||||
@ -47,7 +47,7 @@ let
|
||||
homepage = "https://www.modartt.com/pianoteq";
|
||||
description = "Software synthesizer that features real-time MIDI-control of digital physically modeled pianos and related instruments";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ]; # TODO extract binary according to each platform?
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
maintainers = [ maintainers.mausch ];
|
||||
};
|
||||
};
|
||||
@ -169,7 +169,6 @@ in {
|
||||
stage-trial = mkPianoteq rec {
|
||||
name = "stage-trial";
|
||||
version = "8.0.8";
|
||||
archdir = "x86-64bit";
|
||||
src = fetchPianoteqTrial {
|
||||
name = "pianoteq_stage_linux_trial_v${versionForFile version}.7z";
|
||||
sha256 = "sha256-dp0bTzzh4aQ2KQ3z9zk+3meKQY4YRYQ86rccHd3+hAQ=";
|
||||
@ -178,7 +177,6 @@ in {
|
||||
standard-trial = mkPianoteq rec {
|
||||
name = "standard-trial";
|
||||
version = "8.0.8";
|
||||
archdir = "x86-64bit";
|
||||
src = fetchPianoteqTrial {
|
||||
name = "pianoteq_linux_trial_v${versionForFile version}.7z";
|
||||
sha256 = "sha256-LSrnrjkEhsX9TirUUFs9tNqH2A3cTt3I7YTfcTT6EP8=";
|
||||
@ -187,7 +185,7 @@ in {
|
||||
stage-6 = mkPianoteq rec {
|
||||
name = "stage-6";
|
||||
version = "6.7.3";
|
||||
archdir = "amd64";
|
||||
archdir = if (stdenv.hostPlatform.system == "aarch64-linux") then throw "Pianoteq stage-6 is not supported on aarch64-linux" else "amd64";
|
||||
src = fetchPianoteqWithLogin {
|
||||
name = "pianoteq_stage_linux_v${versionForFile version}.7z";
|
||||
sha256 = "0jy0hkdynhwv0zhrqkby0hdphgmcc09wxmy74rhg9afm1pzl91jy";
|
||||
@ -196,7 +194,6 @@ in {
|
||||
stage-7 = mkPianoteq rec {
|
||||
name = "stage-7";
|
||||
version = "7.3.0";
|
||||
archdir = "x86-64bit";
|
||||
src = fetchPianoteqWithLogin {
|
||||
name = "pianoteq_stage_linux_v${versionForFile version}.7z";
|
||||
sha256 = "05w7sv9v38r6ljz9xai816w5z2qqwx88hcfjm241fvgbs54125hx";
|
||||
|
@ -10,11 +10,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "qmidiarp";
|
||||
version = "0.6.5";
|
||||
version = "0.6.7";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.code.sf.net/p/qmidiarp/code";
|
||||
sha256 = "1g2143gzfbihqr2zi3k2v1yn1x3mwfbb2khmcd4m4cq3hcwhhlx9";
|
||||
sha256 = "sha256-CxElnyREXLR086xYxCQTHZumrLP52CDYvv+ougKqJz0=";
|
||||
rev = "qmidiarp-${version}";
|
||||
};
|
||||
|
||||
|
@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "lndhub-go";
|
||||
version = "0.13.0";
|
||||
version = "0.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "getAlby";
|
||||
repo = "lndhub.go";
|
||||
rev = "${version}";
|
||||
sha256 = "sha256-ZyqE6xFNsOwTBbLLn14jwNp9UkagTRgAQS+SEl+POaY=";
|
||||
sha256 = "sha256-m+Sc/rsYIbvd1oOqG4OT+wPtSxlgFq8m03n28eZIWJU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Wsejz/vYaT/maN7dYcrXPTXg30jZaldaslXbHcgHlRs=";
|
||||
vendorHash = "sha256-a4yVuEfhLNM8IEYnafWf///SNLqQL5XZfGgJ5AZLx3c=";
|
||||
|
||||
doCheck = false; # tests require networking
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"version": "3.151.3",
|
||||
"version": "3.154.1",
|
||||
"appimage": {
|
||||
"x86_64-linux": {
|
||||
"url": "https://github.com/standardnotes/app/releases/download/%40standardnotes/desktop%403.151.3/standard-notes-3.151.3-linux-x86_64.AppImage",
|
||||
"hash": "sha512-Wk31nB9OjR8E3cPFfh4KpUqQxXsnerzDt5TgaExXW4OeWLftv3ejyf2ROWXAoqG/8K87OclbunCqS3b2g8hAjA=="
|
||||
"url": "https://github.com/standardnotes/app/releases/download/%40standardnotes/desktop%403.154.1/standard-notes-3.154.1-linux-x86_64.AppImage",
|
||||
"hash": "sha512-eMKrRCMVEpgtKLuLTIIOkwDVKmkFFWqlAg2UXs+h8axQwKyEnnA6dGaWfQvE/NSQwgWvmZRJZNMUE2atTc9AAw=="
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"url": "https://github.com/standardnotes/app/releases/download/%40standardnotes/desktop%403.151.3/standard-notes-3.151.3-linux-arm64.AppImage",
|
||||
"hash": "sha512-nPTpEJs978wxZjG1pN15ETgUBdGBzl574QHCQNo2ShYvhi9Uf38jCaGQIsY0d779eT8kSHuMBXoAiE/flxfWMQ=="
|
||||
"url": "https://github.com/standardnotes/app/releases/download/%40standardnotes/desktop%403.154.1/standard-notes-3.154.1-linux-arm64.AppImage",
|
||||
"hash": "sha512-6EllhNEaLPL/5Nmt1NxtU6x6wi7DnU+k7oyr1HaLWMmkE673vQTyYW+fyFRrxnyBUlmjG4i+ztWYEzxN8CBlqg=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
65
pkgs/applications/misc/boatswain/default.nix
Normal file
65
pkgs/applications/misc/boatswain/default.nix
Normal file
@ -0,0 +1,65 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, gtk4
|
||||
, libgee
|
||||
, libadwaita
|
||||
, wrapGAppsHook4
|
||||
, appstream-glib
|
||||
, desktop-file-utils
|
||||
, libpeas
|
||||
, libportal-gtk4
|
||||
, gusb
|
||||
, hidapi
|
||||
, json-glib
|
||||
, libsecret
|
||||
, libsoup_3
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "boatswain";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "World";
|
||||
repo = "boatswain";
|
||||
rev = version;
|
||||
hash = "sha256-Q16ooTaCgwbwEqa0iRzAoaS5OHCSi6dXaiVgC3uc/zc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
wrapGAppsHook4
|
||||
appstream-glib
|
||||
desktop-file-utils
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk4
|
||||
libadwaita
|
||||
libgee
|
||||
libpeas
|
||||
libportal-gtk4
|
||||
gusb
|
||||
hidapi
|
||||
json-glib
|
||||
libsecret
|
||||
libsoup_3
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Control Elgato Stream Deck devices.";
|
||||
homepage = "https://gitlab.gnome.org/World/boatswain";
|
||||
mainProgram = "boatswain";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ _0xMRTT ];
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
@ -13,7 +13,7 @@ GEM
|
||||
gemojione (4.3.3)
|
||||
json
|
||||
github-markup (4.0.1)
|
||||
gollum (5.3.1)
|
||||
gollum (5.3.2)
|
||||
gemojione (~> 4.1)
|
||||
gollum-lib (>= 5.2.3, < 6.0)
|
||||
i18n (~> 1.8)
|
||||
@ -32,7 +32,7 @@ GEM
|
||||
uglifier (~> 4.2)
|
||||
useragent (~> 0.16.2)
|
||||
webrick (~> 1.7)
|
||||
gollum-lib (5.2.3)
|
||||
gollum-lib (5.2.4)
|
||||
gemojione (~> 4.1)
|
||||
github-markup (~> 4.0)
|
||||
gollum-rugged_adapter (~> 2.0)
|
||||
@ -45,27 +45,27 @@ GEM
|
||||
mime-types (~> 3.4)
|
||||
rugged (~> 1.5)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.12.0)
|
||||
i18n (1.13.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.6.3)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
loofah (2.19.1)
|
||||
loofah (2.20.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mime-types (3.4.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2023.0218.1)
|
||||
mini_portile2 (2.8.1)
|
||||
mini_portile2 (2.8.2)
|
||||
multi_json (1.15.0)
|
||||
mustache (1.1.1)
|
||||
mustache-sinatra (2.0.0)
|
||||
mustache (~> 1.0)
|
||||
mustermann (2.0.2)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.14.2)
|
||||
nokogiri (1.14.3)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
racc (~> 1.4)
|
||||
octicons (12.1.0)
|
||||
@ -75,7 +75,7 @@ GEM
|
||||
psych (5.1.0)
|
||||
stringio
|
||||
racc (1.6.2)
|
||||
rack (2.2.6.4)
|
||||
rack (2.2.7)
|
||||
rack-protection (2.2.4)
|
||||
rack
|
||||
rb-fsevent (0.11.2)
|
||||
@ -89,7 +89,7 @@ GEM
|
||||
rexml
|
||||
ruby2_keywords (0.0.5)
|
||||
rubypants (0.7.1)
|
||||
rugged (1.6.2)
|
||||
rugged (1.6.3)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
@ -111,7 +111,7 @@ GEM
|
||||
rack (> 1, < 3)
|
||||
sprockets-helpers (1.4.0)
|
||||
sprockets (>= 2.2)
|
||||
stringio (3.0.5)
|
||||
stringio (3.0.6)
|
||||
therubyrhino (2.1.2)
|
||||
therubyrhino_jar (>= 1.7.4, < 1.7.9)
|
||||
therubyrhino_jar (1.7.8)
|
||||
@ -144,4 +144,4 @@ DEPENDENCIES
|
||||
wikicloth
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.6
|
||||
2.4.12
|
||||
|
@ -106,10 +106,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1nx3ss1ck5mgj14580z73pfwri0l4f0ilnckh9mgxmi9i4rk24y2";
|
||||
sha256 = "07lv4idxxghmq18k2r42l7kxz204l2fgri5xjapl79yy9dk53s5x";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.3.1";
|
||||
version = "5.3.2";
|
||||
};
|
||||
gollum-lib = {
|
||||
dependencies = ["gemojione" "github-markup" "gollum-rugged_adapter" "loofah" "nokogiri" "octicons" "rouge" "twitter-text"];
|
||||
@ -117,10 +117,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "11bs7yfkznz7rdzxc9am53mix5nnv8505d565j4cci2bg6iqy2dz";
|
||||
sha256 = "15nkslf8vm4gr8wbicm5xwsmgqy22zy3gb6pgdzdm78vyqva055d";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.2.3";
|
||||
version = "5.2.4";
|
||||
};
|
||||
gollum-rugged_adapter = {
|
||||
dependencies = ["mime-types" "rugged"];
|
||||
@ -149,10 +149,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1vdcchz7jli1p0gnc669a7bj3q1fv09y9ppf0y3k0vb1jwdwrqwi";
|
||||
sha256 = "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.12.0";
|
||||
version = "1.13.0";
|
||||
};
|
||||
json = {
|
||||
groups = ["default"];
|
||||
@ -192,10 +192,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "08qhzck271anrx9y6qa6mh8hwwdzsgwld8q0000rcd7yvvpnjr3c";
|
||||
sha256 = "1mi4ia13fisc97fzd8xcd9wkjdki7zfbmdn1xkdzplicir68gyp8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.19.1";
|
||||
version = "2.20.0";
|
||||
};
|
||||
mime-types = {
|
||||
dependencies = ["mime-types-data"];
|
||||
@ -223,10 +223,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp";
|
||||
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.1";
|
||||
version = "2.8.2";
|
||||
};
|
||||
multi_json = {
|
||||
groups = ["default"];
|
||||
@ -276,10 +276,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1djq4rp4m967mn6sxmiw75vz24gfp0w602xv22kk1x3cmi5afrf7";
|
||||
sha256 = "0fnw0z8zl8b5k35g9m5hhc1g4s6ajzjinhyxnqjrx7l7p07fw71v";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.2";
|
||||
version = "1.14.3";
|
||||
};
|
||||
octicons = {
|
||||
dependencies = ["nokogiri"];
|
||||
@ -329,10 +329,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1qgwkcb8kxns8d5187cxjaxf18b7dmg9gh6cr9c1125m0bj2pnfk";
|
||||
sha256 = "16w217k9z02c4hqizym8dkj6bqmmzx4qdvqpnskgzf174a5pwdxk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.6.4";
|
||||
version = "2.2.7";
|
||||
};
|
||||
rack-protection = {
|
||||
dependencies = ["rack"];
|
||||
@ -443,10 +443,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0z33vpk4g24zdhrwsmwbr3mhb0xpdl6jna2nscrwgq77xl6iw4jg";
|
||||
sha256 = "016bawsahkhxx7p8azxirpl7y2y7i8a027pj8910gwf6ipg329in";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.6.2";
|
||||
version = "1.6.3";
|
||||
};
|
||||
sass = {
|
||||
dependencies = ["sass-listen"];
|
||||
@ -519,10 +519,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1al02vvy3df0q3jy8sblkgpf688bji84l4p4xq9gzkk469i23bis";
|
||||
sha256 = "10w46rlh844kax248l1m3pyrj94n1qpc9691j8r5v0rzdxibpy7v";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.0.5";
|
||||
version = "3.0.6";
|
||||
};
|
||||
therubyrhino = {
|
||||
dependencies = ["therubyrhino_jar"];
|
||||
|
@ -1,15 +0,0 @@
|
||||
|
||||
Fix "No known features for CXX compiler", see
|
||||
https://cmake.org/pipermail/cmake/2016-December/064733.html and the note at
|
||||
https://cmake.org/cmake/help/v3.10/command/cmake_minimum_required.html
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
#========================================================================
|
||||
|
||||
-cmake_minimum_required(VERSION 2.8.8)
|
||||
+cmake_minimum_required(VERSION 3.1.0)
|
||||
|
||||
project(xpdf)
|
||||
|
@ -22,7 +22,10 @@ stdenv.mkDerivation rec {
|
||||
# Fix "No known features for CXX compiler", see
|
||||
# https://cmake.org/pipermail/cmake/2016-December/064733.html and the note at
|
||||
# https://cmake.org/cmake/help/v3.10/command/cmake_minimum_required.html
|
||||
patches = lib.optional stdenv.isDarwin ./cmake_version.patch;
|
||||
postPatch = lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace CMakeLists.txt --replace \
|
||||
'cmake_minimum_required(VERSION 2.8.12)' 'cmake_minimum_required(VERSION 3.1.0)'
|
||||
'';
|
||||
|
||||
nativeBuildInputs =
|
||||
[ cmake ]
|
||||
|
@ -2,17 +2,17 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "glooctl";
|
||||
version = "1.14.1";
|
||||
version = "1.14.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "solo-io";
|
||||
repo = "gloo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-T8YKIUaUFhkl2iLV/6GjcjN28YmFo8fnQsYv78j3fvI=";
|
||||
hash = "sha256-g/gn08Mpwocf5SBJu93bMNiAlg9osIWUy0skV3JzmMk=";
|
||||
};
|
||||
|
||||
subPackages = [ "projects/gloo/cli/cmd" ];
|
||||
vendorHash = "sha256-NuvwqpZix7VJ65bkCKju8cJaGbNnyKSZyJ02IHK9SHA=";
|
||||
vendorHash = "sha256-z1am0HfRrPAg2H7ZAjinoirfmaCFdF1oavVVVKQ3V8o=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "helm-diff";
|
||||
version = "3.6.0";
|
||||
version = "3.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "databus23";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-JeQP2KXoLxkyRZVFcd6Rrz5xyJd+F3plzznAVP3Um8g=";
|
||||
sha256 = "sha256-bG1i6Tea7BLWuy5cd3+249sOakj2LfAZLphtjMLdlug=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-d5NSqCJrk9QhV5gVOKUG/uJxuvt8X8hiQd8yJEoXPL0=";
|
||||
vendorSha256 = "sha256-80cTeD+rCwKkssGQya3hMmtYnjia791MjB4eG+m5qd0=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X github.com/databus23/helm-diff/v3/cmd.Version=${version}" ];
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8,13 +8,13 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "gurk-rs";
|
||||
version = "0.3.0";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "boxdot";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-uJvi082HkWW9y8jwHTvzuzBAi7uVtjq/4U0bO0EWdVM=";
|
||||
sha256 = "sha256-LN54XUu+54yGVCbi7ZwY22KOnfS67liioI4JeR3l92I=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -26,8 +26,8 @@ rustPlatform.buildRustPackage rec {
|
||||
outputHashes = {
|
||||
"curve25519-dalek-3.2.1" = "sha256-T/NGZddFQWq32eRu6FYfgdPqU8Y4Shi1NpMaX4GeQ54=";
|
||||
"libsignal-protocol-0.1.0" = "sha256-gapAurbs/BdsfPlVvWWF7Ai1nXZcxCW8qc5gQdbnthM=";
|
||||
"libsignal-service-0.1.0" = "sha256-CrfTdUcxP591pigS2069gEjzy5jSRz7mHORLCodQDSE=";
|
||||
"presage-0.3.0" = "sha256-Ptyjf5/SI8ftjiIxK+gVya5Cmv5sOBmWXM8ZveVV7Pc=";
|
||||
"libsignal-service-0.1.0" = "sha256-C1Lhi/NRWyPT7omlAdjK7gVTLxmZjZVuZgmZ8dn/D3Y=";
|
||||
"presage-0.5.0-dev" = "sha256-OtRrPcH4/o6Sq/day1WU6R8QgQ2xWkespkfFPqFeKWk=";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -8,8 +8,7 @@
|
||||
, qtsvg
|
||||
, qtwayland
|
||||
, qtwebsockets
|
||||
, qtx11extras
|
||||
, qtxmlpatterns
|
||||
, qt5compat
|
||||
, makeWrapper
|
||||
, wrapQtAppsHook
|
||||
}:
|
||||
@ -24,7 +23,7 @@ stdenv.mkDerivation {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-W1bu3isEe1j7XTj+deLNk6Ncssy2UKG+eF36fe1FFWs=";
|
||||
hash = "sha256-W1bu3isEe1j7XTj+deLNk6Ncssy2UKG+eF36fe1FFWs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -38,8 +37,7 @@ stdenv.mkDerivation {
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
qtx11extras
|
||||
qtxmlpatterns
|
||||
qt5compat
|
||||
] ++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
|
||||
postInstall =
|
||||
|
@ -9,11 +9,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "src";
|
||||
version = "1.31";
|
||||
version = "1.32";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.catb.org/~esr/src/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-m00CG96w5olzxitxzTE2RLAQniUm1hhHpFmSaVgvDt0=";
|
||||
sha256 = "sha256-CSA1CmPvXuOl9PzX97/soGRq2HHBcYuA5PepOVMaMWU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "numix-icon-theme-square";
|
||||
version = "23.04.20";
|
||||
version = "23.04.28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "numixproject";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-O9itWigot15qljmPx4msBa7ucb4j+Wb08q5UTsF2sB8=";
|
||||
sha256 = "sha256-YiuXSYRiFyRh+dlZAvVViYGI2M57z1QPRb3JleL57Go=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gtk3 ];
|
||||
|
@ -19,11 +19,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mate-panel";
|
||||
version = "1.26.2";
|
||||
version = "1.26.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "rsT5jInFnnbMBlbtBILx2CkS9N7MZg8hyNAE5JPgVBA=";
|
||||
sha256 = "8z8Q1SdFC6fpjMcKslWsSBMwqp5m28x8URtrqhcd4Ck=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cmdstan";
|
||||
version = "2.32.0";
|
||||
version = "2.32.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stan-dev";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-H8JXOqiSG9N+DD84S3iYvXnSgKUJuf7UZ7qT05Ti8xQ=";
|
||||
hash = "sha256-VFZ8YOJMGKlROYsmfiQxAgYvz4zPMdzfRfAgStbRSJg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ stanc ];
|
||||
|
@ -6,7 +6,11 @@
|
||||
}:
|
||||
|
||||
let
|
||||
enableLibGccOutput = (with stdenv; targetPlatform == hostPlatform) && !langJit && !stdenv.hostPlatform.isDarwin;
|
||||
enableLibGccOutput =
|
||||
(with stdenv; targetPlatform == hostPlatform) &&
|
||||
!langJit &&
|
||||
!stdenv.hostPlatform.isDarwin &&
|
||||
!stdenv.hostPlatform.isStatic;
|
||||
in
|
||||
(pkg: pkg.overrideAttrs (previousAttrs: lib.optionalAttrs ((!langC) || langJit || enableLibGccOutput) {
|
||||
outputs = previousAttrs.outputs ++ lib.optionals enableLibGccOutput [ "libgcc" ];
|
||||
|
@ -47,11 +47,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "go";
|
||||
version = "1.19.8";
|
||||
version = "1.19.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://go.dev/dl/go${version}.src.tar.gz";
|
||||
hash = "sha256-HXpnkp3Mr+r4op5VmFvCt4ngSZyxoXEAA58ITjI42i8=";
|
||||
hash = "sha256-ExGQpGl6cMWx0jLfXT9Vo/nsDnjkBRYZb/s/Ca5qV0Q=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jsonnet";
|
||||
version = "0.19.1";
|
||||
version = "0.20.0";
|
||||
outputs = ["out" "doc"];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
rev = "v${version}";
|
||||
owner = "google";
|
||||
repo = "jsonnet";
|
||||
sha256 = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";
|
||||
sha256 = "sha256-FtVJE9alEl56Uik+nCpJMV5DMVVmRCnE1xMAiWdK39Y=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ jekyll ];
|
||||
|
37
pkgs/development/compilers/llvm/16/bintools/default.nix
Normal file
37
pkgs/development/compilers/llvm/16/bintools/default.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ lib, runCommand, stdenv, llvm, lld, version }:
|
||||
|
||||
let
|
||||
prefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
|
||||
in runCommand "llvm-binutils-${version}" {
|
||||
preferLocalBuild = true;
|
||||
passthru = {
|
||||
isLLVM = true;
|
||||
};
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
for prog in ${lld}/bin/*; do
|
||||
ln -s $prog $out/bin/${prefix}$(basename $prog)
|
||||
done
|
||||
for prog in ${llvm}/bin/*; do
|
||||
ln -sf $prog $out/bin/${prefix}$(basename $prog)
|
||||
done
|
||||
|
||||
ln -s ${llvm}/bin/llvm-ar $out/bin/${prefix}ar
|
||||
ln -s ${llvm}/bin/llvm-ar $out/bin/${prefix}dlltool
|
||||
ln -s ${llvm}/bin/llvm-ar $out/bin/${prefix}ranlib
|
||||
ln -s ${llvm}/bin/llvm-cxxfilt $out/bin/${prefix}c++filt
|
||||
ln -s ${llvm}/bin/llvm-debuginfod $out/bin/${prefix}debuginfod
|
||||
ln -s ${llvm}/bin/llvm-debuginfod-find $out/bin/${prefix}debuginfod-find
|
||||
ln -s ${llvm}/bin/llvm-dwp $out/bin/${prefix}dwp
|
||||
ln -s ${llvm}/bin/llvm-nm $out/bin/${prefix}nm
|
||||
ln -s ${llvm}/bin/llvm-objcopy $out/bin/${prefix}objcopy
|
||||
ln -s ${llvm}/bin/llvm-objcopy $out/bin/${prefix}strip
|
||||
ln -s ${llvm}/bin/llvm-objdump $out/bin/${prefix}objdump
|
||||
ln -s ${llvm}/bin/llvm-rc $out/bin/${prefix}windres
|
||||
ln -s ${llvm}/bin/llvm-readobj $out/bin/${prefix}readelf
|
||||
ln -s ${llvm}/bin/llvm-size $out/bin/${prefix}size
|
||||
ln -s ${llvm}/bin/llvm-strings $out/bin/${prefix}strings
|
||||
ln -s ${llvm}/bin/llvm-symbolizer $out/bin/${prefix}addr2line
|
||||
|
||||
ln -s ${lld}/bin/lld $out/bin/${prefix}ld
|
||||
''
|
128
pkgs/development/compilers/llvm/16/clang/default.nix
Normal file
128
pkgs/development/compilers/llvm/16/clang/default.nix
Normal file
@ -0,0 +1,128 @@
|
||||
{ lib, stdenv, llvm_meta
|
||||
, monorepoSrc, runCommand
|
||||
, substituteAll, cmake, ninja, libxml2, libllvm, version, python3
|
||||
, buildLlvmTools
|
||||
, fixDarwinDylibNames
|
||||
, enableManpages ? false
|
||||
}:
|
||||
|
||||
let
|
||||
self = stdenv.mkDerivation (rec {
|
||||
pname = "clang";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
cp -r ${monorepoSrc}/clang-tools-extra "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python3 ]
|
||||
++ lib.optional enableManpages python3.pkgs.sphinx
|
||||
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
|
||||
|
||||
buildInputs = [ libxml2 libllvm ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCLANG_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/clang"
|
||||
"-DCLANGD_BUILD_XPC=OFF"
|
||||
"-DLLVM_ENABLE_RTTI=ON"
|
||||
] ++ lib.optionals enableManpages [
|
||||
"-DCLANG_INCLUDE_DOCS=ON"
|
||||
"-DLLVM_ENABLE_SPHINX=ON"
|
||||
"-DSPHINX_OUTPUT_MAN=ON"
|
||||
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||
"-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./purity.patch
|
||||
# https://reviews.llvm.org/D51899
|
||||
./gnu-install-dirs.patch
|
||||
../../common/clang/add-nostdlibinc-flag.patch
|
||||
# FIMXE: do we need this patch?
|
||||
# (substituteAll {
|
||||
# src = ../../clang-11-12-LLVMgold-path.patch;
|
||||
# libllvmLibdir = "${libllvm.lib}/lib";
|
||||
# })
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
(cd tools && ln -s ../../clang-tools-extra extra)
|
||||
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
|
||||
'';
|
||||
|
||||
outputs = [ "out" "lib" "dev" "python" ];
|
||||
|
||||
postInstall = ''
|
||||
ln -sv $out/bin/clang $out/bin/cpp
|
||||
|
||||
# Move libclang to 'lib' output
|
||||
moveToOutput "lib/libclang.*" "$lib"
|
||||
moveToOutput "lib/libclang-cpp.*" "$lib"
|
||||
substituteInPlace $dev/lib/cmake/clang/ClangTargets-release.cmake \
|
||||
--replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \
|
||||
--replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp."
|
||||
|
||||
mkdir -p $python/bin $python/share/clang/
|
||||
mv $out/bin/{git-clang-format,scan-view} $python/bin
|
||||
if [ -e $out/bin/set-xcode-analyzer ]; then
|
||||
mv $out/bin/set-xcode-analyzer $python/bin
|
||||
fi
|
||||
mv $out/share/clang/*.py $python/share/clang
|
||||
rm $out/bin/c-index-test
|
||||
patchShebangs $python/bin
|
||||
|
||||
mkdir -p $dev/bin
|
||||
cp bin/clang-tblgen $dev/bin
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit libllvm;
|
||||
isClang = true;
|
||||
hardeningUnsupportedFlags = [ "fortify3" ];
|
||||
};
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://clang.llvm.org/";
|
||||
description = "A C language family frontend for LLVM";
|
||||
longDescription = ''
|
||||
The Clang project provides a language front-end and tooling
|
||||
infrastructure for languages in the C language family (C, C++, Objective
|
||||
C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
|
||||
It aims to deliver amazingly fast compiles, extremely useful error and
|
||||
warning messages and to provide a platform for building great source
|
||||
level tools. The Clang Static Analyzer and clang-tidy are tools that
|
||||
automatically find bugs in your code, and are great examples of the sort
|
||||
of tools that can be built using the Clang frontend as a library to
|
||||
parse C/C++ code.
|
||||
'';
|
||||
mainProgram = "clang";
|
||||
};
|
||||
} // lib.optionalAttrs enableManpages {
|
||||
pname = "clang-manpages";
|
||||
|
||||
ninjaFlags = [ "docs-clang-man" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/man/man1
|
||||
# Manually install clang manpage
|
||||
cp docs/man/*.1 $out/share/man/man1/
|
||||
'';
|
||||
|
||||
outputs = [ "out" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = llvm_meta // {
|
||||
description = "man page for Clang ${version}";
|
||||
};
|
||||
});
|
||||
in self
|
109
pkgs/development/compilers/llvm/16/clang/gnu-install-dirs.patch
Normal file
109
pkgs/development/compilers/llvm/16/clang/gnu-install-dirs.patch
Normal file
@ -0,0 +1,109 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 090cfa352078..624b7c9f3400 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -38,12 +38,26 @@ if(CLANG_BUILT_STANDALONE)
|
||||
find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
|
||||
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
|
||||
|
||||
- # Turn into CACHE PATHs for overwritting
|
||||
- set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
|
||||
- set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree")
|
||||
- set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree")
|
||||
- set(LLVM_TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}" CACHE PATH "Path to llvm/bin")
|
||||
- set(LLVM_LIBRARY_DIR "${LLVM_LIBRARY_DIR}" CACHE PATH "Path to llvm/lib")
|
||||
+ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets
|
||||
+ # LLVM_CONFIG.
|
||||
+ if (NOT LLVM_CONFIG_FOUND)
|
||||
+ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config
|
||||
+ # path is removed.
|
||||
+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
|
||||
+ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}")
|
||||
+ # N.B. this is just a default value, the CACHE PATHs below can be overriden.
|
||||
+ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm")
|
||||
+ set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}")
|
||||
+ set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}")
|
||||
+ else()
|
||||
+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}")
|
||||
+ endif()
|
||||
+
|
||||
+ set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
|
||||
+ set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree")
|
||||
+ set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree")
|
||||
+ set(LLVM_TOOLS_BINARY_DIR "${TOOLS_BINARY_DIR}" CACHE PATH "Path to llvm/bin")
|
||||
+ set(LLVM_LIBRARY_DIR "${LIBRARY_DIR}" CACHE PATH "Path to llvm/lib")
|
||||
|
||||
find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
|
||||
NO_DEFAULT_PATH)
|
||||
diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
|
||||
index 75b0080f6715..c895b884cd27 100644
|
||||
--- a/cmake/modules/AddClang.cmake
|
||||
+++ b/cmake/modules/AddClang.cmake
|
||||
@@ -119,8 +119,8 @@ macro(add_clang_library name)
|
||||
install(TARGETS ${lib}
|
||||
COMPONENT ${lib}
|
||||
${export_to_clangtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
if (NOT LLVM_ENABLE_IDE)
|
||||
diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
|
||||
index bb9a11eabbef..e2de91c65fbb 100644
|
||||
--- a/lib/Headers/CMakeLists.txt
|
||||
+++ b/lib/Headers/CMakeLists.txt
|
||||
@@ -437,7 +437,7 @@ add_header_target("openmp-resource-headers" ${openmp_wrapper_files})
|
||||
add_header_target("windows-resource-headers" ${windows_only_files})
|
||||
add_header_target("utility-resource-headers" ${utility_files})
|
||||
|
||||
-set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
|
||||
+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
|
||||
|
||||
#############################################################
|
||||
# Install rules for the catch-all clang-resource-headers target
|
||||
diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
|
||||
index 4f23065a2472..6a0f55991e24 100644
|
||||
--- a/tools/libclang/CMakeLists.txt
|
||||
+++ b/tools/libclang/CMakeLists.txt
|
||||
@@ -234,7 +234,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
|
||||
COMPONENT
|
||||
libclang-python-bindings
|
||||
DESTINATION
|
||||
- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||
+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||
endforeach()
|
||||
if(NOT LLVM_ENABLE_IDE)
|
||||
add_custom_target(libclang-python-bindings)
|
||||
diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt
|
||||
index 3aca22c0b0a8..3115353e3fe3 100644
|
||||
--- a/tools/scan-build-py/CMakeLists.txt
|
||||
+++ b/tools/scan-build-py/CMakeLists.txt
|
||||
@@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild})
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
|
||||
install(FILES lib/libscanbuild/${lib}
|
||||
- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild
|
||||
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild"
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
||||
@@ -106,7 +106,7 @@ foreach(resource ${LibScanbuildResources})
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
|
||||
install(FILES lib/libscanbuild/resources/${resource}
|
||||
- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild/resources
|
||||
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild/resources"
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
||||
@@ -122,7 +122,7 @@ foreach(lib ${LibEar})
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
|
||||
install(FILES lib/libear/${lib}
|
||||
- DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libear
|
||||
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libear"
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
29
pkgs/development/compilers/llvm/16/clang/purity.patch
Normal file
29
pkgs/development/compilers/llvm/16/clang/purity.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
|
||||
From: Will Dietz <w@wdtz.org>
|
||||
Date: Thu, 18 May 2017 11:56:12 -0500
|
||||
Subject: [PATCH] "purity" patch for 5.0
|
||||
|
||||
---
|
||||
lib/Driver/ToolChains/Gnu.cpp | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
|
||||
index fe3c0191bb..c6a482bece 100644
|
||||
--- a/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -487,13 +487,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
} else {
|
||||
if (Args.hasArg(options::OPT_rdynamic))
|
||||
CmdArgs.push_back("-export-dynamic");
|
||||
|
||||
- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE &&
|
||||
- !Args.hasArg(options::OPT_r)) {
|
||||
- CmdArgs.push_back("-dynamic-linker");
|
||||
- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
|
||||
- ToolChain.getDynamicLinker(Args)));
|
||||
- }
|
||||
}
|
||||
|
||||
CmdArgs.push_back("-o");
|
||||
--
|
||||
2.11.0
|
@ -0,0 +1,21 @@
|
||||
diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt
|
||||
index 3a66dd9c3fb..7efc85d9f9f 100644
|
||||
--- a/lib/builtins/CMakeLists.txt
|
||||
+++ b/lib/builtins/CMakeLists.txt
|
||||
@@ -348,4 +348,8 @@ if (NOT MSVC)
|
||||
|
||||
+ set(i486_SOURCES ${i386_SOURCES})
|
||||
+ set(i586_SOURCES ${i386_SOURCES})
|
||||
+ set(i686_SOURCES ${i386_SOURCES})
|
||||
+
|
||||
if (WIN32)
|
||||
set(i386_SOURCES
|
||||
${i386_SOURCES}
|
||||
@@ -723,6 +723,7 @@ else ()
|
||||
endif()
|
||||
|
||||
foreach (arch ${BUILTIN_SUPPORTED_ARCH})
|
||||
+ message("arch: ${arch}")
|
||||
if (CAN_TARGET_${arch})
|
||||
# For ARM archs, exclude any VFP builtins if VFP is not supported
|
||||
if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
|
@ -0,0 +1,71 @@
|
||||
diff --git a/lib/sanitizer_common/sanitizer_mac.cpp b/lib/sanitizer_common/sanitizer_mac.cpp
|
||||
--- a/lib/sanitizer_common/sanitizer_mac.cpp
|
||||
+++ b/lib/sanitizer_common/sanitizer_mac.cpp
|
||||
@@ -613,9 +613,15 @@ HandleSignalMode GetHandleSignalMode(int signum) {
|
||||
// Offset example:
|
||||
// XNU 17 -- macOS 10.13 -- iOS 11 -- tvOS 11 -- watchOS 4
|
||||
constexpr u16 GetOSMajorKernelOffset() {
|
||||
- if (TARGET_OS_OSX) return 4;
|
||||
- if (TARGET_OS_IOS || TARGET_OS_TV) return 6;
|
||||
- if (TARGET_OS_WATCH) return 13;
|
||||
+#if TARGET_OS_OSX
|
||||
+ return 4;
|
||||
+#endif
|
||||
+#if TARGET_OS_IOS || TARGET_OS_TV
|
||||
+ return 6;
|
||||
+#endif
|
||||
+#if TARGET_OS_WATCH
|
||||
+ return 13;
|
||||
+#endif
|
||||
}
|
||||
|
||||
using VersStr = char[64];
|
||||
@@ -627,13 +633,13 @@ static uptr ApproximateOSVersionViaKernelVersion(VersStr vers) {
|
||||
u16 os_major = kernel_major - offset;
|
||||
|
||||
const char *format = "%d.0";
|
||||
- if (TARGET_OS_OSX) {
|
||||
- if (os_major >= 16) { // macOS 11+
|
||||
- os_major -= 5;
|
||||
- } else { // macOS 10.15 and below
|
||||
- format = "10.%d";
|
||||
- }
|
||||
+#if TARGET_OS_OSX
|
||||
+ if (os_major >= 16) { // macOS 11+
|
||||
+ os_major -= 5;
|
||||
+ } else { // macOS 10.15 and below
|
||||
+ format = "10.%d";
|
||||
}
|
||||
+#endif
|
||||
return internal_snprintf(vers, sizeof(VersStr), format, os_major);
|
||||
}
|
||||
|
||||
@@ -681,15 +687,14 @@ void ParseVersion(const char *vers, u16 *major, u16 *minor) {
|
||||
// Aligned versions example:
|
||||
// macOS 10.15 -- iOS 13 -- tvOS 13 -- watchOS 6
|
||||
static void MapToMacos(u16 *major, u16 *minor) {
|
||||
- if (TARGET_OS_OSX)
|
||||
- return;
|
||||
-
|
||||
- if (TARGET_OS_IOS || TARGET_OS_TV)
|
||||
+#if !TARGET_OS_OSX
|
||||
+#if TARGET_OS_IOS || TARGET_OS_TV
|
||||
*major += 2;
|
||||
- else if (TARGET_OS_WATCH)
|
||||
+#elif TARGET_OS_WATCH
|
||||
*major += 9;
|
||||
- else
|
||||
+#else
|
||||
UNREACHABLE("unsupported platform");
|
||||
+#endif
|
||||
|
||||
if (*major >= 16) { // macOS 11+
|
||||
*major -= 5;
|
||||
@@ -697,6 +702,7 @@ static void MapToMacos(u16 *major, u16 *minor) {
|
||||
*minor = *major;
|
||||
*major = 10;
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
static MacosVersion GetMacosAlignedVersionInternal() {
|
140
pkgs/development/compilers/llvm/16/compiler-rt/default.nix
Normal file
140
pkgs/development/compilers/llvm/16/compiler-rt/default.nix
Normal file
@ -0,0 +1,140 @@
|
||||
{ lib, stdenv, llvm_meta, version
|
||||
, monorepoSrc, runCommand
|
||||
, cmake, ninja, python3, xcbuild, libllvm, libcxxabi, libxcrypt
|
||||
, doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
useLLVM = stdenv.hostPlatform.useLLVM or false;
|
||||
bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none";
|
||||
haveLibc = stdenv.cc.libc != null;
|
||||
inherit (stdenv.hostPlatform) isMusl isGnu;
|
||||
|
||||
baseName = "compiler-rt";
|
||||
|
||||
src = runCommand "${baseName}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${baseName} "$out"
|
||||
'';
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = baseName + lib.optionalString (haveLibc) "-libc";
|
||||
inherit version;
|
||||
|
||||
inherit src;
|
||||
sourceRoot = "${src.name}/${baseName}";
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
|
||||
++ lib.optional stdenv.isDarwin xcbuild.xcrun;
|
||||
buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
"-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
|
||||
"-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}"
|
||||
"-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}"
|
||||
] ++ lib.optionals (haveLibc && stdenv.hostPlatform.libc == "glibc") [
|
||||
"-DSANITIZER_COMMON_CFLAGS=-I${libxcrypt}/include"
|
||||
] ++ lib.optionals (useLLVM || bareMetal || isMusl) [
|
||||
"-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
|
||||
"-DCOMPILER_RT_BUILD_XRAY=OFF"
|
||||
"-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
|
||||
"-DCOMPILER_RT_BUILD_MEMPROF=OFF"
|
||||
"-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
|
||||
] ++ lib.optionals (useLLVM || bareMetal) [
|
||||
"-DCOMPILER_RT_BUILD_PROFILE=OFF"
|
||||
] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
|
||||
"-DCMAKE_C_COMPILER_WORKS=ON"
|
||||
"-DCMAKE_CXX_COMPILER_WORKS=ON"
|
||||
"-DCOMPILER_RT_BAREMETAL_BUILD=ON"
|
||||
"-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}"
|
||||
] ++ lib.optionals (useLLVM && !haveLibc) [
|
||||
"-DCMAKE_C_FLAGS=-nodefaultlibs"
|
||||
] ++ lib.optionals (useLLVM) [
|
||||
"-DCOMPILER_RT_BUILD_BUILTINS=ON"
|
||||
#https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program
|
||||
"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
|
||||
] ++ lib.optionals (bareMetal) [
|
||||
"-DCOMPILER_RT_OS_DIR=baremetal"
|
||||
] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
|
||||
"-DDARWIN_macosx_OVERRIDE_SDK_VERSION=ON"
|
||||
"-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}"
|
||||
"-DDARWIN_osx_BUILTIN_ARCHS=${stdenv.hostPlatform.darwinArch}"
|
||||
|
||||
# `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin:
|
||||
# https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153
|
||||
"-DCOMPILER_RT_ENABLE_IOS=OFF"
|
||||
];
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = [
|
||||
./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config
|
||||
./gnu-install-dirs.patch
|
||||
# ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the
|
||||
# extra `/`.
|
||||
./normalize-var.patch
|
||||
# Prevent a compilation error on darwin
|
||||
./darwin-targetconditionals.patch
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/186575
|
||||
../../common/compiler-rt/darwin-plistbuddy-workaround.patch
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893
|
||||
# ../../common/compiler-rt/armv7l-15.patch
|
||||
];
|
||||
|
||||
# TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
|
||||
# to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra
|
||||
# can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd
|
||||
# get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by
|
||||
# a flag and turn the flag off during the stdenv build.
|
||||
postPatch = lib.optionalString (!stdenv.isDarwin) ''
|
||||
substituteInPlace cmake/builtin-config-ix.cmake \
|
||||
--replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)'
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace cmake/builtin-config-ix.cmake \
|
||||
--replace 'set(ARM64 arm64 arm64e)' 'set(ARM64)'
|
||||
substituteInPlace cmake/config-ix.cmake \
|
||||
--replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)'
|
||||
'' + lib.optionalString (useLLVM) ''
|
||||
substituteInPlace lib/builtins/int_util.c \
|
||||
--replace "#include <stdlib.h>" ""
|
||||
substituteInPlace lib/builtins/clear_cache.c \
|
||||
--replace "#include <assert.h>" ""
|
||||
substituteInPlace lib/builtins/cpu_model.c \
|
||||
--replace "#include <assert.h>" ""
|
||||
'';
|
||||
|
||||
# Hack around weird upsream RPATH bug
|
||||
postInstall = lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) ''
|
||||
ln -s "$out/lib"/*/* "$out/lib"
|
||||
'' + lib.optionalString (useLLVM) ''
|
||||
ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o
|
||||
ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o
|
||||
ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o
|
||||
ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o
|
||||
'' + lib.optionalString doFakeLibgcc ''
|
||||
ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a
|
||||
'';
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://compiler-rt.llvm.org/";
|
||||
description = "Compiler runtime libraries";
|
||||
longDescription = ''
|
||||
The compiler-rt project provides highly tuned implementations of the
|
||||
low-level code generator support routines like "__fixunsdfdi" and other
|
||||
calls generated when a target doesn't have a short sequence of native
|
||||
instructions to implement a core IR operation. It also provides
|
||||
implementations of run-time libraries for dynamic testing tools such as
|
||||
AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer.
|
||||
'';
|
||||
# "All of the code in the compiler-rt project is dual licensed under the MIT
|
||||
# license and the UIUC License (a BSD-like license)":
|
||||
license = with lib.licenses; [ mit ncsa ];
|
||||
};
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake
|
||||
index 8a6219568b3f..30ee68a47ccf 100644
|
||||
--- a/cmake/base-config-ix.cmake
|
||||
+++ b/cmake/base-config-ix.cmake
|
||||
@@ -100,13 +100,13 @@ endif()
|
||||
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
|
||||
set(COMPILER_RT_OUTPUT_LIBRARY_DIR
|
||||
${COMPILER_RT_OUTPUT_DIR}/lib)
|
||||
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
|
||||
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}")
|
||||
set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
|
||||
"Path where built compiler-rt libraries should be installed.")
|
||||
else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
|
||||
set(COMPILER_RT_OUTPUT_LIBRARY_DIR
|
||||
${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
|
||||
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
|
||||
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}/${COMPILER_RT_OS_DIR}")
|
||||
set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
|
||||
"Path where built compiler-rt libraries should be installed.")
|
||||
endif()
|
@ -0,0 +1,16 @@
|
||||
diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake
|
||||
index 4c85551d7766..297d7a47c54b 100644
|
||||
--- a/cmake/Modules/CompilerRTUtils.cmake
|
||||
+++ b/cmake/Modules/CompilerRTUtils.cmake
|
||||
@@ -328,8 +328,9 @@ macro(load_llvm_config)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
- set(LLVM_LIBRARY_OUTPUT_INTDIR
|
||||
- ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
|
||||
+ get_filename_component(LLVM_LIBRARY_OUTPUT_INTDIR
|
||||
+ ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}
|
||||
+ REALPATH)
|
||||
|
||||
set(LLVM_MAIN_SRC_DIR "${LLVM_MAIN_SRC_DIR_DEFAULT}" CACHE PATH "Path to LLVM source tree")
|
||||
message(STATUS "LLVM_MAIN_SRC_DIR: \"${LLVM_MAIN_SRC_DIR}\"")
|
366
pkgs/development/compilers/llvm/16/default.nix
Normal file
366
pkgs/development/compilers/llvm/16/default.nix
Normal file
@ -0,0 +1,366 @@
|
||||
{ lowPrio, newScope, pkgs, lib, stdenv, stdenvNoCC, cmake, ninja
|
||||
, gccForLibs, preLibcCrossHeaders
|
||||
, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
|
||||
, buildLlvmTools # tools, but from the previous stage, for cross
|
||||
, targetLlvmLibraries # libraries, but from the next stage, for cross
|
||||
, targetLlvm
|
||||
# This is the default binutils, but with *this* version of LLD rather
|
||||
# than the default LLVM verion's, if LLD is the choice. We use these for
|
||||
# the `useLLVM` bootstrapping below.
|
||||
, bootBintoolsNoLibc ?
|
||||
if stdenv.targetPlatform.linker == "lld"
|
||||
then null
|
||||
else pkgs.bintoolsNoLibc
|
||||
, bootBintools ?
|
||||
if stdenv.targetPlatform.linker == "lld"
|
||||
then null
|
||||
else pkgs.bintools
|
||||
, darwin
|
||||
# LLVM release information; specify one of these but not both:
|
||||
, gitRelease ? null
|
||||
# i.e.:
|
||||
# {
|
||||
# version = /* i.e. "15.0.0" */;
|
||||
# rev = /* commit SHA */;
|
||||
# rev-version = /* human readable version; i.e. "unstable-2022-26-07" */;
|
||||
# sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
|
||||
# }
|
||||
, officialRelease ? { version = "16.0.1"; sha256 = "sha256-Vr978ZY0i0NkdE/uuwcTccshfAT61KIN6KNq0TdwBNE="; }
|
||||
# i.e.:
|
||||
# {
|
||||
# version = /* i.e. "15.0.0" */;
|
||||
# candidate = /* optional; if specified, should be: "rcN" */
|
||||
# sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
|
||||
# }
|
||||
# By default, we'll try to fetch a release from `github:llvm/llvm-project`
|
||||
# corresponding to the `gitRelease` or `officialRelease` specified.
|
||||
#
|
||||
# You can provide your own LLVM source by specifying this arg but then it's up
|
||||
# to you to make sure that the LLVM repo given matches the release configuration
|
||||
# specified.
|
||||
, monorepoSrc ? null
|
||||
}:
|
||||
|
||||
assert let
|
||||
int = a: if a then 1 else 0;
|
||||
xor = a: b: ((builtins.bitXor (int a) (int b)) == 1);
|
||||
in
|
||||
lib.assertMsg
|
||||
(xor
|
||||
(gitRelease != null)
|
||||
(officialRelease != null))
|
||||
("must specify `gitRelease` or `officialRelease`" +
|
||||
(lib.optionalString (gitRelease != null) " — not both"));
|
||||
let
|
||||
monorepoSrc' = monorepoSrc;
|
||||
in let
|
||||
releaseInfo = if gitRelease != null then rec {
|
||||
original = gitRelease;
|
||||
release_version = original.version;
|
||||
version = gitRelease.rev-version;
|
||||
} else rec {
|
||||
original = officialRelease;
|
||||
release_version = original.version;
|
||||
version = if original ? candidate then
|
||||
"${release_version}-${original.candidate}"
|
||||
else
|
||||
release_version;
|
||||
};
|
||||
|
||||
monorepoSrc = if monorepoSrc' != null then
|
||||
monorepoSrc'
|
||||
else let
|
||||
sha256 = releaseInfo.original.sha256;
|
||||
rev = if gitRelease != null then
|
||||
gitRelease.rev
|
||||
else
|
||||
"llvmorg-${releaseInfo.version}";
|
||||
in fetchFromGitHub {
|
||||
owner = "llvm";
|
||||
repo = "llvm-project";
|
||||
inherit rev sha256;
|
||||
};
|
||||
|
||||
inherit (releaseInfo) release_version version;
|
||||
|
||||
llvm_meta = {
|
||||
license = lib.licenses.ncsa;
|
||||
maintainers = lib.teams.llvm.members;
|
||||
|
||||
# See llvm/cmake/config-ix.cmake.
|
||||
platforms =
|
||||
lib.platforms.aarch64 ++
|
||||
lib.platforms.arm ++
|
||||
lib.platforms.m68k ++
|
||||
lib.platforms.mips ++
|
||||
lib.platforms.power ++
|
||||
lib.platforms.riscv ++
|
||||
lib.platforms.s390x ++
|
||||
lib.platforms.wasi ++
|
||||
lib.platforms.x86;
|
||||
};
|
||||
|
||||
tools = lib.makeExtensible (tools: let
|
||||
callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
|
||||
major = lib.versions.major release_version;
|
||||
mkExtraBuildCommands0 = cc: ''
|
||||
rsrc="$out/resource-root"
|
||||
mkdir "$rsrc"
|
||||
ln -s "${cc.lib}/lib/clang/${major}/include" "$rsrc"
|
||||
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
|
||||
'';
|
||||
mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + ''
|
||||
ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib"
|
||||
ln -s "${targetLlvmLibraries.compiler-rt.out}/share" "$rsrc/share"
|
||||
'';
|
||||
|
||||
bintoolsNoLibc' =
|
||||
if bootBintoolsNoLibc == null
|
||||
then tools.bintoolsNoLibc
|
||||
else bootBintoolsNoLibc;
|
||||
bintools' =
|
||||
if bootBintools == null
|
||||
then tools.bintools
|
||||
else bootBintools;
|
||||
|
||||
in {
|
||||
|
||||
libllvm = callPackage ./llvm {
|
||||
inherit llvm_meta;
|
||||
};
|
||||
|
||||
# `llvm` historically had the binaries. When choosing an output explicitly,
|
||||
# we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get*
|
||||
llvm = tools.libllvm;
|
||||
|
||||
libclang = callPackage ./clang {
|
||||
inherit llvm_meta;
|
||||
};
|
||||
|
||||
clang-unwrapped = tools.libclang;
|
||||
|
||||
llvm-manpages = lowPrio (tools.libllvm.override {
|
||||
enableManpages = true;
|
||||
python3 = pkgs.python3; # don't use python-boot
|
||||
});
|
||||
|
||||
clang-manpages = lowPrio (tools.libclang.override {
|
||||
enableManpages = true;
|
||||
python3 = pkgs.python3; # don't use python-boot
|
||||
});
|
||||
|
||||
lldb-manpages = lowPrio (tools.lldb.override {
|
||||
enableManpages = true;
|
||||
python3 = pkgs.python3; # don't use python-boot
|
||||
});
|
||||
|
||||
# pick clang appropriate for package set we are targeting
|
||||
clang =
|
||||
/**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM
|
||||
else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang
|
||||
else tools.libcxxClang;
|
||||
|
||||
libstdcxxClang = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
# libstdcxx is taken from gcc in an ad-hoc way in cc-wrapper.
|
||||
libcxx = null;
|
||||
extraPackages = [
|
||||
targetLlvmLibraries.compiler-rt
|
||||
];
|
||||
extraBuildCommands = mkExtraBuildCommands cc;
|
||||
};
|
||||
|
||||
libcxxClang = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = targetLlvmLibraries.libcxx;
|
||||
extraPackages = [
|
||||
libcxx.cxxabi
|
||||
targetLlvmLibraries.compiler-rt
|
||||
];
|
||||
extraBuildCommands = mkExtraBuildCommands cc;
|
||||
};
|
||||
|
||||
lld = callPackage ./lld {
|
||||
inherit llvm_meta;
|
||||
};
|
||||
|
||||
lldb = callPackage ./lldb {
|
||||
inherit llvm_meta;
|
||||
inherit (darwin) libobjc bootstrap_cmds;
|
||||
inherit (darwin.apple_sdk.libs) xpc;
|
||||
inherit (darwin.apple_sdk.frameworks) Foundation Carbon Cocoa;
|
||||
};
|
||||
|
||||
# Below, is the LLVM bootstrapping logic. It handles building a
|
||||
# fully LLVM toolchain from scratch. No GCC toolchain should be
|
||||
# pulled in. As a consequence, it is very quick to build different
|
||||
# targets provided by LLVM and we can also build for what GCC
|
||||
# doesn’t support like LLVM. Probably we should move to some other
|
||||
# file.
|
||||
|
||||
bintools-unwrapped = callPackage ./bintools {};
|
||||
|
||||
bintoolsNoLibc = wrapBintoolsWith {
|
||||
bintools = tools.bintools-unwrapped;
|
||||
libc = preLibcCrossHeaders;
|
||||
};
|
||||
|
||||
bintools = wrapBintoolsWith {
|
||||
bintools = tools.bintools-unwrapped;
|
||||
};
|
||||
|
||||
clangUseLLVM = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = targetLlvmLibraries.libcxx;
|
||||
bintools = bintools';
|
||||
extraPackages = [
|
||||
libcxx.cxxabi
|
||||
targetLlvmLibraries.compiler-rt
|
||||
] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [
|
||||
targetLlvmLibraries.libunwind
|
||||
];
|
||||
extraBuildCommands = mkExtraBuildCommands cc;
|
||||
nixSupport.cc-cflags =
|
||||
[ "-rtlib=compiler-rt"
|
||||
"-Wno-unused-command-line-argument"
|
||||
"-B${targetLlvmLibraries.compiler-rt}/lib"
|
||||
]
|
||||
++ lib.optional (!stdenv.targetPlatform.isWasm) "--unwindlib=libunwind"
|
||||
++ lib.optional
|
||||
(!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false)
|
||||
"-lunwind"
|
||||
++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
|
||||
};
|
||||
|
||||
clangNoLibcxx = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = null;
|
||||
bintools = bintools';
|
||||
extraPackages = [
|
||||
targetLlvmLibraries.compiler-rt
|
||||
];
|
||||
extraBuildCommands = mkExtraBuildCommands cc;
|
||||
nixSupport.cc-cflags = [
|
||||
"-rtlib=compiler-rt"
|
||||
"-B${targetLlvmLibraries.compiler-rt}/lib"
|
||||
"-nostdlib++"
|
||||
];
|
||||
};
|
||||
|
||||
clangNoLibc = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = null;
|
||||
bintools = bintoolsNoLibc';
|
||||
extraPackages = [
|
||||
targetLlvmLibraries.compiler-rt
|
||||
];
|
||||
extraBuildCommands = mkExtraBuildCommands cc;
|
||||
nixSupport.cc-cflags = [
|
||||
"-rtlib=compiler-rt"
|
||||
"-B${targetLlvmLibraries.compiler-rt}/lib"
|
||||
];
|
||||
};
|
||||
|
||||
clangNoCompilerRt = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = null;
|
||||
bintools = bintoolsNoLibc';
|
||||
extraPackages = [ ];
|
||||
extraBuildCommands = mkExtraBuildCommands0 cc;
|
||||
nixSupport.cc-cflags = [ "-nostartfiles" ];
|
||||
};
|
||||
|
||||
clangNoCompilerRtWithLibc = wrapCCWith rec {
|
||||
cc = tools.clang-unwrapped;
|
||||
libcxx = null;
|
||||
bintools = bintools';
|
||||
extraPackages = [ ];
|
||||
extraBuildCommands = mkExtraBuildCommands0 cc;
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
libraries = lib.makeExtensible (libraries: let
|
||||
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; });
|
||||
in {
|
||||
|
||||
compiler-rt-libc = callPackage ./compiler-rt {
|
||||
inherit llvm_meta;
|
||||
stdenv = if stdenv.hostPlatform.useLLVM or false
|
||||
then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc
|
||||
else stdenv;
|
||||
};
|
||||
|
||||
compiler-rt-no-libc = callPackage ./compiler-rt {
|
||||
inherit llvm_meta;
|
||||
stdenv = if stdenv.hostPlatform.useLLVM or false
|
||||
then overrideCC stdenv buildLlvmTools.clangNoCompilerRt
|
||||
else stdenv;
|
||||
};
|
||||
|
||||
# N.B. condition is safe because without useLLVM both are the same.
|
||||
compiler-rt = if stdenv.hostPlatform.isAndroid
|
||||
then libraries.compiler-rt-libc
|
||||
else libraries.compiler-rt-no-libc;
|
||||
|
||||
stdenv = overrideCC stdenv buildLlvmTools.clang;
|
||||
|
||||
libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
|
||||
|
||||
libcxxabi = let
|
||||
# CMake will "require" a compiler capable of compiling C++ programs
|
||||
# cxx-header's build does not actually use one so it doesn't really matter
|
||||
# what stdenv we use here, as long as CMake is happy.
|
||||
cxx-headers = callPackage ./libcxx {
|
||||
inherit llvm_meta;
|
||||
# Note that if we use the regular stdenv here we'll get cycle errors
|
||||
# when attempting to use this compiler in the stdenv.
|
||||
#
|
||||
# The final stdenv pulls `cxx-headers` from the package set where
|
||||
# hostPlatform *is* the target platform which means that `stdenv` at
|
||||
# that point attempts to use this toolchain.
|
||||
#
|
||||
# So, we use `stdenv_` (the stdenv containing `clang` from this package
|
||||
# set, defined below) to sidestep this issue.
|
||||
#
|
||||
# Because we only use `cxx-headers` in `libcxxabi` (which depends on the
|
||||
# clang stdenv _anyways_), this is okay.
|
||||
stdenv = stdenv_;
|
||||
headersOnly = true;
|
||||
};
|
||||
|
||||
# `libcxxabi` *doesn't* need a compiler with a working C++ stdlib but it
|
||||
# *does* need a relatively modern C++ compiler (see:
|
||||
# https://releases.llvm.org/15.0.0/projects/libcxx/docs/index.html#platform-and-compiler-support).
|
||||
#
|
||||
# So, we use the clang from this LLVM package set, like libc++
|
||||
# "boostrapping builds" do:
|
||||
# https://releases.llvm.org/15.0.0/projects/libcxx/docs/BuildingLibcxx.html#bootstrapping-build
|
||||
#
|
||||
# We cannot use `clangNoLibcxx` because that contains `compiler-rt` which,
|
||||
# on macOS, depends on `libcxxabi`, thus forming a cycle.
|
||||
stdenv_ = overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc;
|
||||
in callPackage ./libcxxabi {
|
||||
stdenv = stdenv_;
|
||||
inherit llvm_meta cxx-headers;
|
||||
};
|
||||
|
||||
# Like `libcxxabi` above, `libcxx` requires a fairly modern C++ compiler,
|
||||
# so: we use the clang from this LLVM package set instead of the regular
|
||||
# stdenv's compiler.
|
||||
libcxx = callPackage ./libcxx {
|
||||
inherit llvm_meta;
|
||||
stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
|
||||
};
|
||||
|
||||
libunwind = callPackage ./libunwind {
|
||||
inherit llvm_meta;
|
||||
stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
|
||||
};
|
||||
|
||||
openmp = callPackage ./openmp {
|
||||
inherit llvm_meta targetLlvm;
|
||||
};
|
||||
});
|
||||
|
||||
in { inherit tools libraries release_version; } // libraries // tools
|
110
pkgs/development/compilers/llvm/16/libcxx/default.nix
Normal file
110
pkgs/development/compilers/llvm/16/libcxx/default.nix
Normal file
@ -0,0 +1,110 @@
|
||||
{ lib, stdenv, llvm_meta
|
||||
, monorepoSrc, runCommand
|
||||
, cmake, ninja, python3, fixDarwinDylibNames, version
|
||||
, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi
|
||||
, libcxxabi, libcxxrt
|
||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
||||
|
||||
# If headersOnly is true, the resulting package would only include the headers.
|
||||
# Use this to break the circular dependency between libcxx and libcxxabi.
|
||||
#
|
||||
# Some context:
|
||||
# https://reviews.llvm.org/rG1687f2bbe2e2aaa092f942d4a97d41fad43eedfb
|
||||
, headersOnly ? false
|
||||
}:
|
||||
|
||||
let
|
||||
basename = "libcxx";
|
||||
in
|
||||
|
||||
assert stdenv.isDarwin -> cxxabi.libName == "c++abi";
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = basename + lib.optionalString headersOnly "-headers";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${basename} "$out"
|
||||
mkdir -p "$out/libcxxabi"
|
||||
cp -r ${monorepoSrc}/libcxxabi/include "$out/libcxxabi"
|
||||
mkdir -p "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
|
||||
cp -r ${monorepoSrc}/third-party "$out"
|
||||
cp -r ${monorepoSrc}/runtimes "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/runtimes";
|
||||
|
||||
outputs = [ "out" ] ++ lib.optional (!headersOnly) "dev";
|
||||
|
||||
prePatch = ''
|
||||
cd ../${basename}
|
||||
chmod -R u+w .
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./gnu-install-dirs.patch
|
||||
] ++ lib.optionals stdenv.hostPlatform.isMusl [
|
||||
../../libcxx-0001-musl-hacks.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
cd ../runtimes
|
||||
'';
|
||||
|
||||
preConfigure = lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
patchShebangs utils/cat_files.py
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python3 ]
|
||||
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
||||
|
||||
buildInputs = lib.optionals (!headersOnly) [ cxxabi ];
|
||||
|
||||
cmakeFlags = let
|
||||
# See: https://libcxx.llvm.org/BuildingLibcxx.html#cmdoption-arg-libcxx-cxx-abi-string
|
||||
libcxx_cxx_abi_opt = {
|
||||
"c++abi" = "system-libcxxabi";
|
||||
"cxxrt" = "libcxxrt";
|
||||
}.${cxxabi.libName} or (throw "unknown cxxabi: ${cxxabi.libName} (${cxxabi.pname})");
|
||||
in [
|
||||
"-DLLVM_ENABLE_RUNTIMES=libcxx"
|
||||
"-DLIBCXX_CXX_ABI=${if headersOnly then "none" else libcxx_cxx_abi_opt}"
|
||||
] ++ lib.optional (!headersOnly && cxxabi.libName == "c++abi") "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi.dev}/include/c++/v1"
|
||||
++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1"
|
||||
++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON"
|
||||
++ lib.optionals stdenv.hostPlatform.isWasm [
|
||||
"-DLIBCXX_ENABLE_THREADS=OFF"
|
||||
"-DLIBCXX_ENABLE_FILESYSTEM=OFF"
|
||||
"-DLIBCXX_ENABLE_EXCEPTIONS=OFF"
|
||||
] ++ lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF"
|
||||
# If we're only building the headers we don't actually *need* a functioning
|
||||
# C/C++ compiler:
|
||||
++ lib.optionals (headersOnly) [
|
||||
"-DCMAKE_C_COMPILER_WORKS=ON"
|
||||
"-DCMAKE_CXX_COMPILER_WORKS=ON"
|
||||
];
|
||||
|
||||
ninjaFlags = lib.optional headersOnly "generate-cxx-headers";
|
||||
installTargets = lib.optional headersOnly "install-cxx-headers";
|
||||
|
||||
passthru = {
|
||||
isLLVM = true;
|
||||
inherit cxxabi;
|
||||
};
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://libcxx.llvm.org/";
|
||||
description = "C++ standard library";
|
||||
longDescription = ''
|
||||
libc++ is an implementation of the C++ standard library, targeting C++11,
|
||||
C++14 and above.
|
||||
'';
|
||||
# "All of the code in libc++ is dual licensed under the MIT license and the
|
||||
# UIUC License (a BSD-like license)":
|
||||
license = with lib.licenses; [ mit ncsa ];
|
||||
};
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 74eff2002fc9..c935d10878bb 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -419,7 +419,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
|
||||
set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
|
||||
set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
|
||||
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
|
||||
- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
"Path where built libc++ libraries should be installed.")
|
||||
set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1" CACHE PATH
|
||||
"Path where target-specific libc++ headers should be installed.")
|
||||
@@ -436,7 +436,7 @@ else()
|
||||
set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
|
||||
endif()
|
||||
set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LIBCXX_GENERATED_INCLUDE_DIR}")
|
||||
- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX} CACHE PATH
|
||||
+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX} CACHE PATH
|
||||
"Path where built libc++ libraries should be installed.")
|
||||
set(LIBCXX_INSTALL_INCLUDE_TARGET_DIR "${LIBCXX_INSTALL_INCLUDE_DIR}" CACHE PATH
|
||||
"Path where target-specific libc++ headers should be installed.")
|
108
pkgs/development/compilers/llvm/16/libcxxabi/default.nix
Normal file
108
pkgs/development/compilers/llvm/16/libcxxabi/default.nix
Normal file
@ -0,0 +1,108 @@
|
||||
{ lib, stdenv, llvm_meta, cmake, ninja, python3
|
||||
, monorepoSrc, runCommand, fetchpatch
|
||||
, cxx-headers, libunwind, version
|
||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libcxxabi";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
mkdir -p "$out/libcxx/src"
|
||||
cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
|
||||
cp -r ${monorepoSrc}/libcxx/include "$out/libcxx"
|
||||
cp -r ${monorepoSrc}/libcxx/src/include "$out/libcxx/src"
|
||||
mkdir -p "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
|
||||
cp -r ${monorepoSrc}/runtimes "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/runtimes";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
postUnpack = lib.optionalString stdenv.isDarwin ''
|
||||
export TRIPLE=x86_64-apple-darwin
|
||||
'' + lib.optionalString stdenv.hostPlatform.isWasm ''
|
||||
patch -p1 -d llvm -i ${./wasm.patch}
|
||||
'';
|
||||
|
||||
prePatch = ''
|
||||
cd ../${pname}
|
||||
chmod -R u+w .
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./gnu-install-dirs.patch
|
||||
|
||||
# https://reviews.llvm.org/D132298, Allow building libcxxabi alone
|
||||
(fetchpatch {
|
||||
url = "https://github.com/llvm/llvm-project/commit/e6a0800532bb409f6d1c62f3698bdd6994a877dc.patch";
|
||||
sha256 = "1xyjd56m4pfwq8p3xh6i8lhkk9kq15jaml7qbhxdf87z4jjkk63a";
|
||||
stripLen = 1;
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
cd ../runtimes
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python3 ];
|
||||
buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.hostPlatform.isWasm) libunwind;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLVM_ENABLE_RUNTIMES=libcxxabi"
|
||||
"-DLIBCXXABI_LIBCXX_INCLUDES=${cxx-headers}/include/c++/v1"
|
||||
|
||||
# `libcxxabi`'s build does not need a toolchain with a c++ stdlib attached
|
||||
# (we specify the headers it should use explicitly above).
|
||||
#
|
||||
# CMake however checks for this anyways; this flag tells it not to. See:
|
||||
# https://github.com/llvm/llvm-project/blob/4bd3f3759259548e159aeba5c76efb9a0864e6fa/llvm/runtimes/CMakeLists.txt#L243
|
||||
"-DCMAKE_CXX_COMPILER_WORKS=ON"
|
||||
] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [
|
||||
"-DLLVM_ENABLE_LIBCXX=ON"
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isWasm [
|
||||
"-DLIBCXXABI_ENABLE_THREADS=OFF"
|
||||
"-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF"
|
||||
] ++ lib.optionals (!enableShared) [
|
||||
"-DLIBCXXABI_ENABLE_SHARED=OFF"
|
||||
];
|
||||
|
||||
preInstall = lib.optionalString stdenv.isDarwin ''
|
||||
for file in lib/*.dylib; do
|
||||
# this should be done in CMake, but having trouble figuring out
|
||||
# the magic combination of necessary CMake variables
|
||||
# if you fancy a try, take a look at
|
||||
# https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
|
||||
install_name_tool -id $out/$file $file
|
||||
done
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p "$dev/include"
|
||||
install -m 644 ../../${pname}/include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
libName = "c++abi";
|
||||
};
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://libcxxabi.llvm.org/";
|
||||
description = "Provides C++ standard library support";
|
||||
longDescription = ''
|
||||
libc++abi is a new implementation of low level support for a standard C++ library.
|
||||
'';
|
||||
# "All of the code in libc++abi is dual licensed under the MIT license and
|
||||
# the UIUC License (a BSD-like license)":
|
||||
license = with lib.licenses; [ mit ncsa ];
|
||||
maintainers = llvm_meta.maintainers ++ [ lib.maintainers.vlstill ];
|
||||
};
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index b8326d08d23a..a1e36f713161 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -187,7 +187,7 @@ set(LIBCXXABI_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH
|
||||
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
|
||||
set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR})
|
||||
set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
|
||||
- set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
+ set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
"Path where built libc++abi libraries should be installed.")
|
||||
if(LIBCXX_LIBDIR_SUBDIR)
|
||||
string(APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR})
|
||||
@@ -201,7 +201,7 @@ else()
|
||||
set(LIBCXXABI_HEADER_DIR ${CMAKE_BINARY_DIR})
|
||||
set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX})
|
||||
endif()
|
||||
- set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH
|
||||
+ set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX} CACHE PATH
|
||||
"Path where built libc++abi libraries should be installed.")
|
||||
endif()
|
||||
|
16
pkgs/development/compilers/llvm/16/libcxxabi/wasm.patch
Normal file
16
pkgs/development/compilers/llvm/16/libcxxabi/wasm.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake
|
||||
index 15497d405e0..33f7f18193a 100644
|
||||
--- a/cmake/modules/HandleLLVMOptions.cmake
|
||||
+++ b/cmake/modules/HandleLLVMOptions.cmake
|
||||
@@ -127,7 +127,10 @@ else(WIN32)
|
||||
set(LLVM_HAVE_LINK_VERSION_SCRIPT 1)
|
||||
endif()
|
||||
else(FUCHSIA OR UNIX)
|
||||
- MESSAGE(SEND_ERROR "Unable to determine platform")
|
||||
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Wasi")
|
||||
+ else()
|
||||
+ MESSAGE(SEND_ERROR "Unable to determine platform")
|
||||
+ endif()
|
||||
endif(FUCHSIA OR UNIX)
|
||||
endif(WIN32)
|
||||
|
62
pkgs/development/compilers/llvm/16/libunwind/default.nix
Normal file
62
pkgs/development/compilers/llvm/16/libunwind/default.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{ lib, stdenv, llvm_meta, version
|
||||
, monorepoSrc, runCommand
|
||||
, cmake
|
||||
, ninja
|
||||
, python3
|
||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libunwind";
|
||||
inherit version;
|
||||
|
||||
# I am not so comfortable giving libc++ and friends the whole monorepo as
|
||||
# requested, so I filter it to what is needed.
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
mkdir -p "$out/libcxx"
|
||||
cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
|
||||
cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
|
||||
mkdir -p "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
|
||||
cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
|
||||
cp -r ${monorepoSrc}/runtimes "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/runtimes";
|
||||
|
||||
prePatch = ''
|
||||
cd ../${pname}
|
||||
chmod -R u+w .
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./gnu-install-dirs.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
cd ../runtimes
|
||||
'';
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python3 ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLVM_ENABLE_RUNTIMES=libunwind"
|
||||
] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
|
||||
|
||||
meta = llvm_meta // {
|
||||
# Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
|
||||
homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
|
||||
description = "LLVM's unwinder library";
|
||||
longDescription = ''
|
||||
The unwind library provides a family of _Unwind_* functions implementing
|
||||
the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
|
||||
I). It is a dependency of the C++ ABI library, and sometimes is a
|
||||
dependency of other runtimes.
|
||||
'';
|
||||
};
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 5a06805f05f1..86a50329e6a8 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -117,7 +117,7 @@ set(LIBUNWIND_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH
|
||||
|
||||
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
|
||||
set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
|
||||
- set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
+ set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE} CACHE PATH
|
||||
"Path where built libunwind libraries should be installed.")
|
||||
if(LIBCXX_LIBDIR_SUBDIR)
|
||||
string(APPEND LIBUNWIND_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR})
|
||||
@@ -129,7 +129,7 @@ else()
|
||||
else()
|
||||
set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX})
|
||||
endif()
|
||||
- set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH
|
||||
+ set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} CACHE PATH
|
||||
"Path where built libunwind libraries should be installed.")
|
||||
endif()
|
||||
|
57
pkgs/development/compilers/llvm/16/lld/default.nix
Normal file
57
pkgs/development/compilers/llvm/16/lld/default.nix
Normal file
@ -0,0 +1,57 @@
|
||||
{ lib, stdenv, llvm_meta
|
||||
, buildLlvmTools
|
||||
, monorepoSrc, runCommand
|
||||
, cmake
|
||||
, ninja
|
||||
, libxml2
|
||||
, libllvm
|
||||
, version
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lld";
|
||||
inherit version;
|
||||
|
||||
# Blank llvm dir just so relative path works
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
mkdir -p "$out/libunwind"
|
||||
cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
|
||||
mkdir -p "$out/llvm"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
|
||||
patches = [
|
||||
./gnu-install-dirs.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ninja ];
|
||||
buildInputs = [ libllvm libxml2 ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||
];
|
||||
|
||||
# Musl's default stack size is too small for lld to be able to link Firefox.
|
||||
LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
|
||||
|
||||
outputs = [ "out" "lib" "dev" ];
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://lld.llvm.org/";
|
||||
description = "The LLVM linker (unwrapped)";
|
||||
longDescription = ''
|
||||
LLD is a linker from the LLVM project that is a drop-in replacement for
|
||||
system linkers and runs much faster than them. It also provides features
|
||||
that are useful for toolchain developers.
|
||||
The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
|
||||
WebAssembly in descending order of completeness. Internally, LLD consists
|
||||
of several different linkers.
|
||||
'';
|
||||
};
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3d6225646fe6..9b5d0b15af13 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -33,10 +33,22 @@ if(LLD_BUILT_STANDALONE)
|
||||
find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
|
||||
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
|
||||
|
||||
- # Turn into CACHE PATHs for overwriting
|
||||
- set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
|
||||
- set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree")
|
||||
- set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree")
|
||||
+ # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets
|
||||
+ # LLVM_CONFIG.
|
||||
+ if (NOT LLVM_CONFIG_FOUND)
|
||||
+ # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config
|
||||
+ # path is removed.
|
||||
+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
|
||||
+ set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}")
|
||||
+ # N.B. this is just a default value, the CACHE PATHs below can be overridden.
|
||||
+ set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm")
|
||||
+ else()
|
||||
+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}")
|
||||
+ endif()
|
||||
+
|
||||
+ set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
|
||||
+ set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree")
|
||||
+ set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree")
|
||||
|
||||
find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
|
||||
NO_DEFAULT_PATH)
|
||||
diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
|
||||
index d3924f7243d4..42a7cd62281c 100644
|
||||
--- a/cmake/modules/AddLLD.cmake
|
||||
+++ b/cmake/modules/AddLLD.cmake
|
||||
@@ -18,8 +18,8 @@ macro(add_lld_library name)
|
||||
install(TARGETS ${name}
|
||||
COMPONENT ${name}
|
||||
${export_to_lldtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
|
@ -0,0 +1,12 @@
|
||||
diff --git a/source/Host/macosx/objcxx/HostInfoMacOSX.mm b/source/Host/macosx/objcxx/HostInfoMacOSX.mm
|
||||
--- a/source/Host/macosx/objcxx/HostInfoMacOSX.mm
|
||||
+++ b/source/Host/macosx/objcxx/HostInfoMacOSX.mm
|
||||
@@ -233,7 +233,7 @@ void HostInfoMacOSX::ComputeHostArchitectureSupport(ArchSpec &arch_32,
|
||||
len = sizeof(is_64_bit_capable);
|
||||
::sysctlbyname("hw.cpu64bit_capable", &is_64_bit_capable, &len, NULL, 0);
|
||||
|
||||
- if (cputype == CPU_TYPE_ARM64 && cpusubtype == CPU_SUBTYPE_ARM64E) {
|
||||
+ if (cputype == CPU_TYPE_ARM64 && cpusubtype == ((cpu_subtype_t) 2)) { // CPU_SUBTYPE_ARM64E is not available in the macOS 10.12 headers
|
||||
// The arm64e architecture is a preview. Pretend the host architecture
|
||||
// is arm64.
|
||||
cpusubtype = CPU_SUBTYPE_ARM64_ALL;
|
186
pkgs/development/compilers/llvm/16/lldb/default.nix
Normal file
186
pkgs/development/compilers/llvm/16/lldb/default.nix
Normal file
@ -0,0 +1,186 @@
|
||||
{ lib, stdenv, llvm_meta
|
||||
, runCommand
|
||||
, monorepoSrc
|
||||
, cmake
|
||||
, ninja
|
||||
, zlib
|
||||
, ncurses
|
||||
, swig
|
||||
, which
|
||||
, libedit
|
||||
, libxml2
|
||||
, libllvm
|
||||
, libclang
|
||||
, python3
|
||||
, version
|
||||
, libobjc
|
||||
, xpc
|
||||
, Foundation
|
||||
, bootstrap_cmds
|
||||
, Carbon
|
||||
, Cocoa
|
||||
, lit
|
||||
, makeWrapper
|
||||
, darwin
|
||||
, enableManpages ? false
|
||||
, lua5_3
|
||||
}:
|
||||
|
||||
# TODO: we build the python bindings but don't expose them as a python package
|
||||
# TODO: expose the vscode extension?
|
||||
|
||||
stdenv.mkDerivation (rec {
|
||||
pname = "lldb";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
|
||||
patches = [
|
||||
# FIXME: do we need this? ./procfs.patch
|
||||
(runCommand "resource-dir.patch" {
|
||||
clangLibDir = "${libclang.lib}/lib";
|
||||
} ''
|
||||
substitute '${./resource-dir.patch}' "$out" --subst-var clangLibDir
|
||||
'')
|
||||
./gnu-install-dirs.patch
|
||||
]
|
||||
# This is a stopgap solution if/until the macOS SDK used for x86_64 is
|
||||
# updated.
|
||||
#
|
||||
# The older 10.12 SDK used on x86_64 as of this writing has a `mach/machine.h`
|
||||
# header that does not define `CPU_SUBTYPE_ARM64E` so we replace the one use
|
||||
# of this preprocessor symbol in `lldb` with its expansion.
|
||||
#
|
||||
# See here for some context:
|
||||
# https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132
|
||||
++ lib.optional (
|
||||
stdenv.targetPlatform.isDarwin
|
||||
&& !stdenv.targetPlatform.isAarch64
|
||||
&& (lib.versionOlder darwin.apple_sdk.sdk.version "11.0")
|
||||
) ./cpu_subtype_arm64e_replacement.patch;
|
||||
|
||||
outputs = [ "out" "lib" "dev" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake ninja python3 which swig lit makeWrapper lua5_3
|
||||
] ++ lib.optionals enableManpages [
|
||||
python3.pkgs.sphinx python3.pkgs.recommonmark
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ncurses
|
||||
zlib
|
||||
libedit
|
||||
libxml2
|
||||
libllvm
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
libobjc
|
||||
xpc
|
||||
Foundation
|
||||
bootstrap_cmds
|
||||
Carbon
|
||||
Cocoa
|
||||
]
|
||||
# The older libSystem used on x86_64 macOS is missing the
|
||||
# `<bsm/audit_session.h>` header which `lldb` uses.
|
||||
#
|
||||
# We copy this header over from macOS 10.12 SDK.
|
||||
#
|
||||
# See here for context:
|
||||
# https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132
|
||||
++ lib.optional (
|
||||
stdenv.targetPlatform.isDarwin
|
||||
&& !stdenv.targetPlatform.isAarch64
|
||||
) (
|
||||
runCommand "bsm-audit-session-header" { } ''
|
||||
install -Dm444 \
|
||||
"${lib.getDev darwin.apple_sdk.sdk}/include/bsm/audit_session.h" \
|
||||
"$out/include/bsm/audit_session.h"
|
||||
''
|
||||
);
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLDB_INCLUDE_TESTS=${if doCheck then "YES" else "NO"}"
|
||||
"-DLLVM_ENABLE_RTTI=OFF"
|
||||
"-DClang_DIR=${libclang.dev}/lib/cmake"
|
||||
"-DLLVM_EXTERNAL_LIT=${lit}/bin/lit"
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
"-DLLDB_USE_SYSTEM_DEBUGSERVER=ON"
|
||||
] ++ lib.optionals (!stdenv.isDarwin) [
|
||||
"-DLLDB_CODESIGN_IDENTITY=" # codesigning makes nondeterministic
|
||||
] ++ lib.optionals enableManpages [
|
||||
"-DLLVM_ENABLE_SPHINX=ON"
|
||||
"-DSPHINX_OUTPUT_MAN=ON"
|
||||
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||
|
||||
# docs reference `automodapi` but it's not added to the extensions list when
|
||||
# only building the manpages:
|
||||
# https://github.com/llvm/llvm-project/blob/af6ec9200b09039573d85e349496c4f5b17c3d7f/lldb/docs/conf.py#L54
|
||||
#
|
||||
# so, we just ignore the resulting errors
|
||||
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||
] ++ lib.optionals doCheck [
|
||||
"-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
|
||||
"-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
installCheckPhase = ''
|
||||
if [ ! -e "$lib/${python3.sitePackages}/lldb/_lldb.so" ] ; then
|
||||
return 1;
|
||||
fi
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/lldb --prefix PYTHONPATH : $lib/${python3.sitePackages}/
|
||||
|
||||
# Editor support
|
||||
# vscode:
|
||||
install -D ../tools/lldb-vscode/package.json $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/package.json
|
||||
mkdir -p $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin
|
||||
ln -s $out/bin/lldb-vscode $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin
|
||||
'';
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://lldb.llvm.org/";
|
||||
description = "A next-generation high-performance debugger";
|
||||
longDescription = ''
|
||||
LLDB is a next generation, high-performance debugger. It is built as a set
|
||||
of reusable components which highly leverage existing libraries in the
|
||||
larger LLVM Project, such as the Clang expression parser and LLVM
|
||||
disassembler.
|
||||
'';
|
||||
};
|
||||
} // lib.optionalAttrs enableManpages {
|
||||
pname = "lldb-manpages";
|
||||
|
||||
ninjaFlags = [ "docs-lldb-man" ];
|
||||
|
||||
propagatedBuildInputs = [];
|
||||
|
||||
# manually install lldb man page
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/man/man1
|
||||
install docs/man/lldb.1 -t $out/share/man/man1/
|
||||
'';
|
||||
|
||||
postPatch = null;
|
||||
postInstall = null;
|
||||
|
||||
outputs = [ "out" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = llvm_meta // {
|
||||
description = "man pages for LLDB ${version}";
|
||||
};
|
||||
})
|
@ -0,0 +1,23 @@
|
||||
diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
|
||||
index 3291a7c808e1..b27d27ce6a87 100644
|
||||
--- a/cmake/modules/AddLLDB.cmake
|
||||
+++ b/cmake/modules/AddLLDB.cmake
|
||||
@@ -109,7 +109,7 @@ function(add_lldb_library name)
|
||||
endif()
|
||||
|
||||
if(PARAM_SHARED)
|
||||
- set(install_dest lib${LLVM_LIBDIR_SUFFIX})
|
||||
+ set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
||||
if(PARAM_INSTALL_PREFIX)
|
||||
set(install_dest ${PARAM_INSTALL_PREFIX})
|
||||
endif()
|
||||
diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
|
||||
index 7d48491ec89a..c04543585588 100644
|
||||
--- a/tools/intel-features/CMakeLists.txt
|
||||
+++ b/tools/intel-features/CMakeLists.txt
|
||||
@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
|
||||
)
|
||||
|
||||
install(TARGETS lldbIntelFeatures
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
46
pkgs/development/compilers/llvm/16/lldb/procfs.patch
Normal file
46
pkgs/development/compilers/llvm/16/lldb/procfs.patch
Normal file
@ -0,0 +1,46 @@
|
||||
--- a/source/Plugins/Process/Linux/Procfs.h
|
||||
+++ b/source/Plugins/Process/Linux/Procfs.h
|
||||
@@ -10,6 +10,13 @@
|
||||
// sys/procfs.h on Android/Linux for all supported architectures.
|
||||
|
||||
#include <sys/ptrace.h>
|
||||
+#include <asm/ptrace.h>
|
||||
+
|
||||
+// on i686 preprocessor symbols with these register names are defined as
|
||||
+// numeric constants; these symbols clash with identifier names used in
|
||||
+// `llvm/Support/VirtualFileSystem.h` and `llvm/ADT/SmallVector.h`
|
||||
+#undef FS
|
||||
+#undef CS
|
||||
|
||||
#include "lldb/lldb-types.h"
|
||||
|
||||
@@ -17,23 +24,13 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
-#ifdef __ANDROID__
|
||||
-#if defined(__arm64__) || defined(__aarch64__)
|
||||
-typedef unsigned long elf_greg_t;
|
||||
-typedef elf_greg_t
|
||||
- elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))];
|
||||
-typedef struct user_fpsimd_state elf_fpregset_t;
|
||||
-#ifndef NT_FPREGSET
|
||||
-#define NT_FPREGSET NT_PRFPREG
|
||||
-#endif // NT_FPREGSET
|
||||
-#elif defined(__mips__)
|
||||
-#ifndef NT_FPREGSET
|
||||
-#define NT_FPREGSET NT_PRFPREG
|
||||
-#endif // NT_FPREGSET
|
||||
-#endif
|
||||
-#else // __ANDROID__
|
||||
+#if !defined(__GLIBC__) && defined(__powerpc__)
|
||||
+#define pt_regs musl_pt_regs
|
||||
+#include <sys/procfs.h>
|
||||
+#undef pt_regs
|
||||
+#else
|
||||
#include <sys/procfs.h>
|
||||
-#endif // __ANDROID__
|
||||
+#endif
|
||||
|
||||
namespace lldb_private {
|
||||
namespace process_linux {
|
14
pkgs/development/compilers/llvm/16/lldb/resource-dir.patch
Normal file
14
pkgs/development/compilers/llvm/16/lldb/resource-dir.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/cmake/modules/LLDBConfig.cmake b/cmake/modules/LLDBConfig.cmake
|
||||
index ec06ba285f27..286162f098fb 100644
|
||||
--- a/cmake/modules/LLDBConfig.cmake
|
||||
+++ b/cmake/modules/LLDBConfig.cmake
|
||||
@@ -290,7 +290,8 @@ if (NOT TARGET clang-resource-headers)
|
||||
# could be and pick the first that exists.
|
||||
foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}"
|
||||
"${LLVM_BUILD_LIBRARY_DIR}"
|
||||
- "${LLVM_LIBRARY_DIR}")
|
||||
+ "${LLVM_LIBRARY_DIR}"
|
||||
+ "@clangLibDir@")
|
||||
# Build the resource directory path by appending 'clang/<version number>'.
|
||||
set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}")
|
||||
if (IS_DIRECTORY "${CANDIDATE_RESOURCE_DIR}")
|
433
pkgs/development/compilers/llvm/16/llvm/default.nix
Normal file
433
pkgs/development/compilers/llvm/16/llvm/default.nix
Normal file
@ -0,0 +1,433 @@
|
||||
{ lib, stdenv, llvm_meta
|
||||
, pkgsBuildBuild
|
||||
, monorepoSrc
|
||||
, runCommand
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, darwin
|
||||
, ninja
|
||||
, python3
|
||||
, python3Packages
|
||||
, libffi
|
||||
# TODO: Gold plugin on LLVM16 has a severe memory corruption bug: https://github.com/llvm/llvm-project/issues/61350.
|
||||
, enableGoldPlugin ? false
|
||||
, libbfd
|
||||
, libpfm
|
||||
, libxml2
|
||||
, ncurses
|
||||
, version
|
||||
, release_version
|
||||
, zlib
|
||||
, which
|
||||
, sysctl
|
||||
, buildLlvmTools
|
||||
, debugVersion ? false
|
||||
, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl)
|
||||
&& (stdenv.hostPlatform == stdenv.buildPlatform)
|
||||
, enableManpages ? false
|
||||
, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
|
||||
, enablePFM ? stdenv.isLinux /* PFM only supports Linux */
|
||||
# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
|
||||
# broken for the armv7l builder
|
||||
&& !stdenv.hostPlatform.isAarch
|
||||
, enablePolly ? true
|
||||
} @args:
|
||||
|
||||
let
|
||||
inherit (lib) optional optionals optionalString;
|
||||
|
||||
# Used when creating a version-suffixed symlink of libLLVM.dylib
|
||||
shortVersion = with lib;
|
||||
concatStringsSep "." (take 1 (splitString "." release_version));
|
||||
|
||||
# Ordinarily we would just the `doCheck` and `checkDeps` functionality
|
||||
# `mkDerivation` gives us to manage our test dependencies (instead of breaking
|
||||
# out `doCheck` as a package level attribute).
|
||||
#
|
||||
# Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
|
||||
# particular the children it uses to do feature detection.
|
||||
#
|
||||
# This means that python deps we add to `checkDeps` (which the python
|
||||
# interpreter is made aware of via `$PYTHONPATH` – populated by the python
|
||||
# setup hook) are not picked up by `lit` which causes it to skip tests.
|
||||
#
|
||||
# Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
|
||||
# because this package is shadowed in `$PATH` by the regular `python3`
|
||||
# package.
|
||||
#
|
||||
# So, we "manually" assemble one python derivation for the package to depend
|
||||
# on, taking into account whether checks are enabled or not:
|
||||
python = if doCheck then
|
||||
# Note that we _explicitly_ ask for a python interpreter for our host
|
||||
# platform here; the splicing that would ordinarily take care of this for
|
||||
# us does not seem to work once we use `withPackages`.
|
||||
let
|
||||
checkDeps = ps: with ps; [ psutil ];
|
||||
in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps
|
||||
else python3;
|
||||
|
||||
in
|
||||
assert (lib.assertMsg (!enableGoldPlugin) "Gold plugin cannot be enabled on LLVM16 due to a upstream issue: https://github.com/llvm/llvm-project/issues/61350");
|
||||
stdenv.mkDerivation (rec {
|
||||
pname = "llvm";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} (''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
cp -r ${monorepoSrc}/third-party "$out"
|
||||
'' + lib.optionalString enablePolly ''
|
||||
chmod u+w "$out/${pname}/tools"
|
||||
cp -r ${monorepoSrc}/polly "$out/${pname}/tools"
|
||||
'');
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
|
||||
outputs = [ "out" "lib" "dev" "python" ];
|
||||
|
||||
nativeBuildInputs = [ cmake ninja python ]
|
||||
++ optionals enableManpages [
|
||||
# Note: we intentionally use `python3Packages` instead of `python3.pkgs`;
|
||||
# splicing does *not* work with the latter. (TODO: fix)
|
||||
python3Packages.sphinx python3Packages.recommonmark
|
||||
];
|
||||
|
||||
buildInputs = [ libxml2 libffi ]
|
||||
++ optional enablePFM libpfm; # exegesis
|
||||
|
||||
propagatedBuildInputs = [ ncurses zlib ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
which
|
||||
] ++ lib.optional stdenv.isDarwin sysctl;
|
||||
|
||||
patches = [
|
||||
./gnu-install-dirs.patch
|
||||
|
||||
# Running the tests involves invoking binaries (like `opt`) that depend on
|
||||
# the LLVM dylibs and reference them by absolute install path (i.e. their
|
||||
# nix store path).
|
||||
#
|
||||
# Because we have not yet run the install phase (we're running these tests
|
||||
# as part of `checkPhase` instead of `installCheckPhase`) these absolute
|
||||
# paths do not exist yet; to work around this we point the loader (`ld` on
|
||||
# unix, `dyld` on macOS) at the `lib` directory which will later become this
|
||||
# package's `lib` output.
|
||||
#
|
||||
# Previously we would just set `LD_LIBRARY_PATH` to include the build `lib`
|
||||
# dir but:
|
||||
# - this doesn't generalize well to other platforms; `lit` doesn't forward
|
||||
# `DYLD_LIBRARY_PATH` (macOS):
|
||||
# + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26
|
||||
# - even if `lit` forwarded this env var, we actually cannot set
|
||||
# `DYLD_LIBRARY_PATH` in the child processes `lit` launches because
|
||||
# `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for
|
||||
# "protected processes" (i.e. the python interpreter that runs `lit`):
|
||||
# https://stackoverflow.com/a/35570229
|
||||
# - other LLVM subprojects deal with this issue by having their `lit`
|
||||
# configuration set these env vars for us; it makes sense to do the same
|
||||
# for LLVM:
|
||||
# + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31
|
||||
#
|
||||
# !!! TODO: look into upstreaming this patch
|
||||
./llvm-lit-cfg-add-libs-to-dylib-path.patch
|
||||
|
||||
# `lit` has a mode where it executes run lines as a shell script which is
|
||||
# constructs; this is problematic for macOS because it means that there's
|
||||
# another process in between `lit` and the binaries being tested. As noted
|
||||
# above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our
|
||||
# tests fail with dyld errors.
|
||||
#
|
||||
# To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when
|
||||
# present in the test configuration.
|
||||
#
|
||||
# It's not clear to me why this isn't an issue for LLVM developers running
|
||||
# on macOS (nothing about this _seems_ nix specific)..
|
||||
./lit-shell-script-runner-set-dyld-library-path.patch
|
||||
] ++ lib.optionals enablePolly [
|
||||
./gnu-install-dirs-polly.patch
|
||||
|
||||
# Just like the `llvm-lit-cfg` patch, but for `polly`.
|
||||
./polly-lit-cfg-add-libs-to-dylib-path.patch
|
||||
];
|
||||
|
||||
postPatch = optionalString stdenv.isDarwin ''
|
||||
substituteInPlace cmake/modules/AddLLVM.cmake \
|
||||
--replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \
|
||||
--replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' ""
|
||||
|
||||
# As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick
|
||||
# this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7
|
||||
rm test/MC/ELF/cfi-version.ll
|
||||
|
||||
# This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`)
|
||||
# and thus fails under the sandbox:
|
||||
substituteInPlace unittests/Support/Host.cpp \
|
||||
--replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }"
|
||||
'' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) ''
|
||||
# This test tries to call the intrinsics `@llvm.roundeven.f32` and
|
||||
# `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf`
|
||||
# and `roundeven` on x86_64 macOS.
|
||||
#
|
||||
# However these functions are glibc specific so the test fails:
|
||||
# - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html
|
||||
# - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html
|
||||
#
|
||||
# TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it
|
||||
# pass there?
|
||||
substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \
|
||||
--replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \
|
||||
--replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""
|
||||
|
||||
# This test fails on darwin x86_64 because `sw_vers` reports a different
|
||||
# macOS version than what LLVM finds by reading
|
||||
# `/System/Library/CoreServices/SystemVersion.plist` (which is passed into
|
||||
# the sandbox on macOS).
|
||||
#
|
||||
# The `sw_vers` provided by nixpkgs reports the macOS version associated
|
||||
# with the `CoreFoundation` framework with which it was built. Because
|
||||
# nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what
|
||||
# `sw_vers` reports is not guaranteed to match the macOS version of the host
|
||||
# that's building this derivation.
|
||||
#
|
||||
# Astute readers will note that we only _patch_ this test on aarch64-darwin
|
||||
# (to use the nixpkgs provided `sw_vers`) instead of disabling it outright.
|
||||
# So why does this test pass on aarch64?
|
||||
#
|
||||
# Well, it seems that `sw_vers` on aarch64 actually links against the _host_
|
||||
# CoreFoundation framework instead of the nixpkgs provided one.
|
||||
#
|
||||
# Not entirely sure what the right fix is here. I'm assuming aarch64
|
||||
# `sw_vers` doesn't intentionally link against the host `CoreFoundation`
|
||||
# (still digging into how this ends up happening, will follow up) but that
|
||||
# aside I think the more pertinent question is: should we be patching LLVM's
|
||||
# macOS version detection logic to use `sw_vers` instead of reading host
|
||||
# paths? This *is* a way in which details about builder machines can creep
|
||||
# into the artifacts that are produced, affecting reproducibility, but it's
|
||||
# not clear to me when/where/for what this even gets used in LLVM.
|
||||
#
|
||||
# TODO(@rrbutani): fix/follow-up
|
||||
substituteInPlace unittests/Support/Host.cpp \
|
||||
--replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"
|
||||
|
||||
# This test fails with a `dysmutil` crash; have not yet dug into what's
|
||||
# going on here (TODO(@rrbutani)).
|
||||
rm test/tools/dsymutil/ARM/obfuscated.test
|
||||
'' + ''
|
||||
# FileSystem permissions tests fail with various special bits
|
||||
substituteInPlace unittests/Support/CMakeLists.txt \
|
||||
--replace "Path.cpp" ""
|
||||
rm unittests/Support/Path.cpp
|
||||
substituteInPlace unittests/IR/CMakeLists.txt \
|
||||
--replace "PassBuilderCallbacksTest.cpp" ""
|
||||
rm unittests/IR/PassBuilderCallbacksTest.cpp
|
||||
rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
|
||||
'' + optionalString stdenv.hostPlatform.isMusl ''
|
||||
patch -p1 -i ${../../TLI-musl.patch}
|
||||
substituteInPlace unittests/Support/CMakeLists.txt \
|
||||
--replace "add_subdirectory(DynamicLibrary)" ""
|
||||
rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
|
||||
# valgrind unhappy with musl or glibc, but fails w/musl only
|
||||
rm test/CodeGen/AArch64/wineh4.mir
|
||||
'' + optionalString stdenv.hostPlatform.isAarch32 ''
|
||||
# skip failing X86 test cases on 32-bit ARM
|
||||
rm test/DebugInfo/X86/convert-debugloc.ll
|
||||
rm test/DebugInfo/X86/convert-inlined.ll
|
||||
rm test/DebugInfo/X86/convert-linked.ll
|
||||
rm test/tools/dsymutil/X86/op-convert.test
|
||||
rm test/tools/gold/X86/split-dwarf.ll
|
||||
rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s
|
||||
rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s
|
||||
|
||||
# !!! Note: these tests are removed in LLVM 16.
|
||||
#
|
||||
# See here for context: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999790443
|
||||
rm test/CodeGen/RISCV/rv32zbp.ll
|
||||
rm test/CodeGen/RISCV/rv64zbp.ll
|
||||
'' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
|
||||
# Seems to require certain floating point hardware (NEON?)
|
||||
rm test/ExecutionEngine/frem.ll
|
||||
'' + ''
|
||||
patchShebangs test/BugPoint/compile-custom.ll.py
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
# Workaround for configure flags that need to have spaces
|
||||
cmakeFlagsArray+=(
|
||||
-DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar"
|
||||
)
|
||||
'';
|
||||
|
||||
# Defensive check: some paths (that we make symlinks to) depend on the release
|
||||
# version, for example:
|
||||
# - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185
|
||||
#
|
||||
# So we want to sure that the version in the source matches the release
|
||||
# version we were given.
|
||||
#
|
||||
# We do this check here, in the LLVM build, because it happens early.
|
||||
postConfigure = let
|
||||
v = lib.versions;
|
||||
major = v.major release_version;
|
||||
minor = v.minor release_version;
|
||||
patch = v.patch release_version;
|
||||
in ''
|
||||
# $1: part, $2: expected
|
||||
check_version() {
|
||||
part="''${1^^}"
|
||||
part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)"
|
||||
|
||||
if [[ "$part" != "$2" ]]; then
|
||||
echo >&2 \
|
||||
"mismatch in the $1 version! we have version ${release_version}" \
|
||||
"and expected the $1 version to be '$2'; the source has '$part' instead"
|
||||
exit 3
|
||||
fi
|
||||
}
|
||||
|
||||
check_version major ${major}
|
||||
check_version minor ${minor}
|
||||
check_version patch ${patch}
|
||||
'';
|
||||
|
||||
# E.g. mesa.drivers use the build-id as a cache key (see #93946):
|
||||
LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1";
|
||||
|
||||
cmakeFlags = with stdenv; let
|
||||
# These flags influence llvm-config's BuildVariables.inc in addition to the
|
||||
# general build. We need to make sure these are also passed via
|
||||
# CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native
|
||||
# will return different results from the cross llvm-config.
|
||||
#
|
||||
# Some flags don't need to be repassed because LLVM already does so (like
|
||||
# CMAKE_BUILD_TYPE), others are irrelevant to the result.
|
||||
flagsForLlvmConfig = [
|
||||
"-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm"
|
||||
"-DLLVM_ENABLE_RTTI=ON"
|
||||
] ++ optionals enableSharedLibraries [
|
||||
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||
];
|
||||
in flagsForLlvmConfig ++ [
|
||||
"-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
|
||||
"-DLLVM_INSTALL_UTILS=ON" # Needed by rustc
|
||||
"-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}"
|
||||
"-DLLVM_ENABLE_FFI=ON"
|
||||
"-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
|
||||
"-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
|
||||
"-DLLVM_ENABLE_DUMP=ON"
|
||||
] ++ optionals stdenv.hostPlatform.isStatic [
|
||||
# Disables building of shared libs, -fPIC is still injected by cc-wrapper
|
||||
"-DLLVM_ENABLE_PIC=OFF"
|
||||
"-DLLVM_BUILD_STATIC=ON"
|
||||
"-DLLVM_LINK_LLVM_DYLIB=off"
|
||||
# libxml2 needs to be disabled because the LLVM build system ignores its .la
|
||||
# file and doesn't link zlib as well.
|
||||
# https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812
|
||||
"-DLLVM_ENABLE_LIBXML2=OFF"
|
||||
] ++ optionals enableManpages [
|
||||
"-DLLVM_BUILD_DOCS=ON"
|
||||
"-DLLVM_ENABLE_SPHINX=ON"
|
||||
"-DSPHINX_OUTPUT_MAN=ON"
|
||||
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||
] ++ optionals (false) [
|
||||
"-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
|
||||
] ++ optionals isDarwin [
|
||||
"-DLLVM_ENABLE_LIBCXX=ON"
|
||||
"-DCAN_TARGET_i386=false"
|
||||
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"-DCMAKE_CROSSCOMPILING=True"
|
||||
"-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||
(
|
||||
let
|
||||
nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc;
|
||||
nativeBintools = nativeCC.bintools.bintools;
|
||||
nativeToolchainFlags = [
|
||||
"-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc"
|
||||
"-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++"
|
||||
"-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar"
|
||||
"-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip"
|
||||
"-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib"
|
||||
];
|
||||
# We need to repass the custom GNUInstallDirs values, otherwise CMake
|
||||
# will choose them for us, leading to wrong results in llvm-config-native
|
||||
nativeInstallFlags = [
|
||||
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
|
||||
"-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include"
|
||||
"-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib"
|
||||
"-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec"
|
||||
];
|
||||
in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list="
|
||||
+ lib.concatStringsSep ";" (lib.concatLists [
|
||||
flagsForLlvmConfig
|
||||
nativeToolchainFlags
|
||||
nativeInstallFlags
|
||||
])
|
||||
)
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $python/share
|
||||
mv $out/share/opt-viewer $python/share/opt-viewer
|
||||
moveToOutput "bin/llvm-config*" "$dev"
|
||||
substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
|
||||
--replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \
|
||||
--replace "$out/bin/llvm-config" "$dev/bin/llvm-config"
|
||||
substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
|
||||
--replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'
|
||||
''
|
||||
+ optionalString (stdenv.isDarwin && enableSharedLibraries) ''
|
||||
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
|
||||
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
|
||||
''
|
||||
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
|
||||
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
|
||||
'';
|
||||
|
||||
inherit doCheck;
|
||||
|
||||
checkTarget = "check-all";
|
||||
|
||||
# For the update script:
|
||||
passthru.monorepoSrc = monorepoSrc;
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://llvm.org/";
|
||||
description = "A collection of modular and reusable compiler and toolchain technologies";
|
||||
longDescription = ''
|
||||
The LLVM Project is a collection of modular and reusable compiler and
|
||||
toolchain technologies. Despite its name, LLVM has little to do with
|
||||
traditional virtual machines. The name "LLVM" itself is not an acronym; it
|
||||
is the full name of the project.
|
||||
LLVM began as a research project at the University of Illinois, with the
|
||||
goal of providing a modern, SSA-based compilation strategy capable of
|
||||
supporting both static and dynamic compilation of arbitrary programming
|
||||
languages. Since then, LLVM has grown to be an umbrella project consisting
|
||||
of a number of subprojects, many of which are being used in production by
|
||||
a wide variety of commercial and open source projects as well as being
|
||||
widely used in academic research. Code in the LLVM project is licensed
|
||||
under the "Apache 2.0 License with LLVM exceptions".
|
||||
'';
|
||||
};
|
||||
} // lib.optionalAttrs enableManpages {
|
||||
pname = "llvm-manpages";
|
||||
|
||||
propagatedBuildInputs = [];
|
||||
|
||||
ninjaFlags = [ "docs-llvm-man" ];
|
||||
installTargets = [ "install-docs-llvm-man" ];
|
||||
|
||||
postPatch = null;
|
||||
postInstall = null;
|
||||
|
||||
outputs = [ "out" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = llvm_meta // {
|
||||
description = "man pages for LLVM ${version}";
|
||||
};
|
||||
})
|
@ -0,0 +1,19 @@
|
||||
This is the one remaining Polly install dirs related change that hasn't made it
|
||||
into upstream yet; previously this patch file also included:
|
||||
https://reviews.llvm.org/D117541
|
||||
|
||||
diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
|
||||
index 518a09b45a42..bd9d6f5542ad 100644
|
||||
--- a/tools/polly/cmake/polly_macros.cmake
|
||||
+++ b/tools/polly/cmake/polly_macros.cmake
|
||||
@@ -44,8 +44,8 @@ macro(add_polly_library name)
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LLVMPolly")
|
||||
install(TARGETS ${name}
|
||||
EXPORT LLVMExports
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
||||
endif()
|
||||
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
|
||||
endmacro(add_polly_library)
|
138
pkgs/development/compilers/llvm/16/llvm/gnu-install-dirs.patch
Normal file
138
pkgs/development/compilers/llvm/16/llvm/gnu-install-dirs.patch
Normal file
@ -0,0 +1,138 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 45399dc0537e..5d946e9e6583 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -942,7 +942,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")
|
||||
add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src
|
||||
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime)
|
||||
install(TARGETS tf_xla_runtime EXPORT LLVMExports
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
|
||||
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)
|
||||
# Once we add more modules, we should handle this more automatically.
|
||||
if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL)
|
||||
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
|
||||
index 057431208322..56f0dcb258da 100644
|
||||
--- a/cmake/modules/AddLLVM.cmake
|
||||
+++ b/cmake/modules/AddLLVM.cmake
|
||||
@@ -844,8 +844,8 @@ macro(add_llvm_library name)
|
||||
get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella})
|
||||
install(TARGETS ${name}
|
||||
${export_to_llvmexports}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
|
||||
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}
|
||||
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})
|
||||
|
||||
if (NOT LLVM_ENABLE_IDE)
|
||||
@@ -2007,7 +2007,7 @@ function(llvm_install_library_symlink name dest type)
|
||||
set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
|
||||
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
|
||||
|
||||
- set(output_dir lib${LLVM_LIBDIR_SUFFIX})
|
||||
+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
|
||||
if(WIN32 AND "${type}" STREQUAL "SHARED")
|
||||
set(output_dir "${CMAKE_INSTALL_BINDIR}")
|
||||
endif()
|
||||
@@ -2271,15 +2271,15 @@ function(llvm_setup_rpath name)
|
||||
|
||||
if (APPLE)
|
||||
set(_install_name_dir INSTALL_NAME_DIR "@rpath")
|
||||
- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
|
||||
# $ORIGIN is not interpreted at link time by aix ld.
|
||||
# Since BUILD_SHARED_LIBS is only recommended for use by developers,
|
||||
# hardcode the rpath to build/install lib dir first in this mode.
|
||||
# FIXME: update this when there is better solution.
|
||||
- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
elseif(UNIX)
|
||||
- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
|
||||
set_property(TARGET ${name} APPEND_STRING PROPERTY
|
||||
LINK_FLAGS " -Wl,-z,origin ")
|
||||
diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake
|
||||
index 891c9e6d618c..8d963f3b0069 100644
|
||||
--- a/cmake/modules/AddOCaml.cmake
|
||||
+++ b/cmake/modules/AddOCaml.cmake
|
||||
@@ -147,9 +147,9 @@ function(add_ocaml_library name)
|
||||
endforeach()
|
||||
|
||||
if( APPLE )
|
||||
- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
|
||||
+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||
elseif( UNIX )
|
||||
- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
|
||||
+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||
endif()
|
||||
list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
|
||||
|
||||
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
|
||||
index d4b0ab959148..26ed981fd09f 100644
|
||||
--- a/cmake/modules/CMakeLists.txt
|
||||
+++ b/cmake/modules/CMakeLists.txt
|
||||
@@ -128,7 +128,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS
|
||||
)
|
||||
list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)
|
||||
|
||||
-extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}")
|
||||
+extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")
|
||||
set(LLVM_CONFIG_LIBRARY_DIRS
|
||||
"${LLVM_CONFIG_LIBRARY_DIR}"
|
||||
# FIXME: Should there be other entries here?
|
||||
diff --git a/docs/CMake.rst b/docs/CMake.rst
|
||||
index 879b7b231d4c..9c31d14e8950 100644
|
||||
--- a/docs/CMake.rst
|
||||
+++ b/docs/CMake.rst
|
||||
@@ -250,7 +250,7 @@ description is in `LLVM-related variables`_ below.
|
||||
**LLVM_LIBDIR_SUFFIX**:STRING
|
||||
Extra suffix to append to the directory where libraries are to be
|
||||
installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``
|
||||
- to install libraries to ``/usr/lib64``.
|
||||
+ to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``.
|
||||
|
||||
**LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING
|
||||
Building the llvm toolchain can use a lot of resources, particularly
|
||||
@@ -284,6 +284,10 @@ manual, or execute ``cmake --help-variable VARIABLE_NAME``.
|
||||
The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*.
|
||||
Defaults to "bin".
|
||||
|
||||
+**CMAKE_INSTALL_LIBDIR**:PATH
|
||||
+ The path to install libraries, relative to the *CMAKE_INSTALL_PREFIX*.
|
||||
+ Defaults to "lib".
|
||||
+
|
||||
**CMAKE_INSTALL_INCLUDEDIR**:PATH
|
||||
The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*.
|
||||
Defaults to "include".
|
||||
diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
|
||||
index 370005cd8d7d..7e790bc52111 100644
|
||||
--- a/tools/llvm-config/BuildVariables.inc.in
|
||||
+++ b/tools/llvm-config/BuildVariables.inc.in
|
||||
@@ -23,6 +23,7 @@
|
||||
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
|
||||
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
|
||||
#define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
|
||||
+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"
|
||||
#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
|
||||
#define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@"
|
||||
#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
|
||||
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
|
||||
index 2c6c55f89d38..f6d2068a0827 100644
|
||||
--- a/tools/llvm-config/llvm-config.cpp
|
||||
+++ b/tools/llvm-config/llvm-config.cpp
|
||||
@@ -369,7 +369,11 @@ int main(int argc, char **argv) {
|
||||
sys::fs::make_absolute(ActivePrefix, Path);
|
||||
ActiveBinDir = std::string(Path.str());
|
||||
}
|
||||
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
|
||||
+ {
|
||||
+ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX);
|
||||
+ sys::fs::make_absolute(ActivePrefix, Path);
|
||||
+ ActiveLibDir = std::string(Path.str());
|
||||
+ }
|
||||
{
|
||||
SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
|
||||
sys::fs::make_absolute(ActivePrefix, Path);
|
@ -0,0 +1,17 @@
|
||||
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
|
||||
index 0242e0b75af3..d732011306f7 100644
|
||||
--- a/utils/lit/lit/TestRunner.py
|
||||
+++ b/utils/lit/lit/TestRunner.py
|
||||
@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
|
||||
f.write('@echo off\n')
|
||||
f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
|
||||
else:
|
||||
+ # This env var is *purged* when invoking subprocesses so we have to
|
||||
+ # manually set it from within the bash script in order for the commands
|
||||
+ # in run lines to see this var:
|
||||
+ if "DYLD_LIBRARY_PATH" in test.config.environment:
|
||||
+ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')
|
||||
+
|
||||
for i, ln in enumerate(commands):
|
||||
match = re.match(kPdbgRegex, ln)
|
||||
if match:
|
@ -0,0 +1,79 @@
|
||||
diff --git a/test/Unit/lit.cfg.py b/test/Unit/lit.cfg.py
|
||||
index 81e8dc04acea..479ff95681e2 100644
|
||||
--- a/test/Unit/lit.cfg.py
|
||||
+++ b/test/Unit/lit.cfg.py
|
||||
@@ -3,6 +3,7 @@
|
||||
# Configuration file for the 'lit' test runner.
|
||||
|
||||
import os
|
||||
+import platform
|
||||
import subprocess
|
||||
|
||||
import lit.formats
|
||||
@@ -55,3 +56,26 @@ if sys.platform in ['win32', 'cygwin'] and os.path.isdir(config.shlibdir):
|
||||
# Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate.
|
||||
if sys.platform == 'win32' and 'SYSTEMDRIVE' in os.environ:
|
||||
config.environment['SYSTEMDRIVE'] = os.environ['SYSTEMDRIVE']
|
||||
+
|
||||
+# Add the LLVM dynamic libs to the platform-specific loader search path env var:
|
||||
+#
|
||||
+# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify..
|
||||
+def find_shlibpath_var():
|
||||
+ if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'SunOS']:
|
||||
+ yield 'LD_LIBRARY_PATH'
|
||||
+ elif platform.system() == 'Darwin':
|
||||
+ yield 'DYLD_LIBRARY_PATH'
|
||||
+ elif platform.system() == 'Windows':
|
||||
+ yield 'PATH'
|
||||
+ elif platform.system() == 'AIX':
|
||||
+ yield 'LIBPATH'
|
||||
+
|
||||
+for shlibpath_var in find_shlibpath_var():
|
||||
+ shlibpath = os.path.pathsep.join(
|
||||
+ (config.shlibdir,
|
||||
+ config.environment.get(shlibpath_var, '')))
|
||||
+ config.environment[shlibpath_var] = shlibpath
|
||||
+ break
|
||||
+else:
|
||||
+ lit_config.warning("unable to inject shared library path on '{}'"
|
||||
+ .format(platform.system()))
|
||||
diff --git a/test/lit.cfg.py b/test/lit.cfg.py
|
||||
index 75a38b4c5dad..856fc75c9d74 100644
|
||||
--- a/test/lit.cfg.py
|
||||
+++ b/test/lit.cfg.py
|
||||
@@ -42,6 +42,26 @@ llvm_config.with_environment('PATH', config.llvm_tools_dir, append_path=True)
|
||||
llvm_config.with_system_environment(
|
||||
['HOME', 'INCLUDE', 'LIB', 'TMP', 'TEMP'])
|
||||
|
||||
+# Add the LLVM dynamic libs to the platform-specific loader search path env var:
|
||||
+#
|
||||
+# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify..
|
||||
+def find_shlibpath_var():
|
||||
+ if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'SunOS']:
|
||||
+ yield 'LD_LIBRARY_PATH'
|
||||
+ elif platform.system() == 'Darwin':
|
||||
+ yield 'DYLD_LIBRARY_PATH'
|
||||
+ elif platform.system() == 'Windows':
|
||||
+ yield 'PATH'
|
||||
+ elif platform.system() == 'AIX':
|
||||
+ yield 'LIBPATH'
|
||||
+
|
||||
+for shlibpath_var in find_shlibpath_var():
|
||||
+ shlibpath = config.llvm_shlib_dir
|
||||
+ llvm_config.with_environment(shlibpath_var, shlibpath, append_path = True)
|
||||
+ break
|
||||
+else:
|
||||
+ lit_config.warning("unable to inject shared library path on '{}'"
|
||||
+ .format(platform.system()))
|
||||
|
||||
# Set up OCAMLPATH to include newly built OCaml libraries.
|
||||
top_ocaml_lib = os.path.join(config.llvm_lib_dir, 'ocaml')
|
||||
@@ -318,7 +338,7 @@ def have_cxx_shared_library():
|
||||
|
||||
try:
|
||||
readobj_cmd = subprocess.Popen(
|
||||
- [readobj_exe, '--needed-libs', readobj_exe], stdout=subprocess.PIPE)
|
||||
+ [readobj_exe, '--needed-libs', readobj_exe], stdout=subprocess.PIPE, env=config.environment)
|
||||
except OSError:
|
||||
print('could not exec llvm-readobj')
|
||||
return False
|
@ -0,0 +1,24 @@
|
||||
diff --git a/tools/polly/test/lit.cfg b/tools/polly/test/lit.cfg
|
||||
index 41e3a589c61e..09f3b17498b0 100644
|
||||
--- a/tools/polly/test/lit.cfg
|
||||
+++ b/tools/polly/test/lit.cfg
|
||||
@@ -36,9 +36,17 @@ base_paths = [config.llvm_tools_dir, config.environment['PATH']]
|
||||
path = os.path.pathsep.join(base_paths + config.extra_paths)
|
||||
config.environment['PATH'] = path
|
||||
|
||||
+# (Copied from polly/test/Unit/lit.cfg)
|
||||
+if platform.system() == 'Darwin':
|
||||
+ shlibpath_var = 'DYLD_LIBRARY_PATH'
|
||||
+elif platform.system() == 'Windows':
|
||||
+ shlibpath_var = 'PATH'
|
||||
+else:
|
||||
+ shlibpath_var = 'LD_LIBRARY_PATH'
|
||||
+
|
||||
path = os.path.pathsep.join((config.llvm_libs_dir,
|
||||
- config.environment.get('LD_LIBRARY_PATH','')))
|
||||
-config.environment['LD_LIBRARY_PATH'] = path
|
||||
+ config.environment.get(shlibpath_var,'')))
|
||||
+config.environment[shlibpath_var] = path
|
||||
|
||||
llvm_config.use_default_substitutions()
|
||||
|
74
pkgs/development/compilers/llvm/16/openmp/default.nix
Normal file
74
pkgs/development/compilers/llvm/16/openmp/default.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, llvm_meta
|
||||
, monorepoSrc
|
||||
, runCommand
|
||||
, cmake
|
||||
, ninja
|
||||
, llvm
|
||||
, targetLlvm
|
||||
, lit
|
||||
, clang-unwrapped
|
||||
, perl
|
||||
, pkg-config
|
||||
, xcbuild
|
||||
, version
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "openmp";
|
||||
inherit version;
|
||||
|
||||
src = runCommand "${pname}-src-${version}" {} ''
|
||||
mkdir -p "$out"
|
||||
cp -r ${monorepoSrc}/cmake "$out"
|
||||
cp -r ${monorepoSrc}/${pname} "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
|
||||
patches = [
|
||||
./fix-find-tool.patch
|
||||
./gnu-install-dirs.patch
|
||||
./run-lit-directly.patch
|
||||
];
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
|
||||
buildInputs = [
|
||||
(if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
|
||||
];
|
||||
|
||||
nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
|
||||
|
||||
# Unsup:Pass:XFail:Fail
|
||||
# 26:267:16:8
|
||||
doCheck = false;
|
||||
checkTarget = "check-openmp";
|
||||
|
||||
preCheck = ''
|
||||
patchShebangs ../tools/archer/tests/deflake.bash
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
|
||||
"-DOPT_TOOL=${llvm}/bin/opt"
|
||||
"-DLINK_TOOL=${llvm}/bin/llvm-link"
|
||||
];
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://openmp.llvm.org/";
|
||||
description = "Support for the OpenMP language";
|
||||
longDescription = ''
|
||||
The OpenMP subproject of LLVM contains the components required to build an
|
||||
executable OpenMP program that are outside the compiler itself.
|
||||
Contains the code for the runtime library against which code compiled by
|
||||
"clang -fopenmp" must be linked before it can run and the library that
|
||||
supports offload to target devices.
|
||||
'';
|
||||
# "All of the code is dual licensed under the MIT license and the UIUC
|
||||
# License (a BSD-like license)":
|
||||
license = with lib.licenses; [ mit ncsa ];
|
||||
};
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
diff --git a/libomptarget/DeviceRTL/CMakeLists.txt b/libomptarget/DeviceRTL/CMakeLists.txt
|
||||
index 49b398c9f765..6f1dd1340010 100644
|
||||
--- a/libomptarget/DeviceRTL/CMakeLists.txt
|
||||
+++ b/libomptarget/DeviceRTL/CMakeLists.txt
|
||||
@@ -27,11 +27,11 @@ endif()
|
||||
if (LLVM_DIR)
|
||||
# Builds that use pre-installed LLVM have LLVM_DIR set.
|
||||
# A standalone or LLVM_ENABLE_RUNTIMES=openmp build takes this route
|
||||
- find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
- find_program(PACKAGER_TOOL clang-offload-packager PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
- find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
- find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
- find_program(EXTRACT_TOOL llvm-extract PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
+ find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR})
|
||||
+ find_program(PACKAGER_TOOL clang-offload-packager PATHS ${LLVM_TOOLS_BINARY_DIR})
|
||||
+ find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR})
|
||||
+ find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR})
|
||||
+ find_program(EXTRACT_TOOL llvm-extract PATHS ${LLVM_TOOLS_BINARY_DIR})
|
||||
if ((NOT CLANG_TOOL) OR (NOT LINK_TOOL) OR (NOT OPT_TOOL) OR (NOT EXTRACT_TOOL) OR (NOT PACKAGER_TOOL))
|
||||
libomptarget_say("Not building DeviceRTL. Missing clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL}, opt: ${OPT_TOOL}, llvm-extract: ${EXTRACT_TOOL}, or clang-offload-packager: ${PACKAGER_TOOL}")
|
||||
return()
|
@ -0,0 +1,22 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index b6ddbe90516d..311ab1d50e7f 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD)
|
||||
set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING
|
||||
"Suffix of lib installation directory, e.g. 64 => lib64")
|
||||
# Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.
|
||||
- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")
|
||||
+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}")
|
||||
|
||||
# Group test settings.
|
||||
set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING
|
||||
@@ -40,7 +40,7 @@ if (OPENMP_STANDALONE_BUILD)
|
||||
else()
|
||||
set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})
|
||||
# If building in tree, we honor the same install suffix LLVM uses.
|
||||
- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")
|
||||
+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
|
||||
|
||||
if (NOT MSVC)
|
||||
set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
|
@ -5,15 +5,16 @@
|
||||
|
||||
ocamlPackages.buildDunePackage rec {
|
||||
pname = "stanc";
|
||||
version = "2.32.0";
|
||||
version = "2.32.1";
|
||||
|
||||
minimalOCamlVersion = "4.12";
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stan-dev";
|
||||
repo = "stanc3";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DZJb5Zcfki6vev1n+9zyokQTxEounCvTeYyH4BvSTZ0=";
|
||||
hash = "sha256-dngmZXVb59uV7EugYIZAqE1gk66em7iuzllbbPWK2xk=";
|
||||
};
|
||||
|
||||
# Error: This expression has type [ `Use_Sys_unix ]
|
||||
|
@ -1,19 +1,34 @@
|
||||
{ lib, rustPlatform, fetchFromGitHub, stdenv, Security }:
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, openssl
|
||||
, stdenv
|
||||
, darwin
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "lunatic";
|
||||
version = "0.12.0";
|
||||
version = "0.13.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lunatic-solutions";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-7fxccufM5tunbutABEtsa6++OLTsS72oA219zvf+KN8=";
|
||||
hash = "sha256-uMMssZaPDZn3bOtQIho+GvUCPmzRllv7eJ+SJuKaYtg=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-sHSQUvHTwyqMrGmwpblqpS4HfFiWGb+70a1uloDu2wY=";
|
||||
cargoHash = "sha256-ALjlQsxmZVREyi3ZGMJMv/38kkMjYh+hTSr/0avYJVs=";
|
||||
|
||||
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
|
||||
checkFlags = [
|
||||
# requires simd support which is not always available on hydra
|
||||
@ -23,7 +38,7 @@ rustPlatform.buildRustPackage rec {
|
||||
meta = with lib; {
|
||||
description = "An Erlang inspired runtime for WebAssembly";
|
||||
homepage = "https://lunatic.solutions";
|
||||
changelog = "https://github.com/lunatic-solutions/lunatic/blob/v${version}/RELEASES.md";
|
||||
changelog = "https://github.com/lunatic-solutions/lunatic/blob/v${version}/CHANGELOG.md";
|
||||
license = with licenses; [ mit /* or */ asl20 ];
|
||||
maintainers = with maintainers; [ figsoda ];
|
||||
};
|
||||
|
@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
|
||||
license = lib.licenses.lgpl2;
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [ ttuegel ];
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -4,7 +4,7 @@ buildDunePackage rec {
|
||||
pname = "bitstring";
|
||||
version = "4.1.0";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xguerin";
|
||||
|
@ -9,7 +9,9 @@ else
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "ppx_bitstring";
|
||||
inherit (bitstring) version useDune2 src;
|
||||
inherit (bitstring) version src;
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
buildInputs = [ bitstring ppxlib ];
|
||||
|
||||
|
@ -4,6 +4,8 @@ buildDunePackage rec {
|
||||
pname = "brisk-reconciler";
|
||||
version = "unstable-2020-12-02";
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "briskml";
|
||||
repo = "brisk-reconciler";
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ lib, fetchFromGitLab, buildDunePackage, dune-configurator, cppo
|
||||
{ lib, fetchFromGitLab, buildDunePackage, findlib, dune-configurator, cppo
|
||||
, graphics, lablgtk, stdio
|
||||
}:
|
||||
|
||||
@ -6,9 +6,9 @@ buildDunePackage rec {
|
||||
pname = "camlimages";
|
||||
version = "5.0.4";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "camlspotter";
|
||||
@ -18,7 +18,7 @@ buildDunePackage rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cppo ];
|
||||
buildInputs = [ dune-configurator graphics lablgtk stdio ];
|
||||
buildInputs = [ dune-configurator findlib graphics lablgtk stdio ];
|
||||
|
||||
meta = with lib; {
|
||||
branch = "5.0";
|
||||
|
@ -9,6 +9,7 @@ buildDunePackage rec {
|
||||
pname = "ctypes_stubs_js";
|
||||
version = "0.1";
|
||||
|
||||
duneVersion = "3";
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
|
@ -6,6 +6,8 @@ buildDunePackage rec {
|
||||
pname = "genspio";
|
||||
version = "0.0.3";
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hammerlab";
|
||||
repo = pname;
|
||||
|
@ -8,6 +8,7 @@ buildDunePackage rec {
|
||||
version = "1.0";
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "o1-labs";
|
||||
|
@ -12,7 +12,7 @@ with self;
|
||||
accessor = janePackage {
|
||||
pname = "accessor";
|
||||
version = "0.14.1";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "0wm2081kzd5zsqs516cn3f975bnnmnyynv8fa818gmfa65i6mxm8";
|
||||
meta.description = "A library that makes it nicer to work with nested functional data structures";
|
||||
propagatedBuildInputs = [ higher_kinded ];
|
||||
@ -21,7 +21,7 @@ with self;
|
||||
accessor_async = janePackage {
|
||||
pname = "accessor_async";
|
||||
version = "0.14.1";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "1193hzvlzm7vcl9p67fs8al2pvkw9n2wz009m2l3lp35mrx8aq1w";
|
||||
meta.description = "Accessors for Async types, for use with the Accessor library";
|
||||
propagatedBuildInputs = [ accessor_core async_kernel ];
|
||||
@ -30,14 +30,14 @@ with self;
|
||||
accessor_base = janePackage {
|
||||
pname = "accessor_base";
|
||||
version = "0.14.1";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "1xjbvvijkyw4dlys47x4896y3kqm2zn0yg60cqrp57i2dwxg0nsj";
|
||||
meta.description = "Accessors for Base types, for use with the Accessor library";
|
||||
propagatedBuildInputs = [ ppx_accessor ];
|
||||
};
|
||||
|
||||
accessor_core = janePackage {
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
pname = "accessor_core";
|
||||
version = "0.14.1";
|
||||
hash = "1cdkv34m6czhacivpbb2sasj83fgcid6gnqk30ig9i84z8nh2gw2";
|
||||
@ -84,7 +84,6 @@ with self;
|
||||
|
||||
async_js = janePackage {
|
||||
pname = "async_js";
|
||||
duneVersion = "3";
|
||||
hash = "0rld8792lfwbinn9rhrgacivz49vppgy29smpqnvpga89wchjv0v";
|
||||
meta.description = "A small library that provide Async support for JavaScript platforms";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
@ -120,7 +119,6 @@ with self;
|
||||
};
|
||||
|
||||
async_smtp = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "async_smtp";
|
||||
hash = "1xf3illn7vikdxldpnc29n4z8sv9f0wsdgdvl4iv93qlvjk8gzck";
|
||||
meta.description = "SMTP client and server";
|
||||
@ -151,7 +149,7 @@ with self;
|
||||
pname = "base";
|
||||
version = "0.14.1";
|
||||
hash = "1hizjxmiqlj2zzkwplzjamw9rbnl0kh44sxgjpzdij99qnfkzylf";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "Full standard library replacement for OCaml";
|
||||
buildInputs = [ dune-configurator ];
|
||||
propagatedBuildInputs = [ sexplib0 ];
|
||||
@ -161,7 +159,7 @@ with self;
|
||||
base_bigstring = janePackage {
|
||||
pname = "base_bigstring";
|
||||
hash = "1ald2m7qywhxbygv58dzpgaj54p38zn0aiqd1z7i95kf3bsnsjqa";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "String type based on [Bigarray], for use in I/O and C-bindings";
|
||||
propagatedBuildInputs = [ ppx_jane ];
|
||||
};
|
||||
@ -170,7 +168,7 @@ with self;
|
||||
pname = "base_quickcheck";
|
||||
version = "0.14.1";
|
||||
hash = "0apq3d9xb0zdaqsl4cjk5skyig57ff1plndb2mh0nn3czvfhifxs";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Randomized testing framework, designed for compatibility with Base";
|
||||
propagatedBuildInputs = [ ppx_base ppx_fields_conv ppx_let ppx_sexp_value splittable_random ];
|
||||
};
|
||||
@ -185,14 +183,13 @@ with self;
|
||||
bin_prot = janePackage {
|
||||
pname = "bin_prot";
|
||||
hash = "1qyqbfp4zdc2jb87370cdgancisqffhf9x60zgh2m31kqik8annr";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A binary protocol generator";
|
||||
propagatedBuildInputs = [ ppx_compare ppx_custom_printf ppx_fields_conv ppx_optcomp ppx_variants_conv ];
|
||||
};
|
||||
|
||||
bonsai = janePackage {
|
||||
pname = "bonsai";
|
||||
duneVersion = "3";
|
||||
hash = "0k4grabwqc9sy4shzp77bgfvyajvvc0l8qq89ia7cvlwvly7gv6a";
|
||||
meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
|
||||
buildInputs = [ ppx_pattern_bind ];
|
||||
@ -202,7 +199,7 @@ with self;
|
||||
cinaps = janePackage {
|
||||
pname = "cinaps";
|
||||
hash = "0ms1j2kh7i5slyw9v4w9kdz52dkwl5gqcnvn89prgimhk2vmichj";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "Trivial metaprogramming tool";
|
||||
propagatedBuildInputs = [ re ];
|
||||
checkInputs = [ ppx_jane ];
|
||||
@ -271,7 +268,6 @@ with self;
|
||||
};
|
||||
|
||||
email_message = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "email_message";
|
||||
hash = "0k8hjkq91ikl7wjxs04k523jbkhl6q4abj6v0lzlbjiybmrpp69n";
|
||||
meta.description = "E-mail message parser";
|
||||
@ -295,7 +291,7 @@ with self;
|
||||
fieldslib = janePackage {
|
||||
pname = "fieldslib";
|
||||
hash = "0nxx35lrb4f6zfs5l80a7cg7azf19c6g31vn9qjjpaxf6lgkck2n";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
@ -303,7 +299,7 @@ with self;
|
||||
higher_kinded = janePackage {
|
||||
pname = "higher_kinded";
|
||||
version = "0.14.1";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "05jvxgqsx3j2v8rqpd91ah76dgc1q2dz38kjklmx0vms4r4gvlsx";
|
||||
meta.description = "A library with an encoding of higher kinded types in OCaml";
|
||||
propagatedBuildInputs = [ base ppx_jane ];
|
||||
@ -311,7 +307,6 @@ with self;
|
||||
|
||||
incr_dom = janePackage {
|
||||
pname = "incr_dom";
|
||||
duneVersion = "3";
|
||||
hash = "0mi98cwi4npdh5vvcz0pb4sbb9j9dydl52s51rswwc3kn8mipxfx";
|
||||
meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
@ -344,7 +339,7 @@ with self;
|
||||
jane-street-headers = janePackage {
|
||||
pname = "jane-street-headers";
|
||||
hash = "12n40mlgjnc09fxc0hp0npsxdlxja2w828683zpb32nrzqkg6z4c";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Jane Street C header files";
|
||||
};
|
||||
|
||||
@ -358,7 +353,7 @@ with self;
|
||||
ocaml-compiler-libs = janePackage {
|
||||
pname = "ocaml-compiler-libs";
|
||||
version = "0.12.4";
|
||||
minimumOCamlVersion = "4.04.1";
|
||||
minimalOCamlVersion = "4.04.1";
|
||||
hash = "sha256-W+KUguz55yYAriHRMcQy8gRPzh2TZSJnexG1JI8TLgI=";
|
||||
meta.description = "OCaml compiler libraries repackaged";
|
||||
};
|
||||
@ -367,7 +362,7 @@ with self;
|
||||
pname = "parsexp";
|
||||
version = "0.14.1";
|
||||
hash = "1nr0ncb8l2mkk8pqzknr7fsqw5kpz8y102kyv5bc0x7c36v0d4zy";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "S-expression parsing library";
|
||||
propagatedBuildInputs = [ base sexplib0 ];
|
||||
};
|
||||
@ -382,7 +377,7 @@ with self;
|
||||
posixat = janePackage {
|
||||
pname = "posixat";
|
||||
hash = "0aana1lzq4514kna7hr301b5iv6gcg6zhgrx8s8vaad1q38yfp6c";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ ppx_optcomp ppx_sexp_conv ];
|
||||
meta.description = "Binding to the posix *at functions";
|
||||
};
|
||||
@ -390,7 +385,7 @@ with self;
|
||||
ppx_accessor = janePackage {
|
||||
pname = "ppx_accessor";
|
||||
version = "0.14.3";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "sha256:1c8blzh2f34vbm1z3mnvh670c6vda70chw805n2hmkd9j46l0cll";
|
||||
meta.description = "[@@deriving] plugin to generate accessors for use with the Accessor libraries";
|
||||
propagatedBuildInputs = [ accessor ];
|
||||
@ -399,7 +394,7 @@ with self;
|
||||
ppx_assert = janePackage {
|
||||
pname = "ppx_assert";
|
||||
hash = "03mzgm4smrczp5dg3mpr6zc2v6a54n0r01k4ww820yrr25hcf8ip";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Assert-like extension nodes that raise useful errors on failure";
|
||||
propagatedBuildInputs = [ ppx_cold ppx_compare ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -407,7 +402,7 @@ with self;
|
||||
ppx_base = janePackage {
|
||||
pname = "ppx_base";
|
||||
hash = "1wv3q0qyghm0c5izq03y97lv3czqk116059mg62wx6valn22a000";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta = {
|
||||
description = "Base set of ppx rewriters";
|
||||
mainProgram = "ppx-base";
|
||||
@ -419,7 +414,7 @@ with self;
|
||||
pname = "ppx_bench";
|
||||
version = "0.14.1";
|
||||
hash = "12r7jgqgpb4i4cry3rgyl2nmxcscs5w7mmk06diz7i49r27p96im";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension for writing in-line benchmarks in ocaml code";
|
||||
propagatedBuildInputs = [ ppx_inline_test ];
|
||||
};
|
||||
@ -427,7 +422,7 @@ with self;
|
||||
ppx_bin_prot = janePackage {
|
||||
pname = "ppx_bin_prot";
|
||||
hash = "1qryjxhyz3kn5jz5wm62j59lhjhd1mp7nbsj0np9qnbpapnnr1zg";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of bin_prot readers and writers from types";
|
||||
propagatedBuildInputs = [ bin_prot ppx_here ];
|
||||
doCheck = false; # circular dependency with ppx_jane
|
||||
@ -436,7 +431,7 @@ with self;
|
||||
ppx_cold = janePackage {
|
||||
pname = "ppx_cold";
|
||||
hash = "0ciqs6f9ab73gq4krj14xzzba4ydcxph214m87i1s0xp25hwxr8v";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Expands [@cold] into [@inline never][@specialise never][@local never]";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -444,7 +439,7 @@ with self;
|
||||
ppx_compare = janePackage {
|
||||
pname = "ppx_compare";
|
||||
hash = "11pj76dimx2f7l8m85myzp6yzx9xcg0bqi97s7ayssvkckm57390";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of comparison functions from types";
|
||||
propagatedBuildInputs = [ ppxlib base ];
|
||||
doCheck = false; # test build rule broken
|
||||
@ -454,7 +449,7 @@ with self;
|
||||
pname = "ppx_custom_printf";
|
||||
version = "0.14.1";
|
||||
hash = "0c1m65kn27zvwmfwy7kk46ga76yw2a3ik9jygpy1b6nn6pi026w9";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Printf-style format-strings for user-defined string conversion";
|
||||
propagatedBuildInputs = [ ppx_sexp_conv ];
|
||||
};
|
||||
@ -462,7 +457,7 @@ with self;
|
||||
ppx_enumerate = janePackage {
|
||||
pname = "ppx_enumerate";
|
||||
hash = "1sriid4vh10p80wwvn46v1g16m646qw5r5xzwlymyz5gbvq2zf40";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generate a list containing all values of a finite type";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -471,7 +466,7 @@ with self;
|
||||
pname = "ppx_expect";
|
||||
version = "0.14.1";
|
||||
hash = "0vbbnjrzpyk5p0js21lafr6fcp2wqka89p1876rdf472cmg0l7fv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Cram like framework for OCaml";
|
||||
propagatedBuildInputs = [ ppx_here ppx_inline_test re ];
|
||||
doCheck = false; # circular dependency with ppx_jane
|
||||
@ -481,7 +476,7 @@ with self;
|
||||
pname = "ppx_fields_conv";
|
||||
version = "0.14.2";
|
||||
hash = "1zwirwqry24b48bg7d4yc845hvcirxyymzbw95aaxdcck84d30n8";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of accessor and iteration functions for ocaml records";
|
||||
propagatedBuildInputs = [ fieldslib ppxlib ];
|
||||
};
|
||||
@ -489,7 +484,7 @@ with self;
|
||||
ppx_fixed_literal = janePackage {
|
||||
pname = "ppx_fixed_literal";
|
||||
hash = "0s7rb4dhz4ibhh42a9sfxjj3zbwfyfmaihr92hpdv5j9xqn3n8mi";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Simpler notation for fixed point literals";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -497,7 +492,7 @@ with self;
|
||||
ppx_hash = janePackage {
|
||||
pname = "ppx_hash";
|
||||
hash = "1zf03xdrg4jig7pdcrdpbabyjkdpifb31z2z1bf9wfdawybdhwkq";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that generates hash functions from type expressions and definitions";
|
||||
propagatedBuildInputs = [ ppx_compare ppx_sexp_conv ];
|
||||
};
|
||||
@ -505,7 +500,7 @@ with self;
|
||||
ppx_here = janePackage {
|
||||
pname = "ppx_here";
|
||||
hash = "09zcyigaalqccs9s0h7n0535clgfmqb9s4p1jbgcqji9zj8w426s";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Expands [%here] into its location";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
doCheck = false; # test build rules broken
|
||||
@ -515,7 +510,7 @@ with self;
|
||||
pname = "ppx_inline_test";
|
||||
version = "0.14.1";
|
||||
hash = "1ajdna1m9l1l3nfigyy33zkfa3yarfr6s086jdw2pcfwlq1fhhl4";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension for writing in-line tests in ocaml code";
|
||||
propagatedBuildInputs = [ ppxlib time_now ];
|
||||
doCheck = false; # test build rules broken
|
||||
@ -524,7 +519,7 @@ with self;
|
||||
ppx_jane = janePackage {
|
||||
pname = "ppx_jane";
|
||||
hash = "1kk238fvrcylymwm7xwc7llbyspmx1y662ypq00vy70g112rir7j";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta = {
|
||||
description = "Standard Jane Street ppx rewriters";
|
||||
mainProgram = "ppx-jane";
|
||||
@ -536,7 +531,7 @@ with self;
|
||||
pname = "ppx_js_style";
|
||||
version = "0.14.1";
|
||||
hash = "16ax6ww9h36xyn9acbm8zxv0ajs344sm37lgj2zd2bvgsqv24kxj";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Code style checker for Jane Street Packages";
|
||||
propagatedBuildInputs = [ octavius ppxlib ];
|
||||
};
|
||||
@ -544,7 +539,7 @@ with self;
|
||||
ppx_let = janePackage {
|
||||
pname = "ppx_let";
|
||||
hash = "1jq3g88xv9g6y9im67hiig3cfn5anwwnq09mp7yn7a86ha5r9w3i";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Monadic let-bindings";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -552,7 +547,7 @@ with self;
|
||||
ppx_log = janePackage {
|
||||
pname = "ppx_log";
|
||||
hash = "10hnr5lpww3fw0bnidzngalbgy0j1wvz1g5ki9c9h558pnpvsazr";
|
||||
minimumOCamlVersion = "4.08.0";
|
||||
minimalOCamlVersion = "4.08.0";
|
||||
meta.description = "Ppx_sexp_message-like extension nodes for lazily rendering log messages";
|
||||
propagatedBuildInputs = [ async_unix ppx_jane sexplib ];
|
||||
};
|
||||
@ -560,7 +555,7 @@ with self;
|
||||
ppx_module_timer = janePackage {
|
||||
pname = "ppx_module_timer";
|
||||
hash = "163q1rpblwv82fxwyf0p4j9zpsj0jzvkfmzb03r0l49gqhn89mp6";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Ppx rewriter that records top-level module startup times";
|
||||
propagatedBuildInputs = [ time_now ];
|
||||
};
|
||||
@ -569,7 +564,7 @@ with self;
|
||||
pname = "ppx_optcomp";
|
||||
version = "0.14.3";
|
||||
hash = "1iflgfzs23asw3k6098v84al5zqx59rx2qjw0mhvk56avlx71pkw";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Optional compilation for OCaml";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -577,7 +572,7 @@ with self;
|
||||
ppx_optional = janePackage {
|
||||
pname = "ppx_optional";
|
||||
hash = "1d7rsdqiccxp2w4ykb9klarddm2qrrym3brbnhzx2hm78iyj3hzv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Pattern matching on flat options";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -585,7 +580,7 @@ with self;
|
||||
ppx_pattern_bind = janePackage {
|
||||
pname = "ppx_pattern_bind";
|
||||
hash = "0yxkwnn30nxgrspi191zma95bgrh134aqh2bnpj3wg0245ki55zv";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "A ppx for writing fast incremental bind nodes in a pattern match";
|
||||
propagatedBuildInputs = [ ppx_let ];
|
||||
};
|
||||
@ -593,7 +588,7 @@ with self;
|
||||
ppx_pipebang = janePackage {
|
||||
pname = "ppx_pipebang";
|
||||
hash = "0450b3p2rpnnn5yyvbkcd3c33jr2z0dp8blwxddaj2lv7nzl5dzf";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that inlines reverse application operators `|>` and `|!`";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -613,7 +608,7 @@ with self;
|
||||
ppx_sexp_conv = janePackage {
|
||||
pname = "ppx_sexp_conv";
|
||||
version = "0.14.3";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "0dbri9d00ydi0dw1cavswnqdmhjaaz80vap29ns2lr6mhhlvyjmj";
|
||||
meta.description = "[@@deriving] plugin to generate S-expression conversion functions";
|
||||
propagatedBuildInputs = [ (ppxlib.override { version = "0.24.0"; }) sexplib0 base ];
|
||||
@ -623,7 +618,7 @@ with self;
|
||||
pname = "ppx_sexp_message";
|
||||
version = "0.14.1";
|
||||
hash = "1lvsr0d68kakih1ll33hy6dxbjkly6lmky4q6z0h0hrcbd6z48k4";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter for easy construction of s-expressions";
|
||||
propagatedBuildInputs = [ ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -631,7 +626,7 @@ with self;
|
||||
ppx_sexp_value = janePackage {
|
||||
pname = "ppx_sexp_value";
|
||||
hash = "1d1c92pyypqkd9473d59j0sfppxvcxggbc62w8bkqnbxrdmvirn9";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that simplifies building s-expressions from ocaml values";
|
||||
propagatedBuildInputs = [ ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -640,7 +635,7 @@ with self;
|
||||
pname = "ppx_stable";
|
||||
version = "0.14.1";
|
||||
hash = "1sp1kn23qr0pfypa4ilvhqq5y11y13xpfygfl582ra9kik5xqfa1";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Stable types conversions generator";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -648,7 +643,7 @@ with self;
|
||||
ppx_string = janePackage {
|
||||
pname = "ppx_string";
|
||||
version = "0.14.1";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "0a8khmg0y32kyn3q6idwgh0d6d1s6ms1w75gj3dzng0v7y4h6jx4";
|
||||
meta.description = "Ppx extension for string interpolation";
|
||||
propagatedBuildInputs = [ ppx_base ppxlib stdio ];
|
||||
@ -657,7 +652,7 @@ with self;
|
||||
ppx_typerep_conv = janePackage {
|
||||
pname = "ppx_typerep_conv";
|
||||
version = "0.14.2";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "0yk9vkpnwr8labgfncqdi4rfkj88d8mb3cr8m4gdqpi3f2r27hf0";
|
||||
meta.description = "Generation of runtime types from type declarations";
|
||||
propagatedBuildInputs = [ ppxlib typerep ];
|
||||
@ -666,7 +661,7 @@ with self;
|
||||
ppx_variants_conv = janePackage {
|
||||
pname = "ppx_variants_conv";
|
||||
version = "0.14.2";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "1p11fiz4m160hs0xzg4g9rxchp053sz3s3d1lyciqixad1xi47a4";
|
||||
meta.description = "Generation of accessor and iteration functions for ocaml variant types";
|
||||
propagatedBuildInputs = [ variantslib ppxlib ];
|
||||
@ -746,7 +741,7 @@ with self;
|
||||
sexp_pretty = janePackage {
|
||||
pname = "sexp_pretty";
|
||||
hash = "0dax0wm511zgvr7p6kcd5gygi58118by7hsv7hymy8ldfcky5cwd";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "S-expression pretty-printer";
|
||||
propagatedBuildInputs = [ ppx_base re sexplib ];
|
||||
};
|
||||
@ -754,7 +749,7 @@ with self;
|
||||
sexp_select = janePackage {
|
||||
pname = "sexp_select";
|
||||
hash = "1lchhfqw4afw38fnarwylqc2qp7k6xwx3j7m9gy8ygjgd0vgd729";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ base ppx_jane ];
|
||||
meta.description = "A library to use CSS-style selectors to traverse sexp trees";
|
||||
};
|
||||
@ -762,14 +757,14 @@ with self;
|
||||
sexplib0 = janePackage {
|
||||
pname = "sexplib0";
|
||||
hash = "06sb3zqhb3dwqsmn15d769hfgqwqhxnm52iqim9l767gvlwpmibb";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Library containing the definition of S-expressions and some base converters";
|
||||
};
|
||||
|
||||
sexplib = janePackage {
|
||||
pname = "sexplib";
|
||||
hash = "03c3j1ihx4pjbb0x3arrcif3wvp3iva2ivnywhiak4mbbslgsnzr";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Library for serializing OCaml values to and from S-expressions";
|
||||
propagatedBuildInputs = [ num parsexp ];
|
||||
};
|
||||
@ -786,7 +781,7 @@ with self;
|
||||
shexp = janePackage {
|
||||
pname = "shexp";
|
||||
hash = "1h6hsnbg6bk32f8iv6kd6im4mv2pjsjpd1mjsfx80p1n9273xack";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ posixat spawn ];
|
||||
meta.description = "Process library and s-expression based shell";
|
||||
};
|
||||
@ -794,7 +789,7 @@ with self;
|
||||
spawn = janePackage {
|
||||
pname = "spawn";
|
||||
version = "0.13.0";
|
||||
minimumOCamlVersion = "4.02.3";
|
||||
minimalOCamlVersion = "4.02.3";
|
||||
hash = "1w003k1kw1lmyiqlk58gkxx8rac7dchiqlz6ah7aj7bh49b36ppf";
|
||||
meta.description = "Spawning sub-processes";
|
||||
buildInputs = [ ppx_expect ];
|
||||
@ -818,7 +813,7 @@ with self;
|
||||
stdio = janePackage {
|
||||
pname = "stdio";
|
||||
hash = "0vv6d8absy4hvjd1babv7avpsdlvjpnd5hq691h39d0h3pvs6l98";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Standard IO library for OCaml";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
@ -833,7 +828,7 @@ with self;
|
||||
time_now = janePackage {
|
||||
pname = "time_now";
|
||||
hash = "1lyq8zdz93hvpi4hpxh88kds30k5ljil8js9clcqyxrldp5n9mw0";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Reports the current time";
|
||||
buildInputs = [ jst-config ppx_optcomp ];
|
||||
propagatedBuildInputs = [ jane-street-headers base ppx_base ];
|
||||
@ -856,7 +851,7 @@ with self;
|
||||
typerep = janePackage {
|
||||
pname = "typerep";
|
||||
hash = "0wc7h853ka3s3lxxgm61ypidl0lzgc9abdkil6f72anl0c417y90";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Typerep is a library for runtime types";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
@ -864,14 +859,13 @@ with self;
|
||||
variantslib = janePackage {
|
||||
pname = "variantslib";
|
||||
hash = "0vy0hpiaawmydh08nqlwjx52pasp74383yi0pshwbdxin99n9mxd";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Part of Jane Street's Core library";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
|
||||
vcaml = janePackage {
|
||||
pname = "vcaml";
|
||||
duneVersion = "3";
|
||||
hash = "0ykwrn8bvwx26ad4wb36jw9xnlwsdpnnx88396laxvcfimrp13qs";
|
||||
meta.description = "OCaml bindings for the Neovim API";
|
||||
propagatedBuildInputs = [ angstrom-async async_extra faraday ];
|
||||
@ -879,7 +873,6 @@ with self;
|
||||
|
||||
virtual_dom = janePackage {
|
||||
pname = "virtual_dom";
|
||||
duneVersion = "3";
|
||||
hash = "0vcydxx0jhbd5hbriahgp947mc7n3xymyrsfny1c4adk6aaq3c5w";
|
||||
meta.description = "OCaml bindings for the virtual-dom library";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
@ -889,7 +882,7 @@ with self;
|
||||
zarith_stubs_js = janePackage {
|
||||
pname = "zarith_stubs_js";
|
||||
hash = "16p4bn5spkrx31fr4np945v9mwdq55706v3wl19s5fy6x83gvb86";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Javascripts stubs for the Zarith library";
|
||||
doCheck = false; # requires workspace with zarith
|
||||
};
|
||||
|
@ -13,7 +13,7 @@ with self;
|
||||
|
||||
abstract_algebra = janePackage {
|
||||
pname = "abstract_algebra";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
hash = "12imf6ibm7qb8r1fpqnrl20x2z14zl3ri1vzg0z8qby9l8bv2fbd";
|
||||
meta.description = "A small library describing abstract algebra concepts";
|
||||
propagatedBuildInputs = [ base ppx_jane ];
|
||||
@ -21,7 +21,7 @@ with self;
|
||||
|
||||
accessor = janePackage {
|
||||
pname = "accessor";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "17rzf0jpc9s3yrxcnn630jhgsw5mrnrhwbfh62hqxqanascc5rxh";
|
||||
meta.description = "A library that makes it nicer to work with nested functional data structures";
|
||||
propagatedBuildInputs = [ higher_kinded ];
|
||||
@ -29,7 +29,7 @@ with self;
|
||||
|
||||
accessor_async = janePackage {
|
||||
pname = "accessor_async";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "17r6af55ms0i496jsfx0xpdm336c2vhyf49b3s8s1gpz521wrgmc";
|
||||
meta.description = "Accessors for Async types, for use with the Accessor library";
|
||||
propagatedBuildInputs = [ accessor_core async_kernel ];
|
||||
@ -37,14 +37,14 @@ with self;
|
||||
|
||||
accessor_base = janePackage {
|
||||
pname = "accessor_base";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "1qvq005vxf6n1c7swzb4bzcqdh471bfb9gcmdj4m57xg85xznc1n";
|
||||
meta.description = "Accessors for Base types, for use with the Accessor library";
|
||||
propagatedBuildInputs = [ ppx_accessor ];
|
||||
};
|
||||
|
||||
accessor_core = janePackage {
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
pname = "accessor_core";
|
||||
hash = "0zrs5zbyrhfbah73g22l19bw1mmljhyb3l2mrwcxgbjq9pqp0k9v";
|
||||
meta.description = "Accessors for Core types, for use with the Accessor library";
|
||||
@ -89,7 +89,6 @@ with self;
|
||||
|
||||
async_js = janePackage {
|
||||
pname = "async_js";
|
||||
duneVersion = "3";
|
||||
hash = "184j077bz686k5lrqswircnrdqldb316ngpzq7xri1pcsl39sy3q";
|
||||
meta.description = "A small library that provide Async support for JavaScript platforms";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
@ -111,7 +110,6 @@ with self;
|
||||
};
|
||||
|
||||
async_rpc_websocket = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "async_rpc_websocket";
|
||||
hash = "1n93jhkz5r76xcc40c4i4sxcyfz1dbppz8sjfxpwcwjyi6lyhp1p";
|
||||
meta.description = "Library to serve and dispatch Async RPCs over websockets";
|
||||
@ -133,10 +131,9 @@ with self;
|
||||
};
|
||||
|
||||
async_smtp = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "async_smtp";
|
||||
hash = "1m00j7wcb0blipnc1m6by70gd96a1k621b4dgvgffp8as04a461r";
|
||||
minimumOCamlVersion = "4.12";
|
||||
minimalOCamlVersion = "4.12";
|
||||
meta.description = "SMTP client and server";
|
||||
propagatedBuildInputs = [ async_extra async_inotify async_sendfile async_shell async_ssl email_message resource_cache re2_stable sexp_macro ];
|
||||
};
|
||||
@ -162,7 +159,6 @@ with self;
|
||||
};
|
||||
|
||||
async_websocket = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "async_websocket";
|
||||
hash = "16ixqfnx9jp77bvx11dlzsq0pzfpyiif60hl2q06zncyswky9xgb";
|
||||
meta.description = "A library that implements the websocket protocol on top of Async";
|
||||
@ -173,7 +169,7 @@ with self;
|
||||
pname = "base";
|
||||
version = "0.15.1";
|
||||
hash = "sha256-CDKQVF+hAvJTo5QmRvyOfQNrdRgz6m+64q9UzNHlJEA=";
|
||||
minimumOCamlVersion = "4.10";
|
||||
minimalOCamlVersion = "4.10";
|
||||
meta.description = "Full standard library replacement for OCaml";
|
||||
buildInputs = [ dune-configurator ];
|
||||
propagatedBuildInputs = [ sexplib0 ];
|
||||
@ -183,7 +179,7 @@ with self;
|
||||
base_bigstring = janePackage {
|
||||
pname = "base_bigstring";
|
||||
hash = "1hv3hw2fwqmkrxms1g6rw3c18mmla1z5bva3anx45mnff903iv4q";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
meta.description = "String type based on [Bigarray], for use in I/O and C-bindings";
|
||||
propagatedBuildInputs = [ int_repr ppx_jane ];
|
||||
};
|
||||
@ -191,7 +187,7 @@ with self;
|
||||
base_quickcheck = janePackage {
|
||||
pname = "base_quickcheck";
|
||||
hash = "0q73kfr67cz5wp4qn4rq3lpa922hqmvwdiinnans0js65fvlgqsi";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Randomized testing framework, designed for compatibility with Base";
|
||||
propagatedBuildInputs = [ ppx_base ppx_fields_conv ppx_let ppx_sexp_value splittable_random ];
|
||||
};
|
||||
@ -206,14 +202,13 @@ with self;
|
||||
bin_prot = janePackage {
|
||||
pname = "bin_prot";
|
||||
hash = "1qfqglscc25wwnjx7byqmjcnjww1msnr8940gyg8h93wdq43fjnh";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A binary protocol generator";
|
||||
propagatedBuildInputs = [ ppx_compare ppx_custom_printf ppx_fields_conv ppx_optcomp ppx_variants_conv ];
|
||||
};
|
||||
|
||||
bonsai = janePackage {
|
||||
pname = "bonsai";
|
||||
duneVersion = "3";
|
||||
hash = "150zx2g1dmhyrxwqq8j7f2m3hjpmk5bk182ihx2gdbarhw1ainpm";
|
||||
meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
|
||||
buildInputs = [ ppx_pattern_bind ];
|
||||
@ -240,14 +235,13 @@ with self;
|
||||
pname = "cinaps";
|
||||
version = "0.15.1";
|
||||
hash = "0g856cxmxg4vicwslhqldplkpwi158s2d62vwzv26xg5m6wjn9rg";
|
||||
minimumOCamlVersion = "4.04";
|
||||
minimalOCamlVersion = "4.04";
|
||||
meta.description = "Trivial metaprogramming tool";
|
||||
propagatedBuildInputs = [ re ];
|
||||
doCheck = false; # fails because ppx_base doesn't include ppx_js_style
|
||||
};
|
||||
|
||||
cohttp_async_websocket = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "cohttp_async_websocket";
|
||||
hash = "0d0smavnxpnwrmhlcf3b5a3cm3n9kz1y8fh6l28xv6zrn4sc7ik8";
|
||||
meta.description = "Websocket library for use with cohttp and async";
|
||||
@ -255,7 +249,6 @@ with self;
|
||||
};
|
||||
|
||||
cohttp_static_handler = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "cohttp_static_handler";
|
||||
version = "0.15.0";
|
||||
hash = "sha256-ENaH8ChvjeMc9WeNIhkeNBB7YK9vB4lw95o6FFZI1ys=";
|
||||
@ -331,7 +324,6 @@ with self;
|
||||
};
|
||||
|
||||
email_message = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "email_message";
|
||||
hash = "00h66l2g5rjaay0hbyqy4v9i866g779miriwv20h9k4mliqdq7in";
|
||||
meta.description = "E-mail message parser";
|
||||
@ -355,14 +347,14 @@ with self;
|
||||
fieldslib = janePackage {
|
||||
pname = "fieldslib";
|
||||
hash = "0xwf9mdxlyr3f0vv5y82cyw2bsckwl8rwf6jm6bai1gqpgxjq756";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
|
||||
file_path = janePackage {
|
||||
pname = "file_path";
|
||||
minimumOCamlVersion = "4.11";
|
||||
minimalOCamlVersion = "4.11";
|
||||
hash = "0vjvxviryywwwfdazcijwhpajp2d4mavlki7lj4qaafjrw62x14k";
|
||||
meta.description =
|
||||
"A library for typed manipulation of UNIX-style file paths";
|
||||
@ -386,7 +378,7 @@ with self;
|
||||
|
||||
fzf = janePackage {
|
||||
pname = "fzf";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
hash = "1ha0i6dx5bgwzbdi4rn98wjwi2imv5p2i7qs7hy0c6cmg88xbdry";
|
||||
meta.description = "A library for running the fzf command line tool";
|
||||
propagatedBuildInputs = [ async core_kernel ppx_jane ];
|
||||
@ -397,7 +389,7 @@ with self;
|
||||
|
||||
higher_kinded = janePackage {
|
||||
pname = "higher_kinded";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "0rafxxajqswi070h8sinhjna0swh1hc6d7i3q7y099yj3wlr2y1l";
|
||||
meta.description = "A library with an encoding of higher kinded types in OCaml";
|
||||
propagatedBuildInputs = [ base ppx_jane ];
|
||||
@ -405,7 +397,6 @@ with self;
|
||||
|
||||
incr_dom = janePackage {
|
||||
pname = "incr_dom";
|
||||
duneVersion = "3";
|
||||
hash = "1sija9w2im8vdp61h387w0mww9hh7jgkgsjcccps4lbv936ac7c1";
|
||||
meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
@ -445,13 +436,12 @@ with self;
|
||||
jane-street-headers = janePackage {
|
||||
pname = "jane-street-headers";
|
||||
hash = "1lzk3w66x4429n2j75lwm55xafc46mywgdrbh9nc9jwqwgzf0wwx";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Jane Street C header files";
|
||||
};
|
||||
|
||||
jsonaf = janePackage {
|
||||
pname = "jsonaf";
|
||||
duneVersion = "3";
|
||||
hash = "1j9rn8vsvfpgmdpmdqb5qhvss5171j8n3ii1bcgnavqinchbvqa6";
|
||||
meta.description = "A library for parsing, manipulating, and serializing data structured as JSON";
|
||||
propagatedBuildInputs = [ base ppx_jane angstrom faraday ];
|
||||
@ -474,7 +464,7 @@ with self;
|
||||
ocaml-compiler-libs = janePackage {
|
||||
pname = "ocaml-compiler-libs";
|
||||
version = "0.12.4";
|
||||
minimumOCamlVersion = "4.04.1";
|
||||
minimalOCamlVersion = "4.04.1";
|
||||
hash = "00if2f7j9d8igdkj4rck3p74y17j6b233l91mq02drzrxj199qjv";
|
||||
meta.description = "OCaml compiler libraries repackaged";
|
||||
};
|
||||
@ -488,7 +478,7 @@ with self;
|
||||
|
||||
ocaml_intrinsics = janePackage {
|
||||
pname = "ocaml_intrinsics";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
version = "0.15.2";
|
||||
hash = "sha256-f5zqrKaokj1aEvbu7lOuK0RoWSklFr6QFpV+oWbIX9U=";
|
||||
meta.description = "Intrinsics";
|
||||
@ -499,7 +489,7 @@ with self;
|
||||
parsexp = janePackage {
|
||||
pname = "parsexp";
|
||||
hash = "1grzpxi39318vcqhwf723hqh11k68irh59zb3dyg9lw8wjn7752a";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "S-expression parsing library";
|
||||
propagatedBuildInputs = [ base sexplib0 ];
|
||||
};
|
||||
@ -527,14 +517,14 @@ with self;
|
||||
posixat = janePackage {
|
||||
pname = "posixat";
|
||||
hash = "1xgycwa0janrfn9psb7xrm0820blr82mqf1lvjy9ipqalj7v9w1f";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ ppx_optcomp ppx_sexp_conv ];
|
||||
meta.description = "Binding to the posix *at functions";
|
||||
};
|
||||
|
||||
ppx_accessor = janePackage {
|
||||
pname = "ppx_accessor";
|
||||
minimumOCamlVersion = "4.09";
|
||||
minimalOCamlVersion = "4.09";
|
||||
hash = "0qv51if1nk0zff2v6q946h8ac7bpd5xa4ivyixl9g4h2mk29w4qb";
|
||||
meta.description = "[@@deriving] plugin to generate accessors for use with the Accessor libraries";
|
||||
propagatedBuildInputs = [ accessor ];
|
||||
@ -543,7 +533,7 @@ with self;
|
||||
ppx_assert = janePackage {
|
||||
pname = "ppx_assert";
|
||||
hash = "0dic250q3flrjs3i70a2qqqnhqqj75ddlixpy7hdfghjw32azw90";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Assert-like extension nodes that raise useful errors on failure";
|
||||
propagatedBuildInputs = [ ppx_cold ppx_compare ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -551,7 +541,7 @@ with self;
|
||||
ppx_base = janePackage {
|
||||
pname = "ppx_base";
|
||||
hash = "13rfmy2fxvwi7z5l1mai474ri5anqjm8q4hs7dblplsjjd9m5ld1";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Base set of ppx rewriters";
|
||||
propagatedBuildInputs = [ ppx_cold ppx_enumerate ppx_hash ];
|
||||
};
|
||||
@ -559,7 +549,7 @@ with self;
|
||||
ppx_bench = janePackage {
|
||||
pname = "ppx_bench";
|
||||
hash = "0bc0gbm922417wqisafxh35jslcp7xy1s0h0a1q32rhx0ivxx3g6";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension for writing in-line benchmarks in ocaml code";
|
||||
propagatedBuildInputs = [ ppx_inline_test ];
|
||||
};
|
||||
@ -567,7 +557,7 @@ with self;
|
||||
ppx_bin_prot = janePackage {
|
||||
pname = "ppx_bin_prot";
|
||||
hash = "1280wsls061fmvmdysjqn3lv4mnkyg400jnjf4jyfr14s33h1ad5";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of bin_prot readers and writers from types";
|
||||
propagatedBuildInputs = [ bin_prot ppx_here ];
|
||||
doCheck = false; # circular dependency with ppx_jane
|
||||
@ -576,7 +566,7 @@ with self;
|
||||
ppx_cold = janePackage {
|
||||
pname = "ppx_cold";
|
||||
hash = "0x7xgpvy0l28k971xy08ibhr4w9nh8d9zvxc6jfxxx4fbfcv5gca";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Expands [@cold] into [@inline never][@specialise never][@local never]";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -584,7 +574,7 @@ with self;
|
||||
ppx_compare = janePackage {
|
||||
pname = "ppx_compare";
|
||||
hash = "1wjwqkr71p61vjidbr80l93y4kkad7xsfyp04w8qfqrj7h5nm625";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of comparison functions from types";
|
||||
propagatedBuildInputs = [ ppxlib base ];
|
||||
};
|
||||
@ -592,14 +582,13 @@ with self;
|
||||
ppx_custom_printf = janePackage {
|
||||
pname = "ppx_custom_printf";
|
||||
hash = "1k8nmq6kwqz2wpkm9ymq749dz1vd8lxrjc711knp1wyz5935hnsv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Printf-style format-strings for user-defined string conversion";
|
||||
propagatedBuildInputs = [ ppx_sexp_conv ];
|
||||
};
|
||||
|
||||
ppx_css = janePackage {
|
||||
pname = "ppx_css";
|
||||
duneVersion = "3";
|
||||
hash = "09dpmj3f3m3z1ji9hq775iqr3cfmv5gh7q9zlblizj4wx4y0ibyi";
|
||||
meta.description = "A ppx that takes in css strings and produces a module for accessing the unique names defined within";
|
||||
propagatedBuildInputs = [ core_kernel ppxlib js_of_ocaml js_of_ocaml-ppx sedlex ];
|
||||
@ -608,7 +597,7 @@ with self;
|
||||
ppx_disable_unused_warnings = janePackage {
|
||||
pname = "ppx_disable_unused_warnings";
|
||||
hash = "0sb5i4v7p9df2bxk66rjs30k9fqdrwsq1jgykjv6wyrx2d9bv955";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Expands [@disable_unused_warnings] into [@warning \"-20-26-32-33-34-35-36-37-38-39-60-66-67\"]";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -616,7 +605,7 @@ with self;
|
||||
ppx_enumerate = janePackage {
|
||||
pname = "ppx_enumerate";
|
||||
hash = "1i0f6jv5cappw3idd70wpg76d7x6mvxapa89kri1bwz47hhg4pkz";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generate a list containing all values of a finite type";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -625,7 +614,7 @@ with self;
|
||||
pname = "ppx_expect";
|
||||
version = "0.15.1";
|
||||
hash = "sha256-qlOipzTTdN9yQ35sItKmWpCv74kbuJLDg4IHNVTKvow=";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Cram like framework for OCaml";
|
||||
propagatedBuildInputs = [ ppx_here ppx_inline_test re ];
|
||||
doCheck = false; # test build rules broken
|
||||
@ -634,7 +623,7 @@ with self;
|
||||
ppx_fields_conv = janePackage {
|
||||
pname = "ppx_fields_conv";
|
||||
hash = "094wsnw7fcwgl9xg6vkjb0wbgpn9scsp847yhdd184sz9v1amz14";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Generation of accessor and iteration functions for ocaml records";
|
||||
propagatedBuildInputs = [ fieldslib ppxlib ];
|
||||
};
|
||||
@ -642,7 +631,7 @@ with self;
|
||||
ppx_fixed_literal = janePackage {
|
||||
pname = "ppx_fixed_literal";
|
||||
hash = "10siwcqrqa4gh0mg6fkaby0jjskc01r81pcblc67h3vmbjjh08j9";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Simpler notation for fixed point literals";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -650,7 +639,7 @@ with self;
|
||||
ppx_hash = janePackage {
|
||||
pname = "ppx_hash";
|
||||
hash = "15agkwavadllzxdv4syjna02083nfnap8qs4yqf5s0adjw73fzyg";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that generates hash functions from type expressions and definitions";
|
||||
propagatedBuildInputs = [ ppx_compare ppx_sexp_conv ];
|
||||
};
|
||||
@ -658,7 +647,7 @@ with self;
|
||||
ppx_here = janePackage {
|
||||
pname = "ppx_here";
|
||||
hash = "0jv81k8x18q8rxdyfwavrvx8yq9k5m3abpmgdg6zipx2ajcjzvag";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Expands [%here] into its location";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
doCheck = false; # test build rules broken
|
||||
@ -667,7 +656,7 @@ with self;
|
||||
ppx_ignore_instrumentation = janePackage {
|
||||
pname = "ppx_ignore_instrumentation";
|
||||
hash = "16fgig88g3jr0m3i636fr52h29h1yzhi8nhnl4029zn808kcdyj2";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
meta.description = "Ignore Jane Street specific instrumentation extensions";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -675,7 +664,7 @@ with self;
|
||||
ppx_inline_test = janePackage {
|
||||
pname = "ppx_inline_test";
|
||||
hash = "1a0gaj9p6gbn5j7c258mnzr7yjlq0hqi3aqqgyj1g2dbk1sxdbjz";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Syntax extension for writing in-line tests in ocaml code";
|
||||
propagatedBuildInputs = [ ppxlib time_now ];
|
||||
doCheck = false; # test build rules broken
|
||||
@ -684,17 +673,16 @@ with self;
|
||||
ppx_jane = janePackage {
|
||||
pname = "ppx_jane";
|
||||
hash = "1p6847gdfnnj6qpa4yh57s6wwpsl7rfgy0q7993chz24h9mhz5lk";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Standard Jane Street ppx rewriters";
|
||||
propagatedBuildInputs = [ base_quickcheck ppx_bin_prot ppx_disable_unused_warnings ppx_expect ppx_fixed_literal ppx_ignore_instrumentation ppx_log ppx_module_timer ppx_optcomp ppx_optional ppx_pipebang ppx_stable ppx_string ppx_typerep_conv ppx_variants_conv ];
|
||||
};
|
||||
|
||||
ppx_jsonaf_conv = janePackage {
|
||||
pname = "ppx_jsonaf_conv";
|
||||
duneVersion = "3";
|
||||
version = "0.15.1";
|
||||
hash = "0wprs7qmscklyskj4famhaqqisi6jypy414aqba14qdyi43w0cv3";
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
meta.description =
|
||||
"[@@deriving] plugin to generate Jsonaf conversion functions";
|
||||
propagatedBuildInputs = [ base jsonaf ppx_jane ppxlib ];
|
||||
@ -703,7 +691,7 @@ with self;
|
||||
ppx_js_style = janePackage {
|
||||
pname = "ppx_js_style";
|
||||
hash = "0q2p9pvmlncgv0hprph95xiv7s6q44ynvp4yl4dckf1qx68rb3ba";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Code style checker for Jane Street Packages";
|
||||
propagatedBuildInputs = [ octavius ppxlib ];
|
||||
};
|
||||
@ -711,7 +699,7 @@ with self;
|
||||
ppx_let = janePackage {
|
||||
pname = "ppx_let";
|
||||
hash = "04v3fq0vnvvavxbc7hfsrg8732pwxbyw8pjl3xfplqdqci6fj15n";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Monadic let-bindings";
|
||||
propagatedBuildInputs = [ ppxlib ppx_here ];
|
||||
};
|
||||
@ -719,7 +707,7 @@ with self;
|
||||
ppx_log = janePackage {
|
||||
pname = "ppx_log";
|
||||
hash = "08i9gz3f4w3bmlrfdw7ja9awsfkhhldz03bnnc4hijfmn8sawzi0";
|
||||
minimumOCamlVersion = "4.08.0";
|
||||
minimalOCamlVersion = "4.08.0";
|
||||
meta.description = "Ppx_sexp_message-like extension nodes for lazily rendering log messages";
|
||||
propagatedBuildInputs = [ base ppx_here ppx_sexp_conv ppx_sexp_message sexplib ];
|
||||
};
|
||||
@ -727,7 +715,7 @@ with self;
|
||||
ppx_module_timer = janePackage {
|
||||
pname = "ppx_module_timer";
|
||||
hash = "0lzi5hxi10p89ddqbrc667267f888kqslal76gfhmszyk60n20av";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Ppx rewriter that records top-level module startup times";
|
||||
propagatedBuildInputs = [ time_now ];
|
||||
};
|
||||
@ -735,7 +723,7 @@ with self;
|
||||
ppx_optcomp = janePackage {
|
||||
pname = "ppx_optcomp";
|
||||
hash = "0ypivfipi8fcr9pqyvl2ajpcivmr1irdwwv248i4x6mggpc2pl0b";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Optional compilation for OCaml";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -743,7 +731,7 @@ with self;
|
||||
ppx_optional = janePackage {
|
||||
pname = "ppx_optional";
|
||||
hash = "0amxwxhkyzamgnxx400qhvxzqr3m4sazhhkc516lm007pynv7xq2";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Pattern matching on flat options";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -751,7 +739,7 @@ with self;
|
||||
ppx_pattern_bind = janePackage {
|
||||
pname = "ppx_pattern_bind";
|
||||
hash = "01nfdk9yvk92r7sjl4ngxfsx8fyqh2dsjxz0i299nszv9jc4rn4f";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "A ppx for writing fast incremental bind nodes in a pattern match";
|
||||
propagatedBuildInputs = [ ppx_let ];
|
||||
};
|
||||
@ -759,7 +747,7 @@ with self;
|
||||
ppx_pipebang = janePackage {
|
||||
pname = "ppx_pipebang";
|
||||
hash = "0sm5dghyalhws3hy1cc2ih36az1k4q02hcgj6l26gwyma3y4irvq";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that inlines reverse application operators `|>` and `|!`";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
@ -783,7 +771,7 @@ with self;
|
||||
ppx_sexp_message = janePackage {
|
||||
pname = "ppx_sexp_message";
|
||||
hash = "0a7hx50bkkc5n5msc3zzc4ixnp7674x3mallknb9j31jnd8l90nj";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter for easy construction of s-expressions";
|
||||
propagatedBuildInputs = [ ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -791,7 +779,7 @@ with self;
|
||||
ppx_sexp_value = janePackage {
|
||||
pname = "ppx_sexp_value";
|
||||
hash = "0kz83j9v6yz3v8c6vr9ilhkcci4hhjd6i6r6afnx72jh6i7d3hnv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "A ppx rewriter that simplifies building s-expressions from ocaml values";
|
||||
propagatedBuildInputs = [ ppx_here ppx_sexp_conv ];
|
||||
};
|
||||
@ -799,14 +787,14 @@ with self;
|
||||
ppx_stable = janePackage {
|
||||
pname = "ppx_stable";
|
||||
hash = "1as0v0x8c9ilyhngax55lvwyyi4a2wshyan668v0f2s1608cwb1l";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Stable types conversions generator";
|
||||
propagatedBuildInputs = [ ppxlib ];
|
||||
};
|
||||
|
||||
ppx_string = janePackage {
|
||||
pname = "ppx_string";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "1dp5frk6cig5m3m5rrh2alw63snyf845x7zlkkaljip02pqcbw1s";
|
||||
meta.description = "Ppx extension for string interpolation";
|
||||
propagatedBuildInputs = [ ppx_base ppxlib stdio ];
|
||||
@ -821,7 +809,7 @@ with self;
|
||||
|
||||
ppx_typerep_conv = janePackage {
|
||||
pname = "ppx_typerep_conv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "1q1lzykpm83ra4l5jh4rfddhd3c96kx4s4rvx0w4b51z1qk56zam";
|
||||
meta.description = "Generation of runtime types from type declarations";
|
||||
propagatedBuildInputs = [ ppxlib typerep ];
|
||||
@ -829,7 +817,7 @@ with self;
|
||||
|
||||
ppx_variants_conv = janePackage {
|
||||
pname = "ppx_variants_conv";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
hash = "1dh0bw9dn246k00pymf59yjkl6x6bxd76lkk9b5xpq2692wwlc3s";
|
||||
meta.description = "Generation of accessor and iteration functions for ocaml variant types";
|
||||
propagatedBuildInputs = [ variantslib ppxlib ];
|
||||
@ -900,7 +888,6 @@ with self;
|
||||
|
||||
sexp = janePackage {
|
||||
pname = "sexp";
|
||||
duneVersion = "3";
|
||||
hash = "00xlsymm1mpgs8cqkb6c36vh5hfw0saghvwiqh7jry65qc5nvv9z";
|
||||
propagatedBuildInputs = [
|
||||
async
|
||||
@ -934,7 +921,7 @@ with self;
|
||||
pname = "sexp_pretty";
|
||||
version = "0.15.1";
|
||||
hash = "sha256-UJEO2P4C7ZaD110MEfkG4FXfGDVAAW2TAK489faV6SM=";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
meta.description = "S-expression pretty-printer";
|
||||
propagatedBuildInputs = [ ppx_base re sexplib ];
|
||||
};
|
||||
@ -942,7 +929,7 @@ with self;
|
||||
sexp_select = janePackage {
|
||||
pname = "sexp_select";
|
||||
hash = "0mmvga9w3gbb2gd1h4l8f1c3l2lrpn1zld2a8xgqyfqfff3vg31p";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ base ppx_jane ];
|
||||
meta.description = "A library to use CSS-style selectors to traverse sexp trees";
|
||||
};
|
||||
@ -951,7 +938,7 @@ with self;
|
||||
pname = "sexplib0";
|
||||
version = "0.15.1";
|
||||
hash = "sha256-6K0yrCbVFcUalN4cQuDI1TvWvNDjfXXRDhJKUskbqRY=";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Library containing the definition of S-expressions and some base converters";
|
||||
};
|
||||
|
||||
@ -959,7 +946,7 @@ with self;
|
||||
pname = "sexplib";
|
||||
version = "0.15.1";
|
||||
hash = "sha256-LkGNnp717LMHeWe1Ka6qUZcpw8fKSsd5MusaLgFjm70=";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Library for serializing OCaml values to and from S-expressions";
|
||||
propagatedBuildInputs = [ num parsexp ];
|
||||
};
|
||||
@ -976,14 +963,14 @@ with self;
|
||||
shexp = janePackage {
|
||||
pname = "shexp";
|
||||
hash = "05iswnhi92f4yvrh76j3254bvls6fbrdb56mv6vc6mi5f8z4l79i";
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
propagatedBuildInputs = [ posixat spawn ];
|
||||
meta.description = "Process library and s-expression based shell";
|
||||
};
|
||||
|
||||
spawn = janePackage {
|
||||
pname = "spawn";
|
||||
minimumOCamlVersion = "4.02.3";
|
||||
minimalOCamlVersion = "4.02.3";
|
||||
hash = "1fjr91psas5zmk1hxvxh0dchhn0pkyzlr4gg232f5g9vdgissi0p";
|
||||
meta.description = "Spawning sub-processes";
|
||||
buildInputs = [ ppx_expect ];
|
||||
@ -1006,7 +993,7 @@ with self;
|
||||
stdio = janePackage {
|
||||
pname = "stdio";
|
||||
hash = "0g00b00kpjcadikq2asng35w7kvd24q9ldkiylwmn3gv3lrbipa8";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Standard IO library for OCaml";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
@ -1028,7 +1015,7 @@ with self;
|
||||
time_now = janePackage {
|
||||
pname = "time_now";
|
||||
hash = "1pa0hyh470j9jylii4983qagb6hq2dz6s0q2fnrcph9qbw83bc0c";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Reports the current time";
|
||||
buildInputs = [ jst-config ppx_optcomp ];
|
||||
propagatedBuildInputs = [ jane-street-headers base ppx_base ];
|
||||
@ -1051,7 +1038,7 @@ with self;
|
||||
typerep = janePackage {
|
||||
pname = "typerep";
|
||||
hash = "1qxfi01qim0hrgd6d0bgvpxg36i99mmm8cw4wqpr9kxyqvgzv26z";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Typerep is a library for runtime types";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
@ -1059,13 +1046,12 @@ with self;
|
||||
variantslib = janePackage {
|
||||
pname = "variantslib";
|
||||
hash = "033ns8ph6bd8g5cdfryjfcnrnzkdshppjyw5kl7cvszjfrz33ij7";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Part of Jane Street's Core library";
|
||||
propagatedBuildInputs = [ base ];
|
||||
};
|
||||
|
||||
vcaml = janePackage {
|
||||
duneVersion = "3";
|
||||
pname = "vcaml";
|
||||
hash = "12fd29x9dgf4f14xrx7z4y1bm1wbfynrs3jismjbiqnckfpbqrib";
|
||||
meta.description = "OCaml bindings for the Neovim API";
|
||||
@ -1077,14 +1063,13 @@ with self;
|
||||
hash = "15xia9v4ighzm0gv3vbqk9nvg47cvzqmfnl2zr67yxv4b98kyzv3";
|
||||
meta.description = "OCaml bindings for the virtual-dom library";
|
||||
buildInputs = [ js_of_ocaml-ppx ];
|
||||
duneVersion = "3";
|
||||
propagatedBuildInputs = [ core_kernel gen_js_api js_of_ocaml lambdasoup tyxml ];
|
||||
};
|
||||
|
||||
zarith_stubs_js = janePackage {
|
||||
pname = "zarith_stubs_js";
|
||||
hash = "119xgr3kla9q1bvs4a5z2ivbmsrz4db3a9z0gf77ryqg4i22ywvl";
|
||||
minimumOCamlVersion = "4.04.2";
|
||||
minimalOCamlVersion = "4.04.2";
|
||||
meta.description = "Javascripts stubs for the Zarith library";
|
||||
};
|
||||
|
||||
|
@ -3,16 +3,16 @@
|
||||
{ pname
|
||||
, version ? defaultVersion
|
||||
, hash
|
||||
, minimumOCamlVersion ? "4.08"
|
||||
, minimalOCamlVersion ? "4.08"
|
||||
, doCheck ? true
|
||||
, buildInputs ? []
|
||||
, ...}@args:
|
||||
|
||||
buildDunePackage (args // {
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
inherit version buildInputs;
|
||||
|
||||
inherit minimumOCamlVersion;
|
||||
inherit minimalOCamlVersion;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "janestreet";
|
||||
|
@ -3,16 +3,16 @@
|
||||
{ pname
|
||||
, version ? defaultVersion
|
||||
, hash
|
||||
, minimumOCamlVersion ? "4.11"
|
||||
, minimalOCamlVersion ? "4.11"
|
||||
, doCheck ? true
|
||||
, buildInputs ? []
|
||||
, ...}@args:
|
||||
|
||||
buildDunePackage (args // {
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
inherit version buildInputs;
|
||||
|
||||
inherit minimumOCamlVersion;
|
||||
inherit minimalOCamlVersion;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "janestreet";
|
||||
|
@ -6,9 +6,9 @@ buildDunePackage rec {
|
||||
pname = "jingoo";
|
||||
version = "1.4.4";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
minimumOCamlVersion = "4.04";
|
||||
minimalOCamlVersion = "4.05";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tategakibunko";
|
||||
|
@ -4,7 +4,7 @@ buildDunePackage rec {
|
||||
pname = "lens";
|
||||
version = "1.2.5";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pdonadeo";
|
||||
|
@ -3,7 +3,7 @@
|
||||
buildDunePackage rec {
|
||||
pname = "ocaml-lsp-server";
|
||||
inherit (lsp) version src preBuild;
|
||||
duneVersion = if lib.versionAtLeast version "1.10.0" then "3" else "2";
|
||||
duneVersion = "3";
|
||||
|
||||
buildInputs = lsp.buildInputs ++ [ lsp re ]
|
||||
++ lib.optional (lib.versionAtLeast version "1.9") spawn
|
||||
|
@ -40,7 +40,7 @@ buildDunePackage rec {
|
||||
inherit (params) sha256;
|
||||
};
|
||||
|
||||
duneVersion = if lib.versionAtLeast version "1.10.0" then "3" else "2";
|
||||
duneVersion = "3";
|
||||
minimalOCamlVersion = "4.06";
|
||||
|
||||
buildInputs =
|
||||
|
@ -25,7 +25,7 @@
|
||||
buildDunePackage rec {
|
||||
pname = "lsp";
|
||||
inherit (jsonrpc) version src;
|
||||
duneVersion = if lib.versionAtLeast version "1.10.0" then "3" else "2";
|
||||
duneVersion = "3";
|
||||
minimalOCamlVersion =
|
||||
if lib.versionAtLeast version "1.7.0" then
|
||||
"4.12"
|
||||
|
@ -6,7 +6,7 @@ buildDunePackage rec {
|
||||
pname = "ocaml-monadic";
|
||||
version = "0.5.0";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zepalmer";
|
||||
|
@ -1,11 +1,9 @@
|
||||
{ lib, buildDunePackage, fetchurl, ocaml }:
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (rec {
|
||||
pname = "result";
|
||||
version = "1.5";
|
||||
|
||||
useDune2 = lib.versionAtLeast ocaml.version "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/janestreet/result/releases/download/${version}/result-${version}.tbz";
|
||||
sha256 = "0cpfp35fdwnv3p30a06wd0py3805qxmq3jmcynjc3x2qhlimwfkw";
|
||||
@ -21,4 +19,6 @@ buildDunePackage rec {
|
||||
'';
|
||||
license = lib.licenses.bsd3;
|
||||
};
|
||||
}
|
||||
} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
|
||||
duneVersion = "1";
|
||||
})
|
||||
|
@ -21,8 +21,8 @@ buildDunePackage rec {
|
||||
inherit (source) sha256;
|
||||
};
|
||||
|
||||
minimumOCamlVersion = "4.08";
|
||||
useDune2 = true;
|
||||
minimalOCamlVersion = "4.08";
|
||||
duneVersion = "3";
|
||||
|
||||
propagatedBuildInputs = [ csexp sexplib0 ];
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
buildDunePackage rec {
|
||||
pname = "ocf";
|
||||
version = "0.8.0";
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
minimalOCamlVersion = "4.03";
|
||||
src = fetchFromGitLab {
|
||||
domain = "framagit.org";
|
||||
|
@ -4,7 +4,9 @@ buildDunePackage {
|
||||
pname = "ocf_ppx";
|
||||
minimalOCamlVersion = "4.11";
|
||||
|
||||
inherit (ocf) src version useDune2;
|
||||
inherit (ocf) src version;
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
buildInputs = [ ppxlib ocf ];
|
||||
|
||||
|
@ -4,6 +4,8 @@ buildDunePackage rec {
|
||||
pname = "ocsigen-ppx-rpc";
|
||||
version = "1.0";
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ocsigen";
|
||||
repo = pname;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ lib, fetchFromGitHub, buildDunePackage, ocaml }:
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (rec {
|
||||
pname = "octavius";
|
||||
version = "1.2.2";
|
||||
|
||||
@ -11,8 +11,7 @@ buildDunePackage rec {
|
||||
sha256 = "sha256-/S6WpIo1c5J9uM3xgtAM/elhnsl0XimnIFsKy3ootbA=";
|
||||
};
|
||||
|
||||
minimumOCamlVersion = "4.03";
|
||||
useDune2 = lib.versionAtLeast ocaml.version "4.08";
|
||||
minimalOCamlVersion = "4.03";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
@ -22,4 +21,6 @@ buildDunePackage rec {
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ vbgl ];
|
||||
};
|
||||
}
|
||||
} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
|
||||
duneVersion = "1";
|
||||
})
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "opam-file-format";
|
||||
version = "2.1.4";
|
||||
version = "2.1.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ocaml";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-wnAnvLNOc9FRBdLIFR08OKVaIjSEqJrcCIn4hmtYtjY=";
|
||||
sha256 = "sha256-Ka9pMYB99kM+5X7wf9F13gUrjouZucGevvkSY0TaXGg=";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ buildDunePackage
|
||||
, fetchzip
|
||||
, fetchurl
|
||||
, ppx_expect
|
||||
, lib
|
||||
}:
|
||||
@ -8,12 +8,12 @@ buildDunePackage rec {
|
||||
pname = "pp";
|
||||
version = "1.1.2";
|
||||
|
||||
src = fetchzip {
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-dune/pp/releases/download/${version}/pp-${version}.tbz";
|
||||
sha256 = "1l1im054pxrkj7zk8m6yj4qfdpxkajpjfvy818ggf0j4nxkaihc5";
|
||||
hash = "sha256-5KTpjZaxu3aVD81tpOk4yG2YnfTX5I8C96RFlfWvHVY=";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
checkInputs = [ ppx_expect ];
|
||||
|
@ -15,9 +15,9 @@
|
||||
buildDunePackage rec {
|
||||
pname = "ppx_bap";
|
||||
version = "0.14";
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
minimumOCamlVersion = "4.07";
|
||||
minimalOCamlVersion = "4.07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BinaryAnalysisPlatform";
|
||||
|
@ -1,12 +1,10 @@
|
||||
{ lib, fetchFromGitHub, buildDunePackage, ocaml }:
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (rec {
|
||||
pname = "ppx_derivers";
|
||||
version = "1.2.1";
|
||||
|
||||
useDune2 = lib.versionAtLeast ocaml.version "4.08";
|
||||
|
||||
minimumOCamlVersion = "4.02";
|
||||
minimalOCamlVersion = "4.02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "diml";
|
||||
@ -21,4 +19,6 @@ buildDunePackage rec {
|
||||
maintainers = [ lib.maintainers.vbgl ];
|
||||
inherit (src.meta) homepage;
|
||||
};
|
||||
}
|
||||
} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
|
||||
duneVersion = "1";
|
||||
})
|
||||
|
@ -2,6 +2,7 @@
|
||||
, fetchurl
|
||||
, buildDunePackage
|
||||
, ocaml
|
||||
, findlib
|
||||
, cppo
|
||||
, ppxlib
|
||||
, ppx_derivers
|
||||
@ -32,7 +33,7 @@ buildDunePackage rec {
|
||||
pname = "ppx_deriving";
|
||||
inherit (params) version;
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ppx_deriving/releases/download/v${version}/ppx_deriving-v${version}.tbz";
|
||||
@ -42,7 +43,7 @@ buildDunePackage rec {
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [ cppo ];
|
||||
buildInputs = [ ppxlib ];
|
||||
buildInputs = [ findlib ppxlib ];
|
||||
propagatedBuildInputs = [
|
||||
(if params.useOMP2
|
||||
then ocaml-migrate-parsetree-2
|
||||
|
@ -6,7 +6,7 @@ buildDunePackage rec {
|
||||
pname = "ppx_deriving_protobuf";
|
||||
version = "3.0.0";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ppx_deriving_protobuf/releases/download/v${version}/ppx_deriving_protobuf-v${version}.tbz";
|
||||
|
@ -17,6 +17,7 @@ buildDunePackage rec {
|
||||
inherit (param) version;
|
||||
|
||||
minimalOCamlVersion = "4.07";
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ocaml-ppx";
|
||||
|
@ -9,8 +9,8 @@ buildDunePackage rec {
|
||||
sha256 = "sha256-/mMj5UT22KQGVy1sjgEoOgPzyCYyeDPtWJYNDvQ9nlk=";
|
||||
};
|
||||
|
||||
minimumOCamlVersion = "4.07";
|
||||
useDune2 = true;
|
||||
minimalOCamlVersion = "4.07";
|
||||
duneVersion = "3";
|
||||
|
||||
buildInputs = [ ppxlib ];
|
||||
|
||||
|
@ -26,6 +26,7 @@ buildDunePackage rec {
|
||||
inherit version;
|
||||
|
||||
minimalOCamlVersion = "4.05";
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ppx_import/releases/download/${version}/ppx_import-${version}.tbz";
|
||||
|
@ -66,7 +66,7 @@ buildDunePackage rec {
|
||||
pname = "ppxlib";
|
||||
inherit version;
|
||||
|
||||
duneVersion = if param.useDune2 or true then "2" else "1";
|
||||
duneVersion = if param.useDune2 or true then "3" else "1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ppxlib/releases/download/${version}/ppxlib-${version}.tbz";
|
||||
|
@ -13,14 +13,12 @@ let version_sha = if lib.versionAtLeast ocaml.version "4.08"
|
||||
};
|
||||
in
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (rec {
|
||||
pname = "re";
|
||||
version = version_sha.version;
|
||||
|
||||
minimalOCamlVersion = "4.02";
|
||||
|
||||
useDune2 = lib.versionAtLeast ocaml.version "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml/ocaml-re/releases/download/${version}/re-${version}.tbz";
|
||||
sha256 = version_sha.sha256;
|
||||
@ -36,4 +34,6 @@ buildDunePackage rec {
|
||||
license = lib.licenses.lgpl2;
|
||||
maintainers = with lib.maintainers; [ vbgl ];
|
||||
};
|
||||
}
|
||||
} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
|
||||
duneVersion = "1";
|
||||
})
|
||||
|
@ -4,6 +4,8 @@ buildDunePackage rec {
|
||||
pname = "secp256k1";
|
||||
version = "0.4.4";
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dakk";
|
||||
repo = "secp256k1-ml";
|
||||
|
@ -1,14 +1,13 @@
|
||||
{ buildDunePackage, lib, fetchurl, ocaml }:
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (rec {
|
||||
pname = "stdlib-shims";
|
||||
version = "0.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml/${pname}/releases/download/${version}/${pname}-${version}.tbz";
|
||||
sha256 = "0jnqsv6pqp5b5g7lcjwgd75zqqvcwcl5a32zi03zg1kvj79p5gxs";
|
||||
};
|
||||
useDune2 = lib.versionAtLeast ocaml.version "4.08";
|
||||
minimumOCamlVersion = "4.02";
|
||||
minimalOCamlVersion = "4.02";
|
||||
doCheck = true;
|
||||
meta = {
|
||||
description = "Shims for forward-compatibility between versions of the OCaml standard library";
|
||||
@ -16,4 +15,6 @@ buildDunePackage rec {
|
||||
inherit (ocaml.meta) license;
|
||||
maintainers = [ lib.maintainers.vbgl ];
|
||||
};
|
||||
}
|
||||
} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
|
||||
duneVersion = "1";
|
||||
})
|
||||
|
@ -4,9 +4,9 @@ buildDunePackage rec {
|
||||
pname = "visitors";
|
||||
version = "20210608";
|
||||
|
||||
useDune2 = true;
|
||||
duneVersion = "3";
|
||||
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "fpottier";
|
||||
|
@ -22,14 +22,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiomisc";
|
||||
version = "17.1.4";
|
||||
version = "17.2.2";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-vXEN7aotz7h0N9bE3fJgEoonzEZicAeOLg5rsz4LoyA=";
|
||||
hash = "sha256-e8E2FOsHvTzjnUnF6jNX0skl7szRuC3ByMPfsqtcVno=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,18 +1,19 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, pythonOlder
|
||||
, awkward
|
||||
, buildPythonPackage
|
||||
, dask
|
||||
, fetchFromGitHub
|
||||
, hatch-vcs
|
||||
, hatchling
|
||||
, pyarrow
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
, pythonRelaxDepsHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "dask-awkward";
|
||||
version = "2023.1.0";
|
||||
version = "2023.4.2";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@ -20,13 +21,20 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "dask-contrib";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-q0mBd4yelnNL7rMWfilituo9h/xmLLLndSCBdY2egEQ=";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-c3NnARost/406cALQDKmeUsl2kFSQHAswAEwgreFXPc=";
|
||||
};
|
||||
|
||||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"awkward"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
hatch-vcs
|
||||
hatchling
|
||||
pythonRelaxDepsHook
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
@ -34,8 +42,6 @@ buildPythonPackage rec {
|
||||
dask
|
||||
];
|
||||
|
||||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
pyarrow
|
||||
@ -45,15 +51,16 @@ buildPythonPackage rec {
|
||||
"dask_awkward"
|
||||
];
|
||||
|
||||
pytestFlagsArray = [
|
||||
# require internet
|
||||
"--deselect=tests/test_parquet.py::test_remote_double"
|
||||
"--deselect=tests/test_parquet.py::test_remote_single"
|
||||
disabledTests = [
|
||||
# Tests require network access
|
||||
"test_remote_double"
|
||||
"test_remote_single"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Native Dask collection for awkward arrays, and the library to use it";
|
||||
homepage = "https://github.com/dask-contrib/dask-awkward";
|
||||
changelog = "https://github.com/dask-contrib/dask-awkward/releases/tag/${version}";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ veprbl ];
|
||||
};
|
||||
|
@ -5,23 +5,25 @@
|
||||
, cryptography
|
||||
, fetchFromGitHub
|
||||
, go
|
||||
, pykerberos
|
||||
, pythonOlder
|
||||
, skein
|
||||
, sqlalchemy
|
||||
, traitlets
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "dask-gateway-server";
|
||||
# update dask-gateway-server lock step with dask-gateway
|
||||
version = "2022.4.0";
|
||||
version = "2022.10.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dask";
|
||||
repo = "dask-gateway";
|
||||
rev = version;
|
||||
hash = "sha256-Grjp7gt3Pos4cQSGV/Rynz6W/zebRI0OqDiWT4cTh8I=";
|
||||
hash = "sha256-8yyako49F3rK8oZFmpYOiLVg9K3YF76/XerapQx3uhc=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/${pname}";
|
||||
@ -37,9 +39,24 @@ buildPythonPackage rec {
|
||||
traitlets
|
||||
];
|
||||
|
||||
passthru.optional-dependencies = {
|
||||
kerberos = [
|
||||
pykerberos
|
||||
];
|
||||
jobqueue = [
|
||||
sqlalchemy
|
||||
];
|
||||
local = [
|
||||
sqlalchemy
|
||||
];
|
||||
yarn = [
|
||||
skein
|
||||
sqlalchemy
|
||||
];
|
||||
};
|
||||
|
||||
preBuild = ''
|
||||
export HOME=$(mktemp -d)
|
||||
export GO111MODULE=off
|
||||
'';
|
||||
|
||||
# Tests requires cluster for testing
|
||||
|
@ -17,14 +17,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "dask-ml";
|
||||
version = "2022.5.27";
|
||||
version = "2023.3.24";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-Y2nTk0GSvMGSP87oTD+4+8zsoQITeQEHC6Px2eOGzOQ=";
|
||||
hash = "sha256-lsCQ220yg2U24/Ccpk3rWZ6GRYeqjj1NLGtK9YhzMwc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -10,6 +10,7 @@
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, fsspec
|
||||
, importlib-metadata
|
||||
, jinja2
|
||||
, numpy
|
||||
, packaging
|
||||
@ -22,13 +23,15 @@
|
||||
, pythonOlder
|
||||
, pyyaml
|
||||
, scipy
|
||||
, setuptools
|
||||
, toolz
|
||||
, versioneer
|
||||
, zarr
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "dask";
|
||||
version = "2023.2.1";
|
||||
version = "2023.4.1";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@ -36,10 +39,15 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "dask";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-7cuTxJ5SxOEf0v+SvSiaz7x8YYTx/qIS+KktbtubiDU=";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-PkEFXF6OFZU+EMFBUopv84WniQghr5Q6757Qx6D5MyE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
versioneer
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
click
|
||||
cloudpickle
|
||||
@ -47,6 +55,7 @@ buildPythonPackage rec {
|
||||
packaging
|
||||
partd
|
||||
pyyaml
|
||||
importlib-metadata
|
||||
toolz
|
||||
];
|
||||
|
||||
@ -91,8 +100,9 @@ buildPythonPackage rec {
|
||||
--replace "version=versioneer.get_version()," "version='${version}'," \
|
||||
--replace "cmdclass=versioneer.get_cmdclass()," ""
|
||||
|
||||
substituteInPlace setup.cfg \
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace " --durations=10" "" \
|
||||
--replace " --cov-config=pyproject.toml" "" \
|
||||
--replace " -v" ""
|
||||
'';
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user