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

Re: Refactor ghc rules file



Hi again


Changing the topic :)

Here we are, following up with the irc conversation I overridden the shlibs generation, now the debdiff is the same, except for some order due to the wrap and sort

debdiff ghc_7.10.1.20150612-1_amd64.changes ghc_7.10.1.20150612-2_amd64.changes
File lists identical (after any substitutions)

Control files of package ghc: lines which differ (wdiff format)
---------------------------------------------------------------
Depends: gcc, [-libgmp-dev, libffi-dev,-] libbsd-dev, libc6-dev, {+libffi-dev, libgmp-dev,+} libncurses5-dev, libc6 (>= 2.14), libffi6 (>= 3.0.4), libgmp10, libtinfo5
Suggests: [-perl, ghc-prof,-] ghc-doc, {+ghc-prof,+} haskell-doc, [-llvm-3.5-] {+llvm-3.5, perl+}
Version: [-7.10.1.20150612-1-] {+7.10.1.20150612-2+}

Control files of package ghc-doc: lines which differ (wdiff format)
-------------------------------------------------------------------
Depends: [-haddock-interface-27, perl-] {+perl, haddock-interface-27+}
Version: [-7.10.1.20150612-1-] {+7.10.1.20150612-2+}

Control files of package ghc-prof: lines which differ (wdiff format)
--------------------------------------------------------------------
Depends: ghc (= [-7.10.1.20150612-1)-] {+7.10.1.20150612-2)+}
Version: [-7.10.1.20150612-1-] {+7.10.1.20150612-2+}


Now looking at build logs the only difference is the usage of the "-D_FORTIFY_SOURCE=2" flag [1] [2]
(seems that googling for the flag and ghc spots people using it)



the call to make instead of /usr/bin/make and some differences like:
<<ghc: 4707590248 bytes, 6186 GCs, 14656374/34084440 avg/max bytes residency (10 samples), 84M in use, 0.00 INIT (0.00 elapsed), 2.25 MUT (3.47 elapsed), 0.39 GC (0.39 elapsed) :ghc>>
<<ghc: 4707590200 bytes, 6186 GCs, 14660067/34121368 avg/max bytes residency (10 samples), 84M in use, 0.00 INIT (0.00 elapsed), 2.19 MUT (4.05 elapsed), 0.39 GC (0.39 elapsed) :ghc>>

I guess this is due to the flag and the non reproducible build.


[1] https://securityblog.redhat.com/2014/03/26/fortify-and-you/

[2] https://wiki.ubuntu.com/ToolChain/CompilerFlags


cheers,

Gianfranco
From 2b743035588ef9ac342b98e59dceaa4a2133cec2 Mon Sep 17 00:00:00 2001
From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Date: Sat, 27 Jun 2015 13:35:08 +0200
Subject: [PATCH 1/3] Wrap and sort

---
 debian/control   | 86 ++++++++++++++++++++++++++++++--------------------------
 debian/copyright |  2 +-
 2 files changed, 47 insertions(+), 41 deletions(-)

diff --git a/debian/control b/debian/control
index c6f10b7..00242d7 100644
--- a/debian/control
+++ b/debian/control
@@ -3,51 +3,57 @@ Section: haskell
 Priority: extra
 Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
 Uploaders: Joachim Breitner <nomeata@debian.org>,
- Erik de Castro Lopo <erikd@mega-nerd.com>
+           Erik de Castro Lopo <erikd@mega-nerd.com>
 Standards-Version: 3.9.5
-Build-Depends:
-  debhelper (>= 9),
-  libgmp-dev,
-  devscripts,
-  ghc,
-  grep-dctrl,
-  dh-autoreconf,
-  autotools-dev,
-  llvm-3.5 [arm64 armel armhf],
-  libffi-dev,
-  pkg-config,
-  xsltproc,
-  docbook-xsl,
-  docbook-xml,
-  binutils [arm64 armel armhf],
-  libncurses5-dev,
-  dpkg-dev (>= 1.16.1.1)
-Build-Depends-Indep:
-  hscolour,
-  fop
-Build-Conflicts:
-  ccache
+Build-Depends: autotools-dev,
+               binutils [arm64 armel armhf],
+               debhelper (>= 9),
+               devscripts,
+               dh-autoreconf,
+               docbook-xml,
+               docbook-xsl,
+               dpkg-dev (>= 1.16.1.1),
+               ghc,
+               grep-dctrl,
+               libffi-dev,
+               libgmp-dev,
+               libncurses5-dev,
+               llvm-3.5 [arm64 armel armhf],
+               pkg-config,
+               xsltproc
+Build-Depends-Indep: fop, hscolour
+Build-Conflicts: ccache
 Homepage: http://haskell.org/ghc/
 Vcs-Darcs: http://darcs.debian.org/pkg-haskell/ghc
 Vcs-Browser: http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/ghc
 
 Package: ghc
 Architecture: any
-Depends: llvm-3.5 [arm64 armel armhf], gcc, libgmp-dev, libffi-dev, libbsd-dev, libc6-dev, libncurses5-dev, ${shlibs:Depends}, ${misc:Depends}
+Depends: gcc,
+         libbsd-dev,
+         libc6-dev,
+         libffi-dev,
+         libgmp-dev,
+         libncurses5-dev,
+         llvm-3.5 [arm64 armel armhf],
+         ${misc:Depends},
+         ${shlibs:Depends}
 Pre-Depends: dpkg (>= 1.16.1)
-Provides:
-  haskell-compiler,
-  ${provided-devs},
-  ${haskell:Provides},
-  ${ghci},
-  ghc-dynamic,
-  haddock,
-  ghc-haddock,
-  ${haddock:Provides}
-Replaces: ghc6 (<< 7), ghc-dynamic (<< 7.8), ghc-haddock (<< 7.10)
-Conflicts: ghc6 (<< 7), ghc-dynamic (<< 7.8), ${conflicting-devs}
-Breaks: cabal-install (<< 0.8.0), haskell-devscripts (<< 0.8.13), ghc-doc (<< 7.10), ghc-haddock (<< 7.10)
-Suggests: perl, ghc-prof, ghc-doc, haskell-doc, llvm-3.5
+Provides: ghc-dynamic,
+          ghc-haddock,
+          haddock,
+          haskell-compiler,
+          ${ghci},
+          ${haddock:Provides},
+          ${haskell:Provides},
+          ${provided-devs}
+Replaces: ghc-dynamic (<< 7.8), ghc-haddock (<< 7.10), ghc6 (<< 7)
+Conflicts: ghc-dynamic (<< 7.8), ghc6 (<< 7), ${conflicting-devs}
+Breaks: cabal-install (<< 0.8.0),
+        ghc-doc (<< 7.10),
+        ghc-haddock (<< 7.10),
+        haskell-devscripts (<< 0.8.13)
+Suggests: ghc-doc, ghc-prof, haskell-doc, llvm-3.5, perl
 Description: The Glasgow Haskell Compilation system
  The Glorious Glasgow Haskell Compilation system (GHC) is a compiler for
  Haskell.
@@ -59,7 +65,7 @@ Description: The Glasgow Haskell Compilation system
 
 Package: ghc-prof
 Architecture: any
-Provides: ${provided-profs}, ${haskell:Provides}
+Provides: ${haskell:Provides}, ${provided-profs}
 Depends: ghc (= ${binary:Version}), ${misc:Depends}
 Replaces: ghc6-prof (<< 7)
 Conflicts: ghc6-prof (<< 7)
@@ -82,8 +88,8 @@ Architecture: all
 Suggests: haskell-doc
 Provides: ${provided-docs}
 Replaces: ghc6-doc (<< 7)
-Conflicts: ghc6-doc (<< 7), ghc (<= 7.0.3-1)
-Depends: ${haddock:Depends}, ${misc:Depends}, perl
+Conflicts: ghc (<= 7.0.3-1), ghc6-doc (<< 7)
+Depends: perl, ${haddock:Depends}, ${misc:Depends}
 Pre-Depends: dpkg (>= 1.16.1)
 Description: Documentation for the Glasgow Haskell Compilation system
  The Glorious Glasgow Haskell Compilation system (GHC) is a compiler for
diff --git a/debian/copyright b/debian/copyright
index 07b1ed9..fbb45d1 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -49,7 +49,7 @@ DAMAGE.
 
 
 GHC includes libffi.
-libffi - Copyright (c) 1996-2008  Red Hat, Inc and others.  
+libffi - Copyright (c) 1996-2008  Red Hat, Inc and others.
 See source files for details.
 
 Permission is hereby granted, free of charge, to any person obtaining
-- 
2.1.4

From 31e208af50c1a3947734353218bcd3e346da60c0 Mon Sep 17 00:00:00 2001
From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Date: Sat, 27 Jun 2015 13:35:19 +0200
Subject: [PATCH 2/3] Bump std version

---
 debian/control | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/debian/control b/debian/control
index 00242d7..59fbb94 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: extra
 Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
 Uploaders: Joachim Breitner <nomeata@debian.org>,
            Erik de Castro Lopo <erikd@mega-nerd.com>
-Standards-Version: 3.9.5
+Standards-Version: 3.9.6
 Build-Depends: autotools-dev,
                binutils [arm64 armel armhf],
                debhelper (>= 9),
-- 
2.1.4

From d926e73a905404677cfb619c5845f1667541f1b5 Mon Sep 17 00:00:00 2001
From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Date: Sat, 27 Jun 2015 13:38:30 +0200
Subject: [PATCH 3/3] Update rules and changelog

---
 debian/changelog |   8 ++++
 debian/rules     | 112 ++++++++++++-------------------------------------------
 2 files changed, 31 insertions(+), 89 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index f3f9559..cba5061 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+ghc (7.10.1.20150612-2) experimental; urgency=medium
+
+  * Bump std-version
+  * Refactor rules file
+  * Wrap and sort
+
+ -- Gianfranco Costamagna <costamagnagianfranco@yahoo.it>  Sat, 27 Jun 2015 13:37:52 +0200
+
 ghc (7.10.1.20150612-1) experimental; urgency=medium
 
   * Calculate haddock interface version using the built haddock, not the
diff --git a/debian/rules b/debian/rules
index aae0a64..b285537 100755
--- a/debian/rules
+++ b/debian/rules
@@ -37,17 +37,11 @@ EXTRA_CONFIGURE_FLAGS=--with-ghc="$(GHC)"
 BUILD_HADDOCK_DOCS=YES
 DEB_HOOGLE_TXT_DIR = /usr/lib/ghc-doc/hoogle/
 
-ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
-    NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
-    MAKEFLAGS += -j$(NUMJOBS)
-endif
+%:
+	dh $@ --with autotools-dev
 
-configure: configure-stamp
-configure-stamp:
-	dh_testdir
+override_dh_auto_configure:
 	dh_autoreconf perl -- boot
-
-	rm -f mk/build.mk
 	echo "SRC_HC_OPTS += -lffi -optl-pthread" >> mk/build.mk
 	echo "HADDOCK_DOCS := YES" >> mk/build.mk
 	echo "XSLTPROC_OPTS += --nonet" >> mk/build.mk
@@ -91,23 +85,14 @@ endif
 	echo 'psdir   := $$(docdir)'                   >> mk/build.mk
 	# We want verbose builds
 	echo 'V=1'                                     >> mk/build.mk
-	rm -f config.sub
-	rm -f config.guess
-	ln -s /usr/share/misc/config.sub .
-	ln -s /usr/share/misc/config.guess .
 	./configure $(confflags) --prefix=/usr \
 		$(EXTRA_CONFIGURE_FLAGS) \
 		--with-system-libffi \
 		--with-llc=llc-3.5 \
 		--with-opt=opt-3.5
 
-	touch $@
-
-build: build-stamp
-build-stamp: configure-stamp
-	dh_testdir
-	$(MAKE) $(MAKEFLAGS)
-
+override_dh_auto_build:
+	dh_auto_build
 	# Do some very simple tests that the compiler actually works
 	rm -rf debian/testghc
 	mkdir debian/testghc
@@ -120,19 +105,11 @@ build-stamp: configure-stamp
 	[ "$$(debian/testghc/foo)" = "Foo" ]
 	rm debian/testghc/*
 
-	touch $@
-
 FILES = \( -type f -o -type l \)
 PROF_FILE = \( -name "*.p_*" -o -name "lib*_p.a" \)
 
-install: install-stamp
-install-stamp: build-stamp
-	dh_testdir
-	dh_testroot
-	dh_prep
-
-	# Install the basic stuff
-	$(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+override_dh_auto_install:
+	dh_auto_install
 
 	# Delete all the library LICENSE files
 	rm -f debian/tmp/usr/share/doc/ghc-doc/html/libraries/*/LICENSE
@@ -224,15 +201,10 @@ endif
 	sed -i s,^debian/tmp,, debian/*.install debian/*.links
 	rm -f debian/ghc.links
 	echo "/var/lib/ghc/package.conf.d /usr/lib/ghc/package.conf.d" >> debian/ghc.links
-	touch $@
 
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f configure-stamp build-stamp install-stamp binary-arch-stamp binary-indep-stamp
-	rm -f configure
-
-	$(MAKE) distclean
+override_dh_auto_clean:
+	dh_auto_clean
+	rm -f mk/build.mk
 
 	rm -f debian/*.install
 	rm -f debian/*.1
@@ -264,56 +236,18 @@ clean:
 	rm -f libraries/haskeline/a.out
 	rm -rf utils/ghctags/dist-install
 
-	rm -f config.sub config.guess
-	
-	dh_autoreconf_clean
-	dh_clean
-
-binary-arch: binary-arch-stamp
-binary-arch-stamp: install-stamp
-	dh_testdir
-	dh_testroot
-	dh_installchangelogs -a
-	dh_installdocs -a
-	dh_installexamples -a
-	dh_install -a
-	dh_installmenu -a
-	dh_installman -a
-	dh_strip
-	dh_link -a
-	dh_compress -X.haddock -X.txt -a
-	dh_fixperms -a
+override_dh_compress:
+	dh_compress -X.haddock -X.txt
+
+override_dh_installdeb:
 	sh debian/dh_haskell_provides
-	dh_installdeb -a
+	dh_installdeb
+
+override_dh_shlibdeps:
 	dh_shlibdeps -XlibHS
-	dh_gencontrol -a
-	dh_md5sums -a
-	dh_builddeb -a
-	touch $@
-
-# binary-indep and binary-arch both build everything, as otherwise
-# "dh_install --fail-missing" falls over
-
-# Build architecture independant packages using the common target.
-binary-indep: binary-indep-stamp
-binary-indep-stamp: install-stamp
-	dh_testdir
-	dh_testroot
-	dh_installchangelogs -i
-	dh_installdocs -i
-	dh_installexamples -i
-	dh_installdirs -i
-	dh_install -i
-	dh_installmenu -i
-	dh_installman -i
-	dh_link -i
-	dh_compress -X.haddock -X.txt -i
-	dh_fixperms -i
-	dh_installdeb -i
-	dh_gencontrol -i
-	dh_md5sums -i
-	dh_builddeb -i
-	touch $@
-
-binary: binary-indep binary-arch
-.PHONY: build install clean binary-indep binary-arch binary-common binary patch
+
+# we do not want shlibs files there, neither postrm scripts
+override_dh_makeshlibs:
+
+# we have ghc-testsuite for this, empty override
+override_dh_auto_test:
-- 
2.1.4


Reply to: