sbclPackages: fix build of qt, qt-libs and qtools
This commit is contained in:
parent
fd3646f517
commit
422f1c24bd
@ -11,6 +11,9 @@ let
|
|||||||
optionals
|
optionals
|
||||||
hasSuffix
|
hasSuffix
|
||||||
splitString
|
splitString
|
||||||
|
remove
|
||||||
|
optionalString
|
||||||
|
stringLength
|
||||||
;
|
;
|
||||||
|
|
||||||
# Used by builds that would otherwise attempt to write into storeDir.
|
# Used by builds that would otherwise attempt to write into storeDir.
|
||||||
@ -42,6 +45,11 @@ let
|
|||||||
# Patches are already applied in `build`
|
# Patches are already applied in `build`
|
||||||
patches = [];
|
patches = [];
|
||||||
src = build;
|
src = build;
|
||||||
|
# TODO(kasper): handle this with a setup hook
|
||||||
|
LD_LIBRARY_PATH =
|
||||||
|
build.LD_LIBRARY_PATH
|
||||||
|
+ (optionalString (stringLength build.LD_LIBRARY_PATH != 0) ":")
|
||||||
|
+ "${build}";
|
||||||
});
|
});
|
||||||
|
|
||||||
# A little hacky
|
# A little hacky
|
||||||
@ -332,6 +340,89 @@ let
|
|||||||
version = "f19162e76";
|
version = "f19162e76";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
qt = let
|
||||||
|
rev = "dffff3ee3dbd0686c85c323f579b8bbf4881e60e";
|
||||||
|
in build-with-compile-into-pwd rec {
|
||||||
|
pname = "commonqt";
|
||||||
|
version = builtins.substring 0 7 rev;
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
inherit rev;
|
||||||
|
owner = pname;
|
||||||
|
repo = pname;
|
||||||
|
hash = "sha256-GAgwT0D9mIkYPTHfCH/KxxIv7b6QGwcxwZE7ehH5xug=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ pkgs.qt4 ];
|
||||||
|
nativeBuildInputs = [ pkgs.smokegen pkgs.smokeqt ];
|
||||||
|
nativeLibs = [ pkgs.qt4 pkgs.smokegen pkgs.smokeqt ];
|
||||||
|
|
||||||
|
systems = [ "qt" ];
|
||||||
|
|
||||||
|
lispLibs = with ql; [
|
||||||
|
cffi named-readtables cl-ppcre alexandria
|
||||||
|
closer-mop iterate trivial-garbage bordeaux-threads
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
qt-libs = build-with-compile-into-pwd {
|
||||||
|
inherit (ql.qt-libs) pname version src;
|
||||||
|
patches = [ ./patches/qt-libs-dont-download.patch ];
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace systems/*.asd --replace ":qt+libs" ":qt"
|
||||||
|
echo "LD Path: $LD_LIBRARY_PATH"
|
||||||
|
'';
|
||||||
|
lispLibs = ql.qt-libs.lispLibs ++ [ qt ];
|
||||||
|
systems = [
|
||||||
|
"qt-libs"
|
||||||
|
"commonqt"
|
||||||
|
# "phonon"
|
||||||
|
# "qimageblitz"
|
||||||
|
# "qsci"
|
||||||
|
"qt3support"
|
||||||
|
"qtcore"
|
||||||
|
"qtdbus"
|
||||||
|
"qtdeclarative"
|
||||||
|
"qtgui"
|
||||||
|
"qthelp"
|
||||||
|
"qtnetwork"
|
||||||
|
"qtopengl"
|
||||||
|
"qtscript"
|
||||||
|
"qtsql"
|
||||||
|
"qtsvg"
|
||||||
|
"qttest"
|
||||||
|
"qtuitools"
|
||||||
|
# "qtwebkit"
|
||||||
|
"qtxml"
|
||||||
|
"qtxmlpatterns"
|
||||||
|
# "qwt"
|
||||||
|
"smokebase"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
commonqt = qt-libs;
|
||||||
|
qt3support = qt-libs;
|
||||||
|
qtcore = qt-libs;
|
||||||
|
qtdbus = qt-libs;
|
||||||
|
qtdeclarative = qt-libs;
|
||||||
|
qtgui = qt-libs;
|
||||||
|
qthelp = qt-libs;
|
||||||
|
qtnetwork = qt-libs;
|
||||||
|
qtopengl = qt-libs;
|
||||||
|
qtscript = qt-libs;
|
||||||
|
qtsql = qt-libs;
|
||||||
|
qtsvg = qt-libs;
|
||||||
|
qttest = qt-libs;
|
||||||
|
qtuitools = qt-libs;
|
||||||
|
qtxml = qt-libs;
|
||||||
|
qtxmlpatterns = qt-libs;
|
||||||
|
smokebase = qt-libs;
|
||||||
|
|
||||||
|
qtools = build-with-compile-into-pwd {
|
||||||
|
inherit (ql.qtools) pname version src nativeLibs;
|
||||||
|
lispLibs = [ qt ] ++ remove ql.qt_plus_libs ql.qtools.lispLibs ++ [ qt-libs ];
|
||||||
|
patches = [ ./patches/qtools-use-nix-libs.patch ];
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in packages
|
in packages
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
--- a/qt-libs.asd
|
||||||
|
+++ b/qt-libs.asd
|
||||||
|
@@ -17,5 +17,4 @@
|
||||||
|
:components ((:file "qt-libs"))
|
||||||
|
:depends-on (:qt-lib-generator
|
||||||
|
:cl-ppcre
|
||||||
|
- :cffi)
|
||||||
|
- :perform (asdf:load-op :after (op c) (uiop:symbol-call :qt-libs :ensure-standalone-libs)))
|
||||||
|
+ :cffi))
|
||||||
|
--- a/qt-libs.lisp
|
||||||
|
+++ b/qt-libs.lisp
|
||||||
|
@@ -94,16 +94,14 @@
|
||||||
|
standalone-dir)
|
||||||
|
|
||||||
|
(defun %ensure-lib-loaded (file)
|
||||||
|
- (let ((file (etypecase file
|
||||||
|
- (pathname file)
|
||||||
|
- (string (installed-library-file file))))
|
||||||
|
- (name (intern (string-upcase (pathname-name file))))
|
||||||
|
- #+sbcl(sb-ext:*muffled-warnings* 'style-warning))
|
||||||
|
- (cffi::register-foreign-library
|
||||||
|
- name `((T ,file))
|
||||||
|
- :search-path (to-directory file))
|
||||||
|
- (unless (cffi:foreign-library-loaded-p name)
|
||||||
|
- (cffi:load-foreign-library name))))
|
||||||
|
+ (let ((name (make-pathname :name (format nil "lib~a" file)
|
||||||
|
+ :type #+unix "so"
|
||||||
|
+ #+darwin "dylib")))
|
||||||
|
+ (or (find-if (lambda (lib)
|
||||||
|
+ (equal (cffi:foreign-library-pathname lib)
|
||||||
|
+ (namestring name)))
|
||||||
|
+ (cffi:list-foreign-libraries))
|
||||||
|
+ (cffi:load-foreign-library name))))
|
||||||
|
|
||||||
|
(defun ensure-lib-loaded (file)
|
||||||
|
(cond ((pathnamep file)
|
@ -0,0 +1,19 @@
|
|||||||
|
Dont use the qt+libs system for managing Qt dependencies, because Nix provides
|
||||||
|
them already.
|
||||||
|
Don't build the deploy.lisp helper file, because Nix also can handle deployment.
|
||||||
|
--- a/qtools.asd
|
||||||
|
+++ b/qtools.asd
|
||||||
|
@@ -33,10 +33,9 @@
|
||||||
|
(:file "generate")
|
||||||
|
(:file "dynamic")
|
||||||
|
(:file "precompile")
|
||||||
|
- (:file "deploy")
|
||||||
|
(:file "fast-call")
|
||||||
|
(:file "documentation"))
|
||||||
|
- :depends-on (:qt+libs
|
||||||
|
+ :depends-on (:qt
|
||||||
|
:deploy
|
||||||
|
:cl-ppcre
|
||||||
|
:closer-mop
|
||||||
|
|
||||||
|
Diff finished. Sun Oct 2 14:38:06 2022
|
Loading…
Reference in New Issue
Block a user