buda things
This commit is contained in:
parent
adaefcb7b4
commit
268673f04b
23 changed files with 1428 additions and 0 deletions
15
pkgs/buda-prebuilt/vendored/boost/1.74.nix
Normal file
15
pkgs/buda-prebuilt/vendored/boost/1.74.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ callPackage, fetchurl, fetchpatch, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "1.74.0";
|
||||
|
||||
src = fetchurl {
|
||||
urls = [
|
||||
"mirror://sourceforge/boost/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${builtins.replaceStrings ["."] ["_"] version}.tar.bz2"
|
||||
];
|
||||
# SHA256 from http://www.boost.org/users/history/version_1_74_0.html
|
||||
sha256 = "83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1";
|
||||
};
|
||||
})
|
||||
|
22
pkgs/buda-prebuilt/vendored/boost/cmake-paths-173.patch
Normal file
22
pkgs/buda-prebuilt/vendored/boost/cmake-paths-173.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
diff --git a/tools/boost_install/boost-install.jam b/tools/boost_install/boost-install.jam
|
||||
index 4238f921e..8fc1ea269 100644
|
||||
--- a/tools/boost_install/boost-install.jam
|
||||
+++ b/tools/boost_install/boost-install.jam
|
||||
@@ -649,7 +649,7 @@ rule generate-cmake-config- ( target : sources * : properties * )
|
||||
""
|
||||
"# Compute the include and library directories relative to this file."
|
||||
""
|
||||
- "get_filename_component(_BOOST_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" REALPATH)"
|
||||
+ "get_filename_component(_BOOST_REAL_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" REALPATH)"
|
||||
: true ;
|
||||
|
||||
if [ path.is-rooted $(cmakedir) ]
|
||||
@@ -668,6 +668,8 @@ rule generate-cmake-config- ( target : sources * : properties * )
|
||||
" unset(_BOOST_CMAKEDIR_ORIGINAL)"
|
||||
"endif()"
|
||||
""
|
||||
+ "# Assume that the installer actually did know where the libs were to be installed"
|
||||
+ "get_filename_component(_BOOST_CMAKEDIR \"$(cmakedir-native)\" REALPATH)"
|
||||
: true ;
|
||||
}
|
||||
|
21
pkgs/buda-prebuilt/vendored/boost/cmake-paths.patch
Normal file
21
pkgs/buda-prebuilt/vendored/boost/cmake-paths.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
diff --git a/tools/boost_install/boost-install.jam b/tools/boost_install/boost-install.jam
|
||||
index ad19f7b55..ec6bf57ff 100644
|
||||
--- a/tools/boost_install/boost-install.jam
|
||||
+++ b/tools/boost_install/boost-install.jam
|
||||
@@ -587,6 +587,7 @@ rule generate-cmake-config- ( target : sources * : properties * )
|
||||
"# Compute the include and library directories relative to this file."
|
||||
""
|
||||
"get_filename_component(_BOOST_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" ABSOLUTE)"
|
||||
+ "get_filename_component(_BOOST_REAL_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" ABSOLUTE)"
|
||||
: true ;
|
||||
|
||||
if [ path.is-rooted $(cmakedir) ]
|
||||
@@ -607,6 +608,8 @@ rule generate-cmake-config- ( target : sources * : properties * )
|
||||
" unset(_BOOST_CMAKEDIR_ORIGINAL)"
|
||||
"endif()"
|
||||
""
|
||||
+ "# Assume that the installer actually did know where the libs were to be installed"
|
||||
+ "get_filename_component(_BOOST_CMAKEDIR \"$(cmakedir-native)\" REALPATH)"
|
||||
: true ;
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
diff --git a/tools/build/src/tools/python.jam b/tools/build/src/tools/python.jam
|
||||
index 273b28a..2d2031e 100644
|
||||
--- a/tools/build/src/tools/python.jam
|
||||
+++ b/tools/build/src/tools/python.jam
|
||||
@@ -428,13 +428,7 @@ local rule windows-installed-pythons ( version ? )
|
||||
|
||||
local rule darwin-installed-pythons ( version ? )
|
||||
{
|
||||
- version ?= $(.version-countdown) ;
|
||||
-
|
||||
- local prefix
|
||||
- = [ GLOB /System/Library/Frameworks /Library/Frameworks
|
||||
- : Python.framework ] ;
|
||||
-
|
||||
- return $(prefix)/Versions/$(version)/bin/python ;
|
||||
+ return ;
|
||||
}
|
||||
|
||||
|
||||
@@ -890,25 +884,6 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
|
||||
|
||||
# See if we can find a framework directory on darwin.
|
||||
local framework-directory ;
|
||||
- if $(target-os) = darwin
|
||||
- {
|
||||
- # Search upward for the framework directory.
|
||||
- local framework-directory = $(libraries[-1]) ;
|
||||
- while $(framework-directory:D=) && $(framework-directory:D=) != Python.framework
|
||||
- {
|
||||
- framework-directory = $(framework-directory:D) ;
|
||||
- }
|
||||
-
|
||||
- if $(framework-directory:D=) = Python.framework
|
||||
- {
|
||||
- debug-message framework directory is \"$(framework-directory)\" ;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- debug-message "no framework directory found; using library path" ;
|
||||
- framework-directory = ;
|
||||
- }
|
||||
- }
|
||||
|
||||
local dll-path = $(libraries) ;
|
||||
|
20
pkgs/buda-prebuilt/vendored/boost/default.nix
Normal file
20
pkgs/buda-prebuilt/vendored/boost/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ lib
|
||||
, callPackage
|
||||
, boost-build
|
||||
, fetchurl
|
||||
}:
|
||||
|
||||
let
|
||||
makeBoost = file:
|
||||
lib.fix (self:
|
||||
callPackage file {
|
||||
boost-build = boost-build.override {
|
||||
# useBoost allows us passing in src and version from
|
||||
# the derivation we are building to get a matching b2 version.
|
||||
useBoost = self;
|
||||
};
|
||||
}
|
||||
);
|
||||
in {
|
||||
boost174 = makeBoost ./1.74.nix;
|
||||
}
|
249
pkgs/buda-prebuilt/vendored/boost/generic.nix
Normal file
249
pkgs/buda-prebuilt/vendored/boost/generic.nix
Normal file
|
@ -0,0 +1,249 @@
|
|||
{ lib, stdenv, icu, expat, zlib, bzip2, zstd, xz, python ? null, fixDarwinDylibNames, libiconv, libxcrypt
|
||||
, boost-build
|
||||
, fetchpatch
|
||||
, which
|
||||
, toolset ? /**/ if stdenv.cc.isClang then "clang"
|
||||
else if stdenv.cc.isGNU then "gcc"
|
||||
else null
|
||||
, enableRelease ? true
|
||||
, enableDebug ? false
|
||||
, enableSingleThreaded ? false
|
||||
, enableMultiThreaded ? true
|
||||
, enableShared ? !(with stdenv.hostPlatform; isStatic || libc == "msvcrt") # problems for now
|
||||
, enableStatic ? !enableShared
|
||||
, enablePython ? false
|
||||
, enableNumpy ? false
|
||||
, enableIcu ? stdenv.hostPlatform == stdenv.buildPlatform
|
||||
, taggedLayout ? ((enableRelease && enableDebug) || (enableSingleThreaded && enableMultiThreaded) || (enableShared && enableStatic))
|
||||
, patches ? []
|
||||
, boostBuildPatches ? []
|
||||
, useMpi ? false
|
||||
, mpi
|
||||
, extraB2Args ? []
|
||||
|
||||
# Attributes inherit from specific versions
|
||||
, version, src
|
||||
, ...
|
||||
}:
|
||||
|
||||
# We must build at least one type of libraries
|
||||
assert enableShared || enableStatic;
|
||||
|
||||
assert enableNumpy -> enablePython;
|
||||
|
||||
# Boost <1.69 can't be built on linux with clang >8, because pth was removed
|
||||
assert with lib; (stdenv.isLinux && toolset == "clang" && versionAtLeast stdenv.cc.version "8.0.0") -> versionAtLeast version "1.69";
|
||||
|
||||
let
|
||||
|
||||
variant = lib.concatStringsSep ","
|
||||
(lib.optional enableRelease "release" ++
|
||||
lib.optional enableDebug "debug");
|
||||
|
||||
threading = lib.concatStringsSep ","
|
||||
(lib.optional enableSingleThreaded "single" ++
|
||||
lib.optional enableMultiThreaded "multi");
|
||||
|
||||
link = lib.concatStringsSep ","
|
||||
(lib.optional enableShared "shared" ++
|
||||
lib.optional enableStatic "static");
|
||||
|
||||
runtime-link = if enableShared then "shared" else "static";
|
||||
|
||||
# To avoid library name collisions
|
||||
layout = if taggedLayout then "tagged" else "system";
|
||||
|
||||
needUserConfig = stdenv.hostPlatform != stdenv.buildPlatform || useMpi || (stdenv.isDarwin && enableShared);
|
||||
|
||||
b2Args = lib.concatStringsSep " " ([
|
||||
"--includedir=$dev/include"
|
||||
"--libdir=$out/lib"
|
||||
"-j$NIX_BUILD_CORES"
|
||||
"--layout=${layout}"
|
||||
"variant=${variant}"
|
||||
"threading=${threading}"
|
||||
"link=${link}"
|
||||
"-sEXPAT_INCLUDE=${expat.dev}/include"
|
||||
"-sEXPAT_LIBPATH=${expat.out}/lib"
|
||||
|
||||
# TODO: make this unconditional
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform ||
|
||||
# required on mips; see 61d9f201baeef4c4bb91ad8a8f5f89b747e0dfe4
|
||||
(stdenv.hostPlatform.isMips && lib.versionAtLeast version "1.79")) [
|
||||
"address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
|
||||
"architecture=${if stdenv.hostPlatform.isMips64
|
||||
then if lib.versionOlder version "1.78" then "mips1" else "mips"
|
||||
else if stdenv.hostPlatform.parsed.cpu.name == "s390x" then "s390x"
|
||||
else toString stdenv.hostPlatform.parsed.cpu.family}"
|
||||
"binary-format=${toString stdenv.hostPlatform.parsed.kernel.execFormat.name}"
|
||||
"target-os=${toString stdenv.hostPlatform.parsed.kernel.name}"
|
||||
|
||||
# adapted from table in boost manual
|
||||
# https://www.boost.org/doc/libs/1_66_0/libs/context/doc/html/context/architectures.html
|
||||
"abi=${if stdenv.hostPlatform.parsed.cpu.family == "arm" then "aapcs"
|
||||
else if stdenv.hostPlatform.isWindows then "ms"
|
||||
else if stdenv.hostPlatform.isMips32 then "o32"
|
||||
else if stdenv.hostPlatform.isMips64n64 then "n64"
|
||||
else "sysv"}"
|
||||
] ++ lib.optional (link != "static") "runtime-link=${runtime-link}"
|
||||
++ lib.optional (variant == "release") "debug-symbols=off"
|
||||
++ lib.optional (toolset != null) "toolset=${toolset}"
|
||||
++ lib.optional (!enablePython) "--without-python"
|
||||
++ lib.optional needUserConfig "--user-config=user-config.jam"
|
||||
++ lib.optional (stdenv.buildPlatform.isDarwin && stdenv.hostPlatform.isLinux) "pch=off"
|
||||
++ lib.optionals (stdenv.hostPlatform.libc == "msvcrt") [
|
||||
"threadapi=win32"
|
||||
] ++ extraB2Args
|
||||
);
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "boost";
|
||||
|
||||
inherit src version;
|
||||
|
||||
patchFlags = [];
|
||||
|
||||
patches = patches
|
||||
++ lib.optional stdenv.isDarwin ./darwin-no-system-python.patch
|
||||
# Fix boost-context segmentation faults on ppc64 due to ABI violation
|
||||
++ lib.optional (lib.versionOlder version "1.71") (fetchpatch {
|
||||
url = "https://github.com/boostorg/context/commit/2354eca9b776a6739112833f64754108cc0d1dc5.patch";
|
||||
sha256 = "067m4bjpmcanqvg28djax9a10avmdwhlpfx6gn73kbqqq70dnz29";
|
||||
stripLen = 1;
|
||||
extraPrefix = "libs/context/";
|
||||
})
|
||||
++ lib.optional (lib.versionOlder version "1.70") (fetchpatch {
|
||||
# support for Mips64n64 appeared in boost-context 1.70
|
||||
url = "https://github.com/boostorg/context/commit/e3f744a1862164062d579d1972272d67bdaa9c39.patch";
|
||||
sha256 = "sha256-qjQy1b4jDsIRrI+UYtcguhvChrMbGWO0UlEzEJHYzRI=";
|
||||
stripLen = 1;
|
||||
extraPrefix = "libs/context/";
|
||||
})
|
||||
++ lib.optional (lib.versionAtLeast version "1.70" && lib.versionOlder version "1.73") ./cmake-paths.patch
|
||||
++ lib.optional (lib.versionAtLeast version "1.73") ./cmake-paths-173.patch
|
||||
++ lib.optional (version == "1.77.0") (fetchpatch {
|
||||
url = "https://github.com/boostorg/math/commit/7d482f6ebc356e6ec455ccb5f51a23971bf6ce5b.patch";
|
||||
relative = "include";
|
||||
sha256 = "sha256-KlmIbixcds6GyKYt1fx5BxDIrU7msrgDdYo9Va/KJR4=";
|
||||
});
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://boost.org/";
|
||||
description = "Collection of C++ libraries";
|
||||
license = licenses.boost;
|
||||
platforms = platforms.unix ++ platforms.windows;
|
||||
badPlatforms = optionals (versionOlder version "1.73") platforms.riscv;
|
||||
maintainers = with maintainers; [ hjones2199 ];
|
||||
|
||||
broken =
|
||||
# boost-context lacks support for the N32 ABI on mips64. The build
|
||||
# will succeed, but packages depending on boost-context will fail with
|
||||
# a very cryptic error message.
|
||||
stdenv.hostPlatform.isMips64n32;
|
||||
};
|
||||
|
||||
passthru = {
|
||||
inherit boostBuildPatches;
|
||||
};
|
||||
|
||||
preConfigure = lib.optionalString useMpi ''
|
||||
cat << EOF >> user-config.jam
|
||||
using mpi : ${mpi}/bin/mpiCC ;
|
||||
EOF
|
||||
''
|
||||
# On darwin we need to add the `$out/lib` to the libraries' rpath explicitly,
|
||||
# otherwise the dynamic linker is unable to resolve the reference to @rpath
|
||||
# when the boost libraries want to load each other at runtime.
|
||||
+ lib.optionalString (stdenv.isDarwin && enableShared) ''
|
||||
cat << EOF >> user-config.jam
|
||||
using clang-darwin : : ${stdenv.cc.targetPrefix}c++
|
||||
: <linkflags>"-rpath $out/lib/"
|
||||
;
|
||||
EOF
|
||||
''
|
||||
# b2 has trouble finding the correct compiler and tools for cross compilation
|
||||
# since it apparently ignores $CC, $AR etc. Thus we need to set everything
|
||||
# in user-config.jam. To keep things simple we just set everything in an
|
||||
# uniform way for clang and gcc (which works thanks to our cc-wrapper).
|
||||
# We pass toolset later which will make b2 invoke everything in the right
|
||||
# way -- the other toolset in user-config.jam will be ignored.
|
||||
+ lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
|
||||
cat << EOF >> user-config.jam
|
||||
using gcc : cross : ${stdenv.cc.targetPrefix}c++
|
||||
: <archiver>$AR
|
||||
<ranlib>$RANLIB
|
||||
;
|
||||
|
||||
using clang : cross : ${stdenv.cc.targetPrefix}c++
|
||||
: <archiver>$AR
|
||||
<ranlib>$RANLIB
|
||||
;
|
||||
EOF
|
||||
''
|
||||
# b2 needs to be explicitly told how to find Python when cross-compiling
|
||||
+ lib.optionalString enablePython ''
|
||||
cat << EOF >> user-config.jam
|
||||
using python : : ${python.interpreter}
|
||||
: ${python}/include/python${python.pythonVersion}
|
||||
: ${python}/lib
|
||||
;
|
||||
EOF
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_LINK = lib.optionalString stdenv.isDarwin
|
||||
"-headerpad_max_install_names";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [ which boost-build ]
|
||||
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
|
||||
buildInputs = [ expat zlib bzip2 libiconv ]
|
||||
++ lib.optional (lib.versionAtLeast version "1.69") zstd
|
||||
++ [ xz ]
|
||||
++ lib.optional enableIcu icu
|
||||
++ lib.optionals enablePython [ libxcrypt python ]
|
||||
++ lib.optional enableNumpy python.pkgs.numpy;
|
||||
|
||||
configureScript = "./bootstrap.sh";
|
||||
configurePlatforms = [];
|
||||
dontDisableStatic = true;
|
||||
dontAddStaticConfigureFlags = true;
|
||||
configureFlags = [
|
||||
"--includedir=$(dev)/include"
|
||||
"--libdir=$(out)/lib"
|
||||
"--with-bjam=b2" # prevent bootstrapping b2 in configurePhase
|
||||
] ++ lib.optional (toolset != null) "--with-toolset=${toolset}"
|
||||
++ [ (if enableIcu then "--with-icu=${icu.dev}" else "--without-icu") ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
b2 ${b2Args}
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# boostbook is needed by some applications
|
||||
mkdir -p $dev/share/boostbook
|
||||
cp -a tools/boostbook/{xsl,dtd} $dev/share/boostbook/
|
||||
|
||||
# Let boost install everything else
|
||||
b2 ${b2Args} install
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
# Make boost header paths relative so that they are not runtime dependencies
|
||||
cd "$dev" && find include \( -name '*.hpp' -or -name '*.h' -or -name '*.ipp' \) \
|
||||
-exec sed '1s/^\xef\xbb\xbf//;1i#line 1 "{}"' -i '{}' \;
|
||||
'' + lib.optionalString (stdenv.hostPlatform.libc == "msvcrt") ''
|
||||
$RANLIB "$out/lib/"*.a
|
||||
'';
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
setOutputFlags = false;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
Taken from https://github.com/conan-io/conan-center-index/pull/361/files
|
||||
|
||||
diff --git a/include/boost/thread/pthread/thread_data.hpp b/include/boost/thread/pthread/thread_data.hpp
|
||||
index aefbeb4..bc9b136 100644
|
||||
--- a/boost/thread/pthread/thread_data.hpp
|
||||
+++ b/boost/thread/pthread/thread_data.hpp
|
||||
@@ -57,7 +57,7 @@ namespace boost
|
||||
#else
|
||||
std::size_t page_size = ::sysconf( _SC_PAGESIZE);
|
||||
#endif
|
||||
-#if PTHREAD_STACK_MIN > 0
|
||||
+#ifdef PTHREAD_STACK_MIN
|
||||
if (size<PTHREAD_STACK_MIN) size=PTHREAD_STACK_MIN;
|
||||
#endif
|
||||
size = ((size+page_size-1)/page_size)*page_size;
|
Loading…
Add table
Add a link
Reference in a new issue