[PATCH] gnu: Add picket.

  • Done
  • quality assurance status badge
Details
3 participants
  • Ludovic Courtès
  • Jean Pierre De Jesus DIAZ
  • Sergio Pastor Pérez
Owner
unassigned
Submitted by
Sergio Pastor Pérez
Severity
normal
S
S
Sergio Pastor Pérez wrote on 2 Aug 2023 13:29
(address . guix-patches@gnu.org)(name . Sergio Pastor Pérez)(address . sergio.pastorperez@outlook.es)
DU2P193MB21324003246A3B8FC9B61B8AF30BA@DU2P193MB2132.EURP193.PROD.OUTLOOK.COM
* gnu/packages/image.scm (picket): New variable.
---
gnu/packages/image.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (60 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 3336e38852..ef63f3c3ff 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1914,6 +1914,39 @@ (define-public niftilib
(home-page "https://niftilib.sourceforge.net")
(license license:public-domain)))
+(define-public picket
+ (package
+ (name "picket")
+ (version "1.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rajter/picket")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1zhpynyakjx9nc51b1j80b4y3138p3l380kp1cqmmjx2n9430144"))))
+ (native-inputs (list pkg-config))
+ (inputs (list gtkmm-3))
+ (arguments
+ (list #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-install-prefix
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("/usr/")
+ #$output))
+ (substitute* "src/main.cpp"
+ (("/usr")
+ #$output)))))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/rajter/picket")
+ (synopsis "Native linux screen color picker")
+ (description
+ "Screen color picker for linux with magnifier and custom/user defined formats.")
+ (license license:expat)))
+
(define-public gpick
(package
(name "gpick")

base-commit: 5aceacac65784bd2e1fd12304f965ae6026de49d
prerequisite-patch-id: c56db9fa7fc4e07452dea53f2d450bd83abbbc1a
prerequisite-patch-id: 3e6318d61f2efa01f4435152f2139eef8f72572c
prerequisite-patch-id: 1b23c59bab92820a1e102137909922f4d71ed8f9
prerequisite-patch-id: 78a291411f8d86beabbf6d49df0cc78702ad4e65
prerequisite-patch-id: 579224b39cae7869ce11e2e8dba046b5eef606c7
prerequisite-patch-id: f1f62fd5d83d603ca35c17071e615352e90753e3
prerequisite-patch-id: 1843bca37f83e494be67c24e975727fb1fe1248c
prerequisite-patch-id: 5cc0d6cd16ae2ab21c444ed9cabfeea5615e8cda
prerequisite-patch-id: 92a3fab6e4174a4d4877fc5b426752df81e4df39
prerequisite-patch-id: ebf3fd3a8bb02f7dc5cdf504f63d5028b29fe69e
prerequisite-patch-id: 863acbffb59c3b17fb4ea7e11710cbd793c0778d
prerequisite-patch-id: 076564693450d3e4a51cda68c47b856022f84e69
--
2.39.2
J
J
Jean Pierre De Jesus DIAZ wrote on 2 Aug 2023 15:42
(name . 65012@debbugs.gnu.org)(address . 65012@debbugs.gnu.org)(name . sergio.pastorperez@outlook.es)(address . sergio.pastorperez@outlook.es)
YtmOJtsKz1Fu_sn9qvEnSBkXoGcmPDZr4gffiIfvhgm_RD_9XE0VQq59ASd0nlrkCpU_ORlAmNeYpyvDlDR87Nx3Tu5xnIXvWDqwi-zjU60=@jeandudey.tech
Hello Sergio,

It seems that picket bundles the mINI library [1], this can be easily fixed by adding an snippet to the `origin' to remove the bundled code.

It'd also require to package mINI [2], it should be simple to do since it's a header only library and does not require compilation of any sort, so using copy-build-system to install `src/mini/ini.h` to the package's output `include` folder should be trivial.

Ideally ini.h should be installed to `include/mini/ini.h' in order to use it as the README.md specifies [3] by doing:

#include <mini/ini.h>

It may require patching or substitutions on picket to use the newly packaged library though, but shouldn't be hard to do.


Cheers,

Jean-Pierre De Jesus DIAZ
S
S
Sergio Pastor Pérez wrote on 10 Sep 2023 17:42
Extract mINI library from Picket package
(address . 65012@debbugs.gnu.org)
DU2P193MB21327DF068E018A83BAB3D06F3F3A@DU2P193MB2132.EURP193.PROD.OUTLOOK.COM
This 2 patches extract the mINI library from the Picket package.
S
S
Sergio Pastor Pérez wrote on 10 Sep 2023 17:42
[PATCH v2 1/2] gnu: Add mini.
(address . 65012@debbugs.gnu.org)(name . Sergio Pastor Pérez)(address . sergio.pastorperez@outlook.es)
DU2P193MB2132CB79EDEB821C8C1C583FF3F3A@DU2P193MB2132.EURP193.PROD.OUTLOOK.COM
* gnu/packages/image.scm (mini): New variable.
---
This patch bundles the mINI header library. This library includes a series of
tests which have g++, linux-header, and a few other dependencies that get
satisfied with `gcc-toolchain'. For an unknown reason adding the module `gnu
packages commencement` breaks Guile. This patches have been tested under
`GUIX_PACKAGE_PATH` successfully. Also, adding this package definition under a
module which already includes the commencement module does not present the
issue.

For this reason I submit this 2 patches as a proposal. Any further info
regarding the issue described would be appreciated.

gnu/packages/image.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 3336e38852..f84af81384 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -68,6 +68,7 @@ (define-module (gnu packages image)
#:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages commencement)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
@@ -1914,6 +1915,39 @@ (define-public niftilib
(home-page "https://niftilib.sourceforge.net")
(license license:public-domain)))
+(define-public mini
+ (package
+ (name "mini")
+ (version "0.9.14")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pulzed/mINI")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "01wn7h9rjz9h6cr11dd62jsb3315d1h6c33pdmwi2l7d8a4n3h8d"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan ''(("src/mini/ini.h" "include/mini/ini.h"))
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'install 'check
+ (lambda _
+ (with-directory-excursion "tests"
+ (for-each (lambda (test)
+ (let ((test-name (basename test
+ ".cpp")))
+ (invoke "./build.sh" test-name)
+ (invoke "./run.sh" test-name)))
+ (find-files "." ".cpp"))))))))
+ (native-inputs (list gcc-toolchain))
+ (home-page "https://github.com/pulzed/mINI")
+ (synopsis "INI file reader and writer header library")
+ (description
+ "This is a tiny, header only C++ library for manipulating INI files.")
+ (license license:expat)))
+
(define-public gpick
(package
(name "gpick")
--
2.41.0
S
S
Sergio Pastor Pérez wrote on 10 Sep 2023 17:42
[PATCH v2 2/2] gnu: Add picket.
(address . 65012@debbugs.gnu.org)(name . Sergio Pastor Pérez)(address . sergio.pastorperez@outlook.es)
DU2P193MB2132554BD514E798FFF99CF4F3F3A@DU2P193MB2132.EURP193.PROD.OUTLOOK.COM
* gnu/packages/image.scm (picket): New variable.
---
gnu/packages/image.scm | 44 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (57 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index f84af81384..ad53c8e5a2 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1948,6 +1948,50 @@ (define-public mini
"This is a tiny, header only C++ library for manipulating INI files.")
(license license:expat)))
+(define-public picket
+ (package
+ (name "picket")
+ (version "1.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rajter/picket")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1zhpynyakjx9nc51b1j80b4y3138p3l380kp1cqmmjx2n9430144"))
+ (snippet '(begin
+ ;; bundled mINI header library.
+ (delete-file "src/cfg/ini.h")))))
+ (native-inputs (list pkg-config))
+ (inputs (list gtkmm-3 mini))
+ (arguments
+ (list #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-mini-includes
+ (lambda _
+ (substitute* '("src/cfg/config.h"
+ "src/cfg/config.cpp")
+ (("#include \"ini.h\"")
+ "#include \"mini/ini.h\""))
+ (substitute* "src/main.cpp"
+ (("/usr")
+ #$output))))
+ (add-after 'unpack 'fix-cmake-paths
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("src/cfg/ini.h")
+ (string-append #$mini "/include/mini/ini.h"))
+ (("/usr/")
+ #$output)))))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/rajter/picket")
+ (synopsis "Native linux screen color picker with custom format output")
+ (description
+ "Screen color picker for linux with magnifier and custom/user defined formats.")
+ (license license:gpl3+)))
+
(define-public gpick
(package
(name "gpick")
--
2.41.0
L
L
Ludovic Courtès wrote on 11 Sep 2023 23:44
Re: bug#65012: [PATCH] gnu: Add picket.
(name . Sergio Pastor Pérez)(address . sergio.pastorperez@outlook.es)(address . 65012@debbugs.gnu.org)
87wmwwpeq5.fsf_-_@gnu.org
Sergio Pastor Pérez <sergio.pastorperez@outlook.es> skribis:

Toggle quote (2 lines)
> * gnu/packages/image.scm (picket): New variable.

Applied with the changes below.

Thanks!
Toggle diff (28 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 480335d704..4332a7ead8 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1996,17 +1996,19 @@ (define-public picket
(("/usr")
#$output))))
(add-after 'unpack 'fix-cmake-paths
- (lambda _
+ (lambda* (#:key inputs #:allow-other-keys)
(substitute* "CMakeLists.txt"
(("src/cfg/ini.h")
- (string-append #$mini "/include/mini/ini.h"))
+ (search-input-file inputs
+ "/include/mini/ini.h"))
(("/usr/")
#$output)))))))
(build-system cmake-build-system)
(home-page "https://github.com/rajter/picket")
- (synopsis "Native linux screen color picker with custom format output")
+ (synopsis "Screen color picker with custom format output")
(description
- "Screen color picker for linux with magnifier and custom/user defined formats.")
+ "Picket is a screen color picker that includes a magnifier and supports
+custom formats for representing color values..")
(license license:gpl3+)))
(define-public gpick
L
L
Ludovic Courtès wrote on 11 Sep 2023 23:50
(name . Sergio Pastor Pérez)(address . sergio.pastorperez@outlook.es)(address . 65012@debbugs.gnu.org)
87sf7kpefi.fsf_-_@gnu.org
Sergio Pastor Pérez <sergio.pastorperez@outlook.es> skribis:

Toggle quote (13 lines)
> * gnu/packages/image.scm (mini): New variable.
> ---
> This patch bundles the mINI header library. This library includes a series of
> tests which have g++, linux-header, and a few other dependencies that get
> satisfied with `gcc-toolchain'. For an unknown reason adding the module `gnu
> packages commencement` breaks Guile. This patches have been tested under
> `GUIX_PACKAGE_PATH` successfully. Also, adding this package definition under a
> module which already includes the commencement module does not present the
> issue.
>
> For this reason I submit this 2 patches as a proposal. Any further info
> regarding the issue described would be appreciated.

As you found out, the (gnu packages commencement) module cannot be
imported directly.

The solution here is to use ‘gnu-build-system’, which has GCC & co. as
implicit inputs, and adjust the relevant phases.

I made the change below and applied this patch.

Thanks!

Ludo’.
Toggle diff (57 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 4332a7ead8..403409975a 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -68,7 +68,6 @@ (define-module (gnu packages image)
#:use-module (gnu packages cpp)
#:use-module (gnu packages curl)
#:use-module (gnu packages compression)
- #:use-module (gnu packages commencement)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
@@ -1945,24 +1944,30 @@ (define-public mini
(sha256
(base32
"01wn7h9rjz9h6cr11dd62jsb3315d1h6c33pdmwi2l7d8a4n3h8d"))))
- (build-system copy-build-system)
+ (build-system gnu-build-system)
(arguments
- (list #:install-plan ''(("src/mini/ini.h" "include/mini/ini.h"))
- #:phases #~(modify-phases %standard-phases
- (add-before 'install 'check
- (lambda _
- (with-directory-excursion "tests"
- (for-each (lambda (test)
- (let ((test-name (basename test
- ".cpp")))
- (invoke "./build.sh" test-name)
- (invoke "./run.sh" test-name)))
- (find-files "." ".cpp"))))))))
- (native-inputs (list gcc-toolchain))
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (delete 'build)
+ (delete 'configure)
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "tests"
+ (for-each (lambda (test)
+ (let ((test-name (basename test
+ ".cpp")))
+ (invoke "./build.sh" test-name)
+ (invoke "./run.sh" test-name)))
+ (find-files "." ".cpp"))))))
+ (replace 'install
+ (lambda _
+ (install-file "src/mini/ini.h"
+ (string-append #$output "/include/mini")))))))
(home-page "https://github.com/pulzed/mINI")
(synopsis "INI file reader and writer header library")
(description
- "This is a tiny, header only C++ library for manipulating INI files.")
+ "This is a tiny, header-only C++ library for manipulating INI files.")
(license license:expat)))
(define-public picket
L
L
Ludovic Courtès wrote on 11 Sep 2023 23:51
control message for bug #65012
(address . control@debbugs.gnu.org)
87r0n4peei.fsf@gnu.org
close 65012
quit
?