[Pkg-xen-devel] [patch] Packages ocaml libraries

Mehdi Dogguy mehdi at dogguy.org
Wed Aug 31 16:28:45 UTC 2011


On 31/08/2011 17:31, Thomas Goirand wrote:
> On 08/30/2011 09:44 PM, Ian Campbell wrote:
>> I still don't think this can be right. Surely every Ocaml packages 
>> doesn't open code a bunch of install runes like this (not to mention
>>  the corresponding "find ... -delete" like you have below). It'd be
>> a maintenance nightmare.
>> 
>> Looking at the ocaml-taglib source (picked at random) it appears that
>> at least one viable option for doing this properly is to use the
>> dh_install functionality which lets you specify a different target
>> directory to where the file is found in the staging dir. i.e. 
>> debian/libtaglib-ocaml.install.in contains: 
>> @OCamlStdlibDir@/taglib/dlltaglib_stubs.so @OCamlDllDir@
>> 

I think that his generated .install files are not that complex, but they
could look as complex because:
1) there are multiple subdirs there and we have to split files between the
-dev and non -dev packages.
2) usage of old dh style rules (no way to run with "--with ocaml")
3) the staging directory depends on variables $ARCH set in your
debian/rules. That's why you have to define a @XenBuildOcamlLibsDir@
substitution variable.

Some comments about the patch:

+	export OCAMLINIT_SED="-e
s%@XenBuildOcamlLibsDir@%debian/build/build-utils_$(ARCH)/tools/ocaml/libs%"
&& dh_ocamlinit

I think that the following is enough.

	OCAMLINIT_SED="…" dh_ocamlinit

+	dh_install
+	dh_strip
+	dh_shlibdeps
+	+$(MAKE_SELF) install-base
+
+install-lib-ocaml-dev_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+install-lib-ocaml-dev_$(ARCH): PACKAGE_NAME = libxen-ocaml-dev
+install-lib-ocaml-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-lib-ocaml-dev_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
+	dh_testdir
+	dh_testroot
+	dh_prep
+	make -C $(BUILD_DIR)/build-utils_$(ARCH)/tools/ocaml/libs
+	export OCAMLINIT_SED="-e
s%@XenBuildOcamlLibsDir@%debian/build/build-utils_$(ARCH)/tools/ocaml/libs%"
&& dh_ocamlinit

Same here.

When I mentioned "export", it was in case you want to set that once and
for all in your debian/rules somewhere before those targets, and not to
use in every invocation.

+Package: libxen-ocaml-dev
+Architecture: any
+Section: ocaml
+Depends: libxen-ocaml (= ${binary:Version}), ${shlibs:Depends},
ocaml-findlib (>= 1.1), ${misc:Depends}, ${ocaml:Depends}
+Provides: ${ocaml:Provides}

I guess the dependency on "libxen-ocaml (= ${binary:Version})" is not
necessary since it will be detected by dh_ocaml.

diff -u -N -r old/xen-4.1.1/debian/templates/control.source.in
new/xen-4.1.1/debian/templates/control.source.in
--- old/xen-4.1.1/debian/templates/control.source.in	2011-07-18
16:48:10.000000000 +0000
+++ new/xen-4.1.1/debian/templates/control.source.in	2011-08-30
15:40:22.000000000 +0000
@@ -15,7 +15,8 @@
  libncurses5-dev,
  libpci-dev,
  uuid-dev,
- zlib1g-dev
+ zlib1g-dev,
+ ocaml-nox, dh-ocaml, ocaml-findlib
 Build-Depends-Indep:
  graphviz,
  ghostscript,

The build-dependency on dh-ocaml should be versioned since all those
dh_ocaml* scripts have been added in 0.9.0. I think you should turn that
into something like "dh-ocaml (>= 0.9~), ocaml-nox (>= 3.11.1-3~)".
Lintian should warn about that though.

(Disclaimer: I didn't try to use the package, nor complied it.)

Regards,

-- 
Mehdi Dogguy مهدي الدڤي
http://dogguy.org/



More information about the Pkg-xen-devel mailing list