[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Packaging non-library Haskell



Hi Stephen,

Am Donnerstag, den 19.04.2012, 11:14 -0500 schrieb Stephen Paul Weber:
> Somebody signing messages as Joachim Breitner wrote:
> >> *-doc by the existing logic, README and similar docs seem to be put in the
> >> main package, which seems correct to me.  Binaries are copied by the logic
> >> I'm prototyping.  So that leaves "everything else".  I should experiment
> >> with a more complex Haskell application, like maybe darcs.
> >
> >haskell-hledger-web is an example for a package that needs extra data
> >(and that is broken in that regard right now):
> >http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668622
> >
> >hlint also requires data files, and so does threadscope.
> 
> hlint seems to install ghc libraries as well.  Is this intentional?  It 
> seems that if the libraries are wanted, they should go in a libghc-hlint-dev 
> package, seperate from the utility package containing the binary.

They do go into the libghc-hlint-dev package, not sure what you are 
hinting at here:
http://packages.debian.org/sid/amd64/hlint/filelist
http://packages.debian.org/sid/amd64/libghc-hlint-dev/filelist

> 
> If this is the case, then the following builds hlint:
> 
> #!/usr/bin/make -f
> 
> include /usr/share/cdbs/1/rules/debhelper.mk
> include /usr/share/cdbs/1/class/hlibrary.mk
> 
> # If no threaded RTS is found, disable it
> DEB_SETUP_GHC_CONFIGURE_ARGS := $(shell test -e /usr/lib/ghc-$(GHC_VERSION)/libHSrts_thr.a || echo --flags=-threaded)
> 
> build/$(CABAL_PACKAGE):: build-ghc-stamp
> 
> install/$(CABAL_PACKAGE):: debian/tmp-inst-ghc
> 	cd debian/tmp-inst-ghc ; find usr/bin/ \
> 		-exec install -Dm 755 '{}' ../$(notdir $@)/'{}' ';'
> 	cd debian/tmp-inst-ghc ; find usr/share/$(notdir $@)* \
> 		-exec install -Dm 644 '{}' ../$(notdir $@)/'{}' ';'
> 	mkdir -p debian/$(notdir $@)/usr/share/emacs/site-lisp
> 	mv debian/$(notdir $@)/usr/share/$(notdir $@)*/hs-lint.el debian/$(notdir $@)/usr/share/emacs/site-lisp
> 	install -Dm 644 hlint.htm debian/$(CABAL_PACKAGE)/usr/share/doc/$(CABAL_PACKAGE)/hlint.html
>
> The DEB_SETUP_GHC_CONFIGURE_ARGS thing is sort of more general, but I'm not 
> sure what the right way to handle that is.  Maybe a DEB_GHC_TRY_THREADED=1 
> sort of thing?

The test can be abstracted, but not the flag, as that is (unfortunately)
package-specific.

> You'll note that the only addition over my usr/bin/ copyer from before is an 
> alsmost identical command for user/share/$(notdir $@)*
> 
> After that comes two lines to install an emacs lisp file to the correct 
> location.  I'm not sure if there's a way to make that more general.
>
> Finally, a line to install an extra documentation file.  Since the *.cabal 
> does not know that this file is documentation, and it does not have a name 
> that immidiately identifies it as documentation (like README), I think 
> something custom is going to be required for that case no matter what.

I think these two cases can go (or rather, stay) in
debian/hlint.install, while the rest looks like it can go into
hlibrary.mk.

> Replacing the threadscope debian/rules with the above (minus the emacs and 
> docs line) allows all the lines except the *.xpm and *.desktop lines to be 
> removed from the threadscope *.install

There are only those two lines in the threadscope.install; I guess you
mean that the install/$(CABAL_PACKAGE) target in the makefile can be
removed.

> So, little bits of custom install remain in both, but this seems to be to be 
> the right sort of direction.

Great!

Greetings,
Joachim

-- 
Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: