Commit Message
On Sat, May 7, 2016, at 05:23 PM, Leo Famulari wrote:
> It works, at least for the basic things I tried against the examples in
> 'tests/input'. Speaking of which, it would be nice to include an example
> in the output, perhaps under 'share/doc/ledger'.
Okay, done.
> Will you make this line < 80 characters?
Done.
> What's the story with the library? Are there any programs that use it?
Not that I know of, which is why I didn't include it (well, also I
couldn't figure out how to tell cmake that I don't want it to put stuff
in "$out/lib64"). And Python users will probably prefer beancount to the
ledger module. (Beancount is a reimplementation of ledger in Python.)
> There are some GPL'd files in 'contrib/', 'lisp/', and 'python/res/'
>
> The file 'tools/update_copyright_year' has an Expat license.
>
> And, I think that unless we delete the bundled utfcpp, we are
> distributing it through `guix build --source ledger`, so we should
> mention its Boost license.
Is the license field for the source tarball or the package that actually
gets installed? If it's the former, I have to say that's really
unintuitive. I was aware of these extra licenses, but none of that code
gets installed after you build the package. Note that emacs-ledger-mode
uses the same source tarball and I specified its license as GPL2+.
Instead of changing the license field in this patch, I added a note
about the other files to make it clear that changing the build options
may require the license field to change too. I can change it again if
that's wrong, but it seems to me that the license field should really be
about what gets installed.
Comments
On Sat, May 07, 2016 at 09:10:48PM -0500, Alex Griffin wrote:
> On Sat, May 7, 2016, at 05:23 PM, Leo Famulari wrote:
> > What's the story with the library? Are there any programs that use it?
>
> Not that I know of, which is why I didn't include it (well, also I
> couldn't figure out how to tell cmake that I don't want it to put stuff
> in "$out/lib64"). And Python users will probably prefer beancount to the
> ledger module. (Beancount is a reimplementation of ledger in Python.)
Okay, I think it deserves a "TODO" comment where it is disabled.
> > There are some GPL'd files in 'contrib/', 'lisp/', and 'python/res/'
> >
> > The file 'tools/update_copyright_year' has an Expat license.
> >
> > And, I think that unless we delete the bundled utfcpp, we are
> > distributing it through `guix build --source ledger`, so we should
> > mention its Boost license.
>
> Is the license field for the source tarball or the package that actually
> gets installed?
Good question. Can anyone answer it?
> If it's the former, I have to say that's really
> unintuitive. I was aware of these extra licenses, but none of that code
> gets installed after you build the package. Note that emacs-ledger-mode
> uses the same source tarball and I specified its license as GPL2+.
> Instead of changing the license field in this patch, I added a note
> about the other files to make it clear that changing the build options
> may require the license field to change too. I can change it again if
> that's wrong, but it seems to me that the license field should really be
> about what gets installed.
Good points. My original thought when bringing this up was that we also
distribute the source code with `guix package --source`. I don't think
we have an idiomatic way to specify a different set of licenses for the
source code and the built package.
Advice requested!
Leo Famulari <leo@famulari.name> skribis:
> On Sat, May 07, 2016 at 09:10:48PM -0500, Alex Griffin wrote:
>> On Sat, May 7, 2016, at 05:23 PM, Leo Famulari wrote:
[...]
>> > There are some GPL'd files in 'contrib/', 'lisp/', and 'python/res/'
>> >
>> > The file 'tools/update_copyright_year' has an Expat license.
>> >
>> > And, I think that unless we delete the bundled utfcpp, we are
>> > distributing it through `guix build --source ledger`, so we should
>> > mention its Boost license.
>>
>> Is the license field for the source tarball or the package that actually
>> gets installed?
>
> Good question. Can anyone answer it?
It’s meant to be for the installed package. In practice, we’ve often
encoded the license of the source files, usually a superset of the
licenses that apply to the installed software.
When specifying a list of licenses, make sure to add a comment saying
what the list means: if it’s a combination, a license choice, etc.
We should provide ways to express these different things at some point…
>> If it's the former, I have to say that's really
>> unintuitive. I was aware of these extra licenses, but none of that code
>> gets installed after you build the package. Note that emacs-ledger-mode
>> uses the same source tarball and I specified its license as GPL2+.
>> Instead of changing the license field in this patch, I added a note
>> about the other files to make it clear that changing the build options
>> may require the license field to change too. I can change it again if
>> that's wrong, but it seems to me that the license field should really be
>> about what gets installed.
>
> Good points. My original thought when bringing this up was that we also
> distribute the source code with `guix package --source`.
Right, but the source carries its own license anyway in ‘COPYING’, file
headers, etc.
So I sympathize with what Alex wrote.
Thoughts?
Ludo’.
On Mon, May 09, 2016 at 10:23:22PM +0200, Ludovic Courtès wrote:
> Leo Famulari <leo@famulari.name> skribis:
> > Good points. My original thought when bringing this up was that we also
> > distribute the source code with `guix package --source`.
>
> Right, but the source carries its own license anyway in ‘COPYING’, file
> headers, etc.
Okay, that makes sense!
From b97f82dc6bed962fdc59ad674785cb7122846f4a Mon Sep 17 00:00:00 2001
From: Alex Griffin <a@ajgrf.com>
Date: Sat, 7 May 2016 12:20:47 -0500
Subject: [PATCH 2/3] gnu: Add ledger.
* gnu/packages/finance.scm (ledger): New variable.
---
gnu/packages/finance.scm | 73 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,14 +24,20 @@
#:use-module (guix download)
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
#:use-module (gnu packages boost)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages groff)
+ #:use-module (gnu packages libedit)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages unicode)
#:use-module (gnu packages upnp))
(define-public bitcoin-core
@@ -81,3 +88,69 @@ collectively by the network. Bitcoin Core is the reference implementation
of the bitcoin protocol. This package provides the Bitcoin Core command
line client and a client based on Qt.")
(license license:expat)))
+
+(define-public ledger
+ (package
+ (name "ledger")
+ (version "3.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/ledger/ledger/archive/v"
+ version
+ ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h"))))
+ (build-system cmake-build-system)
+ ;; If you change the build flags you may need to change the license field
+ ;; too; see below.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'install-examples
+ (lambda _
+ (let* ((out (assoc-ref %outputs "out"))
+ (examples (string-append out
+ "/share/doc/ledger/examples")))
+ (install-file "test/input/sample.dat" examples)
+ (install-file "test/input/demo.ledger" examples))))
+ (add-after 'build 'build-doc
+ (lambda _ (zero? (system* "make" "doc")))))
+ #:configure-flags
+ `("-DBUILD_DOCS:BOOL=ON"
+ "-DBUILD_LIBRARY:BOOL=OFF"
+ ,(string-append "-DUTFCPP_INCLUDE_DIR:PATH="
+ (assoc-ref %build-inputs "utfcpp")
+ "/include"))))
+ (inputs `(("boost" ,boost)
+ ("gmp" ,gmp)
+ ("libedit" ,libedit)
+ ("mpfr" ,mpfr)
+ ("utfcpp" ,utfcpp)))
+ (native-inputs `(("texinfo" ,texinfo)
+ ("groff" ,groff)))
+ (home-page "http://ledger-cli.org/")
+ (synopsis "Command-line double-entry accounting program")
+ (description
+ "Ledger is a powerful, double-entry accounting system that is
+ accessed from the UNIX command-line. This may put off some users,
+ since there is no flashy UI, but for those who want unparalleled
+ reporting access to their data there are few alternatives.
+
+ Ledger uses text files for input. It reads the files and generates
+ reports; there is no other database or stored state. To use Ledger,
+ you create a file of your account names and transactions, run from
+ the command line with some options to specify input and requested
+ reports, and get output. The output is generally plain text, though
+ you could generate a graph or html instead. Ledger is simple in
+ concept, surprisingly rich in ability, and easy to use.")
+ ;; There are some extra licenses in files which do not presently get
+ ;; installed when you build this package. Different versions of the GPL
+ ;; are used in the contrib, lisp, and python subdirectories. Also the file
+ ;; `tools/update_copyright_year` has an Expat license.
+ (license (list license:bsd-3
+ license:asl2.0
+ (license:non-copyleft
+ "file://src/wcwidth.cc"
+ "See src/wcwidth.cc in the distribution.")))))
--
2.7.4