From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: Yoshinori Arai <kumagusu08@gmail.com>
Cc: help-guix <help-guix@gnu.org>
Subject: Re: mypaint package
Date: Sat, 26 Jan 2019 15:41:29 -0500 [thread overview]
Message-ID: <87r2czcft2.fsf@gmail.com> (raw)
In-Reply-To: <20190126043738.focftyoqbmpacjem@WaraToNora> (Yoshinori Arai's message of "Sat, 26 Jan 2019 13:37:38 +0900")
Hi,
Yoshinori Arai <kumagusu08@gmail.com> writes:
> Hello,
>
> I have made mypaint git version package. I have some question about guix
> package development.
>
> During develop the package, add gobject-introspection for propagated-inputs
> to resolve the python module import error, which is
> gi.require_version('GdkPixBuf','2.0').
>
> But this case can't resolve it. Then remove gobject-introspection
> package from propagated-inputs. I add librsvg, gdk-pixbuf+svg, gtk+,
> hicolor-icon-theme for propagated-inputs finally.
>
> After package build is successfully finished, I installed the package to test
> then found some error as like gobject-instrospection. Then I remove installed
> package and edit package file and build, install...
>
> Q1. Why is gobject-introspection in my profile? I have not install it
> individualy.
Because this is how propagated-inputs work: they are installed along the
package who pulled them in the profile. For this reason, we usually
only use propagated-inputs as a last resort as they don't mesh
with the functional model well and can conflict together.
> Q2. A hicolor-icon-theme is already installed in my profile. Is it need for
> propageted-inputs of mypaint-git package?
The policy regarding icons in Guix has been to let the user choice the
icons of their choice; you don't need to include icons as a
propagated-input in your package definition.
Some comments about your package definitions follow.
> mypaint-git package definition is as follows,
>
> (define-module (mypaint)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (guix utils)
> #:use-module (guix packages)
> #:use-module (guix git-download)
> #:use-module (guix build-system gnu)
> #:use-module (guix build-system python)
> #:use-module (gnu packages pkg-config)
> #:use-module (gnu packages autotools)
> #:use-module (gnu packages gettext)
> #:use-module (gnu packages glib)
> #:use-module (gnu packages swig)
> #:use-module (gnu packages gtk)
> #:use-module (gnu packages python)
> #:use-module (gnu packages python-xyz)
> #:use-module (gnu packages ghostscript)
> #:use-module (gnu packages gimp)
> #:use-module (gnu packages gnome)
> #:use-module (gnu packages web)
> #:use-module (gnu packages python))
>
> (define-public libmypaint-git
> (let ((commit "0c07191409bd257084d4ea7576deb832aac8868b")
> (revision "1"))
> (package
> (name "libmypaint-git")
> (version (git-version "2.0.0" revision commit))
> (source (origin
> (method git-fetch)
> (uri (git-reference
> (url "https://github.com/mypaint/libmypaint.git")
> (commit commit)))
> (file-name (git-file-name name version))
> (sha256
> (base32
> "0x5yacdj4bfm298ijv64igv06yjr401g6giln5wrdpv0pixg8ig3"))))
> (build-system gnu-build-system)
> (native-inputs
> `(("intltool" ,intltool)
> ("libtool" ,libtool)
> ("automake" ,automake)
> ("autoconf" ,autoconf)
> ("python-2" ,python-2) ;need to generate headers in autogen.sh
> ("pkg-config" ,pkg-config)))
> ;; As needed by 'libmypaint.pc'.
> (propagated-inputs
> `(("json-c" ,json-c)
> ("gobject-introspection" ,gobject-introspection)))
> (inputs
> `(("glib" ,glib)))
> (home-page "http://mypaint.org/")
> (synopsis "The brush library")
> (description "This library used by MyPaint. A number of other painting programs use it too")
> (license license:isc))))
You should make use of the glib-or-gtk-build-system here; it would take
care of the glib dependency for you by wrapping the binary in a build
phase.
You shouldn't need the automake and autoconf inputs as these
dependencies come with the gnu-build-system (whose steps are reused by
most other build systems).
> (define-public mypaint-brushes-git
> (let ((commit "769ec941054725a195e77d8c55080344e2ab77e4")
> (revision "1"))
> (package
> (name "mypaint-brushes-git")
> (version (git-version "2.0.0" revision commit))
> (source (origin
> (method git-fetch)
> (uri (git-reference
> (url "https://github.com/mypaint/mypaint-brushes.git")
> (commit commit)))
> (file-name (git-file-name name version))
> (sha256
> (base32
> "0viilmad809qg12xw11p1yv0lwbgjfkcv82g2avwzdaa6wy783pf"))))
> (build-system gnu-build-system)
> (native-inputs
> `(("autoconf" ,autoconf)
> ("automake" ,automake)))
> (home-page "http://mypaint.org/")
> (synopsis "Brushes for MyPaint")
> (description "Brushes used by MyPaint and other software using libmypaint")
> (license license:cc0))))
Same here (regarding the autoconf and automake native inputs).
> (define-public mypaint-git
> (let ((commit "57685af8dbd65719d7874bc501094bade85d94e7")
> (revision "1"))
> (package
> (name "mypaint-git")
> (version (git-version "2.0.0" revision commit))
> (source (origin
> (method git-fetch)
> (uri (git-reference
> (url "https://github.com/mypaint/mypaint.git")
> (commit commit)))
> (file-name (git-file-name name version))
> (sha256
> (base32
> "14dmnwma8gsfd5hv3cvwkzyd3v392h4g1zp7i38295cf39yf61y6"))))
> (build-system python-build-system)
> (arguments
> `(#:python ,python-2
> #:phases
> (modify-phases %standard-phases
> (add-after 'unpack 'fix-for-buildconfig-and-test
> (lambda _
> (for-each make-file-writable (find-files "." ".*"))
> ;; FATAL: Cannot create cache dir '/homeless-shelter
> (setenv "HOME" "/tmp")))
> (replace 'install
> (lambda _
> (invoke "python" "setup.py" "managed_install"
> (string-append "--prefix=" (assoc-ref %outputs "out"))))))))
> (native-inputs
> `(("pkg-config" ,pkg-config)
> ("lcms" ,lcms)
> ("libmypaint" ,libmypaint-git)
> ("mypaint-brushes" ,mypaint-brushes-git)))
> (inputs
> `(("python2-pygobject" ,python2-pygobject)
> ("swig" ,swig)
> ("gettext" ,gettext-minimal)
> ("python2-numpy" ,python2-numpy)
> ("python2-pycairo" ,python2-pycairo)))
> (propagated-inputs
> `(("gtk+" ,gtk+)
> ("librsvg" ,librsvg)
> ("gdk-pixbuf" ,gdk-pixbuf+svg)
> ("hicolor-icon-theme" ,hicolor-icon-theme)))
> (home-page "http://mypaint.org/")
> (synopsis "A simple drawing and painting program")
> (description "MyPaint is a fast, free, and easy graphics app for digital painters. It lets you focus on the art you make instead of the program you make it with. You can work on your canvas without clutter, and show the interface only when you need it. MyPaint works best with a graphics tablet.")
> (license license:gpl2+))))
As discussed above, the color theme can be removed from the propagated
inputs. You should also the glib-or-gtk-build-system here; this should
allow you to remove the propagated gtk+ library.
Python dependencies are typically propagated. That means that
python2-pygobject, python-numpy and python-pycairo probably need to be
listed under `propagated-inputs' rather than `inputs'.
swig and gettext are typically build dependencies and should probably
listed as `native-inputs'.
The librsvg and gdk-pixbuf+svg might be required only at build time (if
they are used to compile the Python->C wrappers), so I'd try moving them
to native-inputs and see if it works.
Otherwise it looks pretty good! Make sure to run the `guix lint' on your
package definitions.
I hope this helps!
Maxim
prev parent reply other threads:[~2019-01-26 20:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-26 4:37 mypaint package Yoshinori Arai
2019-01-26 20:41 ` Maxim Cournoyer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r2czcft2.fsf@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=help-guix@gnu.org \
--cc=kumagusu08@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).