gnu: highlight: Add "gui" output.

* gnu/packages/pretty-print.scm (highlight): Add gui output.
[source]: Add patch for GUI data directory.
[outputs]: Add gui.
[arguments]<phases>{fix-search-for-lua}: Fix Lua package name for GUI.
{build-gui}: Add phase to build GUI.
{install}: Set PREFIX variable.
{install-gui}: Add phase to install GUI.
[inputs]: Add qtbase-5.
* gnu/packages/patches/highlight-gui-data-dir.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
gemmaro 2023-08-07 23:05:41 +09:00 committed by Ludovic Courtès
parent 5d14e1c0b0
commit 820bf78cbc
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 103 additions and 15 deletions

View file

@ -1373,6 +1373,7 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-fortrantests.patch \
%D%/packages/patches/heimdal-CVE-2022-45142.patch \
%D%/packages/patches/helm-fix-gcc-9-build.patch \
%D%/packages/patches/highlight-gui-data-dir.patch \
%D%/packages/patches/http-parser-CVE-2020-8287.patch \
%D%/packages/patches/htslib-for-stringtie.patch \
%D%/packages/patches/hubbub-sort-entities.patch \

View file

@ -0,0 +1,51 @@
This patch distinguishes between the data directory path for GUI and the one
for non-GUI by allowing to set the former path.
highlight package has two outputs: out and gui. Both outputs have files which
will be in the same directory /share/highlight/ without this patch (see also
install and install-gui tasks in makefile). In the gui's data directory,
there are GUI specific files in /share/highlight/gui-files/{l10n,ext}/.
diff --git a/src/gui-qt/main.cpp b/src/gui-qt/main.cpp
index 4700dc1..3567745 100644
--- a/src/gui-qt/main.cpp
+++ b/src/gui-qt/main.cpp
@@ -47,8 +47,8 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
-#ifdef DATA_DIR
- translator.load(QString("%1/gui_files/l10n/highlight_%2").arg(DATA_DIR).arg(QLocale::system().name()));
+#ifdef GUI_DATA_DIR
+ translator.load(QString("%1/gui_files/l10n/highlight_%2").arg(GUI_DATA_DIR).arg(QLocale::system().name()));
#else
translator.load(QString("%1/gui_files/l10n/highlight_%2").arg(QDir::currentPath()).arg(QLocale::system().name()));
#endif
diff --git a/src/gui-qt/mainwindow.cpp b/src/gui-qt/mainwindow.cpp
index 3a21ad2..f060431 100644
--- a/src/gui-qt/mainwindow.cpp
+++ b/src/gui-qt/mainwindow.cpp
@@ -2131,8 +2131,8 @@ QString MainWindow::getDistFileFilterPath(){
#ifdef Q_OS_OSX
return QCoreApplication::applicationDirPath()+"/../Resources/gui_files/ext/fileopenfilter.conf";
#else
- #ifdef DATA_DIR
- return QString(DATA_DIR) + "/gui_files/ext/fileopenfilter.conf";
+ #ifdef GUI_DATA_DIR
+ return QString(GUI_DATA_DIR) + "/gui_files/ext/fileopenfilter.conf";
#else
return QDir::currentPath()+"/gui_files/ext/fileopenfilter.conf";
#endif
diff --git a/src/makefile b/src/makefile
index b1d7988..2963105 100644
--- a/src/makefile
+++ b/src/makefile
@@ -118,7 +118,7 @@ gui-qt: highlight-gui
highlight-gui: libhighlight.a ${GUI_OBJECTS}
cd gui-qt && \
- ${QMAKE} 'DEFINES+=DATA_DIR=\\\"${HL_DATA_DIR}\\\" CONFIG_DIR=\\\"${HL_CONFIG_DIR}\\\" DOC_DIR=\\\"${HL_DOC_DIR}\\\" ' && \
+ ${QMAKE} 'DEFINES+=DATA_DIR=\\\"${HL_DATA_DIR}\\\" CONFIG_DIR=\\\"${HL_CONFIG_DIR}\\\" DOC_DIR=\\\"${HL_DOC_DIR}\\\" GUI_DATA_DIR=\\\"${GUI_DATA_DIR}\\\" ' && \
$(MAKE)
$(OBJECTFILES) : makefile

View file

@ -52,7 +52,8 @@ (define-module (gnu packages pretty-print)
#:use-module (gnu packages lua)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages swig))
#:use-module (gnu packages swig)
#:use-module (gnu packages qt))
(define-public a2ps
(package
@ -352,13 +353,15 @@ (define-public highlight
(package
(name "highlight")
(version "4.7")
(outputs (list "out" "gui"))
(source (origin
(method url-fetch)
(uri (string-append "http://www.andre-simon.de/zip/highlight-"
version ".tar.bz2"))
(sha256
(base32
"1cl21qpgy92w1x53vrn1bgq84mkh6fgayc9k38mz4xmz2yw01nv1"))))
"1cl21qpgy92w1x53vrn1bgq84mkh6fgayc9k38mz4xmz2yw01nv1"))
(patches (search-patches "highlight-gui-data-dir.patch"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ;no tests
@ -371,17 +374,44 @@ (define-public highlight
(delete 'configure) ;no configure script
(add-after 'unpack 'fix-search-for-lua
(lambda _
(substitute* "src/makefile"
(("(LUA_PKG_NAME=).*" _ assignment)
(string-append assignment "lua-"
#$(version-major+minor (package-version
lua))
"\n")))
(substitute* "extras/swig/makefile"
(("lua")
(string-append "lua-"
#$(version-major+minor (package-version
lua)))))))
(let ((ver #$(version-major+minor (package-version
lua))))
(substitute* "src/makefile"
(("(LUA_PKG_NAME=).*" _ assignment)
(string-append assignment "lua-" ver "\n")))
(substitute* "src/gui-qt/highlight.pro"
(("(PKGCONFIG \\+= lua)" _ assignment)
(string-append assignment "-" ver)))
(substitute* "extras/swig/makefile"
(("lua")
(string-append "lua-" ver))))))
(add-after 'build 'build-gui
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(data (string-append out
"/share/highlight/"))
(conf (string-append out "/etc/highlight/"))
(doc (string-append out
"/share/doc/highlight/"))
(gui (assoc-ref outputs "gui"))
(gui-data (string-append gui
"/share/highlight/")))
;; modified version of gui task in makefile
(invoke "make"
"-C"
"./src"
"-f"
"./makefile"
(string-append "HL_DATA_DIR=" data)
(string-append "HL_CONFIG_DIR=" conf)
(string-append "HL_DOC_DIR=" doc)
(string-append "GUI_DATA_DIR=" gui-data)
"gui-qt"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "make" "install"
(string-append "PREFIX=" out)))))
(add-after 'install 'install-perl-bindings
(lambda* (#:key outputs #:allow-other-keys)
(let* ((perldir (string-append (assoc-ref outputs
@ -394,8 +424,14 @@ (define-public highlight
(invoke "make" "perl")
(invoke "perl" "-I" "." "testmod.pl")
(install-file "highlight.pm" perldir)
(install-file "highlight.so" autodir))))))))
(inputs (list lua boost perl))
(install-file "highlight.so" autodir)))))
(add-after 'install 'install-gui
(lambda* (#:key outputs #:allow-other-keys)
(let ((gui (assoc-ref outputs "gui")))
(mkdir-p (string-append gui "/bin"))
(invoke "make" "install-gui"
(string-append "PREFIX=" gui))))))))
(inputs (list lua boost perl qtbase-5))
(native-inputs (list pkg-config swig))
(home-page "http://www.andre-simon.de/doku/highlight/en/highlight.php")
(synopsis "Convert code to documents with syntax highlighting")