* [bug#53634] [PATCH 0/4] gnu: Add openboardview. @ 2022-01-30 7:45 Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer 2022-02-09 10:45 ` [bug#53634] [PATCH 0/4] " Ludovic Courtès 0 siblings, 2 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-30 7:45 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer Hello Guix! I've finally got around to getting this to build and run. I got interested in it when wanting to view board files for an X200 (libreboot-related). Enjoy, Maxim Cournoyer (4): gnu: Add imgui. gnu: Add glad. gnu: Add utf8-h. gnu: Add openboardview. gnu/local.mk | 1 + gnu/packages/c.scm | 41 ++++++- gnu/packages/electronics.scm | 113 +++++++++++++++++- gnu/packages/gl.scm | 35 +++++- .../openboardview-use-system-utf8.patch | 48 ++++++++ gnu/packages/toolkits.scm | 104 ++++++++++++++++ 6 files changed, 337 insertions(+), 5 deletions(-) create mode 100644 gnu/packages/patches/openboardview-use-system-utf8.patch create mode 100644 gnu/packages/toolkits.scm -- 2.34.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH 1/4] gnu: Add imgui. 2022-01-30 7:45 [bug#53634] [PATCH 0/4] gnu: Add openboardview Maxim Cournoyer @ 2022-01-30 7:48 ` Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 2/4] gnu: Add glad Maxim Cournoyer ` (2 more replies) 2022-02-09 10:45 ` [bug#53634] [PATCH 0/4] " Ludovic Courtès 1 sibling, 3 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-30 7:48 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer * gnu/packages/toolkits.scm (imgui): New variable. --- gnu/packages/toolkits.scm | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 gnu/packages/toolkits.scm diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm new file mode 100644 index 0000000000..e980438ca9 --- /dev/null +++ b/gnu/packages/toolkits.scm @@ -0,0 +1,104 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages toolkits) + #:use-module (gnu packages gl) + #:use-module (gnu packages sdl) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (guix git-download)) + +(define-public imgui + (package + (name "imgui") + (version "1.86") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocornut/imgui") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Contains fonts and other unneeded files. + (delete-file-recursively "misc"))))) + (outputs '("out" "doc")) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no test suite + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-includes + (lambda _ + (substitute* (find-files "." "(\\.cpp|\\.mm)$") + (("#include <SDL") + "#include <SDL2/SDL")))) + (delete 'configure) + (replace 'build + (lambda _ + ;; Build main library. + (invoke ,(cc-for-target) "-I" (getcwd) + "-g" "-O2" "-fPIC" "-shared" + "-lGL" "-lSDL2" "-lglfw" + "-o" "libimgui.so" + "imgui.cpp" + "imgui_draw.cpp" + ;; Include the supported backends. + "backends/imgui_impl_glfw.cpp" + "backends/imgui_impl_sdl.cpp" + "backends/imgui_impl_opengl2.cpp" + "backends/imgui_impl_opengl3.cpp"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc")) + (header? (cut string-suffix? ".h" <>)) + (imgui-headers (scandir "." header?)) + (backend-headers (find-files + "backends" + "(glfw|opengl|sdl|vulkan).*\\.h$"))) + (install-file "libimgui.so" (string-append out "/lib")) + ;; Install headers. + (for-each (lambda (f) + (install-file f (string-append out "/include/imgui"))) + imgui-headers) + (for-each (lambda (f) + (install-file f (string-append + out "/include/imgui/backends"))) + backend-headers) + ;; Install examples. + (copy-recursively + "examples" (string-append + doc "/share/imgui/examples")))))))) + (inputs (list glfw mesa sdl2)) + (home-page "https://github.com/ocornut/imgui") + (synopsis "Graphical user interface library for C++") + (description "@code{dear imgui} (also know as ImGui) is a graphical user +interface library for C++. It outputs vertex buffers that can be rendered in +a 3D application. It is fast, renderer agnostic and self-contained.") + (license license:expat))) -- 2.34.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH 2/4] gnu: Add glad. 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer @ 2022-01-30 7:48 ` Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 3/4] gnu: Add utf8-h Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 4/4] gnu: Add openboardview Maxim Cournoyer 2 siblings, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-30 7:48 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer * gnu/packages/gl.scm (glad): New variable. --- gnu/packages/gl.scm | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index fa49679870..7ca1c510ab 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> -;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com> @@ -63,6 +63,7 @@ (define-module (gnu packages gl) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system meson) + #:use-module (guix build-system python) #:use-module (guix build-system waf) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -181,6 +182,38 @@ (define-public ftgl Polygon meshes, and Extruded polygon meshes.") (license license:x11))) +(define-public glad + (package + (name "glad") + (version "0.1.36") + (source + (origin + ;; We fetch the sources from the repository since the PyPI archive + ;; doesn't contain the CMakeLists.txt file which is useful for + ;; integration with other software, such as the openboardview package. + (method git-fetch) + (uri (git-reference + (url "https://github.com/Dav1dde/glad") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0m55ya1zrmg6n2cljkajy80ilmi5sblln8742fm0k1sw9k7hzn8n")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-cmakelists.txt + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/" ,name))) + (install-file "CMakeLists.txt" share))))))) + (home-page "https://github.com/Dav1dde/glad") + (synopsis "Multi-language GL/GLES/EGL/GLX/WGL loader generator") + (description "Glad uses the official Khronos XML specifications to +generate a GL/GLES/EGL/GLX/WGL loader tailored for specific requirements.") + (license license:expat))) + (define-public s2tc (package (name "s2tc") -- 2.34.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH 3/4] gnu: Add utf8-h. 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 2/4] gnu: Add glad Maxim Cournoyer @ 2022-01-30 7:48 ` Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 4/4] gnu: Add openboardview Maxim Cournoyer 2 siblings, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-30 7:48 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer * gnu/packages/c.scm (utf8-h): New variable. --- gnu/packages/c.scm | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index 459d996fa2..e53a7c865f 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com> -;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 David Dashyan <mail@davie.li> ;;; @@ -895,3 +895,42 @@ (define-public aws-c-mqtt Telemetry Transport (MQTT) publish-subscribe messaging protocol.") (home-page "https://github.com/awslabs/aws-c-mqtt") (license license:asl2.0))) + +(define-public utf8-h + ;; The latest tag is used as there is no release. + (let ((commit "500d4ea9f4c3449e5243c088d8af8700f7189734") + (revision "0")) + (package + (name "utf8-h") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sheredom/utf8.h") + (commit commit))) + (file-name (git-file-name "utf8.h" version)) + (sha256 + (base32 + "0x9f7ivww8c7cigf4ck0hfx2bm79qgx6q4ccwzqbzkrmcrl9shfb")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'build) + (delete 'configure) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "test" + (invoke "cmake" ".") + (invoke "make"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "utf8.h" (string-append out "/include")))))))) + (home-page "https://github.com/sheredom/utf8.h") + (synopsis "Single header UTF-8 string functions for C and C++") + (description "A simple one header solution to supporting UTF-8 strings in +C and C++. The functions it provides are like those from the C header +string.h, but with a utf8* prefix instead of the str* prefix.") + (license license:unlicense)))) -- 2.34.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH 4/4] gnu: Add openboardview. 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 2/4] gnu: Add glad Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 3/4] gnu: Add utf8-h Maxim Cournoyer @ 2022-01-30 7:48 ` Maxim Cournoyer 2022-01-31 5:22 ` bug#53647: __TIMESTAMP__ CPP macro not honoring SOURCE_EPOCH_DATE Maxim Cournoyer 2022-01-31 5:45 ` [bug#53634] [PATCH v2 4/4] gnu: Add openboardview Maxim Cournoyer 2 siblings, 2 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-30 7:48 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer * gnu/packages/electronics.scm (openboardview): New variable. * gnu/packages/patches/openboardview-use-system-utf8.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/electronics.scm | 113 +++++++++++++++++- .../openboardview-use-system-utf8.patch | 48 ++++++++ 3 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/openboardview-use-system-utf8.patch diff --git a/gnu/local.mk b/gnu/local.mk index 96e6cb08f4..692cd7d6bc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1567,6 +1567,7 @@ dist_patch_DATA = \ %D%/packages/patches/onnx-shared-libraries.patch \ %D%/packages/patches/onnx-skip-model-downloads.patch \ %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch \ + %D%/packages/patches/openboardview-use-system-utf8.patch \ %D%/packages/patches/opencascade-oce-glibc-2.26.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ %D%/packages/patches/openjdk-10-idlj-reproducibility.patch \ diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm index 54f246faa6..918bd8f9a8 100644 --- a/gnu/packages/electronics.scm +++ b/gnu/packages/electronics.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,11 +22,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages electronics) - #:use-module (guix utils) - #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (gnu packages) @@ -34,11 +36,14 @@ (define-module (gnu packages electronics) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages boost) + #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages embedded) + #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) @@ -48,7 +53,10 @@ (define-module (gnu packages electronics) #:use-module (gnu packages m4) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) - #:use-module (gnu packages qt)) + #:use-module (gnu packages qt) + #:use-module (gnu packages sdl) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages stb)) (define-public libserialport (package @@ -240,6 +248,105 @@ (define-public sigrok-cli (description "Sigrok-cli is a command-line frontend for sigrok.") (license license:gpl3+))) +(define-public openboardview + (package + (name "openboardview") + (version "8.95.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/OpenBoardView/OpenBoardView") + (commit version) + (recursive? #t))) ;for the "src/imgui" submodule + (file-name (git-file-name name version)) + (modules '((ice-9 ftw) + (srfi srfi-26) + (guix build utils))) + (snippet + '(with-directory-excursion "src" + ;; Keep the bundled ImGui for now, as in the current version + ;; (~1.79), it requires the glad loader generated at build + ;; time as an input. + (define keep (list "." ".." "imgui" "openboardview")) + (for-each (lambda (f) + (when (eq? 'directory (stat:type (lstat f))) + (delete-file-recursively f))) + (scandir "." (negate (cut member <> keep)))))) + (patches + (search-patches "openboardview-use-system-utf8.patch")) + (sha256 + (base32 + "16mrs7bimwp8a8lb2wqhfisy6j0hl9574l4h9yb66v46aglvmd3h")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:imported-modules `((guix build glib-or-gtk-build-system) + ,@%cmake-build-system-modules) + #:modules '((guix build cmake-build-system) + (guix build utils) + ((guix build glib-or-gtk-build-system) #:prefix gtk:)) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'configure-glad + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/CMakeLists.txt" + (("add_subdirectory\\(glad\\)") + (string-append + ;; Configure Glad to use static Khronos XML specifications + ;; instead of attempting to fetch them from the Internet. + "option(GLAD_REPRODUCIBLE \"Reproducible build\" ON)\n" + ;; Use the CMake files from our glad package. + "add_subdirectory(" + (search-input-directory inputs "share/glad") ;source_dir + " src/glad)\n"))))) ;binary dir + (add-before 'configure 'fix-utf8-include-directive + ;; Our utf8-h package makes the header available as "utf8.h" + ;; directly rather than "utf8/utf8.h". + (lambda _ + (substitute* '("src/openboardview/FileFormats/BRDFile.cpp" + "src/openboardview/BoardView.cpp") + (("utf8/utf8.h") "utf8.h")))) + (add-before 'configure 'dynamically-load-gtk-via-absolute-path + ;; The GTK library is not linked thus not present in the RUNPATH of + ;; the produced binary; the absolute path of the libraries must to + ;; the dynamic loader otherwise they aren't found. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/openboardview/unix.cpp" + (("libgtk-3.so") + (search-input-file inputs "lib/libgtk-3.so"))))) + ;; Add the two extra phases from `glib-or-gtk-build-system'. + (add-after 'install 'glib-or-gtk-compile-schemas + (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas)) + (add-after 'install 'glib-or-gtk-wrap + (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap))))) + (native-inputs + (list pkg-config + python + glad + stb-image + utf8-h)) + (inputs + (list fontconfig + gtk+ + sdl2 + sqlite + zlib)) + (home-page "https://openboardview.org/") + (synopsis "Viewer for BoardView files") + (description "OpenBoardView is a viewer for BoardView files, which present +the details of a printed circuit board (PCB). It comes with features +such as: +@itemize +@item Dynamic part outline rendering, including complex connectors +@item Annotations, for leaving notes about parts, nets, pins or location +@item Configurable colour themes +@item Configurable DPI to facilitate usage on 4K monitors +@item Configurable for running on slower systems +@item Reads FZ (with key), BRD, BRD2, BDV and BV* formats. +@end itemize") + (license license:expat))) + (define-public pulseview (package (name "pulseview") diff --git a/gnu/packages/patches/openboardview-use-system-utf8.patch b/gnu/packages/patches/openboardview-use-system-utf8.patch new file mode 100644 index 0000000000..25b5952bda --- /dev/null +++ b/gnu/packages/patches/openboardview-use-system-utf8.patch @@ -0,0 +1,48 @@ +From 251e23422f37c93a3f460fb660c5e5bfa8200d91 Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Sun, 2 Dec 2018 16:40:39 -0500 +Subject: [PATCH] build system: Allow using utf8.h from the system. + +--- + src/CMakeLists.txt | 12 ++++++++---- + src/openboardview/CMakeLists.txt | 1 + + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 90442ed..26d4a69 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -8,10 +8,14 @@ if(NOT WIN32 OR MINGW) + endif() + + ## utf8.h ## +-execute_process( +- COMMAND git submodule update --init src/utf8 +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} +-) ++FIND_PATH(UTF8_INCLUDE_DIR utf8.h) ++if(NOT UTF8_INCLUDE_DIR) ++ execute_process( ++ COMMAND git submodule update --init src/utf8 ++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} ++ ) ++ set(UTF8_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/utf8) ++endif() + + ## zlib ## + find_package(ZLIB) +diff --git a/src/openboardview/CMakeLists.txt b/src/openboardview/CMakeLists.txt +index b0bdbe3..6c4564c 100644 +--- a/src/openboardview/CMakeLists.txt ++++ b/src/openboardview/CMakeLists.txt +@@ -44,6 +44,7 @@ include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/.. + ${IMGUI_INCLUDE_DIRS} ++ ${UTF8_INCLUDE_DIR} + ${GLAD_INCLUDE_DIRS} + ${GTK_INCLUDE_DIRS} + ${OPENGL_INCLUDE_DIR} +-- +2.34.0 + -- 2.34.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* bug#53647: __TIMESTAMP__ CPP macro not honoring SOURCE_EPOCH_DATE 2022-01-30 7:48 ` [bug#53634] [PATCH 4/4] gnu: Add openboardview Maxim Cournoyer @ 2022-01-31 5:22 ` Maxim Cournoyer 2022-01-31 5:45 ` [bug#53634] [PATCH v2 4/4] gnu: Add openboardview Maxim Cournoyer 1 sibling, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-31 5:22 UTC (permalink / raw) To: 53647 Hello, Maxim Cournoyer <maxim.cournoyer@gmail.com> writes: > * gnu/packages/electronics.scm (openboardview): New variable. I've found a source of nondeterminism in the build of openboardview: the use of the CPP __TIMESTAMP__ macro (info '(cpp) Common Predefined Macros'). It seems that GCC 10.3.0 still doesn't doesn't honor SOURCE_EPOCH_DATE for that macro. A patch was made to correct this, but it seems it was never applied [0]. I've ping'd in the #gcc channel to verify. I haven't seen the patch carried by Debian for their GCC package. Thanks, Maxim [0] https://gcc.gnu.org/pipermail/gcc-patches/2016-November/461108.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH v2 4/4] gnu: Add openboardview. 2022-01-30 7:48 ` [bug#53634] [PATCH 4/4] gnu: Add openboardview Maxim Cournoyer 2022-01-31 5:22 ` bug#53647: __TIMESTAMP__ CPP macro not honoring SOURCE_EPOCH_DATE Maxim Cournoyer @ 2022-01-31 5:45 ` Maxim Cournoyer 1 sibling, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-01-31 5:45 UTC (permalink / raw) To: 53634; +Cc: Maxim Cournoyer * gnu/packages/electronics.scm (openboardview): New variable. * gnu/packages/patches/openboardview-use-system-utf8.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/electronics.scm | 124 +++++++++++++++++- .../openboardview-use-system-utf8.patch | 48 +++++++ 3 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/openboardview-use-system-utf8.patch diff --git a/gnu/local.mk b/gnu/local.mk index 96e6cb08f4..692cd7d6bc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1567,6 +1567,7 @@ dist_patch_DATA = \ %D%/packages/patches/onnx-shared-libraries.patch \ %D%/packages/patches/onnx-skip-model-downloads.patch \ %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch \ + %D%/packages/patches/openboardview-use-system-utf8.patch \ %D%/packages/patches/opencascade-oce-glibc-2.26.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ %D%/packages/patches/openjdk-10-idlj-reproducibility.patch \ diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm index 54f246faa6..24bb4b03b1 100644 --- a/gnu/packages/electronics.scm +++ b/gnu/packages/electronics.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,11 +22,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages electronics) - #:use-module (guix utils) - #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (gnu packages) @@ -34,11 +36,14 @@ (define-module (gnu packages electronics) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages boost) + #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages embedded) + #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) @@ -48,7 +53,10 @@ (define-module (gnu packages electronics) #:use-module (gnu packages m4) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) - #:use-module (gnu packages qt)) + #:use-module (gnu packages qt) + #:use-module (gnu packages sdl) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages stb)) (define-public libserialport (package @@ -240,6 +248,116 @@ (define-public sigrok-cli (description "Sigrok-cli is a command-line frontend for sigrok.") (license license:gpl3+))) +(define-public openboardview + (package + (name "openboardview") + (version "8.95.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/OpenBoardView/OpenBoardView") + (commit version) + (recursive? #t))) ;for the "src/imgui" submodule + (file-name (git-file-name name version)) + (modules '((ice-9 ftw) + (srfi srfi-26) + (guix build utils))) + (snippet + '(with-directory-excursion "src" + ;; Keep the bundled ImGui for now, as in the current version + ;; (~1.79), it requires the glad loader generated at build + ;; time as an input. + (define keep (list "." ".." "imgui" "openboardview")) + (for-each (lambda (f) + (when (eq? 'directory (stat:type (lstat f))) + (delete-file-recursively f))) + (scandir "." (negate (cut member <> keep)))))) + (patches + (search-patches "openboardview-use-system-utf8.patch")) + (sha256 + (base32 + "16mrs7bimwp8a8lb2wqhfisy6j0hl9574l4h9yb66v46aglvmd3h")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:imported-modules `((guix build glib-or-gtk-build-system) + ,@%cmake-build-system-modules) + #:modules '((guix build cmake-build-system) + (guix build utils) + ((guix build glib-or-gtk-build-system) #:prefix gtk:)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-timestamps + (lambda _ + ;; The __TIMESTAMP__ CPP macro does apparently not honor + ;; SOURCE_EPOCH_DATE. Patch it to use __DATE__ instead, which + ;; does (see: + ;; https://github.com/OpenBoardView/OpenBoardView/issues/229 and + ;; https://issues.guix.gnu.org/53647). + (substitute* '("src/openboardview/BoardView.cpp" + "src/openboardview/main_opengl.cpp") + (("__TIMESTAMP__") + "__DATE__")))) + (add-before 'configure 'configure-glad + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/CMakeLists.txt" + (("add_subdirectory\\(glad\\)") + (string-append + ;; Configure Glad to use static Khronos XML specifications + ;; instead of attempting to fetch them from the Internet. + "option(GLAD_REPRODUCIBLE \"Reproducible build\" ON)\n" + ;; Use the CMake files from our glad package. + "add_subdirectory(" + (search-input-directory inputs "share/glad") ;source_dir + " src/glad)\n"))))) ;binary dir + (add-before 'configure 'fix-utf8-include-directive + ;; Our utf8-h package makes the header available as "utf8.h" + ;; directly rather than "utf8/utf8.h". + (lambda _ + (substitute* '("src/openboardview/FileFormats/BRDFile.cpp" + "src/openboardview/BoardView.cpp") + (("utf8/utf8.h") "utf8.h")))) + (add-before 'configure 'dynamically-load-gtk-via-absolute-path + ;; The GTK library is not linked thus not present in the RUNPATH of + ;; the produced binary; the absolute path of the libraries must to + ;; the dynamic loader otherwise they aren't found. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/openboardview/unix.cpp" + (("libgtk-3.so") + (search-input-file inputs "lib/libgtk-3.so"))))) + ;; Add the two extra phases from `glib-or-gtk-build-system'. + (add-after 'install 'glib-or-gtk-compile-schemas + (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas)) + (add-after 'install 'glib-or-gtk-wrap + (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap))))) + (native-inputs + (list pkg-config + python + glad + stb-image + utf8-h)) + (inputs + (list fontconfig + gtk+ + sdl2 + sqlite + zlib)) + (home-page "https://openboardview.org/") + (synopsis "Viewer for BoardView files") + (description "OpenBoardView is a viewer for BoardView files, which present +the details of a printed circuit board (PCB). It comes with features +such as: +@itemize +@item Dynamic part outline rendering, including complex connectors +@item Annotations, for leaving notes about parts, nets, pins or location +@item Configurable colour themes +@item Configurable DPI to facilitate usage on 4K monitors +@item Configurable for running on slower systems +@item Reads FZ (with key), BRD, BRD2, BDV and BV* formats. +@end itemize") + (license license:expat))) + (define-public pulseview (package (name "pulseview") diff --git a/gnu/packages/patches/openboardview-use-system-utf8.patch b/gnu/packages/patches/openboardview-use-system-utf8.patch new file mode 100644 index 0000000000..25b5952bda --- /dev/null +++ b/gnu/packages/patches/openboardview-use-system-utf8.patch @@ -0,0 +1,48 @@ +From 251e23422f37c93a3f460fb660c5e5bfa8200d91 Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Sun, 2 Dec 2018 16:40:39 -0500 +Subject: [PATCH] build system: Allow using utf8.h from the system. + +--- + src/CMakeLists.txt | 12 ++++++++---- + src/openboardview/CMakeLists.txt | 1 + + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 90442ed..26d4a69 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -8,10 +8,14 @@ if(NOT WIN32 OR MINGW) + endif() + + ## utf8.h ## +-execute_process( +- COMMAND git submodule update --init src/utf8 +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} +-) ++FIND_PATH(UTF8_INCLUDE_DIR utf8.h) ++if(NOT UTF8_INCLUDE_DIR) ++ execute_process( ++ COMMAND git submodule update --init src/utf8 ++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} ++ ) ++ set(UTF8_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/utf8) ++endif() + + ## zlib ## + find_package(ZLIB) +diff --git a/src/openboardview/CMakeLists.txt b/src/openboardview/CMakeLists.txt +index b0bdbe3..6c4564c 100644 +--- a/src/openboardview/CMakeLists.txt ++++ b/src/openboardview/CMakeLists.txt +@@ -44,6 +44,7 @@ include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/.. + ${IMGUI_INCLUDE_DIRS} ++ ${UTF8_INCLUDE_DIR} + ${GLAD_INCLUDE_DIRS} + ${GTK_INCLUDE_DIRS} + ${OPENGL_INCLUDE_DIR} +-- +2.34.0 + -- 2.34.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#53634] [PATCH 0/4] gnu: Add openboardview. 2022-01-30 7:45 [bug#53634] [PATCH 0/4] gnu: Add openboardview Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer @ 2022-02-09 10:45 ` Ludovic Courtès 2022-02-09 20:30 ` bug#53634: " Maxim Cournoyer 1 sibling, 1 reply; 9+ messages in thread From: Ludovic Courtès @ 2022-02-09 10:45 UTC (permalink / raw) To: Maxim Cournoyer; +Cc: 53634 Hi! Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis: > I've finally got around to getting this to build and run. I got interested in > it when wanting to view board files for an X200 (libreboot-related). > > Enjoy, > > Maxim Cournoyer (4): > gnu: Add imgui. > gnu: Add glad. > gnu: Add utf8-h. > gnu: Add openboardview. I haven’t actually tried it but the patch series LGTM! Thanks, Ludo’. ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#53634: [PATCH 0/4] gnu: Add openboardview. 2022-02-09 10:45 ` [bug#53634] [PATCH 0/4] " Ludovic Courtès @ 2022-02-09 20:30 ` Maxim Cournoyer 0 siblings, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2022-02-09 20:30 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 53634-done Hello! Ludovic Courtès <ludo@gnu.org> writes: > Hi! > > Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis: > >> I've finally got around to getting this to build and run. I got interested in >> it when wanting to view board files for an X200 (libreboot-related). >> >> Enjoy, >> >> Maxim Cournoyer (4): >> gnu: Add imgui. >> gnu: Add glad. >> gnu: Add utf8-h. >> gnu: Add openboardview. > > I haven’t actually tried it but the patch series LGTM! Thanks! I noticed I had forogetten to register the new gnu/packages/toolkits.scm file I added for imgui; I fixed that and pushed as 32ccbc3a1e. Thank you! Maxim ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-02-09 20:40 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-30 7:45 [bug#53634] [PATCH 0/4] gnu: Add openboardview Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 1/4] gnu: Add imgui Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 2/4] gnu: Add glad Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 3/4] gnu: Add utf8-h Maxim Cournoyer 2022-01-30 7:48 ` [bug#53634] [PATCH 4/4] gnu: Add openboardview Maxim Cournoyer 2022-01-31 5:22 ` bug#53647: __TIMESTAMP__ CPP macro not honoring SOURCE_EPOCH_DATE Maxim Cournoyer 2022-01-31 5:45 ` [bug#53634] [PATCH v2 4/4] gnu: Add openboardview Maxim Cournoyer 2022-02-09 10:45 ` [bug#53634] [PATCH 0/4] " Ludovic Courtès 2022-02-09 20:30 ` bug#53634: " Maxim Cournoyer
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.