freecad: python3, qt5, occt7 (#63348)

freecad: python3, qt5, occt7
This commit is contained in:
Gabriel Ebner
2019-06-18 22:00:23 +02:00
committed by GitHub
15 changed files with 249 additions and 144 deletions

View File

@@ -1,31 +1,40 @@
{ stdenv
, buildPythonPackage
, fetchhg
, pkgs
, isPy3k
}:
{ stdenv, buildPythonPackage, fetchFromGitHub, pkgs }:
buildPythonPackage rec {
version = "20101207";
pname = "pivy";
disabled = isPy3k; # Judging from SyntaxError
version = "0.6.5a2";
src = fetchhg {
url = "https://bitbucket.org/Coin3D/pivy";
rev = "8eab90908f2a3adcc414347566f4434636202344";
sha256 = "18n14ha2d3j3ghg2f2aqnf2mks94nn7ma9ii7vkiwcay93zm82cf";
src = fetchFromGitHub {
owner = "FreeCAD";
repo = "pivy";
rev = version;
sha256 = "1w03jaha36bjyfaz8hchnv8yrkm5715w15crhd3qrlagz8fs38hm";
};
nativeBuildInputs = with pkgs; [
swig1 coin3d soqt
swig qt5.qmake cmake
];
buildInputs = with pkgs; with xorg; [
coin3d soqt
coin3d soqt qt5.qtbase
libGLU_combined
libXi libXext libSM libICE libX11
];
NIX_CFLAGS_COMPILE = [
"-I${pkgs.qt5.qtbase.dev}/include/QtCore"
"-I${pkgs.qt5.qtbase.dev}/include/QtGui"
"-I${pkgs.qt5.qtbase.dev}/include/QtOpenGL"
"-I${pkgs.qt5.qtbase.dev}/include/QtWidgets"
];
doCheck = false;
postPatch = ''
substituteInPlace CMakeLists.txt --replace \$'{SoQt_INCLUDE_DIRS}' \
\$'{Coin_INCLUDE_DIR}'\;\$'{SoQt_INCLUDE_DIRS}'
'';
meta = with stdenv.lib; {
homepage = http://pivy.coin3d.org/;
description = "A Python binding for Coin";

View File

@@ -0,0 +1,35 @@
{ buildPythonPackage, wrapPython, python, fetchurl, stdenv, cmake, qt5,
shiboken2, pyside2 }:
stdenv.mkDerivation rec {
pname = "pyside2-tools";
inherit (pyside2) version src;
postPatch = ''
cd sources/pyside2-tools
'';
nativeBuildInputs = [ cmake wrapPython ];
propagatedBuildInputs = [ shiboken2 pyside2 ];
buildInputs = [ python qt5.qtbase ];
cmakeFlags = [
"-DBUILD_TESTS=OFF"
];
postInstall = ''
rm $out/bin/pyside_tool.py
'';
postFixup = ''
wrapPythonPrograms
'';
meta = with stdenv.lib; {
description = "PySide2 development tools";
license = licenses.gpl2;
homepage = "https://wiki.qt.io/Qt_for_Python";
maintainers = with maintainers; [ gebner ];
};
}

View File

@@ -0,0 +1,38 @@
{ buildPythonPackage, python, fetchurl, stdenv,
cmake, ninja, qt5, shiboken2 }:
stdenv.mkDerivation rec {
pname = "pyside2";
version = "5.12.3";
src = fetchurl {
url = "https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz";
sha256 = "0hk89jm8pa0q6kifask5rrffa3bvx02dg2f97ibv7wds9dysnyjg";
};
patches = [
./dont_ignore_optional_modules.patch
];
postPatch = ''
cd sources/pyside2
'';
cmakeFlags = [
"-DBUILD_TESTS=OFF"
"-DPYTHON_EXECUTABLE=${python.interpreter}"
];
nativeBuildInputs = [ cmake ninja qt5.qmake shiboken2 python ];
buildInputs = with qt5; [
qtbase qtxmlpatterns qtmultimedia qttools qtx11extras qtlocation qtscript
qtwebsockets qtwebengine qtwebchannel qtcharts qtsensors qtsvg
];
meta = with stdenv.lib; {
description = "LGPL-licensed Python bindings for Qt";
license = licenses.lgpl21;
homepage = "https://wiki.qt.io/Qt_for_Python";
maintainers = with maintainers; [ gebner ];
};
}

View File

@@ -0,0 +1,11 @@
--- pyside-setup-everywhere-src-5.12.3/sources/pyside2/CMakeLists.txt~ 2019-06-15 19:07:48.368704430 +0200
+++ pyside-setup-everywhere-src-5.12.3/sources/pyside2/CMakeLists.txt 2019-06-15 19:08:04.429489908 +0200
@@ -219,7 +219,7 @@
# If the module was found, and also the module path is the same as the
# Qt5Core base path, we will generate the list with the modules to be installed
set(looked_in_message ". Looked in: ${${_name_dir}}")
- if("${${_name_found}}" AND (("${found_basepath}" GREATER "0") OR ("${found_basepath}" EQUAL "0")))
+ if("${${_name_found}}")
message(STATUS "${module_state} module ${name} found (${ARGN})${looked_in_message}")
# record the shortnames for the tests
list(APPEND all_module_shortnames ${shortname})

View File

@@ -0,0 +1,36 @@
{ buildPythonPackage, python, fetchurl, stdenv, pyside2,
cmake, qt5, llvmPackages }:
stdenv.mkDerivation rec {
pname = "shiboken2";
inherit (pyside2) version src;
patches = [
./nix_compile_cflags.patch
];
postPatch = ''
cd sources/shiboken2
'';
CLANG_INSTALL_DIR = "${llvmPackages.libclang.out}";
nativeBuildInputs = [ cmake ];
buildInputs = [ llvmPackages.libclang python qt5.qtbase qt5.qtxmlpatterns ];
cmakeFlags = [
"-DBUILD_TESTS=OFF"
];
postInstall = ''
rm $out/bin/shiboken_tool.py
'';
meta = with stdenv.lib; {
description = "Generator for the PySide2 Qt bindings";
license = with licenses; [ gpl2 lgpl21 ];
homepage = "https://wiki.qt.io/Qt_for_Python";
maintainers = with maintainers; [ gebner ];
};
}

View File

@@ -0,0 +1,27 @@
--- pyside-setup-everywhere-src-5.12.3/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp~ 2019-06-15 10:31:04.712949189 +0200
+++ pyside-setup-everywhere-src-5.12.3/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp 2019-06-15 11:52:52.894987343 +0200
@@ -317,15 +317,15 @@
}
#endif // NEED_CLANG_BUILTIN_INCLUDES
- // Append the c++ include paths since Clang is unable to find <list> etc
- // on RHEL 7 with g++ 6.3 or CentOS 7.2.
- // A fix for this has been added to Clang 5.0, so, the code can be removed
- // once Clang 5.0 is the minimum version.
- if (needsGppInternalHeaders()) {
- const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
- for (const HeaderPath &h : gppPaths) {
- if (h.path.contains("c++"))
- headerPaths.append(h);
+ const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
+ for (const HeaderPath &h : gppPaths) {
+ // PySide2 requires that Qt headers are not -isystem
+ // https://bugreports.qt.io/browse/PYSIDE-787
+ if (!h.path.contains("-qt")) {
+ // add using -isystem
+ headerPaths.append(h);
+ } else {
+ headerPaths.append({h.path, HeaderType::Standard});
}
}
#else