Merge master into staging-next
This commit is contained in:
commit
e7ecba7a3a
@ -123,6 +123,8 @@ resholve.mkDerivation rec {
|
|||||||
"cannot:libexec/bats-core/bats-exec-file"
|
"cannot:libexec/bats-core/bats-exec-file"
|
||||||
"cannot:libexec/bats-core/bats-exec-suite"
|
"cannot:libexec/bats-core/bats-exec-suite"
|
||||||
"cannot:libexec/bats-core/bats-gather-tests"
|
"cannot:libexec/bats-core/bats-gather-tests"
|
||||||
|
|
||||||
|
"cannot:${procps}/bin/ps"
|
||||||
]
|
]
|
||||||
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||||
# checked invocations for exec
|
# checked invocations for exec
|
||||||
|
|||||||
@ -11,17 +11,17 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "comma";
|
pname = "comma";
|
||||||
version = "1.9.0";
|
version = "2.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nix-community";
|
owner = "nix-community";
|
||||||
repo = "comma";
|
repo = "comma";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-XXe0SSdH2JZLx0o+vHDtdlDRtVn7nouIngipbXhmhiQ=";
|
hash = "sha256-EP1UGmoPXeyJY1mk3c4DNF6/HkjqlwKf5ZLhjNa1WMo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
useFetchCargoVendor = true;
|
useFetchCargoVendor = true;
|
||||||
cargoHash = "sha256-vNXczPhCfoXHy5IT/ybuKEQ7I08eJJdP+6+iXfwWjdU=";
|
cargoHash = "sha256-GEHvS4hDBKqSquRmGZ9LMIFsX8MGqOqPZVf0aAzMmmI=";
|
||||||
|
|
||||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||||
|
|
||||||
|
|||||||
2035
pkgs/by-name/cr/crabfit-api/Cargo.lock
generated
2035
pkgs/by-name/cr/crabfit-api/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -5,12 +5,12 @@
|
|||||||
}:
|
}:
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "lsh";
|
pname = "lsh";
|
||||||
version = "1.3.3";
|
version = "1.4.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "latitudesh";
|
owner = "latitudesh";
|
||||||
repo = "lsh";
|
repo = "lsh";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0YpjG4u+wb4LRWzfTddKFwut0MBzEch+HZijmZiVXpE=";
|
sha256 = "sha256-yYjCxH92GyFl4Gf4hH97E3EiMQ6WvWIItVI4U54JdaM=";
|
||||||
};
|
};
|
||||||
vendorHash = "sha256-ogdyzfayleka4Y8x74ZtttD7MaeCl1qP/rQi9x0tMto=";
|
vendorHash = "sha256-ogdyzfayleka4Y8x74ZtttD7MaeCl1qP/rQi9x0tMto=";
|
||||||
subPackages = [ "." ];
|
subPackages = [ "." ];
|
||||||
|
|||||||
@ -17,18 +17,18 @@
|
|||||||
rustPlatform.buildRustPackage (finalAttrs: {
|
rustPlatform.buildRustPackage (finalAttrs: {
|
||||||
pname = "lux-cli";
|
pname = "lux-cli";
|
||||||
|
|
||||||
version = "0.7.4";
|
version = "0.8.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nvim-neorocks";
|
owner = "nvim-neorocks";
|
||||||
repo = "lux";
|
repo = "lux";
|
||||||
tag = "v${finalAttrs.version}";
|
tag = "v${finalAttrs.version}";
|
||||||
hash = "sha256-m8GSs2gBw+WzDOBciOQHi7n4923XCd7z1TbfTnfJzUA=";
|
hash = "sha256-O4n/xTGd1WDiZ/LhBBifsUq7dTvBD4uLoOxX1ByJ82s=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAndTestSubdir = "lux-cli";
|
buildAndTestSubdir = "lux-cli";
|
||||||
useFetchCargoVendor = true;
|
useFetchCargoVendor = true;
|
||||||
cargoHash = "sha256-7q5NqAmsHcZEwDAeNRZLiQIKzFsx6BsWAgsv2s2dmRI=";
|
cargoHash = "sha256-I8dAcPWug/7l3gAyAlHjwqNVzZVEfcvWWBnXuqOEbd4=";
|
||||||
|
|
||||||
nativeInstallCheckInputs = [
|
nativeInstallCheckInputs = [
|
||||||
versionCheckHook
|
versionCheckHook
|
||||||
|
|||||||
@ -6,22 +6,22 @@
|
|||||||
|
|
||||||
stdenvNoCC.mkDerivation {
|
stdenvNoCC.mkDerivation {
|
||||||
pname = "raspberrypi-wireless-firmware";
|
pname = "raspberrypi-wireless-firmware";
|
||||||
version = "unstable-2024-02-26";
|
version = "0-unstable-2025-04-08";
|
||||||
|
|
||||||
srcs = [
|
srcs = [
|
||||||
(fetchFromGitHub {
|
(fetchFromGitHub {
|
||||||
name = "bluez-firmware";
|
name = "bluez-firmware";
|
||||||
owner = "RPi-Distro";
|
owner = "RPi-Distro";
|
||||||
repo = "bluez-firmware";
|
repo = "bluez-firmware";
|
||||||
rev = "78d6a07730e2d20c035899521ab67726dc028e1c";
|
rev = "2bbfb8438e824f5f61dae3f6ebb367a6129a4d63";
|
||||||
hash = "sha256-KakKnOBeWxh0exu44beZ7cbr5ni4RA9vkWYb9sGMb8Q=";
|
hash = "sha256-t+D4VUfEIov83KV4wiKp6TqXTHXGkxg/mANi4GW7QHs=";
|
||||||
})
|
})
|
||||||
(fetchFromGitHub {
|
(fetchFromGitHub {
|
||||||
name = "firmware-nonfree";
|
name = "firmware-nonfree";
|
||||||
owner = "RPi-Distro";
|
owner = "RPi-Distro";
|
||||||
repo = "firmware-nonfree";
|
repo = "firmware-nonfree";
|
||||||
rev = "223ccf3a3ddb11b3ea829749fbbba4d65b380897";
|
rev = "c9d3ae6584ab79d19a4f94ccf701e888f9f87a53";
|
||||||
hash = "sha256-BGq0+cr+xBRwQM/LqiQuRWuZpQsKM5jfcrNCqWMuVzM=";
|
hash = "sha256-5ywIPs3lpmqVOVP3B75H577fYkkucDqB7htY2U1DW8U=";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -5,21 +5,21 @@
|
|||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
installShellFiles,
|
installShellFiles,
|
||||||
runCommand,
|
runCommand,
|
||||||
yq-go,
|
nix-update-script,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildGoModule (finalAttrs: {
|
buildGoModule (finalAttrs: {
|
||||||
pname = "yq-go";
|
pname = "yq-go";
|
||||||
version = "4.45.4";
|
version = "4.46.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mikefarah";
|
owner = "mikefarah";
|
||||||
repo = "yq";
|
repo = "yq";
|
||||||
rev = "v${finalAttrs.version}";
|
tag = "v${finalAttrs.version}";
|
||||||
hash = "sha256-qcsm7dB7F7Snul2PbH/7RdK17c5qT+mk+FvfqnFfuak=";
|
hash = "sha256-lMmcqAe1A/ET/2Dju6Gj0+I/g4z23EmtuRio0NYTHws=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-cA5Y0/2lvYfVXr4zgtp/U8aBUkHnh9xb9jDHVk/2OME=";
|
vendorHash = "sha256-wfn8u8I4dyAD4PbeiQGSai1gQ2ZDFBi2mysZVKa0mkA=";
|
||||||
|
|
||||||
nativeBuildInputs = [ installShellFiles ];
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
@ -30,17 +30,20 @@ buildGoModule (finalAttrs: {
|
|||||||
--zsh <($out/bin/yq shell-completion zsh)
|
--zsh <($out/bin/yq shell-completion zsh)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.tests = {
|
passthru = {
|
||||||
simple = runCommand "${finalAttrs.pname}-test" { } ''
|
tests = {
|
||||||
echo "test: 1" | ${yq-go}/bin/yq eval -j > $out
|
simple = runCommand "yq-go-test" { } ''
|
||||||
[ "$(cat $out | tr -d $'\n ')" = '{"test":1}' ]
|
echo "test: 1" | ${finalAttrs.finalPackage}/bin/yq eval -j > $out
|
||||||
'';
|
[ "$(cat $out | tr -d $'\n ')" = '{"test":1}' ]
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
updateScript = nix-update-script { };
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Portable command-line YAML processor";
|
description = "Portable command-line YAML processor";
|
||||||
homepage = "https://mikefarah.gitbook.io/yq/";
|
homepage = "https://mikefarah.gitbook.io/yq/";
|
||||||
changelog = "https://github.com/mikefarah/yq/raw/v${finalAttrs.version}/release_notes.txt";
|
changelog = "https://github.com/mikefarah/yq/raw/${finalAttrs.src.tag}/release_notes.txt";
|
||||||
mainProgram = "yq";
|
mainProgram = "yq";
|
||||||
license = [ lib.licenses.mit ];
|
license = [ lib.licenses.mit ];
|
||||||
maintainers = with lib.maintainers; [
|
maintainers = with lib.maintainers; [
|
||||||
|
|||||||
@ -0,0 +1,137 @@
|
|||||||
|
From 3af17de3a5f6acd5a2f9340d84b8667459f43eea Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Ericson <git@JohnEricson.me>
|
||||||
|
Date: Wed, 18 Aug 2021 01:55:31 -0400
|
||||||
|
Subject: [PATCH 1/3] find_a_program: First search with machine prefix
|
||||||
|
|
||||||
|
This matches the behavior of Clang, and makes it easier to work with
|
||||||
|
cross compilers without heeding to hard-code paths at build time.
|
||||||
|
---
|
||||||
|
gcc/gcc.cc | 78 +++++++++++++++++++++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 68 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
|
index 4fd87f2c4a1..55738d258b3 100644
|
||||||
|
--- a/gcc/gcc.cc
|
||||||
|
+++ b/gcc/gcc.cc
|
||||||
|
@@ -1600,6 +1600,11 @@ static const char *machine_suffix = 0;
|
||||||
|
|
||||||
|
static const char *just_machine_suffix = 0;
|
||||||
|
|
||||||
|
+/* Prefix to attach to *basename* of commands being searched.
|
||||||
|
+ This is just `MACHINE-'. */
|
||||||
|
+
|
||||||
|
+static const char *just_machine_prefix = 0;
|
||||||
|
+
|
||||||
|
/* Adjusted value of GCC_EXEC_PREFIX envvar. */
|
||||||
|
|
||||||
|
static const char *gcc_exec_prefix;
|
||||||
|
@@ -3043,15 +3048,6 @@ file_at_path (char *path, void *data)
|
||||||
|
memcpy (path + len, info->name, info->name_len);
|
||||||
|
len += info->name_len;
|
||||||
|
|
||||||
|
- /* Some systems have a suffix for executable files.
|
||||||
|
- So try appending that first. */
|
||||||
|
- if (info->suffix_len)
|
||||||
|
- {
|
||||||
|
- memcpy (path + len, info->suffix, info->suffix_len + 1);
|
||||||
|
- if (access_check (path, info->mode) == 0)
|
||||||
|
- return path;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
path[len] = '\0';
|
||||||
|
if (access_check (path, info->mode) == 0)
|
||||||
|
return path;
|
||||||
|
@@ -3091,12 +3087,52 @@ find_a_file (const struct path_prefix *pprefix, const char *name, int mode,
|
||||||
|
file_at_path, &info);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Callback for find_a_program. Appends the file name to the directory
|
||||||
|
+ path. Like file_at_path but tries machine prefix and exe suffix too. */
|
||||||
|
+
|
||||||
|
+static void *
|
||||||
|
+program_at_path (char *path, void *data)
|
||||||
|
+{
|
||||||
|
+ /* try first with machine-prefixed name */
|
||||||
|
+ struct file_at_path_info *info = (struct file_at_path_info *) data;
|
||||||
|
+ size_t path_len = strlen (path);
|
||||||
|
+
|
||||||
|
+ for (auto prefix : { just_machine_prefix, "" })
|
||||||
|
+ {
|
||||||
|
+ auto len = path_len;
|
||||||
|
+
|
||||||
|
+ auto prefix_len = strlen(prefix);
|
||||||
|
+ memcpy (path + len, prefix, prefix_len);
|
||||||
|
+ len += prefix_len;
|
||||||
|
+
|
||||||
|
+ memcpy (path + len, info->name, info->name_len);
|
||||||
|
+ len += info->name_len;
|
||||||
|
+
|
||||||
|
+ /* Some systems have a suffix for executable files.
|
||||||
|
+ So try appending that first. */
|
||||||
|
+ if (info->suffix_len)
|
||||||
|
+ {
|
||||||
|
+ memcpy (path + len, info->suffix, info->suffix_len + 1);
|
||||||
|
+ if (access_check (path, info->mode) == 0)
|
||||||
|
+ return path;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ path[len] = '\0';
|
||||||
|
+ if (access_check (path, info->mode) == 0)
|
||||||
|
+ return path;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Specialization of find_a_file for programs that also takes into account
|
||||||
|
configure-specified default programs. */
|
||||||
|
|
||||||
|
static char*
|
||||||
|
find_a_program (const char *name)
|
||||||
|
{
|
||||||
|
+ const int mode = X_OK;
|
||||||
|
+
|
||||||
|
/* Do not search if default matches query. */
|
||||||
|
|
||||||
|
#ifdef DEFAULT_ASSEMBLER
|
||||||
|
@@ -3114,7 +3150,28 @@ find_a_program (const char *name)
|
||||||
|
return xstrdup (DEFAULT_DSYMUTIL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- return find_a_file (&exec_prefixes, name, X_OK, false);
|
||||||
|
+ /* Find the filename in question (special case for absolute paths). */
|
||||||
|
+
|
||||||
|
+ if (IS_ABSOLUTE_PATH (name))
|
||||||
|
+ {
|
||||||
|
+ if (access (name, mode) == 0)
|
||||||
|
+ return xstrdup (name);
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ struct file_at_path_info info;
|
||||||
|
+
|
||||||
|
+ info.name = name;
|
||||||
|
+ info.suffix = HOST_EXECUTABLE_SUFFIX;
|
||||||
|
+ info.name_len = strlen (info.name);
|
||||||
|
+ info.suffix_len = strlen (info.suffix);
|
||||||
|
+ info.mode = mode;
|
||||||
|
+
|
||||||
|
+ return (char*) for_each_path (
|
||||||
|
+ &exec_prefixes, false,
|
||||||
|
+ info.name_len + info.suffix_len + strlen(just_machine_prefix),
|
||||||
|
+ program_at_path, &info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ranking of prefixes in the sort list. -B prefixes are put before
|
||||||
|
@@ -8492,6 +8549,7 @@ driver::set_up_specs () const
|
||||||
|
machine_suffix = concat (spec_host_machine, dir_separator_str, spec_version,
|
||||||
|
accel_dir_suffix, dir_separator_str, NULL);
|
||||||
|
just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
|
||||||
|
+ just_machine_prefix = concat (spec_machine, "-", NULL);
|
||||||
|
|
||||||
|
specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, true);
|
||||||
|
/* Read the specs file unless it is a default one. */
|
||||||
|
--
|
||||||
|
2.47.2
|
||||||
|
|
||||||
@ -0,0 +1,103 @@
|
|||||||
|
From 8e1b7a128a69393c6d3f53b8f66bd52c6bbce908 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Ericson <git@JohnEricson.me>
|
||||||
|
Date: Wed, 18 Aug 2021 01:55:45 -0400
|
||||||
|
Subject: [PATCH 2/3] driver: for_each_pass: Pass to callback whether dir is
|
||||||
|
machine-disambiguated
|
||||||
|
|
||||||
|
We will use this in the subsequent diff to control what basenames we
|
||||||
|
search for. In machine-specific subdirectories, we should just look for
|
||||||
|
the original basename, but in machine-agnostic subdirectories, we might
|
||||||
|
additionally look for prefixed disambiguated names, as an alternate
|
||||||
|
method of keeping targets apart.
|
||||||
|
---
|
||||||
|
gcc/gcc.cc | 18 +++++++++---------
|
||||||
|
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
|
index 55738d258b3..f9f83d1a804 100644
|
||||||
|
--- a/gcc/gcc.cc
|
||||||
|
+++ b/gcc/gcc.cc
|
||||||
|
@@ -2783,7 +2783,7 @@ static void *
|
||||||
|
for_each_path (const struct path_prefix *paths,
|
||||||
|
bool do_multi,
|
||||||
|
size_t extra_space,
|
||||||
|
- void *(*callback) (char *, void *),
|
||||||
|
+ void *(*callback) (char *, bool, void *),
|
||||||
|
void *callback_info)
|
||||||
|
{
|
||||||
|
struct prefix_list *pl;
|
||||||
|
@@ -2844,7 +2844,7 @@ for_each_path (const struct path_prefix *paths,
|
||||||
|
if (!skip_multi_dir)
|
||||||
|
{
|
||||||
|
memcpy (path + len, multi_suffix, suffix_len + 1);
|
||||||
|
- ret = callback (path, callback_info);
|
||||||
|
+ ret = callback (path, true, callback_info);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2855,7 +2855,7 @@ for_each_path (const struct path_prefix *paths,
|
||||||
|
&& pl->require_machine_suffix == 2)
|
||||||
|
{
|
||||||
|
memcpy (path + len, just_multi_suffix, just_suffix_len + 1);
|
||||||
|
- ret = callback (path, callback_info);
|
||||||
|
+ ret = callback (path, true, callback_info);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2865,7 +2865,7 @@ for_each_path (const struct path_prefix *paths,
|
||||||
|
&& !pl->require_machine_suffix && multiarch_dir)
|
||||||
|
{
|
||||||
|
memcpy (path + len, multiarch_suffix, multiarch_len + 1);
|
||||||
|
- ret = callback (path, callback_info);
|
||||||
|
+ ret = callback (path, true, callback_info);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2893,7 +2893,7 @@ for_each_path (const struct path_prefix *paths,
|
||||||
|
else
|
||||||
|
path[len] = '\0';
|
||||||
|
|
||||||
|
- ret = callback (path, callback_info);
|
||||||
|
+ ret = callback (path, false, callback_info);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2948,7 +2948,7 @@ struct add_to_obstack_info {
|
||||||
|
};
|
||||||
|
|
||||||
|
static void *
|
||||||
|
-add_to_obstack (char *path, void *data)
|
||||||
|
+add_to_obstack (char *path, bool, void *data)
|
||||||
|
{
|
||||||
|
struct add_to_obstack_info *info = (struct add_to_obstack_info *) data;
|
||||||
|
|
||||||
|
@@ -3040,7 +3040,7 @@ struct file_at_path_info {
|
||||||
|
};
|
||||||
|
|
||||||
|
static void *
|
||||||
|
-file_at_path (char *path, void *data)
|
||||||
|
+file_at_path (char *path, bool, void *data)
|
||||||
|
{
|
||||||
|
struct file_at_path_info *info = (struct file_at_path_info *) data;
|
||||||
|
size_t len = strlen (path);
|
||||||
|
@@ -3091,7 +3091,7 @@ find_a_file (const struct path_prefix *pprefix, const char *name, int mode,
|
||||||
|
path. Like file_at_path but tries machine prefix and exe suffix too. */
|
||||||
|
|
||||||
|
static void *
|
||||||
|
-program_at_path (char *path, void *data)
|
||||||
|
+program_at_path (char *path, bool machine_specific, void *data)
|
||||||
|
{
|
||||||
|
/* try first with machine-prefixed name */
|
||||||
|
struct file_at_path_info *info = (struct file_at_path_info *) data;
|
||||||
|
@@ -6074,7 +6074,7 @@ struct spec_path_info {
|
||||||
|
};
|
||||||
|
|
||||||
|
static void *
|
||||||
|
-spec_path (char *path, void *data)
|
||||||
|
+spec_path (char *path, bool, void *data)
|
||||||
|
{
|
||||||
|
struct spec_path_info *info = (struct spec_path_info *) data;
|
||||||
|
size_t len = 0;
|
||||||
|
--
|
||||||
|
2.47.2
|
||||||
|
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
From e1ee1a2df1ad32de24e8fdaeac0a533681710578 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Ericson <git@JohnEricson.me>
|
||||||
|
Date: Wed, 18 Aug 2021 01:55:52 -0400
|
||||||
|
Subject: [PATCH 3/3] find_a_program: Only search for prefixed paths in
|
||||||
|
undisambiguated dirs
|
||||||
|
|
||||||
|
This means, we might search for:
|
||||||
|
|
||||||
|
- path/$machine/$version/prog
|
||||||
|
- path/$machine/prog
|
||||||
|
- path/$machine-prog
|
||||||
|
|
||||||
|
But not
|
||||||
|
|
||||||
|
- path/$machine/$version/$machine-prog
|
||||||
|
|
||||||
|
because disambiguating $machine twice is unnecessary.
|
||||||
|
|
||||||
|
This does mean we less liberal in what we accept than LLVM, but that's
|
||||||
|
OK. The down side of always Postel's law is everyone converges on
|
||||||
|
accepting all sorts of garbage, which makes debugging end-to-end hard
|
||||||
|
when mistakes are not caught early.
|
||||||
|
---
|
||||||
|
gcc/gcc.cc | 25 ++++++++++++++++---------
|
||||||
|
1 file changed, 16 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
|
index f9f83d1a804..d837b6ea779 100644
|
||||||
|
--- a/gcc/gcc.cc
|
||||||
|
+++ b/gcc/gcc.cc
|
||||||
|
@@ -3097,15 +3097,9 @@ program_at_path (char *path, bool machine_specific, void *data)
|
||||||
|
struct file_at_path_info *info = (struct file_at_path_info *) data;
|
||||||
|
size_t path_len = strlen (path);
|
||||||
|
|
||||||
|
- for (auto prefix : { just_machine_prefix, "" })
|
||||||
|
+ auto search = [=](size_t len) -> void *
|
||||||
|
{
|
||||||
|
- auto len = path_len;
|
||||||
|
-
|
||||||
|
- auto prefix_len = strlen(prefix);
|
||||||
|
- memcpy (path + len, prefix, prefix_len);
|
||||||
|
- len += prefix_len;
|
||||||
|
-
|
||||||
|
- memcpy (path + len, info->name, info->name_len);
|
||||||
|
+ memcpy (path + len, info->name, info->name_len + 1);
|
||||||
|
len += info->name_len;
|
||||||
|
|
||||||
|
/* Some systems have a suffix for executable files.
|
||||||
|
@@ -3120,9 +3114,22 @@ program_at_path (char *path, bool machine_specific, void *data)
|
||||||
|
path[len] = '\0';
|
||||||
|
if (access_check (path, info->mode) == 0)
|
||||||
|
return path;
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* Additionally search for $target-prog in machine-agnostic dirs, as an
|
||||||
|
+ additional way to disambiguate targets. Do not do this in machine-specific
|
||||||
|
+ dirs because so further disambiguation is needed. */
|
||||||
|
+ if (!machine_specific)
|
||||||
|
+ {
|
||||||
|
+ auto prefix_len = strlen(just_machine_prefix);
|
||||||
|
+ memcpy (path + path_len, just_machine_prefix, prefix_len);
|
||||||
|
+ auto res = search(path_len + prefix_len);
|
||||||
|
+ if (res) return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return NULL;
|
||||||
|
+ return search(path_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specialization of find_a_file for programs that also takes into account
|
||||||
|
--
|
||||||
|
2.47.2
|
||||||
|
|
||||||
@ -0,0 +1,180 @@
|
|||||||
|
From 1eaf7ce77bb4eb73e5565ede220557c2ef0290b0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Ericson <git@JohnEricson.me>
|
||||||
|
Date: Sun, 22 Aug 2021 01:14:22 -0400
|
||||||
|
Subject: [PATCH] Allow explicitly specifying the thread model for runtime libs
|
||||||
|
|
||||||
|
Previously, they always scraped the thread mode from `$CC -v', now, that
|
||||||
|
is the default but one may pass `--with-threads=MODEL` to be explicit
|
||||||
|
instead.
|
||||||
|
|
||||||
|
One use-case is bootstraping with a shorter critical path. The
|
||||||
|
traditionally route was to build an entire "static stage" GCC, build
|
||||||
|
libc, and then build GCC again supporting dynamic linking,
|
||||||
|
multithreading, etc. But this is wasteful in that GCC itself is built
|
||||||
|
twice.
|
||||||
|
|
||||||
|
With this change, rather than having to mess with spec files we can just
|
||||||
|
configure the runtime libraries the way we want directly. In turn, that
|
||||||
|
opens to just building libgcc twice rather than all of GCC.
|
||||||
|
|
||||||
|
Frankly, specs were always a rather indirect approach to coordinate this
|
||||||
|
during GCC's bootstrap, since GCC itself really doesn't care what the
|
||||||
|
threading model is, just that the runtime libraries agree among
|
||||||
|
themselves. Relying on a hard-coded spec for this also keeps us one step
|
||||||
|
further from the long-term goal of multi-target GCC, for what it's
|
||||||
|
worth.
|
||||||
|
|
||||||
|
For the record, "single stage" builds of GCC have some precedent in
|
||||||
|
downstream packaging, for example with [1]. That one, as far as I can
|
||||||
|
tell, builds libgcc once, but with the headers of the libc
|
||||||
|
implementation provided and then cyclic linking down later. They are
|
||||||
|
both fine approaches, but I don't think one should have to be forced
|
||||||
|
into cyclic dependencies if they don't want to. That opens the door to
|
||||||
|
non-terminating programs due to, e.g., atomics used in a threads
|
||||||
|
implementation being lowered to threads absent hardware support.
|
||||||
|
|
||||||
|
Finally, I understand that such custom bootstrapping is not officially
|
||||||
|
supported. I don't mean to imply it should be --- a lot more cleanup
|
||||||
|
work to the build system would be necessary before supporting it
|
||||||
|
wouldn't be a huge additional maintainer burden --- I just hope to add a
|
||||||
|
reasonable knob for those comfortable with doing unsupported things
|
||||||
|
already.
|
||||||
|
|
||||||
|
[1]: https://github.com/richfelker/musl-cross-make
|
||||||
|
---
|
||||||
|
config/gthr.m4 | 32 ++++++++++++++++++++++++++++++++
|
||||||
|
libatomic/configure.ac | 4 +---
|
||||||
|
libgcc/configure.ac | 4 +---
|
||||||
|
libphobos/m4/druntime/os.m4 | 2 +-
|
||||||
|
libstdc++-v3/acinclude.m4 | 8 +++-----
|
||||||
|
5 files changed, 38 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/gthr.m4 b/config/gthr.m4
|
||||||
|
index 11996247f15..7aed5d3df0d 100644
|
||||||
|
--- a/config/gthr.m4
|
||||||
|
+++ b/config/gthr.m4
|
||||||
|
@@ -5,6 +5,35 @@ dnl Public License, this file may be distributed as part of a program
|
||||||
|
dnl that contains a configuration script generated by Autoconf, under
|
||||||
|
dnl the same distribution terms as the rest of that program.
|
||||||
|
|
||||||
|
+dnl Define thread model
|
||||||
|
+
|
||||||
|
+dnl usage: GCC_AC_THREAD_MODEL
|
||||||
|
+AC_DEFUN([GCC_AC_THREAD_MODEL],
|
||||||
|
+[
|
||||||
|
+# With threads
|
||||||
|
+# Pass with no value to take from compiler's metadata
|
||||||
|
+# Pass with a value to specify a thread package
|
||||||
|
+# 'single' means single threaded -- without threads.
|
||||||
|
+AC_ARG_WITH(threads,
|
||||||
|
+[AS_HELP_STRING([[--with-threads=MODEL]],
|
||||||
|
+ [specify thread model for this GCC
|
||||||
|
+ runtime library])],,
|
||||||
|
+[with_threads=''])
|
||||||
|
+
|
||||||
|
+if test x"$with_threads" = x'yes'; then
|
||||||
|
+ AC_MSG_ERROR([Cannot pass bare --with-threads, must pass explicit --with-threads=MODEL])
|
||||||
|
+elif test x"$with_threads" = x'no'; then
|
||||||
|
+ target_thread_file=single
|
||||||
|
+elif test x"$with_threads" = x''; then
|
||||||
|
+ AC_MSG_CHECKING([for thread model used by GCC])
|
||||||
|
+ target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||||
|
+ AC_MSG_RESULT([$target_thread_file])
|
||||||
|
+else
|
||||||
|
+ target_thread_file=$with_threads
|
||||||
|
+fi
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+
|
||||||
|
dnl Define header location by thread model
|
||||||
|
|
||||||
|
dnl usage: GCC_AC_THREAD_HEADER([thread_model])
|
||||||
|
@@ -23,6 +52,9 @@ case $1 in
|
||||||
|
vxworks) thread_header=config/gthr-vxworks.h ;;
|
||||||
|
win32) thread_header=config/i386/gthr-win32.h ;;
|
||||||
|
mcf) thread_header=config/i386/gthr-mcf.h ;;
|
||||||
|
+ *)
|
||||||
|
+ AC_MSG_ERROR([No known header for threading model '$1'.])
|
||||||
|
+ ;;
|
||||||
|
esac
|
||||||
|
AC_SUBST(thread_header)
|
||||||
|
])
|
||||||
|
diff --git a/libatomic/configure.ac b/libatomic/configure.ac
|
||||||
|
index 85824fa7614..691f4948f6c 100644
|
||||||
|
--- a/libatomic/configure.ac
|
||||||
|
+++ b/libatomic/configure.ac
|
||||||
|
@@ -162,9 +162,7 @@ libtool_VERSION=3:0:2
|
||||||
|
AC_SUBST(libtool_VERSION)
|
||||||
|
|
||||||
|
# Check for used threading-model
|
||||||
|
-AC_MSG_CHECKING([for thread model used by GCC])
|
||||||
|
-target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||||
|
-AC_MSG_RESULT([$target_thread_file])
|
||||||
|
+GCC_AC_THREAD_MODEL
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
*aarch64*)
|
||||||
|
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
|
||||||
|
index 4e8c036990f..acf54e24c79 100644
|
||||||
|
--- a/libgcc/configure.ac
|
||||||
|
+++ b/libgcc/configure.ac
|
||||||
|
@@ -305,9 +305,7 @@ AC_SUBST([use_tm_clone_registry])
|
||||||
|
|
||||||
|
AC_LIB_PROG_LD_GNU
|
||||||
|
|
||||||
|
-AC_MSG_CHECKING([for thread model used by GCC])
|
||||||
|
-target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||||
|
-AC_MSG_RESULT([$target_thread_file])
|
||||||
|
+GCC_AC_THREAD_MODEL
|
||||||
|
|
||||||
|
# Check for assembler CFI support.
|
||||||
|
AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi],
|
||||||
|
diff --git a/libphobos/m4/druntime/os.m4 b/libphobos/m4/druntime/os.m4
|
||||||
|
index 15cde3b04b8..28bd4d3d2bd 100644
|
||||||
|
--- a/libphobos/m4/druntime/os.m4
|
||||||
|
+++ b/libphobos/m4/druntime/os.m4
|
||||||
|
@@ -32,7 +32,7 @@ case $1 in
|
||||||
|
# TODO: These targets need porting.
|
||||||
|
dce|mipssde|rtems|tpf|vxworks)
|
||||||
|
DCFG_THREAD_MODEL="Single" ;;
|
||||||
|
- *) as_fn_error "Thread implementation '$1' not recognised" "$LINENO" 5 ;;
|
||||||
|
+ *) AC_MSG_ERROR([Thread implementation '$1' not recognised]) ;;
|
||||||
|
esac
|
||||||
|
AC_SUBST(DCFG_THREAD_MODEL)
|
||||||
|
])
|
||||||
|
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
|
||||||
|
index 51a08bcc8b1..71697f59d6d 100644
|
||||||
|
--- a/libstdc++-v3/acinclude.m4
|
||||||
|
+++ b/libstdc++-v3/acinclude.m4
|
||||||
|
@@ -4342,9 +4342,7 @@ dnl Substs:
|
||||||
|
dnl thread_header
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([GLIBCXX_ENABLE_THREADS], [
|
||||||
|
- AC_MSG_CHECKING([for thread model used by GCC])
|
||||||
|
- target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||||
|
- AC_MSG_RESULT([$target_thread_file])
|
||||||
|
+ GCC_AC_THREAD_MODEL
|
||||||
|
GCC_AC_THREAD_HEADER([$target_thread_file])
|
||||||
|
])
|
||||||
|
|
||||||
|
@@ -4354,7 +4352,8 @@ dnl Check if gthread implementation defines the types and functions
|
||||||
|
dnl required by the c++0x thread library. Conforming gthread
|
||||||
|
dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x.
|
||||||
|
dnl
|
||||||
|
-dnl GLIBCXX_ENABLE_SYMVERS must be done before this.
|
||||||
|
+dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_ENABLE_THREADS must be done
|
||||||
|
+dnl before this.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
|
||||||
|
GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support])
|
||||||
|
@@ -4369,7 +4368,6 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
|
||||||
|
CXXFLAGS="$CXXFLAGS -fno-exceptions \
|
||||||
|
-I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc"
|
||||||
|
|
||||||
|
- target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||||
|
case $target_thread_file in
|
||||||
|
posix)
|
||||||
|
CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
|
||||||
|
--
|
||||||
|
2.44.1
|
||||||
|
|
||||||
315
pkgs/development/compilers/gcc/ng/15/gcc/fix-collect2-paths.diff
Normal file
315
pkgs/development/compilers/gcc/ng/15/gcc/fix-collect2-paths.diff
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
diff --git a/gcc/collect2.cc b/gcc/collect2.cc
|
||||||
|
index 268ac378b9c..8a5c606075a 100644
|
||||||
|
--- a/gcc/collect2.cc
|
||||||
|
+++ b/gcc/collect2.cc
|
||||||
|
@@ -327,7 +327,7 @@ static void write_aix_file (FILE *, struct id *);
|
||||||
|
static char *resolve_lib_name (const char *);
|
||||||
|
#endif
|
||||||
|
static char *extract_string (const char **);
|
||||||
|
-static void post_ld_pass (bool);
|
||||||
|
+static void post_ld_pass (bool, bool);
|
||||||
|
static void process_args (int *argcp, char **argv);
|
||||||
|
|
||||||
|
/* Enumerations describing which pass this is for scanning the
|
||||||
|
@@ -513,12 +513,10 @@ is_ctor_dtor (const char *s)
|
||||||
|
|
||||||
|
static struct path_prefix cpath, path;
|
||||||
|
|
||||||
|
-#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
/* This is the name of the target machine. We use it to form the name
|
||||||
|
of the files to execute. */
|
||||||
|
|
||||||
|
static const char *const target_machine = TARGET_MACHINE;
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
/* Search for NAME using prefix list PPREFIX. We only look for executable
|
||||||
|
files.
|
||||||
|
@@ -577,7 +575,7 @@ add_lto_object (struct lto_object_list *list, const char *name)
|
||||||
|
|
||||||
|
static void
|
||||||
|
maybe_run_lto_and_relink (char **lto_ld_argv, char **object_lst,
|
||||||
|
- const char **object, bool force)
|
||||||
|
+ const char **object, bool force, bool is_cross_compiler)
|
||||||
|
{
|
||||||
|
const char **object_file = CONST_CAST2 (const char **, char **, object_lst);
|
||||||
|
|
||||||
|
@@ -722,7 +720,7 @@ maybe_run_lto_and_relink (char **lto_ld_argv, char **object_lst,
|
||||||
|
"ld_args");
|
||||||
|
/* We assume that temp files were created, and therefore we need to take
|
||||||
|
that into account (maybe run dsymutil). */
|
||||||
|
- post_ld_pass (/*temp_file*/true);
|
||||||
|
+ post_ld_pass (/*temp_file*/true, is_cross_compiler);
|
||||||
|
free (lto_ld_argv);
|
||||||
|
|
||||||
|
maybe_unlink_list (lto_o_files);
|
||||||
|
@@ -734,10 +732,10 @@ maybe_run_lto_and_relink (char **lto_ld_argv, char **object_lst,
|
||||||
|
fork_execute ("ld", lto_ld_argv, HAVE_GNU_LD && at_file_supplied,
|
||||||
|
"ld_args");
|
||||||
|
/* No LTO objects were found, so no new temp file. */
|
||||||
|
- post_ld_pass (/*temp_file*/false);
|
||||||
|
+ post_ld_pass (/*temp_file*/false, is_cross_compiler);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
- post_ld_pass (false); /* No LTO objects were found, no temp file. */
|
||||||
|
+ post_ld_pass (false, is_cross_compiler); /* No LTO objects were found, no temp file. */
|
||||||
|
}
|
||||||
|
/* Entry point for linker invoation. Called from main in collect2.cc.
|
||||||
|
LD_ARGV is an array of arguments for the linker. */
|
||||||
|
@@ -799,33 +797,14 @@ main (int argc, char **argv)
|
||||||
|
static const char *const gstrip_suffix = "gstrip";
|
||||||
|
|
||||||
|
const char *full_ld_suffixes[USE_LD_MAX];
|
||||||
|
-#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
- /* If we look for a program in the compiler directories, we just use
|
||||||
|
- the short name, since these directories are already system-specific.
|
||||||
|
- But it we look for a program in the system directories, we need to
|
||||||
|
- qualify the program name with the target machine. */
|
||||||
|
-
|
||||||
|
- const char *const full_nm_suffix =
|
||||||
|
- concat (target_machine, "-", nm_suffix, NULL);
|
||||||
|
- const char *const full_gnm_suffix =
|
||||||
|
- concat (target_machine, "-", gnm_suffix, NULL);
|
||||||
|
-#ifdef LDD_SUFFIX
|
||||||
|
- const char *const full_ldd_suffix =
|
||||||
|
- concat (target_machine, "-", ldd_suffix, NULL);
|
||||||
|
-#endif
|
||||||
|
- const char *const full_strip_suffix =
|
||||||
|
- concat (target_machine, "-", strip_suffix, NULL);
|
||||||
|
- const char *const full_gstrip_suffix =
|
||||||
|
- concat (target_machine, "-", gstrip_suffix, NULL);
|
||||||
|
-#else
|
||||||
|
+ const char *full_nm_suffix;
|
||||||
|
+ const char *full_gnm_suffix;
|
||||||
|
+ const char *full_strip_suffix;
|
||||||
|
+ const char *full_gstrip_suffix;
|
||||||
|
+
|
||||||
|
#ifdef LDD_SUFFIX
|
||||||
|
- const char *const full_ldd_suffix = ldd_suffix;
|
||||||
|
+ const char *full_ldd_suffix;
|
||||||
|
#endif
|
||||||
|
- const char *const full_nm_suffix = nm_suffix;
|
||||||
|
- const char *const full_gnm_suffix = gnm_suffix;
|
||||||
|
- const char *const full_strip_suffix = strip_suffix;
|
||||||
|
- const char *const full_gstrip_suffix = gstrip_suffix;
|
||||||
|
-#endif /* CROSS_DIRECTORY_STRUCTURE */
|
||||||
|
|
||||||
|
const char *arg;
|
||||||
|
FILE *outf;
|
||||||
|
@@ -840,6 +819,7 @@ main (int argc, char **argv)
|
||||||
|
const char **ld1;
|
||||||
|
bool use_plugin = false;
|
||||||
|
bool use_collect_ld = false;
|
||||||
|
+ bool is_cross_compiler = false;
|
||||||
|
|
||||||
|
/* The kinds of symbols we will have to consider when scanning the
|
||||||
|
outcome of a first pass link. This is ALL to start with, then might
|
||||||
|
@@ -864,17 +844,6 @@ main (int argc, char **argv)
|
||||||
|
#endif
|
||||||
|
int i;
|
||||||
|
|
||||||
|
- for (i = 0; i < USE_LD_MAX; i++)
|
||||||
|
-#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
- /* lld and mold are platform-agnostic and not prefixed with target
|
||||||
|
- triple. */
|
||||||
|
- if (!(i == USE_LLD_LD || i == USE_MOLD_LD))
|
||||||
|
- full_ld_suffixes[i] = concat (target_machine, "-", ld_suffixes[i],
|
||||||
|
- NULL);
|
||||||
|
- else
|
||||||
|
-#endif
|
||||||
|
- full_ld_suffixes[i] = ld_suffixes[i];
|
||||||
|
-
|
||||||
|
p = argv[0] + strlen (argv[0]);
|
||||||
|
while (p != argv[0] && !IS_DIR_SEPARATOR (p[-1]))
|
||||||
|
--p;
|
||||||
|
@@ -1050,6 +1019,65 @@ main (int argc, char **argv)
|
||||||
|
prefix_from_env ("COMPILER_PATH", &cpath);
|
||||||
|
prefix_from_env ("PATH", &path);
|
||||||
|
|
||||||
|
+ /* Determine the full path name of the C compiler to use. */
|
||||||
|
+ c_file_name = getenv ("COLLECT_GCC");
|
||||||
|
+ if (c_file_name == 0)
|
||||||
|
+ {
|
||||||
|
+ c_file_name = concat (target_machine, "-gcc", NULL);
|
||||||
|
+ p = find_a_file (&cpath, c_file_name, X_OK);
|
||||||
|
+ if (p == 0)
|
||||||
|
+ p = find_a_file (&path, c_file_name, X_OK);
|
||||||
|
+
|
||||||
|
+ if (p == 0) {
|
||||||
|
+ c_file_name = "gcc";
|
||||||
|
+ p = find_a_file (&cpath, c_file_name, X_OK);
|
||||||
|
+ if (p == 0)
|
||||||
|
+ p = find_a_file (&path, c_file_name, X_OK);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ p = find_a_file (&cpath, c_file_name, X_OK);
|
||||||
|
+
|
||||||
|
+ /* Here it should be safe to use the system search path since we should have
|
||||||
|
+ already qualified the name of the compiler when it is needed. */
|
||||||
|
+ if (p == 0)
|
||||||
|
+ p = find_a_file (&path, c_file_name, X_OK);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (p)
|
||||||
|
+ c_file_name = p;
|
||||||
|
+
|
||||||
|
+ if (c_file_name) {
|
||||||
|
+ is_cross_compiler = strncmp(basename(c_file_name), target_machine, strlen(target_machine)) == 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < USE_LD_MAX; i++)
|
||||||
|
+ /* lld and mold are platform-agnostic and not prefixed with target
|
||||||
|
+ triple. */
|
||||||
|
+ if (!(i == USE_LLD_LD || i == USE_MOLD_LD) && is_cross_compiler)
|
||||||
|
+ full_ld_suffixes[i] = concat (target_machine, "-", ld_suffixes[i],
|
||||||
|
+ NULL);
|
||||||
|
+ else
|
||||||
|
+ full_ld_suffixes[i] = ld_suffixes[i];
|
||||||
|
+
|
||||||
|
+ full_nm_suffix =
|
||||||
|
+ is_cross_compiler ? concat (target_machine, "-", nm_suffix, NULL) : nm_suffix;
|
||||||
|
+
|
||||||
|
+ full_gnm_suffix =
|
||||||
|
+ is_cross_compiler ? concat (target_machine, "-", gnm_suffix, NULL) : gnm_suffix;
|
||||||
|
+
|
||||||
|
+ full_strip_suffix =
|
||||||
|
+ is_cross_compiler ? concat (target_machine, "-", strip_suffix, NULL) : strip_suffix;
|
||||||
|
+
|
||||||
|
+ full_gstrip_suffix =
|
||||||
|
+ is_cross_compiler ? concat (target_machine, "-", gstrip_suffix, NULL) : gstrip_suffix;
|
||||||
|
+
|
||||||
|
+#ifdef LDD_SUFFIX
|
||||||
|
+ full_ldd_suffix =
|
||||||
|
+ is_cross_compiler ? concat (target_machine, "-", ldd_suffix, NULL) : ldd_suffix;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Try to discover a valid linker/nm/strip to use. */
|
||||||
|
|
||||||
|
/* Maybe we know the right file to use (if not cross). */
|
||||||
|
@@ -1139,27 +1167,6 @@ main (int argc, char **argv)
|
||||||
|
if (strip_file_name == 0)
|
||||||
|
strip_file_name = find_a_file (&path, full_strip_suffix, X_OK);
|
||||||
|
|
||||||
|
- /* Determine the full path name of the C compiler to use. */
|
||||||
|
- c_file_name = getenv ("COLLECT_GCC");
|
||||||
|
- if (c_file_name == 0)
|
||||||
|
- {
|
||||||
|
-#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
- c_file_name = concat (target_machine, "-gcc", NULL);
|
||||||
|
-#else
|
||||||
|
- c_file_name = "gcc";
|
||||||
|
-#endif
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- p = find_a_file (&cpath, c_file_name, X_OK);
|
||||||
|
-
|
||||||
|
- /* Here it should be safe to use the system search path since we should have
|
||||||
|
- already qualified the name of the compiler when it is needed. */
|
||||||
|
- if (p == 0)
|
||||||
|
- p = find_a_file (&path, c_file_name, X_OK);
|
||||||
|
-
|
||||||
|
- if (p)
|
||||||
|
- c_file_name = p;
|
||||||
|
-
|
||||||
|
*ld1++ = *ld2++ = ld_file_name;
|
||||||
|
|
||||||
|
/* Make temp file names. */
|
||||||
|
@@ -1595,6 +1602,8 @@ main (int argc, char **argv)
|
||||||
|
(c_file ? c_file : "not found"));
|
||||||
|
fprintf (stderr, "o_file = %s\n",
|
||||||
|
(o_file ? o_file : "not found"));
|
||||||
|
+ fprintf (stderr, "is_cross_compiler = %s\n",
|
||||||
|
+ (is_cross_compiler ? "yes" : "no"));
|
||||||
|
|
||||||
|
ptr = getenv ("COLLECT_GCC_OPTIONS");
|
||||||
|
if (ptr)
|
||||||
|
@@ -1644,9 +1653,9 @@ main (int argc, char **argv)
|
||||||
|
maybe_unlink (export_file);
|
||||||
|
#endif
|
||||||
|
if (lto_mode != LTO_MODE_NONE)
|
||||||
|
- maybe_run_lto_and_relink (ld1_argv, object_lst, object, false);
|
||||||
|
+ maybe_run_lto_and_relink (ld1_argv, object_lst, object, false, is_cross_compiler);
|
||||||
|
else
|
||||||
|
- post_ld_pass (/*temp_file*/false);
|
||||||
|
+ post_ld_pass (/*temp_file*/false, is_cross_compiler);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -1698,7 +1707,7 @@ main (int argc, char **argv)
|
||||||
|
do_link (ld1_argv, "ld1_args");
|
||||||
|
|
||||||
|
if (lto_mode)
|
||||||
|
- maybe_run_lto_and_relink (ld1_argv, object_lst, object, false);
|
||||||
|
+ maybe_run_lto_and_relink (ld1_argv, object_lst, object, false, is_cross_compiler);
|
||||||
|
|
||||||
|
/* Strip now if it was requested on the command line. */
|
||||||
|
if (strip_flag)
|
||||||
|
@@ -1716,7 +1725,7 @@ main (int argc, char **argv)
|
||||||
|
#ifdef COLLECT_EXPORT_LIST
|
||||||
|
maybe_unlink (export_file);
|
||||||
|
#endif
|
||||||
|
- post_ld_pass (/*temp_file*/false);
|
||||||
|
+ post_ld_pass (/*temp_file*/false, is_cross_compiler);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1799,15 +1808,15 @@ main (int argc, char **argv)
|
||||||
|
do_link (ld2_argv, "ld2_args");
|
||||||
|
|
||||||
|
if (lto_mode)
|
||||||
|
- maybe_run_lto_and_relink (ld2_argv, object_lst, object, false);
|
||||||
|
+ maybe_run_lto_and_relink (ld2_argv, object_lst, object, false, is_cross_compiler);
|
||||||
|
#else
|
||||||
|
/* Otherwise, simply call ld because link is already done. */
|
||||||
|
if (lto_mode)
|
||||||
|
- maybe_run_lto_and_relink (ld2_argv, object_lst, object, true);
|
||||||
|
+ maybe_run_lto_and_relink (ld2_argv, object_lst, object, true, is_cross_compiler);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fork_execute ("ld", ld2_argv, HAVE_GNU_LD && at_file_supplied, "ld_args");
|
||||||
|
- post_ld_pass (/*temp_file*/false);
|
||||||
|
+ post_ld_pass (/*temp_file*/false, is_cross_compiler);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Let scan_prog_file do any final mods (OSF/rose needs this for
|
||||||
|
@@ -3020,7 +3029,7 @@ process_args (int *argcp, char **argv) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-do_dsymutil (const char *output_file) {
|
||||||
|
+do_dsymutil (const char *output_file, bool is_cross_compiler) {
|
||||||
|
const char *dsymutil = 0;
|
||||||
|
struct pex_obj *pex;
|
||||||
|
char **real_argv = XCNEWVEC (char *, verbose ? 4 : 3);
|
||||||
|
@@ -3032,11 +3041,7 @@ do_dsymutil (const char *output_file) {
|
||||||
|
here is consistent with the way other installations work (and one can
|
||||||
|
always symlink a multitarget dsymutil with a target-specific name). */
|
||||||
|
const char *dsname = "dsymutil";
|
||||||
|
-#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
- const char *qname = concat (target_machine, "-", dsname, NULL);
|
||||||
|
-#else
|
||||||
|
- const char *qname = dsname;
|
||||||
|
-#endif
|
||||||
|
+ const char *qname = is_cross_compiler ? concat (target_machine, "-", dsname, NULL) : dsname;
|
||||||
|
#ifdef DEFAULT_DSYMUTIL
|
||||||
|
/* Configured default takes priority. */
|
||||||
|
if (dsymutil == 0 && access (DEFAULT_DSYMUTIL, X_OK) == 0)
|
||||||
|
@@ -3071,14 +3076,14 @@ do_dsymutil (const char *output_file) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-post_ld_pass (bool temp_file) {
|
||||||
|
+post_ld_pass (bool temp_file, bool is_cross_compiler) {
|
||||||
|
if (!(temp_file && flag_idsym) && !flag_dsym)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- do_dsymutil (output_file);
|
||||||
|
+ do_dsymutil (output_file, is_cross_compiler);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void
|
||||||
|
process_args (int *argcp ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { }
|
||||||
|
-static void post_ld_pass (bool temp_file ATTRIBUTE_UNUSED) { }
|
||||||
|
+static void post_ld_pass (bool temp_file ATTRIBUTE_UNUSED, bool is_cross_compiler ATTRIBUTE_UNUSED) { }
|
||||||
|
#endif
|
||||||
3
pkgs/development/compilers/gcc/ng/README.md
Normal file
3
pkgs/development/compilers/gcc/ng/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# GCC Next-Generation
|
||||||
|
|
||||||
|
Experimental split GCC package set based on the LLVM package set design.
|
||||||
47
pkgs/development/compilers/gcc/ng/common/common-let.nix
Normal file
47
pkgs/development/compilers/gcc/ng/common/common-let.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchurl ? null,
|
||||||
|
fetchgit ? null,
|
||||||
|
release_version ? null,
|
||||||
|
gitRelease ? null,
|
||||||
|
officialRelease ? null,
|
||||||
|
monorepoSrc' ? null,
|
||||||
|
version ? null,
|
||||||
|
}@args:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
gcc_meta = {
|
||||||
|
license = with lib.licenses; [ gpl3Plus ];
|
||||||
|
teams = [ lib.teams.gcc ];
|
||||||
|
};
|
||||||
|
|
||||||
|
releaseInfo =
|
||||||
|
if gitRelease != null then
|
||||||
|
rec {
|
||||||
|
original = gitRelease;
|
||||||
|
release_version = args.version or original.version;
|
||||||
|
version = gitRelease.rev-version;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rec {
|
||||||
|
original = officialRelease;
|
||||||
|
release_version = args.version or original.version;
|
||||||
|
version =
|
||||||
|
if original ? candidate then "${release_version}-${original.candidate}" else release_version;
|
||||||
|
};
|
||||||
|
|
||||||
|
monorepoSrc =
|
||||||
|
if monorepoSrc' != null then
|
||||||
|
monorepoSrc'
|
||||||
|
else if gitRelease != null then
|
||||||
|
fetchgit {
|
||||||
|
url = "https://gcc.gnu.org/git/gcc.git";
|
||||||
|
inherit (gitRelease) rev;
|
||||||
|
hash = releaseInfo.original.sha256;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fetchurl {
|
||||||
|
url = "mirror://gcc/releases/gcc-${releaseInfo.version}/gcc-${releaseInfo.version}.tar.xz";
|
||||||
|
hash = releaseInfo.original.sha256;
|
||||||
|
};
|
||||||
|
}
|
||||||
221
pkgs/development/compilers/gcc/ng/common/default.nix
Normal file
221
pkgs/development/compilers/gcc/ng/common/default.nix
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
newScope,
|
||||||
|
stdenv,
|
||||||
|
overrideCC,
|
||||||
|
fetchgit,
|
||||||
|
fetchurl,
|
||||||
|
gitRelease ? null,
|
||||||
|
officialRelease ? null,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
version ? null,
|
||||||
|
patchesFn ? lib.id,
|
||||||
|
wrapCCWith,
|
||||||
|
binutilsNoLibc,
|
||||||
|
binutils,
|
||||||
|
buildGccPackages,
|
||||||
|
targetGccPackages,
|
||||||
|
makeScopeWithSplicing',
|
||||||
|
otherSplices,
|
||||||
|
...
|
||||||
|
}@args:
|
||||||
|
|
||||||
|
assert lib.assertMsg (lib.xor (gitRelease != null) (officialRelease != null)) (
|
||||||
|
"must specify `gitRelease` or `officialRelease`"
|
||||||
|
+ (lib.optionalString (gitRelease != null) " — not both")
|
||||||
|
);
|
||||||
|
|
||||||
|
let
|
||||||
|
monorepoSrc' = monorepoSrc;
|
||||||
|
|
||||||
|
metadata = rec {
|
||||||
|
inherit
|
||||||
|
(import ./common-let.nix {
|
||||||
|
inherit (args)
|
||||||
|
lib
|
||||||
|
gitRelease
|
||||||
|
officialRelease
|
||||||
|
version
|
||||||
|
;
|
||||||
|
})
|
||||||
|
releaseInfo
|
||||||
|
;
|
||||||
|
inherit (releaseInfo) release_version version;
|
||||||
|
inherit
|
||||||
|
(import ./common-let.nix {
|
||||||
|
inherit
|
||||||
|
lib
|
||||||
|
fetchgit
|
||||||
|
fetchurl
|
||||||
|
release_version
|
||||||
|
gitRelease
|
||||||
|
officialRelease
|
||||||
|
monorepoSrc'
|
||||||
|
version
|
||||||
|
;
|
||||||
|
})
|
||||||
|
gcc_meta
|
||||||
|
monorepoSrc
|
||||||
|
;
|
||||||
|
src = monorepoSrc;
|
||||||
|
versionDir =
|
||||||
|
(builtins.toString ../.)
|
||||||
|
+ "/${if (gitRelease != null) then "git" else lib.versions.major release_version}";
|
||||||
|
getVersionFile =
|
||||||
|
p:
|
||||||
|
builtins.path {
|
||||||
|
name = builtins.baseNameOf p;
|
||||||
|
path =
|
||||||
|
let
|
||||||
|
patches = args.patchesFn (import ./patches.nix);
|
||||||
|
|
||||||
|
constraints = patches."${p}" or null;
|
||||||
|
matchConstraint =
|
||||||
|
{
|
||||||
|
before ? null,
|
||||||
|
after ? null,
|
||||||
|
path,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
check = fn: value: if value == null then true else fn release_version value;
|
||||||
|
matchBefore = check lib.versionOlder before;
|
||||||
|
matchAfter = check lib.versionAtLeast after;
|
||||||
|
in
|
||||||
|
matchBefore && matchAfter;
|
||||||
|
|
||||||
|
patchDir =
|
||||||
|
toString
|
||||||
|
(
|
||||||
|
if constraints == null then
|
||||||
|
{ path = metadata.versionDir; }
|
||||||
|
else
|
||||||
|
(lib.findFirst matchConstraint { path = metadata.versionDir; } constraints)
|
||||||
|
).path;
|
||||||
|
in
|
||||||
|
"${patchDir}/${p}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
makeScopeWithSplicing' {
|
||||||
|
inherit otherSplices;
|
||||||
|
f =
|
||||||
|
gccPackages:
|
||||||
|
let
|
||||||
|
callPackage = gccPackages.newScope (args // metadata);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
stdenv = overrideCC stdenv gccPackages.gcc;
|
||||||
|
|
||||||
|
gcc-unwrapped = callPackage ./gcc {
|
||||||
|
bintools = binutils;
|
||||||
|
};
|
||||||
|
|
||||||
|
libbacktrace = callPackage ./libbacktrace { };
|
||||||
|
libiberty = callPackage ./libiberty { };
|
||||||
|
libsanitizer = callPackage ./libsanitizer { };
|
||||||
|
libquadmath = callPackage ./libquadmath { };
|
||||||
|
|
||||||
|
gfortran-unwrapped = gccPackages.gcc-unwrapped.override {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gcc;
|
||||||
|
langFortran = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gfortran = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gfortran-unwrapped;
|
||||||
|
libcxx = targetGccPackages.libstdcxx;
|
||||||
|
bintools = binutils;
|
||||||
|
extraPackages = [
|
||||||
|
targetGccPackages.libgcc
|
||||||
|
];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-B${targetGccPackages.libgcc}/lib"
|
||||||
|
"-B${targetGccPackages.libssp}/lib"
|
||||||
|
"-B${targetGccPackages.libatomic}/lib"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
gcc = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gcc-unwrapped;
|
||||||
|
libcxx = targetGccPackages.libstdcxx;
|
||||||
|
bintools = binutils;
|
||||||
|
extraPackages = [
|
||||||
|
targetGccPackages.libgcc
|
||||||
|
];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-B${targetGccPackages.libgcc}/lib"
|
||||||
|
"-B${targetGccPackages.libssp}/lib"
|
||||||
|
"-B${targetGccPackages.libatomic}/lib"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
gccNoLibgcc = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gcc-unwrapped;
|
||||||
|
libcxx = null;
|
||||||
|
bintools = binutilsNoLibc;
|
||||||
|
extraPackages = [ ];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-nostartfiles"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
libgcc = callPackage ./libgcc {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gccNoLibgcc;
|
||||||
|
};
|
||||||
|
|
||||||
|
gccWithLibc = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gcc-unwrapped;
|
||||||
|
libcxx = null;
|
||||||
|
bintools = binutils;
|
||||||
|
extraPackages = [
|
||||||
|
targetGccPackages.libgcc
|
||||||
|
];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-B${targetGccPackages.libgcc}/lib"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
libssp = callPackage ./libssp {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gccWithLibc;
|
||||||
|
};
|
||||||
|
|
||||||
|
gccWithLibssp = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gcc-unwrapped;
|
||||||
|
libcxx = null;
|
||||||
|
bintools = binutils;
|
||||||
|
extraPackages = [
|
||||||
|
targetGccPackages.libgcc
|
||||||
|
];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-B${targetGccPackages.libgcc}/lib"
|
||||||
|
"-B${targetGccPackages.libssp}/lib"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
libatomic = callPackage ./libatomic {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gccWithLibssp;
|
||||||
|
};
|
||||||
|
|
||||||
|
gccWithLibatomic = wrapCCWith rec {
|
||||||
|
cc = gccPackages.gcc-unwrapped;
|
||||||
|
libcxx = null;
|
||||||
|
bintools = binutils;
|
||||||
|
extraPackages = [
|
||||||
|
targetGccPackages.libgcc
|
||||||
|
];
|
||||||
|
nixSupport.cc-cflags = [
|
||||||
|
"-B${targetGccPackages.libgcc}/lib"
|
||||||
|
"-B${targetGccPackages.libssp}/lib"
|
||||||
|
"-B${targetGccPackages.libatomic}/lib"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
libgfortran = callPackage ./libgfortran {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gcc;
|
||||||
|
inherit (buildGccPackages) gfortran;
|
||||||
|
};
|
||||||
|
|
||||||
|
libstdcxx = callPackage ./libstdcxx {
|
||||||
|
stdenv = overrideCC stdenv buildGccPackages.gccWithLibatomic;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
249
pkgs/development/compilers/gcc/ng/common/gcc/default.nix
Normal file
249
pkgs/development/compilers/gcc/ng/common/gcc/default.nix
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
langAda ? false,
|
||||||
|
langC ? true,
|
||||||
|
langCC ? true,
|
||||||
|
langD ? false,
|
||||||
|
langFortran ? false,
|
||||||
|
langGo ? false,
|
||||||
|
langJava ? false,
|
||||||
|
langObjC ? stdenv.targetPlatform.isDarwin,
|
||||||
|
langObjCpp ? stdenv.targetPlatform.isDarwin,
|
||||||
|
langJit ? false,
|
||||||
|
enablePlugin ? lib.systems.equals stdenv.hostPlatform stdenv.buildPlatform,
|
||||||
|
runCommand,
|
||||||
|
buildPackages,
|
||||||
|
isl,
|
||||||
|
zlib,
|
||||||
|
gmp,
|
||||||
|
libmpc,
|
||||||
|
mpfr,
|
||||||
|
libelf,
|
||||||
|
perl,
|
||||||
|
texinfo,
|
||||||
|
which,
|
||||||
|
gettext,
|
||||||
|
getVersionFile,
|
||||||
|
buildGccPackages,
|
||||||
|
targetPackages,
|
||||||
|
libc,
|
||||||
|
bintools,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (stdenv) targetPlatform hostPlatform;
|
||||||
|
targetPrefix = lib.optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "${targetPrefix}${if langFortran then "gfortran" else "gcc"}";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = monorepoSrc;
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"info"
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Submitted:
|
||||||
|
# - https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577639.html
|
||||||
|
# - https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577640.html
|
||||||
|
# - https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577638.html
|
||||||
|
#
|
||||||
|
# In Git: https://github.com/Ericson2314/gcc/tree/prog-target-15
|
||||||
|
(getVersionFile "gcc/0001-find_a_program-First-search-with-machine-prefix.patch")
|
||||||
|
(getVersionFile "gcc/0002-driver-for_each_pass-Pass-to-callback-whether-dir-is.patch")
|
||||||
|
(getVersionFile "gcc/0003-find_a_program-Only-search-for-prefixed-paths-in-und.patch")
|
||||||
|
|
||||||
|
# Submitted: https://inbox.sourceware.org/gcc-patches/20210818203840.1550133-1-John.Ericson@Obsidian.Systems/T/#t
|
||||||
|
# In Git: https://github.com/Ericson2314/gcc/tree/libgcc-custom-threading-model-15
|
||||||
|
(getVersionFile "gcc/custom-threading-model.patch")
|
||||||
|
|
||||||
|
# TODO: fix up and send to upstream
|
||||||
|
(getVersionFile "gcc/fix-collect2-paths.diff")
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
hardeningDisable = [
|
||||||
|
"format" # Some macro-indirect formatting in e.g. libcpp
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||||
|
nativeBuildInputs = [
|
||||||
|
texinfo
|
||||||
|
which
|
||||||
|
gettext
|
||||||
|
] ++ lib.optional (perl != null) perl;
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
gmp
|
||||||
|
libmpc
|
||||||
|
mpfr
|
||||||
|
libelf
|
||||||
|
]
|
||||||
|
++ lib.optional (isl != null) isl
|
||||||
|
++ lib.optional (zlib != null) zlib;
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p ./build
|
||||||
|
buildRoot=$(readlink -e "./build")
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch =
|
||||||
|
''
|
||||||
|
configureScripts=$(find . -name configure)
|
||||||
|
for configureScript in $configureScripts; do
|
||||||
|
patchShebangs $configureScript
|
||||||
|
done
|
||||||
|
|
||||||
|
patchShebangs libbacktrace/install-debuginfo-for-buildid.sh
|
||||||
|
patchShebangs runtest
|
||||||
|
''
|
||||||
|
# This should kill all the stdinc frameworks that gcc and friends like to
|
||||||
|
# insert into default search paths.
|
||||||
|
+ lib.optionalString hostPlatform.isDarwin ''
|
||||||
|
substituteInPlace gcc/config/darwin-c.c \
|
||||||
|
--replace 'if (stdinc)' 'if (0)'
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure =
|
||||||
|
# Don't built target libraries, because we want to build separately
|
||||||
|
''
|
||||||
|
substituteInPlace configure \
|
||||||
|
--replace 'noconfigdirs=""' 'noconfigdirs="$noconfigdirs $target_libraries"'
|
||||||
|
''
|
||||||
|
# HACK: if host and target config are the same, but the platforms are
|
||||||
|
# actually different we need to convince the configure script that it
|
||||||
|
# is in fact building a cross compiler although it doesn't believe it.
|
||||||
|
+
|
||||||
|
lib.optionalString (targetPlatform.config == hostPlatform.config && targetPlatform != hostPlatform)
|
||||||
|
''
|
||||||
|
substituteInPlace configure --replace is_cross_compiler=no is_cross_compiler=yes
|
||||||
|
''
|
||||||
|
# Cannot configure from src dir
|
||||||
|
+ ''
|
||||||
|
cd "$buildRoot"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/libbacktrace/.libs"
|
||||||
|
cp ${buildGccPackages.libbacktrace}/lib/libbacktrace.a "$buildRoot/libbacktrace/.libs/libbacktrace.a"
|
||||||
|
cp -r ${buildGccPackages.libbacktrace}/lib/*.la "$buildRoot/libbacktrace"
|
||||||
|
cp -r ${buildGccPackages.libbacktrace.dev}/include/*.h "$buildRoot/libbacktrace"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/libiberty/pic"
|
||||||
|
cp ${buildGccPackages.libiberty}/lib/libiberty.a "$buildRoot/libiberty"
|
||||||
|
cp ${buildGccPackages.libiberty}/lib/libiberty_pic.a "$buildRoot/libiberty/pic/libiberty.a"
|
||||||
|
touch "$buildRoot/libiberty/stamp-noasandir"
|
||||||
|
touch "$buildRoot/libiberty/stamp-h"
|
||||||
|
touch "$buildRoot/libiberty/stamp-picdir"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/build-${stdenv.hostPlatform.config}"
|
||||||
|
cp -r "$buildRoot/libiberty" "$buildRoot/build-${stdenv.hostPlatform.config}/libiberty"
|
||||||
|
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Don't store the configure flags in the resulting executables.
|
||||||
|
postConfigure = ''
|
||||||
|
sed -e '/TOPLEVEL_CONFIGURE_ARGUMENTS=/d' -i Makefile
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontDisableStatic = true;
|
||||||
|
|
||||||
|
configurePlatforms = [
|
||||||
|
"build"
|
||||||
|
"host"
|
||||||
|
"target"
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags =
|
||||||
|
[
|
||||||
|
# Force target prefix. The behavior if `--target` and `--host` are
|
||||||
|
# specified is inconsistent: Sometimes specifying `--target` always causes
|
||||||
|
# a prefix to be generated, sometimes it's only added if the `--host` and
|
||||||
|
# `--target` differ. This means that sometimes there may be a prefix even
|
||||||
|
# though nixpkgs doesn't expect one and sometimes there may be none even
|
||||||
|
# though nixpkgs expects one (since not all information is serialized into
|
||||||
|
# the config attribute). The easiest way out of these problems is to always
|
||||||
|
# set the program prefix, so gcc will conform to our expectations.
|
||||||
|
"--program-prefix=${targetPrefix}"
|
||||||
|
|
||||||
|
"--disable-dependency-tracking"
|
||||||
|
"--enable-fast-install"
|
||||||
|
"--disable-serial-configure"
|
||||||
|
"--disable-bootstrap"
|
||||||
|
"--disable-decimal-float"
|
||||||
|
"--disable-install-libiberty"
|
||||||
|
"--disable-multilib"
|
||||||
|
"--disable-nls"
|
||||||
|
"--disable-shared"
|
||||||
|
"--enable-languages=${
|
||||||
|
lib.concatStrings (
|
||||||
|
lib.intersperse "," (
|
||||||
|
lib.optional langC "c"
|
||||||
|
++ lib.optional langCC "c++"
|
||||||
|
++ lib.optional langD "d"
|
||||||
|
++ lib.optional langFortran "fortran"
|
||||||
|
++ lib.optional langJava "java"
|
||||||
|
++ lib.optional langAda "ada"
|
||||||
|
++ lib.optional langGo "go"
|
||||||
|
++ lib.optional langObjC "objc"
|
||||||
|
++ lib.optional langObjCpp "obj-c++"
|
||||||
|
++ lib.optional langJit "jit"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}"
|
||||||
|
(lib.withFeature (isl != null) "isl")
|
||||||
|
"--without-headers"
|
||||||
|
"--with-gnu-as"
|
||||||
|
"--with-gnu-ld"
|
||||||
|
"--with-as=${lib.getExe' bintools "${bintools.targetPrefix}as"}"
|
||||||
|
"--with-system-zlib"
|
||||||
|
"--without-included-gettext"
|
||||||
|
"--enable-linker-build-id"
|
||||||
|
"--with-sysroot=${lib.getDev (targetPackages.libc or libc)}"
|
||||||
|
"--with-native-system-header-dir=/include"
|
||||||
|
]
|
||||||
|
++ lib.optionals enablePlugin [
|
||||||
|
"--enable-plugin"
|
||||||
|
"--enable-plugins"
|
||||||
|
]
|
||||||
|
++
|
||||||
|
# Only pass when the arch supports it.
|
||||||
|
# Exclude RISC-V because GCC likes to fail when the string is empty on RISC-V.
|
||||||
|
lib.optionals (targetPlatform.isAarch || targetPlatform.isAvr || targetPlatform.isx86_64) [
|
||||||
|
"--with-multilib-list="
|
||||||
|
];
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
moveToOutput "lib/gcc/${targetPlatform.config}/${version}/plugin/include" "''${!outputDev}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit
|
||||||
|
langC
|
||||||
|
langCC
|
||||||
|
langObjC
|
||||||
|
langObjCpp
|
||||||
|
langAda
|
||||||
|
langFortran
|
||||||
|
langGo
|
||||||
|
;
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
getVersionFile,
|
||||||
|
autoreconfHook269,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libatomic";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = monorepoSrc;
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(getVersionFile "gcc/custom-threading-model.patch")
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook269
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sourceRoot=$(readlink -e "./libatomic")
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../build
|
||||||
|
cd ../build
|
||||||
|
configureScript=$sourceRoot/configure
|
||||||
|
chmod +x "$configureScript"
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libbacktrace";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = runCommand "libbacktrace-src-${version}" { src = monorepoSrc; } ''
|
||||||
|
runPhase unpackPhase
|
||||||
|
|
||||||
|
mkdir -p "$out/gcc"
|
||||||
|
cp gcc/BASE-VER "$out/gcc"
|
||||||
|
cp gcc/DATESTAMP "$out/gcc"
|
||||||
|
|
||||||
|
cp -r include "$out"
|
||||||
|
cp -r libbacktrace "$out"
|
||||||
|
|
||||||
|
cp config.guess "$out"
|
||||||
|
cp config.rpath "$out"
|
||||||
|
cp config.sub "$out"
|
||||||
|
cp config-ml.in "$out"
|
||||||
|
cp ltmain.sh "$out"
|
||||||
|
cp install-sh "$out"
|
||||||
|
cp move-if-change "$out"
|
||||||
|
cp mkinstalldirs "$out"
|
||||||
|
cp test-driver "$out"
|
||||||
|
|
||||||
|
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
sourceRoot = "${finalAttrs.src.name}/libbacktrace";
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../../build
|
||||||
|
cd ../../build
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p "$out/lib"
|
||||||
|
cp .libs/*.a "$out/lib"
|
||||||
|
cp libbacktrace*.la "$out/lib"
|
||||||
|
|
||||||
|
mkdir -p "$dev/include"
|
||||||
|
cp backtrace-supported.h "$dev/include"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
205
pkgs/development/compilers/gcc/ng/common/libgcc/default.nix
Normal file
205
pkgs/development/compilers/gcc/ng/common/libgcc/default.nix
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
getVersionFile,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
autoreconfHook269,
|
||||||
|
buildGccPackages,
|
||||||
|
buildPackages,
|
||||||
|
which,
|
||||||
|
python3,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libgcc";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = monorepoSrc;
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
depsBuildBuild = [
|
||||||
|
buildPackages.stdenv.cc
|
||||||
|
buildGccPackages.libiberty
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook269
|
||||||
|
which
|
||||||
|
python3
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(getVersionFile "gcc/custom-threading-model.patch")
|
||||||
|
];
|
||||||
|
|
||||||
|
autoreconfFlags = "--install --force --verbose . libgcc";
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p ./build
|
||||||
|
buildRoot=$(readlink -e "./build")
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sourceRoot=$(readlink -e "./libgcc")
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
preConfigure =
|
||||||
|
''
|
||||||
|
cd "$buildRoot"
|
||||||
|
|
||||||
|
mkdir -p build-${stdenv.buildPlatform.config}/libiberty/
|
||||||
|
cd build-${stdenv.buildPlatform.config}/libiberty/
|
||||||
|
ln -s ${buildGccPackages.libiberty}/lib/libiberty.a ./
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc"
|
||||||
|
cd "$buildRoot/gcc"
|
||||||
|
|
||||||
|
(
|
||||||
|
export AS_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $AS_FOR_BUILD)"}
|
||||||
|
export CC_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CC_FOR_BUILD)"}
|
||||||
|
export CPP_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CPP_FOR_BUILD)"}
|
||||||
|
export CXX_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CXX_FOR_BUILD)"}
|
||||||
|
export LD_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc.bintools "$(basename $LD_FOR_BUILD)"}
|
||||||
|
|
||||||
|
export AS=$AS_FOR_BUILD
|
||||||
|
export CC=$CC_FOR_BUILD
|
||||||
|
export CPP=$CPP_FOR_BUILD
|
||||||
|
export CXX=$CXX_FOR_BUILD
|
||||||
|
export LD=$LD_FOR_BUILD
|
||||||
|
|
||||||
|
export AS_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $AS)"}
|
||||||
|
export CC_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $CC)"}
|
||||||
|
export CPP_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $CPP)"}
|
||||||
|
export LD_FOR_TARGET=${lib.getExe' stdenv.cc.bintools "$(basename $LD)"}
|
||||||
|
|
||||||
|
export NIX_CFLAGS_COMPILE_FOR_BUILD+=' -DGENERATOR_FILE=1'
|
||||||
|
|
||||||
|
"$sourceRoot/../gcc/configure" $topLevelConfigureFlags
|
||||||
|
|
||||||
|
sed -e 's,libgcc.mvars:.*$,libgcc.mvars:,' -i Makefile
|
||||||
|
|
||||||
|
make \
|
||||||
|
config.h \
|
||||||
|
libgcc.mvars \
|
||||||
|
tconfig.h \
|
||||||
|
tm.h \
|
||||||
|
options.h \
|
||||||
|
insn-constants.h \
|
||||||
|
insn-modes.h \
|
||||||
|
version.h
|
||||||
|
)
|
||||||
|
mkdir -p "$buildRoot/gcc/include"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc/${stdenv.hostPlatform.config}/libgcc"
|
||||||
|
cd "$buildRoot/gcc/${stdenv.hostPlatform.config}/libgcc"
|
||||||
|
configureScript=$sourceRoot/configure
|
||||||
|
chmod +x "$configureScript"
|
||||||
|
|
||||||
|
export AS_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $AS_FOR_BUILD)"}
|
||||||
|
export CC_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CC_FOR_BUILD)"}
|
||||||
|
export CPP_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CPP_FOR_BUILD)"}
|
||||||
|
export CXX_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$(basename $CXX_FOR_BUILD)"}
|
||||||
|
export LD_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc.bintools "$(basename $LD_FOR_BUILD)"}
|
||||||
|
|
||||||
|
export AS=${lib.getExe' stdenv.cc "$(basename $AS)"}
|
||||||
|
export CC=${lib.getExe' stdenv.cc "$(basename $CC)"}
|
||||||
|
export CPP=${lib.getExe' stdenv.cc "$(basename $CPP)"}
|
||||||
|
export CXX=${lib.getExe' stdenv.cc "$(basename $CXX)"}
|
||||||
|
export LD=${lib.getExe' stdenv.cc.bintools "$(basename $LD)"}
|
||||||
|
|
||||||
|
export AS_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $AS_FOR_TARGET)"}
|
||||||
|
export CC_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $CC_FOR_TARGET)"}
|
||||||
|
export CPP_FOR_TARGET=${lib.getExe' stdenv.cc "$(basename $CPP_FOR_TARGET)"}
|
||||||
|
export LD_FOR_TARGET=${lib.getExe' stdenv.cc.bintools "$(basename $LD_FOR_TARGET)"}
|
||||||
|
''
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
NIX_CFLAGS_COMPILE_OLD=$NIX_CFLAGS_COMPILE
|
||||||
|
NIX_CFLAGS_COMPILE+=' -isystem ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${version}/include-fixed'
|
||||||
|
'';
|
||||||
|
|
||||||
|
topLevelConfigureFlags =
|
||||||
|
[
|
||||||
|
"--build=${stdenv.buildPlatform.config}"
|
||||||
|
"--host=${stdenv.buildPlatform.config}"
|
||||||
|
"--target=${stdenv.hostPlatform.config}"
|
||||||
|
|
||||||
|
"--disable-bootstrap"
|
||||||
|
"--disable-multilib"
|
||||||
|
"--enable-languages=c"
|
||||||
|
|
||||||
|
"--disable-fixincludes"
|
||||||
|
"--disable-intl"
|
||||||
|
"--disable-lto"
|
||||||
|
"--disable-libatomic"
|
||||||
|
"--disable-libbacktrace"
|
||||||
|
"--disable-libcpp"
|
||||||
|
"--disable-libssp"
|
||||||
|
"--disable-libquadmath"
|
||||||
|
"--disable-libgomp"
|
||||||
|
"--disable-libvtv"
|
||||||
|
"--disable-vtable-verify"
|
||||||
|
|
||||||
|
"--with-system-zlib"
|
||||||
|
]
|
||||||
|
++
|
||||||
|
lib.optional (!stdenv.hostPlatform.isRiscV)
|
||||||
|
# RISC-V does not like it being empty
|
||||||
|
"--with-multilib-list="
|
||||||
|
++
|
||||||
|
lib.optional (stdenv.hostPlatform.libc == "glibc")
|
||||||
|
# Cheat and use previous stage's glibc to avoid infinite recursion. As
|
||||||
|
# of GCC 11, libgcc only cares if the version is greater than 2.19,
|
||||||
|
# which is quite ancient, so this little lie should be fine.
|
||||||
|
"--with-glibc-version=${buildPackages.glibc.version}";
|
||||||
|
|
||||||
|
configurePlatforms = [
|
||||||
|
"build"
|
||||||
|
"host"
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--disable-dependency-tracking"
|
||||||
|
"--with-threads=single"
|
||||||
|
# $CC cannot link binaries, let alone run then
|
||||||
|
"cross_compiling=true"
|
||||||
|
# Do not have dynamic linker without libc
|
||||||
|
"--enable-static"
|
||||||
|
"--disable-shared"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set the variable back the way it was, see corresponding code in
|
||||||
|
# `preConfigure`.
|
||||||
|
postConfigure = lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
NIX_CFLAGS_COMPILE=$NIX_CFLAGS_COMPILE_OLD
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [ "MULTIBUILDTOP:=../" ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
cp gthr-default.h "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"
|
||||||
|
moveToOutput "lib/gcc/${stdenv.hostPlatform.config}/${version}/include" "$dev"
|
||||||
|
mkdir -p "$out/lib" "$dev/include"
|
||||||
|
ln -s "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}"/* "$out/lib"
|
||||||
|
ln -s "$dev/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"/* "$dev/include/"
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
190
pkgs/development/compilers/gcc/ng/common/libgfortran/default.nix
Normal file
190
pkgs/development/compilers/gcc/ng/common/libgfortran/default.nix
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gfortran,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
buildPackages,
|
||||||
|
autoreconfHook269,
|
||||||
|
libiberty,
|
||||||
|
libgcc,
|
||||||
|
libbacktrace,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libgfortran";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = monorepoSrc;
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook269
|
||||||
|
libiberty
|
||||||
|
gfortran
|
||||||
|
];
|
||||||
|
|
||||||
|
autoreconfFlags = "--install --force --verbose . libgfortran";
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p ./build
|
||||||
|
buildRoot=$(readlink -e "./build")
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sourceRoot=$(readlink -e "./libgfortran")
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
preConfigure =
|
||||||
|
''
|
||||||
|
cd "$buildRoot"
|
||||||
|
|
||||||
|
mkdir -p build-${stdenv.buildPlatform.config}/libiberty/
|
||||||
|
cd build-${stdenv.buildPlatform.config}/libiberty/
|
||||||
|
ln -s ${libiberty}/lib/libiberty.a ./
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc"
|
||||||
|
cd "$buildRoot/gcc"
|
||||||
|
|
||||||
|
(
|
||||||
|
export AS_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$AS_FOR_BUILD"}
|
||||||
|
export CC_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CC_FOR_BUILD"}
|
||||||
|
export CPP_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CPP_FOR_BUILD"}
|
||||||
|
export CXX_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CXX_FOR_BUILD"}
|
||||||
|
export LD_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc.bintools "$LD_FOR_BUILD"}
|
||||||
|
|
||||||
|
export AS=$AS_FOR_BUILD
|
||||||
|
export CC=$CC_FOR_BUILD
|
||||||
|
export CPP=$CPP_FOR_BUILD
|
||||||
|
export CXX=$CXX_FOR_BUILD
|
||||||
|
export LD=$LD_FOR_BUILD
|
||||||
|
|
||||||
|
export AS_FOR_TARGET=${lib.getExe' stdenv.cc "$AS"}
|
||||||
|
export CC_FOR_TARGET=${lib.getExe' stdenv.cc "$CC"}
|
||||||
|
export CPP_FOR_TARGET=${lib.getExe' stdenv.cc "$CPP"}
|
||||||
|
export LD_FOR_TARGET=${lib.getExe' stdenv.cc.bintools "$LD"}
|
||||||
|
|
||||||
|
export NIX_CFLAGS_COMPILE_FOR_BUILD+=' -DGENERATOR_FILE=1'
|
||||||
|
|
||||||
|
"$sourceRoot/../gcc/configure" $topLevelConfigureFlags
|
||||||
|
|
||||||
|
make \
|
||||||
|
config.h
|
||||||
|
)
|
||||||
|
mkdir -p "$buildRoot/gcc/include"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc/libbacktrace/.libs"
|
||||||
|
cp ${libbacktrace}/lib/libbacktrace.a "$buildRoot/gcc/libbacktrace/.libs/libbacktrace.a"
|
||||||
|
cp -r ${libbacktrace}/lib/*.la "$buildRoot/gcc/libbacktrace"
|
||||||
|
cp -r ${libbacktrace.dev}/include/*.h "$buildRoot/gcc/libbacktrace"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc/libgcc"
|
||||||
|
ln -s "${libgcc.dev}/include/gthr-default.h" "$buildRoot/gcc/libgcc"
|
||||||
|
|
||||||
|
mkdir -p "$buildRoot/gcc/${stdenv.hostPlatform.config}/libgfortran"
|
||||||
|
ln -s "$buildRoot/gcc/libbacktrace" "$buildRoot/gcc/${stdenv.buildPlatform.config}/libbacktrace"
|
||||||
|
ln -s "$buildRoot/gcc/libgcc" "$buildRoot/gcc/${stdenv.buildPlatform.config}/libgcc"
|
||||||
|
cd "$buildRoot/gcc/${stdenv.hostPlatform.config}/libgfortran"
|
||||||
|
configureScript=$sourceRoot/configure
|
||||||
|
chmod +x "$configureScript"
|
||||||
|
|
||||||
|
export AS_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$AS_FOR_BUILD"}
|
||||||
|
export CC_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CC_FOR_BUILD"}
|
||||||
|
export CPP_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CPP_FOR_BUILD"}
|
||||||
|
export CXX_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc "$CXX_FOR_BUILD"}
|
||||||
|
export LD_FOR_BUILD=${lib.getExe' buildPackages.stdenv.cc.bintools "$LD_FOR_BUILD"}
|
||||||
|
|
||||||
|
export AS=${lib.getExe' stdenv.cc "$AS"}
|
||||||
|
export CC=${lib.getExe' stdenv.cc "$CC"}
|
||||||
|
export CPP=${lib.getExe' stdenv.cc "$CPP"}
|
||||||
|
export CXX=${lib.getExe' stdenv.cc "$CXX"}
|
||||||
|
export LD=${lib.getExe' stdenv.cc.bintools "$LD"}
|
||||||
|
|
||||||
|
export AS_FOR_TARGET=${lib.getExe' stdenv.cc "$AS_FOR_TARGET"}
|
||||||
|
export CC_FOR_TARGET=${lib.getExe' stdenv.cc "$CC_FOR_TARGET"}
|
||||||
|
export CPP_FOR_TARGET=${lib.getExe' stdenv.cc "$CPP_FOR_TARGET"}
|
||||||
|
export LD_FOR_TARGET=${lib.getExe' stdenv.cc.bintools "$LD_FOR_TARGET"}
|
||||||
|
''
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
NIX_CFLAGS_COMPILE_OLD=$NIX_CFLAGS_COMPILE
|
||||||
|
NIX_CFLAGS_COMPILE+=' -isystem ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${version}/include-fixed'
|
||||||
|
'';
|
||||||
|
|
||||||
|
topLevelConfigureFlags =
|
||||||
|
[
|
||||||
|
"--build=${stdenv.buildPlatform.config}"
|
||||||
|
"--host=${stdenv.buildPlatform.config}"
|
||||||
|
"--target=${stdenv.hostPlatform.config}"
|
||||||
|
|
||||||
|
"--disable-bootstrap"
|
||||||
|
"--disable-multilib"
|
||||||
|
"--with-multilib-list="
|
||||||
|
"--enable-languages=fortran"
|
||||||
|
|
||||||
|
"--disable-fixincludes"
|
||||||
|
"--disable-intl"
|
||||||
|
"--disable-lto"
|
||||||
|
"--disable-libatomic"
|
||||||
|
"--disable-libbacktrace"
|
||||||
|
"--disable-libcpp"
|
||||||
|
"--disable-libssp"
|
||||||
|
"--disable-libquadmath"
|
||||||
|
"--disable-libgomp"
|
||||||
|
"--disable-libvtv"
|
||||||
|
"--disable-vtable-verify"
|
||||||
|
|
||||||
|
"--with-system-zlib"
|
||||||
|
]
|
||||||
|
++ lib.optional (stdenv.hostPlatform.libc == "glibc")
|
||||||
|
# Cheat and use previous stage's glibc to avoid infinite recursion. As
|
||||||
|
# of GCC 11, libgcc only cares if the version is greater than 2.19,
|
||||||
|
# which is quite ancient, so this little lie should be fine.
|
||||||
|
"--with-glibc-version=${buildPackages.glibc.version}";
|
||||||
|
|
||||||
|
configurePlatforms = [
|
||||||
|
"build"
|
||||||
|
"host"
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--disable-dependency-tracking"
|
||||||
|
"--with-threads=single"
|
||||||
|
# $CC cannot link binaries, let alone run then
|
||||||
|
"cross_compiling=true"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set the variable back the way it was, see corresponding code in
|
||||||
|
# `preConfigure`.
|
||||||
|
postConfigure = lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
|
NIX_CFLAGS_COMPILE=$NIX_CFLAGS_COMPILE_OLD
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [ "MULTIBUILDTOP:=../" ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
moveToOutput "lib/gcc/${stdenv.hostPlatform.config}/${version}/include" "$dev"
|
||||||
|
mkdir -p "$out/lib" "$dev/include"
|
||||||
|
ln -s "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}"/* "$out/lib"
|
||||||
|
ln -s "$dev/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"/* "$dev/include/"
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libiberty";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = runCommand "libiberty-src-${version}" { src = monorepoSrc; } ''
|
||||||
|
runPhase unpackPhase
|
||||||
|
|
||||||
|
mkdir -p "$out/gcc"
|
||||||
|
cp gcc/BASE-VER "$out/gcc"
|
||||||
|
cp gcc/DATESTAMP "$out/gcc"
|
||||||
|
|
||||||
|
cp -r include "$out"
|
||||||
|
cp -r libiberty "$out"
|
||||||
|
|
||||||
|
cp config.guess "$out"
|
||||||
|
cp config.rpath "$out"
|
||||||
|
cp config.sub "$out"
|
||||||
|
cp config-ml.in "$out"
|
||||||
|
cp ltmain.sh "$out"
|
||||||
|
cp install-sh "$out"
|
||||||
|
cp mkinstalldirs "$out"
|
||||||
|
|
||||||
|
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
sourceRoot = "${finalAttrs.src.name}/libiberty";
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../../build
|
||||||
|
cd ../../build
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--enable-install-libiberty"
|
||||||
|
] ++ lib.optional (!stdenv.hostPlatform.isStatic) "--enable-shared";
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
cp pic/libiberty.a $out/lib/libiberty_pic.a
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libquadmath";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = runCommand "libquadmath-src-${version}" { src = monorepoSrc; } ''
|
||||||
|
runPhase unpackPhase
|
||||||
|
|
||||||
|
mkdir -p "$out/gcc"
|
||||||
|
cp gcc/BASE-VER "$out/gcc"
|
||||||
|
cp gcc/DATESTAMP "$out/gcc"
|
||||||
|
|
||||||
|
cp -r libquadmath "$out"
|
||||||
|
|
||||||
|
cp config.guess "$out"
|
||||||
|
cp config.rpath "$out"
|
||||||
|
cp config.sub "$out"
|
||||||
|
cp config-ml.in "$out"
|
||||||
|
cp ltmain.sh "$out"
|
||||||
|
cp install-sh "$out"
|
||||||
|
cp mkinstalldirs "$out"
|
||||||
|
|
||||||
|
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
sourceRoot = "${finalAttrs.src.name}/libquadmath";
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../../build
|
||||||
|
cd ../../build
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
libstdcxx,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libsanitizer";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = runCommand "libsanitizer-src-${version}" { src = monorepoSrc; } ''
|
||||||
|
runPhase unpackPhase
|
||||||
|
|
||||||
|
mkdir -p "$out/gcc"
|
||||||
|
cp gcc/BASE-VER "$out/gcc"
|
||||||
|
cp gcc/DATESTAMP "$out/gcc"
|
||||||
|
|
||||||
|
cp -r libsanitizer "$out"
|
||||||
|
|
||||||
|
cp config.guess "$out"
|
||||||
|
cp config.rpath "$out"
|
||||||
|
cp config.sub "$out"
|
||||||
|
cp config-ml.in "$out"
|
||||||
|
cp ltmain.sh "$out"
|
||||||
|
cp install-sh "$out"
|
||||||
|
cp mkinstalldirs "$out"
|
||||||
|
|
||||||
|
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
sourceRoot = "${finalAttrs.src.name}/libsanitizer";
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p libstdc++-v3/src/
|
||||||
|
ln -s ${libstdcxx}/lib/libstdc++.la libstdc++-v3/src/libstdc++.la
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../../build
|
||||||
|
cd ../../build
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
68
pkgs/development/compilers/gcc/ng/common/libssp/default.nix
Normal file
68
pkgs/development/compilers/gcc/ng/common/libssp/default.nix
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libssp";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = runCommand "libssp-src-${version}" { src = monorepoSrc; } ''
|
||||||
|
runPhase unpackPhase
|
||||||
|
|
||||||
|
mkdir -p "$out/gcc"
|
||||||
|
cp gcc/BASE-VER "$out/gcc"
|
||||||
|
cp gcc/DATESTAMP "$out/gcc"
|
||||||
|
|
||||||
|
cp -r libssp "$out"
|
||||||
|
|
||||||
|
cp config.guess "$out"
|
||||||
|
cp config.rpath "$out"
|
||||||
|
cp config.sub "$out"
|
||||||
|
cp config-ml.in "$out"
|
||||||
|
cp ltmain.sh "$out"
|
||||||
|
cp install-sh "$out"
|
||||||
|
cp mkinstalldirs "$out"
|
||||||
|
|
||||||
|
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
sourceRoot = "${finalAttrs.src.name}/libssp";
|
||||||
|
|
||||||
|
configurePlatforms = [
|
||||||
|
"build"
|
||||||
|
"host"
|
||||||
|
];
|
||||||
|
configureFlags = [
|
||||||
|
"--disable-dependency-tracking"
|
||||||
|
"--with-toolexeclibdir=${builtins.placeholder "out" + "/lib"}"
|
||||||
|
"cross_compiling=true"
|
||||||
|
"--disable-multilib"
|
||||||
|
];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ../../build
|
||||||
|
cd ../../build
|
||||||
|
configureScript=../$sourceRoot/configure
|
||||||
|
'';
|
||||||
|
|
||||||
|
hardeningDisable = [
|
||||||
|
"fortify"
|
||||||
|
# Because we are building it!
|
||||||
|
"stackprotector"
|
||||||
|
];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/";
|
||||||
|
};
|
||||||
|
})
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
gcc_meta,
|
||||||
|
release_version,
|
||||||
|
version,
|
||||||
|
getVersionFile,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
runCommand,
|
||||||
|
autoreconfHook269,
|
||||||
|
gettext,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libstdcxx";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = monorepoSrc;
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook269
|
||||||
|
gettext
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(getVersionFile "gcc/custom-threading-model.patch")
|
||||||
|
];
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p ./build
|
||||||
|
buildRoot=$(readlink -e "./build")
|
||||||
|
'';
|
||||||
|
|
||||||
|
preAutoreconf = ''
|
||||||
|
sourceRoot=$(readlink -e "./libstdc++-v3")
|
||||||
|
cd $sourceRoot
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sed -i \
|
||||||
|
-e 's/AM_ENABLE_MULTILIB(/AM_ENABLE_MULTILIB(NOPE/' \
|
||||||
|
-e 's#glibcxx_toolexeclibdir=no#glibcxx_toolexeclibdir=${builtins.placeholder "out"}/libexec#' \
|
||||||
|
configure.ac
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
cd "$buildRoot"
|
||||||
|
configureScript=$sourceRoot/configure
|
||||||
|
chmod +x "$configureScript"
|
||||||
|
'';
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--disable-dependency-tracking"
|
||||||
|
"--with-toolexeclibdir=${builtins.placeholder "out"}/lib"
|
||||||
|
"--with-threads=posix"
|
||||||
|
"cross_compiling=true"
|
||||||
|
"--disable-multilib"
|
||||||
|
|
||||||
|
"--enable-clocale=gnu"
|
||||||
|
"--disable-libstdcxx-pch"
|
||||||
|
"--disable-vtable-verify"
|
||||||
|
"--enable-libstdcxx-visibility"
|
||||||
|
"--with-default-libstdcxx-abi=new"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
|
hardeningDisable = [
|
||||||
|
# PATH_MAX
|
||||||
|
"fortify"
|
||||||
|
];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
isGNU = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = gcc_meta // {
|
||||||
|
homepage = "https://gcc.gnu.org/onlinedocs/libstdc++";
|
||||||
|
description = "GNU C++ Library";
|
||||||
|
};
|
||||||
|
})
|
||||||
32
pkgs/development/compilers/gcc/ng/common/patches.nix
Normal file
32
pkgs/development/compilers/gcc/ng/common/patches.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"gcc/fix-collect2-paths.diff" = [
|
||||||
|
{
|
||||||
|
after = "15";
|
||||||
|
path = ../15;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"gcc/0001-find_a_program-First-search-with-machine-prefix.patch" = [
|
||||||
|
{
|
||||||
|
after = "15";
|
||||||
|
path = ../15;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"gcc/0002-driver-for_each_pass-Pass-to-callback-whether-dir-is.patch" = [
|
||||||
|
{
|
||||||
|
after = "15";
|
||||||
|
path = ../15;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"gcc/0003-find_a_program-Only-search-for-prefixed-paths-in-und.patch" = [
|
||||||
|
{
|
||||||
|
after = "15";
|
||||||
|
path = ../15;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"gcc/custom-threading-model.patch" = [
|
||||||
|
{
|
||||||
|
after = "15";
|
||||||
|
path = ../15;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
69
pkgs/development/compilers/gcc/ng/default.nix
Normal file
69
pkgs/development/compilers/gcc/ng/default.nix
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
stdenvAdapters,
|
||||||
|
recurseIntoAttrs,
|
||||||
|
gccVersions ? { },
|
||||||
|
patchesFn ? lib.id,
|
||||||
|
buildPackages,
|
||||||
|
targetPackages,
|
||||||
|
binutilsNoLibc,
|
||||||
|
binutils,
|
||||||
|
generateSplicesForMkScope,
|
||||||
|
...
|
||||||
|
}@packageSetArgs:
|
||||||
|
let
|
||||||
|
versions = {
|
||||||
|
"15.1.0".officialRelease.sha256 = "sha256-4rCewhZg8B/s/7cV4BICZSFpQ/A40OSKmGhxPlTwbOo=";
|
||||||
|
} // gccVersions;
|
||||||
|
|
||||||
|
mkPackage =
|
||||||
|
{
|
||||||
|
name ? null,
|
||||||
|
officialRelease ? null,
|
||||||
|
gitRelease ? null,
|
||||||
|
monorepoSrc ? null,
|
||||||
|
version ? null,
|
||||||
|
}@args:
|
||||||
|
let
|
||||||
|
inherit
|
||||||
|
(import ./common/common-let.nix {
|
||||||
|
inherit
|
||||||
|
lib
|
||||||
|
gitRelease
|
||||||
|
officialRelease
|
||||||
|
version
|
||||||
|
;
|
||||||
|
})
|
||||||
|
releaseInfo
|
||||||
|
;
|
||||||
|
inherit (releaseInfo) release_version;
|
||||||
|
attrName =
|
||||||
|
args.name or (if (gitRelease != null) then "git" else lib.versions.major release_version);
|
||||||
|
in
|
||||||
|
lib.nameValuePair attrName (
|
||||||
|
recurseIntoAttrs (
|
||||||
|
callPackage ./common (
|
||||||
|
{
|
||||||
|
inherit (stdenvAdapters) overrideCC;
|
||||||
|
inherit
|
||||||
|
officialRelease
|
||||||
|
gitRelease
|
||||||
|
monorepoSrc
|
||||||
|
version
|
||||||
|
patchesFn
|
||||||
|
;
|
||||||
|
|
||||||
|
buildGccPackages = buildPackages."gccNGPackages_${attrName}";
|
||||||
|
targetGccPackages = targetPackages."gccNGPackages_${attrName}" or gccPackages."${attrName}";
|
||||||
|
otherSplices = generateSplicesForMkScope "gccNGPackages_${attrName}";
|
||||||
|
}
|
||||||
|
// packageSetArgs # Allow overrides.
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
gccPackages = lib.mapAttrs' (version: args: mkPackage (args // { inherit version; })) versions;
|
||||||
|
in
|
||||||
|
gccPackages // { inherit mkPackage; }
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
From 5cdda87f74bcbb1dd7d29bb49b6a0ee67e41a7ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: OPNA2608 <opna2608@protonmail.com>
|
||||||
|
Date: Thu, 10 Jul 2025 17:51:02 +0200
|
||||||
|
Subject: [PATCH] pgpy/_curves.py: Fix compat with current cryptography
|
||||||
|
|
||||||
|
Curves must now specify their group_order.
|
||||||
|
---
|
||||||
|
pgpy/_curves.py | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/pgpy/_curves.py b/pgpy/_curves.py
|
||||||
|
index 14f2528..91e7dbb 100644
|
||||||
|
--- a/pgpy/_curves.py
|
||||||
|
+++ b/pgpy/_curves.py
|
||||||
|
@@ -75,26 +75,31 @@ else:
|
||||||
|
class BrainpoolP256R1(ec.EllipticCurve):
|
||||||
|
name = 'brainpoolP256r1'
|
||||||
|
key_size = 256
|
||||||
|
+ group_order = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7
|
||||||
|
|
||||||
|
|
||||||
|
class BrainpoolP384R1(ec.EllipticCurve): # noqa: E303
|
||||||
|
name = 'brainpoolP384r1'
|
||||||
|
key_size = 384
|
||||||
|
+ group_order = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565
|
||||||
|
|
||||||
|
|
||||||
|
class BrainpoolP512R1(ec.EllipticCurve): # noqa: E303
|
||||||
|
name = 'brainpoolP512r1'
|
||||||
|
key_size = 512
|
||||||
|
+ group_order = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069
|
||||||
|
|
||||||
|
|
||||||
|
class X25519(ec.EllipticCurve): # noqa: E303
|
||||||
|
name = 'X25519'
|
||||||
|
key_size = 256
|
||||||
|
+ group_order = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
|
||||||
|
|
||||||
|
|
||||||
|
class Ed25519(ec.EllipticCurve): # noqa: E303
|
||||||
|
name = 'ed25519'
|
||||||
|
key_size = 256
|
||||||
|
+ group_order = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
|
||||||
|
|
||||||
|
|
||||||
|
# add these curves to the _CURVE_TYPES list
|
||||||
|
--
|
||||||
|
2.49.0
|
||||||
|
|
||||||
@ -34,6 +34,9 @@ buildPythonPackage rec {
|
|||||||
patches = [
|
patches = [
|
||||||
# https://github.com/SecurityInnovation/PGPy/issues/462
|
# https://github.com/SecurityInnovation/PGPy/issues/462
|
||||||
./pr-443.patch
|
./pr-443.patch
|
||||||
|
|
||||||
|
# https://github.com/SecurityInnovation/PGPy/pull/474
|
||||||
|
./Fix-compat-with-current-cryptography.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|||||||
@ -14,14 +14,14 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "pysmlight";
|
pname = "pysmlight";
|
||||||
version = "0.2.6";
|
version = "0.2.7";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "smlight-tech";
|
owner = "smlight-tech";
|
||||||
repo = "pysmlight";
|
repo = "pysmlight";
|
||||||
tag = "v${version}";
|
tag = "v${version}";
|
||||||
hash = "sha256-mK9bWRo5l2t2E/TP7POj04z45zD/XZbNOkFXGvD23k8=";
|
hash = "sha256-w5t8ApshET7DkxxDsEpRBdo3+sg05ch9ec85TI4dAms=";
|
||||||
};
|
};
|
||||||
|
|
||||||
build-system = [ poetry-core ];
|
build-system = [ poetry-core ];
|
||||||
|
|||||||
@ -7,13 +7,13 @@
|
|||||||
stdenvNoCC.mkDerivation rec {
|
stdenvNoCC.mkDerivation rec {
|
||||||
# NOTE: this should be updated with linux_rpi
|
# NOTE: this should be updated with linux_rpi
|
||||||
pname = "raspberrypi-firmware";
|
pname = "raspberrypi-firmware";
|
||||||
version = "1.20241008";
|
version = "1.20250430";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "raspberrypi";
|
owner = "raspberrypi";
|
||||||
repo = "firmware";
|
repo = "firmware";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-4gnK0KbqFnjBmWia9Jt2gveVWftmHrprpwBqYVqE/k0=";
|
hash = "sha256-U41EgEDny1R+JFktSC/3CE+2Qi7GJludj929ft49Nm0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
cunit,
|
cunit,
|
||||||
docbook5,
|
docbook5,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
fetchpatch,
|
|
||||||
gdalMinimal,
|
gdalMinimal,
|
||||||
geos,
|
geos,
|
||||||
jitSupport,
|
jitSupport,
|
||||||
@ -36,7 +35,7 @@ let
|
|||||||
in
|
in
|
||||||
postgresqlBuildExtension (finalAttrs: {
|
postgresqlBuildExtension (finalAttrs: {
|
||||||
pname = "postgis";
|
pname = "postgis";
|
||||||
version = "3.5.2";
|
version = "3.5.3";
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
"out"
|
"out"
|
||||||
@ -47,18 +46,9 @@ postgresqlBuildExtension (finalAttrs: {
|
|||||||
owner = "postgis";
|
owner = "postgis";
|
||||||
repo = "postgis";
|
repo = "postgis";
|
||||||
tag = finalAttrs.version;
|
tag = finalAttrs.version;
|
||||||
hash = "sha256-1kOLtG6AMavbWQ1lHG2ABuvIcyTYhgcbjuVmqMR4X+g=";
|
hash = "sha256-rJxIZGsQhh8QAacgkepBzzC79McVhY9wFphQIVRQHA8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
# Backport patch for compatibility with GDAL 3.11
|
|
||||||
# FIXME: remove in next update
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://git.osgeo.org/gitea/postgis/postgis/commit/614eca7c169cd6e9819801d3ea99d5258262c58b.patch";
|
|
||||||
hash = "sha256-VkNZFANAt8Jv+ExCusGvi+ZWB7XLcAheefSx7akA7Go=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[
|
[
|
||||||
geos
|
geos
|
||||||
|
|||||||
@ -19,14 +19,14 @@ let
|
|||||||
}:
|
}:
|
||||||
buildNpmPackage rec {
|
buildNpmPackage rec {
|
||||||
pname = name;
|
pname = name;
|
||||||
version = "2025.6.0";
|
version = "2025.6.1";
|
||||||
nodejs = nodejs_22;
|
nodejs = nodejs_22;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bitwarden";
|
owner = "bitwarden";
|
||||||
repo = "directory-connector";
|
repo = "directory-connector";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-qlD16U/S3SzaA7sMR+JZSYHy9g7c5cjedAmkFWRoxN0=";
|
hash = "sha256-VRM1kAWP0oNSLwIflTu6s7XjhSfy8z8G+5PUhQCc/tY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
@ -38,7 +38,7 @@ let
|
|||||||
--replace-fail "AppImage" "dir"
|
--replace-fail "AppImage" "dir"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
npmDepsHash = "sha256-EIF7I4stB6+h3l2hLJqLHR8qzmRP20v161YwXVMJh44=";
|
npmDepsHash = "sha256-bUCnUnBaA+PwRyxDieqPWzCh87KPQUiuF3uW9fDHtQE=";
|
||||||
|
|
||||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||||
|
|
||||||
|
|||||||
@ -5001,6 +5001,17 @@ with pkgs;
|
|||||||
gccFun = callPackage ../development/compilers/gcc;
|
gccFun = callPackage ../development/compilers/gcc;
|
||||||
gcc-unwrapped = gcc.cc;
|
gcc-unwrapped = gcc.cc;
|
||||||
|
|
||||||
|
inherit
|
||||||
|
(rec {
|
||||||
|
# NOTE: keep this with the "NG" label until we're ready to drop the monolithic GCC
|
||||||
|
gccNGPackagesSet = recurseIntoAttrs (callPackages ../development/compilers/gcc/ng { });
|
||||||
|
gccNGPackages_15 = gccNGPackagesSet."15";
|
||||||
|
mkGCCNGPackages = gccNGPackagesSet.mkPackage;
|
||||||
|
})
|
||||||
|
gccNGPackages_15
|
||||||
|
mkGCCNGPackages
|
||||||
|
;
|
||||||
|
|
||||||
wrapNonDeterministicGcc =
|
wrapNonDeterministicGcc =
|
||||||
stdenv: ccWrapper:
|
stdenv: ccWrapper:
|
||||||
if ccWrapper.isGNU then
|
if ccWrapper.isGNU then
|
||||||
@ -6935,7 +6946,7 @@ with pkgs;
|
|||||||
});
|
});
|
||||||
binutilsNoLibc = wrapBintoolsWith {
|
binutilsNoLibc = wrapBintoolsWith {
|
||||||
bintools = binutils-unwrapped;
|
bintools = binutils-unwrapped;
|
||||||
libc = targetPackages.preLibcHeaders;
|
libc = targetPackages.preLibcHeaders or preLibcHeaders;
|
||||||
};
|
};
|
||||||
|
|
||||||
libbfd = callPackage ../development/tools/misc/binutils/libbfd.nix { };
|
libbfd = callPackage ../development/tools/misc/binutils/libbfd.nix { };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user