Merge pull request #150595 from willcohen/qscintilla

qscintilla: fix build on darwin
This commit is contained in:
Ben Siraphob 2022-01-06 23:51:55 +07:00 committed by GitHub
commit 88d7e0ff33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 158 additions and 61 deletions

View file

@ -7,7 +7,7 @@
, alsa-lib
, libsndfile
, qt4
, qscintilla
, qscintilla-qt4
, libpulseaudio
, libjack2
, audioBackend ? "pulse" # "pulse", "alsa", or "jack"
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
alsa-lib
libsndfile
qt4
qscintilla
qscintilla-qt4
] ++ lib.optional (audioBackend == "pulse") libpulseaudio
++ lib.optional (audioBackend == "jack") libjack2;

View file

@ -114,7 +114,7 @@ in mkDerivation rec {
cmakeFlags = [
"-DCMAKE_SKIP_BUILD_RPATH=OFF"
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"
"-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5"
"-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"
] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
++ lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, cmake, qt4, qscintilla }:
{ lib, stdenv, fetchFromGitHub, cmake, qt4, qscintilla-qt4 }:
stdenv.mkDerivation rec {
pname = "sqliteman";
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [ cmake ];
buildInputs = [ qt4 qscintilla ];
buildInputs = [ qt4 qscintilla-qt4 ];
prePatch = ''
sed -i 's,m_file(0),m_file(QString()),' Sqliteman/sqliteman/main.cpp
@ -20,8 +20,8 @@ stdenv.mkDerivation rec {
preConfigure = ''
cd Sqliteman
sed -i 's,/usr/include/Qsci,${qscintilla}/include/Qsci,' cmake/modules/FindQScintilla.cmake
sed -i 's,PATHS ''${QT_LIBRARY_DIR},PATHS ${qscintilla}/libs,' cmake/modules/FindQScintilla.cmake
sed -i 's,/usr/include/Qsci,${qscintilla-qt4}/include/Qsci,' cmake/modules/FindQScintilla.cmake
sed -i 's,PATHS ''${QT_LIBRARY_DIR},PATHS ${qscintilla-qt4}/libs,' cmake/modules/FindQScintilla.cmake
'';
meta = with lib; {

View file

@ -0,0 +1,60 @@
{ stdenv, lib, fetchurl, unzip, qt4, qmake4Hook
}:
stdenv.mkDerivation rec {
pname = "qscintilla-qt4";
version = "2.11.6";
src = fetchurl {
url = "https://www.riverbankcomputing.com/static/Downloads/QScintilla/${version}/QScintilla-${version}.tar.gz";
sha256 = "5zRgV9tH0vs4RGf6/M/LE6oHQTc8XVk7xytVsvDdIKc=";
};
sourceRoot = "QScintilla-${version}/Qt4Qt5";
buildInputs = [ qt4 ];
nativeBuildInputs = [ unzip qmake4Hook ];
patches = ./fix-qt4-build.patch;
# Make sure that libqscintilla2.so is available in $out/lib since it is expected
# by some packages such as sqlitebrowser
postFixup = ''
ln -s $out/lib/libqscintilla2_qt?.so $out/lib/libqscintilla2.so
'';
dontWrapQtApps = true;
postPatch = ''
substituteInPlace qscintilla.pro \
--replace '$$[QT_INSTALL_LIBS]' $out/lib \
--replace '$$[QT_INSTALL_HEADERS]' $out/include \
--replace '$$[QT_INSTALL_TRANSLATIONS]' $out/translations \
--replace '$$[QT_HOST_DATA]/mkspecs' $out/mkspecs \
--replace '$$[QT_INSTALL_DATA]/mkspecs' $out/mkspecs \
--replace '$$[QT_INSTALL_DATA]' $out/share
'';
meta = with lib; {
description = "A Qt port of the Scintilla text editing library";
longDescription = ''
QScintilla is a port to Qt of Neil Hodgson's Scintilla C++ editor
control.
As well as features found in standard text editing components,
QScintilla includes features especially useful when editing and
debugging source code. These include support for syntax styling,
error indicators, code completion and call tips. The selection
margin can contain markers like those used in debuggers to
indicate breakpoints and the current line. Styling choices are
more open than with many editors, allowing the use of
proportional fonts, bold and italics, multiple foreground and
background colours and multiple fonts.
'';
homepage = "https://www.riverbankcomputing.com/software/qscintilla/intro";
license = with licenses; [ gpl3 ]; # and commercial
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.linux;
};
}

View file

@ -1,33 +1,27 @@
{ stdenv, lib, fetchurl, unzip
, qt4 ? null, qmake4Hook ? null
, withQt5 ? false, qtbase ? null, qtmacextras ? null, qmake ? null
, qtbase, qtmacextras
, qmake
, fixDarwinDylibNames
}:
let
pname = "qscintilla-qt${if withQt5 then "5" else "4"}";
version = "2.11.6";
in stdenv.mkDerivation rec {
inherit pname version;
stdenv.mkDerivation rec {
pname = "qscintilla-qt5";
version = "2.13.1";
src = fetchurl {
url = "https://www.riverbankcomputing.com/static/Downloads/QScintilla/${version}/QScintilla-${version}.tar.gz";
sha256 = "5zRgV9tH0vs4RGf6/M/LE6oHQTc8XVk7xytVsvDdIKc=";
url = "https://www.riverbankcomputing.com/static/Downloads/QScintilla/${version}/QScintilla_src-${version}.tar.gz";
sha256 = "gA49IHGpa8zNdYE0avDS/ij8MM1oUwy4MCaF0BOv1Uo=";
};
sourceRoot = "QScintilla-${version}/Qt4Qt5";
sourceRoot = "QScintilla_src-${version}/src";
buildInputs = [ (if withQt5 then qtbase else qt4) ];
buildInputs = [ qtbase ];
propagatedBuildInputs = lib.optional (withQt5 && stdenv.isDarwin) qtmacextras;
propagatedBuildInputs = lib.optionals stdenv.isDarwin [ qtmacextras ];
nativeBuildInputs = [ unzip ]
++ (if withQt5 then [ qmake ] else [ qmake4Hook ])
nativeBuildInputs = [ unzip qmake ]
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
patches = lib.optional (!withQt5) ./fix-qt4-build.patch;
# Make sure that libqscintilla2.so is available in $out/lib since it is expected
# by some packages such as sqlitebrowser
postFixup = ''
@ -36,14 +30,13 @@ in stdenv.mkDerivation rec {
dontWrapQtApps = true;
postPatch = ''
preConfigure = ''
substituteInPlace qscintilla.pro \
--replace '$$[QT_INSTALL_LIBS]' $out/lib \
--replace '$$[QT_INSTALL_HEADERS]' $out/include \
--replace '$$[QT_INSTALL_TRANSLATIONS]' $out/translations \
--replace '$$[QT_HOST_DATA]/mkspecs' $out/mkspecs \
--replace '$$[QT_INSTALL_DATA]/mkspecs' $out/mkspecs \
--replace '$$[QT_INSTALL_DATA]' $out/share${lib.optionalString (! withQt5) "/qt"}
--replace '$$[QT_INSTALL_DATA]' $out/share
'';
meta = with lib; {

View file

@ -0,0 +1,42 @@
{ lib
, buildPythonPackage
, disabledIf
, isPy3k
, isPyPy
, pkgs
, python
, pyqt4
}:
disabledIf (isPy3k || isPyPy)
(buildPythonPackage {
pname = "qscintilla";
version = pkgs.qscintilla.version;
format = "other";
src = pkgs.qscintilla.src;
nativeBuildInputs = [ pkgs.xorg.lndir ];
buildInputs = [ pyqt4.qt pyqt4 ];
preConfigure = ''
mkdir -p $out
lndir ${pyqt4} $out
rm -rf "$out/nix-support"
cd Python
${python.executable} ./configure-old.py \
--destdir $out/lib/${python.libPrefix}/site-packages/PyQt4 \
--apidir $out/api/${python.libPrefix} \
-n ${pkgs.qscintilla}/include \
-o ${pkgs.qscintilla}/lib \
--sipdir $out/share/sip
'';
meta = with lib; {
description = "A Python binding to QScintilla, Qt based text editing control";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ danbst ];
platforms = platforms.linux;
};
})

View file

@ -2,51 +2,53 @@
, pythonPackages
, qscintilla
, qtbase
, qmake
, qtmacextras
, stdenv
}:
let
inherit (pythonPackages) buildPythonPackage isPy3k python sip_4 pyqt5;
inherit (pythonPackages) buildPythonPackage isPy3k python sip sipbuild pyqt5 pyqt-builder;
in buildPythonPackage rec {
pname = "qscintilla";
version = qscintilla.version;
src = qscintilla.src;
format = "other";
format = "pyproject";
disabled = !isPy3k;
nativeBuildInputs = [ sip_4 qtbase ];
buildInputs = [ qscintilla ];
propagatedBuildInputs = [ pyqt5 ];
nativeBuildInputs = [ sip qmake pyqt-builder qscintilla ];
buildInputs = [ qtbase ];
propagatedBuildInputs = [ pyqt5 ] ++ lib.optionals stdenv.isDarwin [ qtmacextras ];
dontWrapQtApps = true;
postPatch = ''
substituteInPlace Python/configure.py \
--replace \
"target_config.py_module_dir" \
"'$out/${python.sitePackages}'"
'';
preConfigure = ''
# configure.py will look for this folder
mkdir -p $out/share/sip/PyQt5
cd Python
substituteInPlace configure.py \
--replace "qmake = {'CONFIG': 'qscintilla2'}" "qmake = {'CONFIG': 'qscintilla2', 'QT': 'widgets printsupport'}"
${python.executable} ./configure.py \
--pyqt=PyQt5 \
--destdir=$out/${python.sitePackages}/PyQt5 \
--stubsdir=$out/${python.sitePackages}/PyQt5 \
--apidir=$out/api/${python.libPrefix} \
--qsci-incdir=${qscintilla}/include \
--qsci-featuresdir=${qscintilla}/mkspecs/features \
--qsci-libdir=${qscintilla}/lib \
--pyqt-sipdir=${pyqt5}/${python.sitePackages}/PyQt5/bindings \
--qsci-sipdir=$out/share/sip/PyQt5 \
--sip-incdir=${sip_4}/include
cp pyproject-qt5.toml pyproject.toml
echo '[tool.sip.project]' >> pyproject.toml
echo 'sip-include-dirs = [ "${pyqt5}/${python.sitePackages}/PyQt5/bindings"]' \
>> pyproject.toml
'' + lib.optionalString stdenv.isDarwin ''
substituteInPlace project.py \
--replace \
"if self.project.qsci_external_lib:
if self.qsci_features_dir is not None:" \
"if self.project.qsci_external_lib:
self.builder_settings.append('QT += widgets')
self.builder_settings.append('QT += printsupport')
if self.qsci_features_dir is not None:"
'';
dontConfigure = true;
build = ''
sip-install --qsci-features-dir ${qscintilla}/mkspecs/features \
--qsci-include-dir ${qscintilla}/include \
--qsci-library-dir ${qscintilla}/lib --api-dir ${qscintilla}/share";
'';
postInstall = ''
# Needed by pythonImportsCheck to find the module
export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"

View file

@ -9094,7 +9094,9 @@ with pkgs;
qprint = callPackage ../tools/text/qprint { };
qscintilla = callPackage ../development/libraries/qscintilla { };
qscintilla = libsForQt5.callPackage ../development/libraries/qscintilla { };
qscintilla-qt4 = callPackage ../development/libraries/qscintilla-qt4 { };
qshowdiff = callPackage ../tools/text/qshowdiff { };

View file

@ -8289,13 +8289,13 @@ in {
qreactor = callPackage ../development/python-modules/qreactor { };
qscintilla-qt4 = callPackage ../development/python-modules/qscintilla { };
qscintilla-qt4 = callPackage ../development/python-modules/qscintilla-qt4 { };
qscintilla-qt5 = pkgs.libsForQt5.callPackage ../development/python-modules/qscintilla-qt5 {
pythonPackages = self;
};
qscintilla = self.qscintilla-qt4;
qscintilla = self.qscintilla-qt5;
qtawesome = callPackage ../development/python-modules/qtawesome { };

View file

@ -190,9 +190,7 @@ in (kdeFrameworks // plasmaMobileGear // plasma5 // plasma5.thirdParty // kdeGea
qoauth = callPackage ../development/libraries/qoauth { };
qscintilla = callPackage ../development/libraries/qscintilla {
withQt5 = true;
};
qscintilla = callPackage ../development/libraries/qscintilla { };
qt5ct = callPackage ../tools/misc/qt5ct { };