[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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 65012@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 65012
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch