tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
libstdcxx5: init at 3.3.6
Nikolay Amiantov
9 years ago
a38476a3
358232f6
+170
3 changed files
expand all
collapse all
unified
split
pkgs
development
libraries
libstdc++5
default.nix
no-sys-dirs.patch
top-level
all-packages.nix
+115
pkgs/development/libraries/libstdc++5/default.nix
reviewed
···
1
1
+
{ stdenv, fetchurl, fetchpatch, flex, bison, file }:
2
2
+
3
3
+
stdenv.mkDerivation rec {
4
4
+
name = "libstdc++5-${version}";
5
5
+
version = "3.3.6";
6
6
+
7
7
+
src = [
8
8
+
(fetchurl {
9
9
+
url = "mirror://gcc/releases/gcc-${version}/gcc-core-${version}.tar.bz2";
10
10
+
sha256 = "1dpyrpsgakilz2rnh5f8gvrzq5pwzvndacc0df6m04bpqn5fx6sg";
11
11
+
})
12
12
+
(fetchurl {
13
13
+
url = "mirror://gcc/releases/gcc-${version}/gcc-g++-${version}.tar.bz2";
14
14
+
sha256 = "14lxl81f7adpc9jxfiwzdxsdzs5zv4piv8xh7f9w910hfzrgvsby";
15
15
+
})
16
16
+
];
17
17
+
18
18
+
patches = [
19
19
+
./no-sys-dirs.patch
20
20
+
(fetchpatch {
21
21
+
name = "siginfo.patch";
22
22
+
url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/siginfo.patch?h=packages/libstdc%2B%2B5&id=e36ee8ed9bb5942db14cf6249a2ead14974a2bfa";
23
23
+
sha256 = "15zldbm33yba293dgrgsbv3j332hkc3iqpyc8fa7zl42mh9qk22j";
24
24
+
addPrefixes = true;
25
25
+
})
26
26
+
(fetchpatch {
27
27
+
name = "gcc-3.4.3-no_multilib_amd64.patch";
28
28
+
url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/gcc-3.4.3-no_multilib_amd64.patch?h=packages/libstdc%2B%2B5&id=e36ee8ed9bb5942db14cf6249a2ead14974a2bfa";
29
29
+
sha256 = "11m5lc51b0addhc4yq4rz0dwpv6k73rrj73wya3lqdk8rly6cjpm";
30
30
+
addPrefixes = true;
31
31
+
})
32
32
+
];
33
33
+
34
34
+
postPatch = ''
35
35
+
# fix build issue with recent gcc
36
36
+
sed -i "s#O_CREAT#O_CREAT, 0666#" gcc/collect2.c
37
37
+
38
38
+
# No fixincludes
39
39
+
sed -i -e 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
40
40
+
'';
41
41
+
42
42
+
preConfigure = ''
43
43
+
mkdir ../build
44
44
+
cd ../build
45
45
+
configureScript=../$sourceRoot/configure
46
46
+
'';
47
47
+
48
48
+
preBuild = ''
49
49
+
# libstdc++ needs this; otherwise it will use /lib/cpp, which is a Bad
50
50
+
# Thing.
51
51
+
export CPP="gcc -E"
52
52
+
53
53
+
# Use *real* header files, otherwise a limits.h is generated
54
54
+
# that does not include Glibc's limits.h (notably missing
55
55
+
# SSIZE_MAX, which breaks the build).
56
56
+
export NIX_FIXINC_DUMMY="$(cat $NIX_CC/nix-support/orig-libc-dev)/include"
57
57
+
58
58
+
# The path to the Glibc binaries such as `crti.o'.
59
59
+
glibc_libdir="$(cat $NIX_CC/nix-support/orig-libc)/lib"
60
60
+
61
61
+
# Figure out what extra flags to pass to the gcc compilers
62
62
+
# being generated to make sure that they use our glibc.
63
63
+
EXTRA_FLAGS="-I$NIX_FIXINC_DUMMY $(cat $NIX_CC/nix-support/libc-cflags) -O2"
64
64
+
65
65
+
extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)"
66
66
+
for i in $extraLDFlags; do
67
67
+
EXTRA_FLAGS="$EXTRA_FLAGS -Wl,$i"
68
68
+
done
69
69
+
70
70
+
# CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
71
71
+
# the startfiles.
72
72
+
# FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
73
73
+
# for the startfiles.
74
74
+
makeFlagsArray=( \
75
75
+
"''${makeFlagsArray[@]}" \
76
76
+
NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
77
77
+
SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
78
78
+
CFLAGS_FOR_BUILD="$EXTRA_FLAGS" \
79
79
+
CFLAGS_FOR_TARGET="$EXTRA_FLAGS" \
80
80
+
CXXFLAGS_FOR_BUILD="$EXTRA_FLAGS" \
81
81
+
CXXFLAGS_FOR_TARGET="$EXTRA_FLAGS" \
82
82
+
FLAGS_FOR_TARGET="$EXTRA_FLAGS" \
83
83
+
LDFLAGS_FOR_BUILD="$EXTRA_FLAGS" \
84
84
+
LDFLAGS_FOR_TARGET="$EXTRA_FLAGS" \
85
85
+
BOOT_CFLAGS="$EXTRA_FLAGS" \
86
86
+
BOOT_LDFLAGS="$EXTRA_FLAGS"
87
87
+
)
88
88
+
'';
89
89
+
90
90
+
hardeningDisable = [ "format" ];
91
91
+
92
92
+
nativeBuildInputs = [ flex bison file ];
93
93
+
94
94
+
configureFlags = [ "--disable-multilib" "--enable-__cxa-atexit" "--enable-threads=posix" "--enable-languages=c++" "--enable-clocale=gnu" ];
95
95
+
96
96
+
buildFLags = [ "all-target-libstdc++-v3" ];
97
97
+
98
98
+
installFlags = [ "install-target-libstdc++-v3" ];
99
99
+
100
100
+
postInstall = ''
101
101
+
# Remove includefiles and libs provided by gcc
102
102
+
shopt -s extglob
103
103
+
rm -rf $out/{bin,include,share,man,info}
104
104
+
rm -f $out/lib/*.a
105
105
+
rm -rf $out/lib/!(libstdc++*)
106
106
+
'';
107
107
+
108
108
+
meta = with stdenv.lib; {
109
109
+
homepage = http://gcc.gnu.org/;
110
110
+
license = licenses.lgpl3Plus;
111
111
+
description = "GNU Compiler Collection, version ${version} -- C++ standard library";
112
112
+
platforms = platforms.linux;
113
113
+
maintainers = with maintainers; [ abbradar ];
114
114
+
};
115
115
+
}
+53
pkgs/development/libraries/libstdc++5/no-sys-dirs.patch
reviewed
···
1
1
+
diff -ru3 gcc-3.3.6-old/gcc/cppdefault.c gcc-3.3.6/gcc/cppdefault.c
2
2
+
--- gcc-3.3.6-old/gcc/cppdefault.c 2003-11-07 02:13:31.000000000 +0300
3
3
+
+++ gcc-3.3.6/gcc/cppdefault.c 2016-09-02 16:00:03.492484016 +0300
4
4
+
@@ -26,6 +26,10 @@
5
5
+
#include "system.h"
6
6
+
#include "cppdefault.h"
7
7
+
8
8
+
+#undef LOCAL_INCLUDE_DIR
9
9
+
+#undef SYSTEM_INCLUDE_DIR
10
10
+
+#undef STANDARD_INCLUDE_DIR
11
11
+
+
12
12
+
const struct default_include cpp_include_defaults[]
13
13
+
#ifdef INCLUDE_DEFAULTS
14
14
+
= INCLUDE_DEFAULTS;
15
15
+
diff -ru3 gcc-3.3.6-old/gcc/gcc.c gcc-3.3.6/gcc/gcc.c
16
16
+
--- gcc-3.3.6-old/gcc/gcc.c 2004-04-01 20:55:17.000000000 +0400
17
17
+
+++ gcc-3.3.6/gcc/gcc.c 2016-09-02 16:01:24.843520114 +0300
18
18
+
@@ -6130,10 +6130,6 @@
19
19
+
NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1);
20
20
+
}
21
21
+
22
22
+
- add_sysrooted_prefix (&startfile_prefixes, standard_startfile_prefix_1,
23
23
+
- "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
24
24
+
- add_sysrooted_prefix (&startfile_prefixes, standard_startfile_prefix_2,
25
25
+
- "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
26
26
+
#if 0 /* Can cause surprises, and one can use -B./ instead. */
27
27
+
add_prefix (&startfile_prefixes, "./", NULL,
28
28
+
PREFIX_PRIORITY_LAST, 1, NULL, 0);
29
29
+
diff -ru3 gcc-3.3.6-old/gcc/Makefile.in gcc-3.3.6/gcc/Makefile.in
30
30
+
--- gcc-3.3.6-old/gcc/Makefile.in 2004-04-01 20:55:23.000000000 +0400
31
31
+
+++ gcc-3.3.6/gcc/Makefile.in 2016-09-02 16:00:03.493484017 +0300
32
32
+
@@ -260,7 +260,11 @@
33
33
+
PARTITION_H = $(srcdir)/../include/partition.h
34
34
+
35
35
+
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
36
36
+
-NATIVE_SYSTEM_HEADER_DIR = /usr/include
37
37
+
+# Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent
38
38
+
+# `fixinc' from fixing header files in /usr/include. However,
39
39
+
+# NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set
40
40
+
+# it to some dummy directory.
41
41
+
+NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY)
42
42
+
# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
43
43
+
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
44
44
+
45
45
+
@@ -2201,7 +2205,7 @@
46
46
+
-DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
47
47
+
-DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \
48
48
+
-DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
49
49
+
- -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
50
50
+
+ -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \
51
51
+
-DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
52
52
+
-DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
53
53
+
@TARGET_SYSTEM_ROOT_DEFINE@
+2
pkgs/top-level/all-packages.nix
reviewed
···
6360
6360
libcxx = llvmPackages.libcxx;
6361
6361
libcxxabi = llvmPackages.libcxxabi;
6362
6362
6363
6363
+
libstdcxx5 = callPackage ../development/libraries/libstdc++5 { };
6364
6364
+
6363
6365
libsigrok = callPackage ../development/tools/libsigrok { };
6364
6366
# old version:
6365
6367
libsigrok-0-3-0 = libsigrok.override {