ddssff / cabal-debian Goto Github PK
View Code? Open in Web Editor NEWCreate a Debianization by examining a .cabal file.
License: Other
Create a Debianization by examining a .cabal file.
License: Other
There should be a way to leave this out, or set it to some other location.
/tmp $ cabal unpack quickcheck-unicode
cdUnpacking to quickcheck-unicode-1.0.0.1/
/tmp $ cd quickcheck-unicode-1.0.0.1/
/tmp/quickcheck-unicode-1.0.0.1 $ ~/build/haskell/cabal-debian/.cabal-sandbox/bin/cabal-debian --official
/tmp/quickcheck-unicode-1.0.0.1 $ head -n 1 debian/copyright
Just Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Round-tripping the debianization does not work fully: A Multi-Arch
field of a binary would be lost. The possible values are described at https://wiki.ubuntu.com/MultiarchSpec#Binary_package_control_fields and can be no
, same
, foreign
or allowed
.
The source stanza should contain a field
Standards-Version: 3.9.5
Currently cabal-debian dumps all the files in the data-files section and all the executables into a package named haskell-(debianized-cabal-package-name)-utils. This is controlled by the cabal-debian command line option --default-package=. Many packages use this to change the package name, usually to the same name as the cabal package or the name of the package's (single) executable. Examples include alex, happy, darcs, and so on. Any thoughts about what cabal-debian should really do?
the debianization of haddock-api has "data-dir: resources", and as a result it copies all the files in the resources directory of the cabal file to /resources in deb. Those files should go in /usr/share/haddock-api.
This is really minor, but maybe it would be a good sanity check if
$ cabal-debian
followed by
$ cabal-debian --compare
would show no differences.
Currently (with --official
passed in both cases), I get two unimportant differences (order of field, and an empty line):
Debianization (dry run):
--- old/debian/control
+++ new/debian/control
@@
Standards-Version: 3.9.5
Homepage: http://hackage.haskell.org/package/mtl
-Vcs-Browser: http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/haskell-mtl
-Vcs-Darcs: http://darcs.debian.org/pkg-haskell/haskell-mtl
X-Description: Monad classes, using functional dependencies
Monad classes using functional dependencies, with instances
@@
by Mark P Jones, in /Advanced School of Functional Programming/, 1995
(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).
+Vcs-Browser: http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/haskell-mtl
+Vcs-Darcs: http://darcs.debian.org/pkg-haskell/haskell-mtl
Package: libghc-mtl-dev
--- old/debian/rules
+++ new/debian/rules
@@
-
Currently, the tool generates
Build-Depends: debhelper (>= 7.0)
, haskell-devscripts (>= 0.8)
, cdbs
, ghc
, ghc-prof
, libghc-dlist-dev (>= 0.4)
, libghc-dlist-dev (<< 0.8)
, libghc-dlist-prof (>= 0.4)
, libghc-dlist-prof (<< 0.8)
Slight bikeshedding, but I’d rather prefer to see
Build-Depends: debhelper (>= 7.0),
devscripts (>= 0.8),
cdbs,
ghc,
ghc-prof,
libghc-dlist-dev (>= 0.4),
dlist-dev (<< 0.8),
dlist-prof (>= 0.4),
dlist-prof (<< 0.8),
(note the trailing comma). I believe the main reason for the layout above was that Clint did not know that trailing comma in the last lines are allowed in debian/control
.
I guess that is something you don’t want in your in-house-packages, but for the official packages we want
Vcs-Darcs: http://darcs.debian.org/pkg-haskell/haskell-foo
Vcs-Browser: http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/haskell-foo
in debian/control
. Maybe we need to introduce a --official
flag for the various only-for-official-packges features.
When trying to build cabal-debian-4.32.2 in Stackage Nightly:
src/Debian/Debianize/Goodies.hs:165:22:
No instance for (Show (D.Server -> Int))
(maybe you haven't applied enough arguments to a function?)
arising from a use of ‘show’
In the expression: show D.port
In the expression:
["--base-uri",
"http://" ++ D.hostname x ++ ":" ++ show (D.port x) ++ "/",
"--http-port", show D.port]
In an equation for ‘oldClckwrksServerFlags’:
oldClckwrksServerFlags x
= ["--base-uri",
"http://" ++ D.hostname x ++ ":" ++ show (D.port x) ++ "/",
"--http-port", ....]
I just noticed that running cabal test
in cabal-debian
’s repository will say
Test suite cabal-debian-tests: PASS
but the log (visible with cabal test --show-details=streaming
) lists lots of things that look like failures, e.g.
### Failure in: Debianization Tests:2:test6 - test-data/artvaluereport2
test6 - test-data/artvaluereport2
expected: (ExitSuccess,"","")
but got: (ExitSuccess,"--- old/debian/artvaluereport2-production.install\n+++ new/debian/artvaluereport2-production.install\n@@\n Clouds.jpg usr/share/ArtValueReport/.\n DataTables-1.8.2 usr/share/ArtValueReport/.\n Udon.js usr/share/ArtValueReport/.\n blueprint usr/share/ArtValueReport/.\n-debian/cabalInstall/7e4b5d8641f6fae99e9ae9b2d8893bc7/my.appraisalreportonline.com /etc/apache2/sites-available/\n+debian/cabalInstall/7e4b5d8641f6fae99e9ae9b2d8893bc7/my.appraisalreportonline.com.conf /etc/apache2/sites-available/\n@@\n flexbox.css usr/share/ArtValueReport/.\n html5sortable usr/share/ArtValueReport/.\n--- old/debian/artvaluereport2-production.links\n+++ new/debian/artvaluereport2-production.links\n@@\n-/etc/apache2/sites-available/my.appraisalreportonline.com /etc/apache2/sites-enabled/my.appraisalreportonline.com\n+/etc/apache2/sites-available/my.appraisalreportonline.com.conf /etc/apache2/sites-enabled/my.appraisalreportonline.com.conf\n \ndebian/cabalInstall/7e4b5d8641f6fae99e9ae9b2d8893bc7/my.appraisalreportonline.com: Deleted\ndebian/cabalInstall/7e4b5d8641f6fae99e9ae9b2d8893bc7/my.appraisalreportonline.com.conf: Created\n | <VirtualHost *:80>\n | ServerAdmin [email protected]\n | ServerName www.my.appraisalreportonline.com\n | ServerAlias my.appraisalreportonline.com\n | \n | ErrorLog /var/log/apache2/artvaluereport2-production/error.log\n | CustomLog /var/log/apache2/artvaluereport2-production/access.log combined\n | \n | ProxyRequests Off\n | AllowEncodedSlashes NoDecode\n | \n | <Proxy *>\n | AddDefaultCharset off\n | Order deny,allow\n | #Allow from .example.com\n | Deny from all\n | #Allow from all\n | </Proxy>\n | \n | <Proxy http://127.0.0.1:9027/*>\n | AddDefaultCharset off\n | Order deny,allow\n | #Allow from .example.com\n | #Deny from all\n | Allow from all\n | </Proxy>\n | \n | SetEnv proxy-sendcl 1\n | \n | ProxyPass / http://127.0.0.1:9027/ nocanon\n | ProxyPassReverse / http://127.0.0.1:9027/\n | </VirtualHost>\n--- old/debian/control\n+++ new/debian/control\n@@\n libghc-network-dev (>= 2.4),\n libghc-network-prof (>= 2.4),\n+ libghc-old-locale-dev,\n+ libghc-old-locale-prof,\n+ libghc-old-time-dev,\n+ libghc-old-time-prof,\n@@\n libghc-pandoc-dev,\n libghc-pandoc-prof,\n@@\n libghc-mtl-doc,\n libghc-network-doc,\n+ libghc-old-locale-doc,\n+ libghc-old-time-doc,\n@@\n libghc-pandoc-doc,\n libghc-parsec3-doc (>= 3) | libghc-parsec2-doc (<< 3),\n","")
Is cabal-debian’s test suite in a working and reliable state at the moment?
I’m just packaging a new package, so I started to take cabal-debian from today’s git, and note (as issues) what manual adjustments I had to make.
It currently generates versioned constraints not only on -dev
, but also on -prof
and -doc
. I think these are redundant, due to the dependencies between these packages.
(OTOH, if we manage dependencies automatically, i.e. use cabal-debian also for upgrades, this redundancy is not a big problem, and it does matter when the package is also provided by GHC. Maybe make it a flag :-))
Preprocessing library cabal-debian-4.18...
[ 5 of 28] Compiling Debian.Orphans ( src/Debian/Orphans.hs, dist/build/Debian/Orphans.o )
src/Debian/Orphans.hs:49:23:
Not in scope: type constructor or class `KnownExtension'
src/Debian/Orphans.hs:50:23:
Not in scope: type constructor or class `Extension'
Did you forget to add them to the import lists?
The template is
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: foo
Upstream-Contact: Jack Upstream Developer <[email protected]>
Source: http://hackage.haskell.org/package/foo
Files: *
Copyright: 1970 Jack Upstream Developer
License: foo license
Files: debian/*
Copyright: held by the contributors mentioned in debian/changelog
License: foo license
License: foo license
This is the text of the foo license.
Where “This is the text of the foo license.“ is replaced by the upstream license. Bonus points for extracting the copyright from that file and putting it in here separately.
(This whole copyright file handling probably needs more finetuning.)
If --native
is not specified, the version number shouldn’t be native (i.e. append -1
to upstreams version).
Cabal-debian does not detect the need for pkg-config.
An example of a package that needs pkg-config is HOpenCV.
The resulting control file does not require pkg-config, so the build breaks:
Configuring HOpenCV-0.4.0.1...
Dependency allocated-processor >=0.0.1: using allocated-processor-0.0.2
Dependency base ==4.*: using base-4.8.2.0
Dependency vector-space -any: using vector-space-0.10.2
hlibrary.setup: The program 'pkg-config' version >=0.9.0 is required but it
could not be found.
The need for pkg-config is mentioned in HOpenCV's cabal file. So, cabal-debian could, in principle, deduce it.
Hi,
with a bunch of upgrades pending, I’m looking into cabal-debian
again.
Running it in a freshly checked out haskell-zlib
folder, I get this
/tmp/haskell-zlib-0.5.4.1 $ /home/jojo/build/haskell/cabal-debian/.cabal-sandbox/bin/cabal-debian --compare
Debianization (dry run):
--- old/debian/changelog
+++ new/debian/changelog
@@
-haskell-zlib (0.5.4.1-2) experimental; urgency=low
-
- * Adjust watch file to new hackage layout
- * Depend on haskell-devscripts 0.9, found in experimental
-
- -- Joachim Breitner <[email protected]> Sat, 20 Dec 2014 17:12:54 +0100
-
haskell-zlib (0.5.4.1-1) unstable; urgency=low
It shouldn’t lose the last changelog entry, should it?
For glob-0.7.5
I get
Description: Globbing library
A library for globbing: matching patterns against file paths.
.
Author: Matti Niemenmaa
Upstream-Maintainer: Matti Niemenmaa <[email protected]>
.
This package provides a library for the Haskell programming language.
See http:///www.haskell.org/ for more information on Haskell.
I don’t think the Author
etc. should be here.
This error occurs in a file with Rank2Types set in the header:
src/Debian/Debianize/Options.hs:223:11:
Illegal polymorphic or qualified type: Lens DebInfo Relations
Perhaps you intended to use -XRankNTypes or -XRank2Types
In the type signature for `addDep':
addDep :: Monad m =>
(BinPkgName -> Lens DebInfo Relations) -> String -> CabalT m ()
Here is the build: https://travis-ci.org/ddssff/cabal-debian/jobs/50780350
Also binary packages ought to depend on ${shlibs:Depends}
, otherwise they would miss the dependency on libffi6
or libgmp10
.
Hi,
I’d like Debian to follow stackage more closely, as they already identify a consistent set of packages from Hackage. One of our packages missing there is cabal-debian
. Please consider joining stackage – you’ll get some free QA in return: http://www.stackage.org/authors
Thanks,
Joachim
I enabled travis on my local machine and noticed build failures on GHC 7.6 & 7.8: https://travis-ci.org/creichert/cabal-debian/jobs/49557165#L625
I can fix the issue but did not want to start spraying CPP everywhere so I'll need a bit more time.
Is anyone opposed to using travis? It could be really helpful migrating to 7.10 and for pull requests.
See my travis file: https://github.com/creichert/cabal-debian/blob/master/.travis.yml
Test suite cabal-debian-tests: RUNNING...
^MCases: 7 Tried: 0 Errors: 0 Failures: 0^MCases: 7 Tried: 1 Errors: 0 Failures: 0^M
^M### Failure in: Debianization Tests:1:test5 - test-data/creativeprompts
test5 - test-data/creativeprompts
diff not empty:
Modified: "debian/control"
--- old/debian/control
+++ new/debian/control
@@
libghc-mtl-dev,
libghc-network-dev,
- libghc-old-locale-dev,
- libghc-old-time-dev,
@@
libghc-parsec3-dev (>= 3) | libghc-parsec2-dev (<< 3),
libghc-random-dev,
^MCases: 7 Tried: 2 Errors: 0 Failures: 1^M ^M### Failure in: Debianization Tests:2:test6 - test-data/artvaluereport2
test6 - test-data/artvaluereport2
expected: (ExitSuccess,"","")
but got: (ExitFailure 1,"","\ntest-data/artvaluereport2/input/debian/Debianize.hs:4:8:\n Could not find module \8216Control.Lens\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:9:8:\n Could not find module \8216Debian.Changes\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:10:8:\n Could not find module \8216Debian.Debianize\8217\n
Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:11:8:\n
Could not find module \8216Debian.Debianize.Finalize\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:12:8:\n Could not find module \8216Debian.Debianize.Optparse\8217\n
Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:13:8:\n
Could not find module \8216Debian.Pretty\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:14:8:\n Could not find module \8216Debian.Policy\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:15:8:\n Could not find module \8216Debian.Relation\8217\n Use -v to see a list of the files searched for.\n\ntest-data/artvaluereport2/input/debian/Debianize.hs:16:8:\n Could not find module \8216Debian.Version\8217\n Perhaps you meant Data.Version (from base-4.8.1.0)\n Use -v to see a list of the files searched for.\n")
^MCases: 7 Tried: 3 Errors: 0 Failures: 2^M ^M### Failure in: Debianization Tests:3:test7 - debian/Debianize.hs
I'm writing a program that uses sdl-mixer.
(The dependency on SDL_mixer is not explicit in sdl-mixer's cabal file. I need to add that to my program's cabal file unfortunately. But that is not the point.)
I added SDL_mixer as an extra library to my cabal file.
extra-libraries: SDL_mixer
That's because:
$ pkg-config --list-all | grep SDL_mixer
SDL_mixer SDL_mixer - mixer library for Simple DirectMedia Layer
But cabal-debian generates a control file containing the following:
Source: keera-posture
Maintainer: Ivan Perez <[email protected]>
Priority: extra
Section: haskell
Build-Depends: debhelper (>= 9),
haskell-devscripts (>= 0.8),
cdbs,
ghc,
ghc-prof,
<bunch of dependencies>,
libsdl_mixer-dev,
Standards-Version: 3.9.6
Homepage: http://keera.co.uk/projects/keera-posture
X-Description: Get notifications when your sitting posture is inappropriate.
A program that notifies you when you sit in a straining position.
<and a lot more...>
I'd like to generate the debian files automatically from the package every time (I think it's better than having them in the repo.
Any clues as to how to address this issue?
Thanks in advance!
Currently the data-files are installed into "/usr/share" </> map toLower packagename, but I'm pretty sure this is wrong (for packages that have capital letters in their names.) Also, it was ignoring the value returned by Distribution.PackageDescription.dataDir, but I think it needs to prefer this to the constructed value.
Currently all the files in dataFiles are installed into a package with the name somehow derived from utilsPackageNameBase, which also gets any leftover files. It would be nice if there was a dataFilesPackage setting, an extraFilesPackage setting, and files were installed into each as appropriate.
For official packages, we want the maintainer to be Haskell Group <[email protected]>
and the uploader to be the current user.
If you add an --official
flag, it should know about this maintainer string.
I just noticed that latest version fails to compile with GHC 7.6.3 due to
Configuring component lib from cabal-debian-4.35.5
Preprocessing library cabal-debian-4.35.5...
[ 1 of 30] Compiling System.Git ( src/System/Git.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/System/Git.o )
[ 2 of 30] Compiling Paths_cabal_debian ( /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/autogen/Paths_cabal_debian.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Paths_cabal_debian.o )
[ 3 of 30] Compiling Debian.Debianize.Interspersed ( src/Debian/Debianize/Interspersed.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/Interspersed.o )
[ 4 of 30] Compiling Debian.Debianize.Changelog ( src/Debian/Debianize/Changelog.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/Changelog.o )
[ 5 of 30] Compiling Debian.Orphans ( src/Debian/Orphans.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Orphans.o )
[ 6 of 30] Compiling Debian.Debianize.VersionSplits ( src/Debian/Debianize/VersionSplits.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/VersionSplits.o )
[ 7 of 30] Compiling Distribution.Version.Invert ( src/Distribution/Version/Invert.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Distribution/Version/Invert.o )
[ 8 of 30] Compiling Debian.Debianize.Prelude ( src/Debian/Debianize/Prelude.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/Prelude.o )
[ 9 of 30] Compiling Debian.Debianize.BasicInfo ( src/Debian/Debianize/BasicInfo.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/BasicInfo.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.4.0.1 ... linking ... done.
Loading package deepseq-1.3.0.1 ... linking ... done.
Loading package containers-0.5.0.0 ... linking ... done.
Loading package transformers-0.5.2.0 ... linking ... done.
Loading package mtl-2.2.1 ... linking ... done.
Loading package syb-0.6 ... linking ... done.
Loading package set-extra-1.4 ... linking ... done.
Loading package bytestring-0.10.0.2 ... linking ... done.
Loading package old-locale-1.0.0.5 ... linking ... done.
Loading package time-1.4.0.1 ... linking ... done.
Loading package unix-2.6.0.1 ... linking ... done.
Loading package ansi-terminal-0.6.2.3 ... linking ... done.
Loading package ansi-wl-pprint-0.6.7.3 ... linking ... done.
Loading package filepath-1.3.0.1 ... linking ... done.
Loading package directory-1.2.0.1 ... linking ... done.
Loading package process-1.1.0.2 ... linking ... done.
Loading package binary-0.5.1.1 ... linking ... done.
Loading package bytestring-builder-0.10.8.1.0 ... linking ... done.
Loading package text-1.2.2.1 ... linking ... done.
Loading package hashable-1.2.4.0 ... linking ... done.
Loading package pretty-1.1.1.0 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package nats-1.1.1 ... linking ... done.
Loading package transformers-compat-0.5.1.4 ... linking ... done.
Loading package tagged-0.8.5 ... linking ... done.
Loading package unordered-containers-0.2.7.1 ... linking ... done.
Loading package semigroups-0.18.2 ... linking ... done.
Loading package optparse-applicative-0.13.0.0 ... linking ... done.
Loading package newtype-generics-0.5 ... linking ... done.
Loading package memoize-0.8.1 ... linking ... done.
Loading package base-orphans-0.5.4 ... linking ... done.
Loading package stm-2.4.4.1 ... linking ... done.
Loading package StateVar-1.1.0.4 ... linking ... done.
Loading package void-0.7.1 ... linking ... done.
Loading package contravariant-1.4 ... linking ... done.
Loading package distributive-0.5.0.2 ... linking ... done.
Loading package comonad-5 ... linking ... done.
Loading package bifunctors-5.4.1 ... linking ... done.
Loading package exceptions-0.8.3 ... linking ... done.
Loading package prelude-extras-0.4.0.3 ... linking ... done.
Loading package profunctors-5.2 ... linking ... done.
Loading package semigroupoids-5.1 ... linking ... done.
Loading package free-4.12.4 ... linking ... done.
Loading package generic-deriving-1.11.1 ... linking ... done.
Loading package adjunctions-4.3 ... linking ... done.
Loading package kan-extensions-5.0.1 ... linking ... done.
Loading package parallel-3.2.1.0 ... linking ... done.
Loading package reflection-2.1.2 ... linking ... done.
Loading package primitive-0.6.1.0 ... linking ... done.
Loading package vector-0.11.0.0 ... linking ... done.
Loading package lens-4.15.1 ... linking ... done.
Loading package old-time-1.1.0.1 ... linking ... done.
Loading package parsec-3.1.11 ... linking ... done.
Loading package hsemail-1.7.7 ... linking ... done.
Loading package call-stack-0.1.0 ... linking ... done.
Loading package HUnit-1.5.0.0 ... linking ... done.
Loading package polyparse-1.12 ... linking ... done.
Loading package random-1.1 ... linking ... done.
Loading package HaXml-1.25.3 ... linking ... done.
Loading package dlist-0.8.0.2 ... linking ... done.
Loading package fmlist-0.9 ... linking ... done.
Loading package utf8-string-1.0.1.1 ... linking ... done.
Loading package ListLike-4.5 ... linking ... done.
Loading package process-extras-0.4.1.4 ... linking ... done.
Loading package fail-4.9.0.0 ... linking ... done.
Loading package cereal-0.5.4.0 ... linking ... done.
Loading package entropy-0.3.7 ... linking ... done.
Loading package crypto-api-0.13.2 ... linking ... done.
Loading package pureMD5-2.1.3 ... linking ... done.
Loading package regex-base-0.93.2 ... linking ... done.
Loading package regex-tdfa-1.2.2 ... linking ... done.
Loading package zlib-0.6.1.2 ... linking ... done.
Loading package Unixutils-1.54.1 ... linking ... done.
Loading package bzlib-0.5.0.5 ... linking ... done.
Loading package MonadRandom-0.4.2.3 ... linking ... done.
Loading package mmorph-1.0.9 ... linking ... done.
Loading package transformers-base-0.4.4 ... linking ... done.
Loading package monad-control-1.0.1.0 ... linking ... done.
Loading package either-4.4.1.1 ... linking ... done.
Loading package network-2.6.3.1 ... linking ... done.
Loading package network-uri-2.6.1.0 ... linking ... done.
Loading package prettyclass-1.0.0.0 ... linking ... done.
Loading package regex-posix-0.95.2 ... linking ... done.
Loading package regex-compat-0.95.1 ... linking ... done.
Loading package debian-3.91.2 ... linking ... done.
Loading package data-default-class-0.1.2.0 ... linking ... done.
Loading package data-default-instances-containers-0.0.1 ... linking ... done.
Loading package data-default-instances-dlist-0.0.1 ... linking ... done.
Loading package data-default-instances-old-locale-0.0.1 ... linking ... done.
Loading package data-default-0.7.1.1 ... linking ... done.
Loading package Diff-0.3.4 ... linking ... done.
Loading package Cabal-1.24.1.0 ... linking ... done.
[10 of 30] Compiling Debian.Policy ( src/Debian/Policy.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Policy.o )
[11 of 30] Compiling Debian.Debianize.BinaryDebDescription ( src/Debian/Debianize/BinaryDebDescription.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/BinaryDebDescription.o )
[12 of 30] Compiling Debian.Debianize.SourceDebDescription ( src/Debian/Debianize/SourceDebDescription.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/Debianize/SourceDebDescription.o )
[13 of 30] Compiling Debian.GHC ( src/Debian/GHC.hs, /tmp/matrix-worker/1480438619/dist-newstyle/build/x86_64-linux/ghc-7.6.3/cabal-debian-4.35.5/build/Debian/GHC.o )
src/Debian/GHC.hs:45:36:
Module `System.Environment' does not export `setEnv'
cabal: Failed to build cabal-debian-4.35.5 (which is required by
exe:cabal-debian from cabal-debian-4.35.5).
and with GHC 7.8.4 due to
Configuring component lib from cabal-debian-4.35.5
Preprocessing library cabal-debian-4.35.5...
[ 1 of 30] Compiling System.Git ( src/System/Git.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/System/Git.o )
[ 2 of 30] Compiling Paths_cabal_debian ( /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/autogen/Paths_cabal_debian.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Paths_cabal_debian.o )
[ 3 of 30] Compiling Debian.Debianize.Interspersed ( src/Debian/Debianize/Interspersed.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/Interspersed.o )
[ 4 of 30] Compiling Debian.Debianize.Changelog ( src/Debian/Debianize/Changelog.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/Changelog.o )
[ 5 of 30] Compiling Debian.Orphans ( src/Debian/Orphans.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Orphans.o )
[ 6 of 30] Compiling Debian.Debianize.VersionSplits ( src/Debian/Debianize/VersionSplits.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/VersionSplits.o )
[ 7 of 30] Compiling Distribution.Version.Invert ( src/Distribution/Version/Invert.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Distribution/Version/Invert.o )
[ 8 of 30] Compiling Debian.Debianize.Prelude ( src/Debian/Debianize/Prelude.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/Prelude.o )
[ 9 of 30] Compiling Debian.Debianize.BasicInfo ( src/Debian/Debianize/BasicInfo.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/BasicInfo.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.5.0.0 ... linking ... done.
Loading package deepseq-1.3.0.2 ... linking ... done.
Loading package containers-0.5.5.1 ... linking ... done.
Loading package transformers-0.5.2.0 ... linking ... done.
Loading package mtl-2.2.1 ... linking ... done.
Loading package syb-0.6 ... linking ... done.
Loading package set-extra-1.4 ... linking ... done.
Loading package bytestring-0.10.4.0 ... linking ... done.
Loading package old-locale-1.0.0.6 ... linking ... done.
Loading package time-1.4.2 ... linking ... done.
Loading package unix-2.7.0.1 ... linking ... done.
Loading package ansi-terminal-0.6.2.3 ... linking ... done.
Loading package ansi-wl-pprint-0.6.7.3 ... linking ... done.
Loading package filepath-1.3.0.2 ... linking ... done.
Loading package directory-1.2.1.0 ... linking ... done.
Loading package process-1.2.0.0 ... linking ... done.
Loading package binary-0.7.1.0 ... linking ... done.
Loading package text-1.2.2.1 ... linking ... done.
Loading package hashable-1.2.4.0 ... linking ... done.
Loading package pretty-1.1.1.1 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package nats-1.1.1 ... linking ... done.
Loading package transformers-compat-0.5.1.4 ... linking ... done.
Loading package tagged-0.8.5 ... linking ... done.
Loading package unordered-containers-0.2.7.1 ... linking ... done.
Loading package semigroups-0.18.2 ... linking ... done.
Loading package optparse-applicative-0.13.0.0 ... linking ... done.
Loading package newtype-generics-0.5 ... linking ... done.
Loading package memoize-0.8.1 ... linking ... done.
Loading package base-orphans-0.5.4 ... linking ... done.
Loading package stm-2.4.4.1 ... linking ... done.
Loading package StateVar-1.1.0.4 ... linking ... done.
Loading package void-0.7.1 ... linking ... done.
Loading package contravariant-1.4 ... linking ... done.
Loading package distributive-0.5.0.2 ... linking ... done.
Loading package comonad-5 ... linking ... done.
Loading package bifunctors-5.4.1 ... linking ... done.
Loading package exceptions-0.8.3 ... linking ... done.
Loading package prelude-extras-0.4.0.3 ... linking ... done.
Loading package profunctors-5.2 ... linking ... done.
Loading package semigroupoids-5.1 ... linking ... done.
Loading package free-4.12.4 ... linking ... done.
Loading package generic-deriving-1.11.1 ... linking ... done.
Loading package adjunctions-4.3 ... linking ... done.
Loading package kan-extensions-5.0.1 ... linking ... done.
Loading package parallel-3.2.1.0 ... linking ... done.
Loading package reflection-2.1.2 ... linking ... done.
Loading package primitive-0.6.1.0 ... linking ... done.
Loading package vector-0.11.0.0 ... linking ... done.
Loading package lens-4.15.1 ... linking ... done.
Loading package old-time-1.1.0.2 ... linking ... done.
Loading package parsec-3.1.11 ... linking ... done.
Loading package hsemail-1.7.7 ... linking ... done.
Loading package call-stack-0.1.0 ... linking ... done.
Loading package HUnit-1.5.0.0 ... linking ... done.
Loading package polyparse-1.12 ... linking ... done.
Loading package random-1.1 ... linking ... done.
Loading package HaXml-1.25.3 ... linking ... done.
Loading package dlist-0.8.0.2 ... linking ... done.
Loading package fmlist-0.9 ... linking ... done.
Loading package utf8-string-1.0.1.1 ... linking ... done.
Loading package ListLike-4.5 ... linking ... done.
Loading package process-extras-0.4.1.4 ... linking ... done.
Loading package fail-4.9.0.0 ... linking ... done.
Loading package cereal-0.5.4.0 ... linking ... done.
Loading package entropy-0.3.7 ... linking ... done.
Loading package crypto-api-0.13.2 ... linking ... done.
Loading package pureMD5-2.1.3 ... linking ... done.
Loading package regex-base-0.93.2 ... linking ... done.
Loading package regex-tdfa-1.2.2 ... linking ... done.
Loading package zlib-0.6.1.2 ... linking ... done.
Loading package Unixutils-1.54.1 ... linking ... done.
Loading package bzlib-0.5.0.5 ... linking ... done.
Loading package MonadRandom-0.4.2.3 ... linking ... done.
Loading package mmorph-1.0.9 ... linking ... done.
Loading package transformers-base-0.4.4 ... linking ... done.
Loading package monad-control-1.0.1.0 ... linking ... done.
Loading package either-4.4.1.1 ... linking ... done.
Loading package network-2.6.3.1 ... linking ... done.
Loading package network-uri-2.6.1.0 ... linking ... done.
Loading package prettyclass-1.0.0.0 ... linking ... done.
Loading package regex-posix-0.95.2 ... linking ... done.
Loading package regex-compat-0.95.1 ... linking ... done.
Loading package debian-3.91.2 ... linking ... done.
Loading package data-default-class-0.1.2.0 ... linking ... done.
Loading package data-default-instances-containers-0.0.1 ... linking ... done.
Loading package data-default-instances-dlist-0.0.1 ... linking ... done.
Loading package data-default-instances-old-locale-0.0.1 ... linking ... done.
Loading package data-default-0.7.1.1 ... linking ... done.
Loading package Diff-0.3.4 ... linking ... done.
Loading package Cabal-1.24.1.0 ... linking ... done.
[10 of 30] Compiling Debian.Policy ( src/Debian/Policy.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Policy.o )
[11 of 30] Compiling Debian.Debianize.BinaryDebDescription ( src/Debian/Debianize/BinaryDebDescription.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/BinaryDebDescription.o )
[12 of 30] Compiling Debian.Debianize.SourceDebDescription ( src/Debian/Debianize/SourceDebDescription.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/SourceDebDescription.o )
[13 of 30] Compiling Debian.GHC ( src/Debian/GHC.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/GHC.o )
[14 of 30] Compiling Debian.Debianize.InputCabal ( src/Debian/Debianize/InputCabal.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/InputCabal.o )
[15 of 30] Compiling Debian.Debianize.Bundled ( src/Debian/Debianize/Bundled.hs, /tmp/matrix-worker/1480438013/dist-newstyle/build/x86_64-linux/ghc-7.8.4/cabal-debian-4.35.5/build/Debian/Debianize/Bundled.o )
src/Debian/Debianize/Bundled.hs:201:54:
Ambiguous occurrence ‘unPackageName’
It could refer to either ‘Debian.Debianize.Bundled.unPackageName’,
defined at src/Debian/Debianize/Bundled.hs:59:1
or ‘Distribution.Package.unPackageName’,
imported from ‘Distribution.Package’ at src/Debian/Debianize/Bundled.hs:40:53-67
cabal: Failed to build cabal-debian-4.35.5 (which is required by
exe:cabal-debian from cabal-debian-4.35.5).
there are situations wherein the aptFile function should not append ".pc"
The homepage field is missing. If not specified in the .cabal
file, this should default to http://hackage.haskell.org/package/foo
.
The current version (4.15.2) creates a file libghc-glob-doc.links, this is not needed I believe.
The distribution of the changelog entry ought to be UNRELEASED
, not unstable
.
I tried to update a debian package to a new upstream version. The result was mostly satisfying, but the created changelog entry said was like this:
+haskell-setlocale (1.0.0.3-1) UNRELEASED; urgency=low
+
+ * Initial release (Closes: #nnnn)
+
+ -- Debian Haskell Group <[email protected]> Thu, 09 Jul 2015 18:05:26 +0200
A more sane thing would be to create a changelog entry in the form New upstream release
(if the last changelog entry had a smaller upstream version).
In src/Debian/Debianize/Options.hs you're using the constructor GHCJS. I guess this should be a constructor of CompilerFlavor from the Cabal package. However, Distribution.Compiler fromCabal 1.20 doesn't contain this constructor. I guess it is new in Cabal 1.21, but I couldn't check, since that version isn't on hackage.
B.t.w. where do you get Cabal 1.21 from?
Regards
Sven
The current template for official packaging avoid putting the description in multiple times, and also does not contain the Haskell blurb verbatim:
[source stanca]
X-Description: Short description of foo
Long description of foo
Package: libghc-foo-dev
Architecture: any
Depends: ${haskell:Depends}
, ${shlibs:Depends}
, ${misc:Depends}
, libfoo-dev
Recommends: ${haskell:Recommends}
Suggests: ${haskell:Suggests}
Provides: ${haskell:Provides}
Description: ${haskell:ShortDescription}${haskell:ShortBlurb}
${haskell:LongDescription}
.
${haskell:Blurb}
Package: libghc-foo-prof
Architecture: any
Depends: ${haskell:Depends}
, ${misc:Depends}
Recommends: ${haskell:Recommends}
Suggests: ${haskell:Suggests}
Provides: ${haskell:Provides}
Description: ${haskell:ShortDescription}${haskell:ShortBlurb}
${haskell:LongDescription}
.
${haskell:Blurb}
Package: libghc-foo-doc
Section: doc
Architecture: all
Depends: ${misc:Depends}, ${haskell:Depends}
Recommends: ${haskell:Recommends}
Suggests: ${haskell:Suggests}
Description: ${haskell:ShortDescription}${haskell:ShortBlurb}
${haskell:LongDescription}
.
${haskell:Blurb}
It would be nice if cabal-debian
would also use this form.
For packages having a test suite (and unless a --not-testsuite
flag has been passed), it should add
DEB_ENABLE_TESTS = yes
and also add the dependencies of the test suite. For these, no -prof
and -doc
packages should be dependent upon, and libraries already dependent upon by the main library should not be repeated. I guess this requires a little bit of coding.
It is way too wide.
I was recently packaging Cabal (the library) 1.22.6.0 and cabal-debian generated a bunch of dependencies on libraries that are shipped with GHC.
Normally this wouldn't be a problem without version constraints, but the generated version constraints force the usage of a real package instead of a virtual one, so the dependencies can't actually be satisfied.
I was using cabal-debian 4.31.
The currently suggested and much simpler watch file is
version=3
http://hackage.haskell.org/package/foo/distro-monitor .*-([0-9\.]+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
derp
An address like "Dav\237d Fox nobody@nowhere" will not parse in finalizeMaintainer.
not optional
I just ran into the following situation: I built the transformers-0.4.2.0, but in the debianization I renamed the packages so they wouldn't conflict with the packages provided by ghc and ghc-prof: libghc-transformers4-dev instead of libghc-transformers-dev, libghc-transformers4-prof instead of libghc-transformers-prof. That package is built and uploaded, and now I want to build the latest mtl, whose cabal file specifies transformers == 0.4.*. Here are the related debian dependencies that cabal-debian generates:
libghc-transformers4-dev (>= 0.4),
ghc | libghc-transformers4-dev (<< 0.5),
ghc-prof | libghc-transformers4-prof,
So ghc can satisfy transformers << 0.5, but it can't satisfy >= 0.4. Consequently , libghc-transformers4-dev does get installed (rather than just ghc) to build the package. Unfortunately, libghc-transformers4-prof does not get pulled in, because it looks like ghc-prof is sufficient for the build.
Issue: should we therefore include the same version dependencies for the prof packages?
Hi,
this is a tricky one: As not all architectures in Debian support Template Haskell, every TH-using package needs a build-dependency on the virtual package ghc-ghci
.
Now the correct way to detect the use of Template Haskell is looking for {-# LANGUAGE TemplateHaskell #-}
in the sources. But I’m not sure if you want to go down that route...
Anyways, I wanted to record this, without pushing for it.
Greetings,
Joachim
I'm citing from http://hydra.cryp.to/build/599877/log/raw:
[11 of 31] Compiling Debian.Debianize.CopyrightDescription ( src/Debian/Debianize/CopyrightDescription.hs, dist/build/Debian/Debianize/CopyrightDescription.o )
src/Debian/Debianize/CopyrightDescription.hs:40:37:
Module ‘Debian.Pretty’ does not export ‘display'’
src/Debian/Debianize/CopyrightDescription.hs:40:47:
Module ‘Debian.Pretty’ does not export ‘ppDisplay'’
The debian directory should contain a file source/format
with content
3.0 (quilt)
When trying to use the command cabal-debian --official
and cabal-debian
on the gtksourceview3-0.13.1.1
, an error is thrown:
$ cabal-debian --official
cabal-debian: apt-file: readProcessWithExitCode: runInteractiveProcess: exec: does not exist (No such file or directory)
I haven't yet had time to investigate so any advice would be helpful.
Hi,
greetings from DebConf. We are currently improving our tools, and we want to make updating packages more efficient. Usually, the only manual step in doing that is updating the build dependencies; something that cabal-debian can do quite well.
The problem is that currently cabal-debian
will override other parts of the packaging, even if we had manually changed them (most notably, copyright and description).
So it would be great to have a flag to cabal-debian
to instruct it to only update Build-Depends
and Build-Depends-Indep
(and maybe a few more that are usually not modified, like Homepage
, the VCS fields
) but none of the other fields.
Such a flag could be called --update-dependencies
.
Thanks!
Joachim
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.