Control: clone -1 -2
Control: retitle -2 support building ghc without building haddock
Control: block -1 by -2

On Tue, Jan 31, 2017 at 09:20:46AM +0100, John Paul Adrian Glaubitz wrote:
>   Setting "--target" allows enabling cross-compiling, adding
>   --enable-unregisterised is important for architectures not
>   having native code generation support. Disabling the documentation
>   is required by GHC itself. Trying to build the documentation
>   when cross-compiling causes an error message.

I'm not entirely sold on the idea that we cannot cross build haddock.
What about using the haddock from the ghc:native package to build the
documentation? But then maybe I understand too little of the
requirements here.

In any case, disabling haddock should not be a thing that just happens
for cross compilation. We want cross builds to be reproducible (when
compared against native builds). So disabling haddock should be a
concious choice (even if cross building without disabling haddock
doesn't work). Also building ghc without haddock should produce a
package that doesn't list haddock under Provides. This calls for a build
profile. So I went ahead and split out this part of your patch into a
patch that adds a pkg.ghc.nohaddock build profile.

It's not clear to me whether some Build-Depends should become droppable
under the profile.

I hope that this makes sense and that the resulting profile is useful
for cross compiling ghc. Do you agree?

Helmut
diff --minimal -Nru ghc-8.0.1/debian/changelog ghc-8.0.1/debian/changelog
--- ghc-8.0.1/debian/changelog  2016-12-17 03:44:45.000000000 +0100
+++ ghc-8.0.1/debian/changelog  2017-01-31 15:39:43.000000000 +0100
@@ -1,3 +1,10 @@
+ghc (8.0.1-17.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Add pkg.ghc.nohaddock build profile for disabling haddock (Closes: #-1).
+
+ -- Helmut Grohne <hel...@subdivi.de>  Tue, 31 Jan 2017 15:39:43 +0100
+
 ghc (8.0.1-17) unstable; urgency=medium
 
   * Add upstream patch "Add relocation type R_X86_64_REX_GOTPCRELX".
diff --minimal -Nru ghc-8.0.1/debian/control ghc-8.0.1/debian/control
--- ghc-8.0.1/debian/control    2016-10-28 07:42:05.000000000 +0200
+++ ghc-8.0.1/debian/control    2017-01-31 15:39:43.000000000 +0100
@@ -49,8 +49,8 @@
   ${ghci},
   ${provided-devs},
   ${haskell:Provides},
-  haddock,
-  ghc-haddock,
+  haddock <!pkg.ghc.nohaddock>,
+  ghc-haddock <!pkg.ghc.nohaddock>,
   ${haddock:Provides}
 Replaces: ghc6 (<< 7), ghc-dynamic (<< 7.8), ghc-haddock (<< 7.10)
 Conflicts: ghc6 (<< 7), ghc-dynamic (<< 7.8), ${conflicting-devs}
@@ -94,6 +94,7 @@
 Breaks: libghc-terminfo-doc (<< 0.3.2.5-4), libghc-transformers-doc (<< 
0.3.0.0-6), libghc-xhtml-doc (<< 3000.2.1-5)
 Depends: ${haddock:Depends}, ${misc:Depends}, perl, libjs-mathjax
 Pre-Depends: dpkg (>= 1.16.1)
+Build-Profiles: <!pkg.ghc.nohaddoc>
 Description: Documentation for the Glasgow Haskell Compilation system
  The Glorious Glasgow Haskell Compilation system (GHC) is a compiler for
  Haskell.
diff --minimal -Nru ghc-8.0.1/debian/rules ghc-8.0.1/debian/rules
--- ghc-8.0.1/debian/rules      2016-11-14 17:07:27.000000000 +0100
+++ ghc-8.0.1/debian/rules      2017-01-31 15:39:43.000000000 +0100
@@ -35,7 +35,6 @@
 GHC=$(firstword $(shell bash -c "type -p ghc"))
 EXTRA_CONFIGURE_FLAGS=--with-ghc="$(GHC)"
 
-BUILD_HADDOCK_DOCS=YES
 DEB_HOOGLE_TXT_DIR = /usr/lib/ghc-doc/hoogle/
 
 ifeq (x32,$(DEB_HOST_ARCH))
@@ -48,9 +47,13 @@
 override_dh_auto_configure:
        dh_autoreconf perl -- boot
        echo "SRC_HC_OPTS += -lffi -optl-pthread" >> mk/build.mk
+ifeq ($(filter pkg.ghc.nohaddock,$(DEB_BUILD_PROFILES)),)
        echo "HADDOCK_DOCS := YES" >> mk/build.mk
        echo "EXTRA_HADDOCK_OPTS += 
--mathjax=file:///usr/share/javascript/mathjax/MathJax.js" >> mk/build.mk
        echo "XSLTPROC_OPTS += --nonet" >> mk/build.mk
+else
+       echo "HADDOCK_DOCS := NO" >> mk/build.mk
+endif
 ifneq (,$(findstring $(DEB_HOST_ARCH), arm64 armel armhf))
        echo "SRC_HC_OPTS     += -optl-B/usr/bin/ld.gold" >> mk/build.mk
 endif
@@ -161,11 +164,11 @@
        if test -e debian/tmp/usr/bin/ghci-$(ProjectVersion); then \
            echo 'ghci=ghc-ghci' >> debian/ghc.substvars ; fi
 
+ifeq ($(filter pkg.ghc.nohaddock,$(DEB_BUILD_PROFILES)),)
        # Add haddock substvars
        echo 
"haddock:Depends=haddock-interface-$$(debian/tmp/usr/lib/ghc/bin/haddock 
--interface-version)" >> debian/ghc-doc.substvars
        echo 
"haddock:Provides=haddock-interface-$$(debian/tmp/usr/lib/ghc/bin/haddock 
--interface-version)" >> debian/ghc.substvars
 
-ifeq (YES,$(BUILD_HADDOCK_DOCS))
        mkdir -p debian/tmp/usr/lib/ghc-doc
        cp debian/gen_contents_index debian/tmp/usr/lib/ghc-doc/
        chmod +x debian/tmp/usr/lib/ghc-doc/gen_contents_index
@@ -191,8 +194,10 @@
        echo ".so man1/ghc-pkg.1" > debian/ghc-pkg-$(ProjectVersion).1
 
        echo debian/*.1 > debian/ghc.manpages
+ifeq ($(filter pkg.ghc.nohaddock,$(DEB_BUILD_PROFILES)),)
        cp debian/haddock.man debian/haddock.1
        echo debian/haddock.1 >> debian/ghc.manpages
+endif
 
        # ####################
        # Now all the files are sorted, create the package filelists
@@ -207,16 +212,17 @@
        # ghc-prof
        find debian/tmp/usr/lib $(FILES) $(PROF_FILE) > debian/ghc-prof.install
        echo debian/tmp/usr/share/lintian/overrides/ghc-prof >> 
debian/ghc-prof.install
+ifeq ($(filter pkg.ghc.nohaddock,$(DEB_BUILD_PROFILES)),)
        # ghc-doc
-ifeq (YES,$(BUILD_HADDOCK_DOCS))
        mkdir -p debian/tmp/$(DEB_HOOGLE_TXT_DIR)
        cat debian/ghc-doc.links.in                     > debian/ghc-doc.links
        find debian/tmp/usr/share/doc/ghc-doc/html/libraries/*/ -name "*.txt" \
                -printf "%p $(DEB_HOOGLE_TXT_DIR)/%f\n" >> debian/ghc-doc.links
        find debian/tmp/usr/share/doc/ghc-doc $(FILES) > debian/ghc-doc.install
        find debian/tmp/usr/lib/ghc-doc $(FILES)      >> debian/ghc-doc.install
+       sed -i s,^debian/tmp,, debian/*.links
 endif
-       sed -i s,^debian/tmp,, debian/*.install debian/*.links
+       sed -i s,^debian/tmp,, debian/*.install
        rm -f debian/ghc.links
        echo "/var/lib/ghc/package.conf.d /usr/lib/ghc/package.conf.d" >> 
debian/ghc.links
 

Reply via email to