Bug 1427326 - Build a python package for Debian 7. r=dustin draft
authorMike Hommey <mh+mozilla@glandium.org>
Fri, 29 Dec 2017 13:00:59 +0900
changeset 716016 4d8eeec6f879aeb870bd242f17507d83390590ee
parent 716015 077d50d059860902cb9436ba20046a3705c8bb97
child 716017 ccaadc35403a2c4ecd0c11dff8d18c1881f000b4
push id94300
push userbmo:mh+mozilla@glandium.org
push dateThu, 04 Jan 2018 22:59:03 +0000
reviewersdustin
bugs1427326
milestone59.0a1
Bug 1427326 - Build a python package for Debian 7. r=dustin
build/debian-packages/python-wheezy.diff
taskcluster/ci/config.yml
taskcluster/ci/packages/kind.yml
new file mode 100644
--- /dev/null
+++ b/build/debian-packages/python-wheezy.diff
@@ -0,0 +1,149 @@
+diff -u python2.7-2.7.9/debian/changelog python2.7-2.7.9/debian/changelog
+--- python2.7-2.7.9/debian/changelog
++++ python2.7-2.7.9/debian/changelog
+@@ -1,3 +1,17 @@
++python2.7 (2.7.9-2.deb7moz1) wheezy; urgency=medium
++
++  * Mozilla backport for wheezy.
++  * debian/control.in:
++    - Remove gcc 4.9 build dependency, wheezy doesn't have it.
++    - Remove libexpat1-dev dependency from python dev packages. It prevents
++      from co-installing some i386 -dev packages.
++  * debian/rules:
++    - Adapt ar, ranlib and objcopy paths to work on wheezy.
++  * debian/control.in, debian/rules: Don't generate the -doc package, sphinx
++    is too old in wheezy.
++
++ -- Mike Hommey <glandium@mozilla.com>  Fri, 13 Oct 2017 19:20:21 +0900
++
+ python2.7 (2.7.9-2+deb8u1) jessie; urgency=medium
+ 
+   * Backport upstream commit b3ce713fb9beebfff9848cefa0acbd59acc68fe9
+diff -u python2.7-2.7.9/debian/control.in python2.7-2.7.9/debian/control.in
+--- python2.7-2.7.9/debian/control.in
++++ python2.7-2.7.9/debian/control.in
+@@ -3,7 +3,6 @@
+ Priority: optional
+ Maintainer: Matthias Klose <doko@debian.org>
+ Build-Depends: debhelper (>= 5), @bd_dpkgdev@
+-  gcc (>= 4:4.9.2),
+   quilt, autoconf, autotools-dev,
+   lsb-release, sharutils,
+   libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3), @bd_gcc@
+@@ -112,7 +111,7 @@
+ Package: @PVER@-dev
+ Architecture: any
+ Multi-Arch: allowed
+-Depends: @PVER@ (= ${binary:Version}), lib@PVER@-dev (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
++Depends: @PVER@ (= ${binary:Version}), lib@PVER@-dev (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+ Recommends: libc6-dev | libc-dev
+ Replaces: @PVER@ (<< 2.7-3)
+ Description: Header files and a static library for Python (v@VER@)
+@@ -127,7 +126,7 @@
+ Architecture: any
+ Multi-Arch: same
+ Pre-Depends: multiarch-support
+-Depends: lib@PVER@-stdlib (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
++Depends: lib@PVER@-stdlib (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+ Replaces: @PVER@ (<< 2.7-3), @PVER@-dev (<< 2.7.3-10), @PVER@-minimal (<< 2.7.3-10)
+ Recommends: libc6-dev | libc-dev
+ Description: Header files and a static library for Python (v@VER@)
+@@ -161,27 +160,6 @@
+  IDLE is an Integrated Development Environment for Python (v@VER@).
+  IDLE is written using Tkinter and therefore quite platform-independent.
+ 
+-Package: @PVER@-doc
+-Section: doc
+-Architecture: all
+-Depends: libjs-jquery, libjs-underscore, ${misc:Depends}
+-Suggests: @PVER@
+-Description: Documentation for the high-level object-oriented language Python (v@VER@)
+- These is the official set of documentation for the interactive high-level
+- object-oriented language Python (v@VER@). All documents are provided
+- in HTML format. The package consists of ten documents:
+- .
+-   * What's New in Python@VER@
+-   * Tutorial
+-   * Python Library Reference
+-   * Macintosh Module Reference
+-   * Python Language Reference
+-   * Extending and Embedding Python
+-   * Python/C API Reference
+-   * Installing Python Modules
+-   * Documenting Python
+-   * Distributing Python Modules
+-
+ Package: @PVER@-dbg
+ Section: debug
+ Architecture: any
+diff -u python2.7-2.7.9/debian/rules python2.7-2.7.9/debian/rules
+--- python2.7-2.7.9/debian/rules
++++ python2.7-2.7.9/debian/rules
+@@ -121,8 +121,8 @@
+ CC = $(DEB_HOST_GNU_TYPE)-gcc
+ CXX=$(DEB_HOST_GNU_TYPE)-g++
+ 
+-AR=$(DEB_HOST_GNU_TYPE)-ar
+-RANLIB=$(DEB_HOST_GNU_TYPE)-ranlib
++AR=$(DEB_HOST_GNU_TYPE)-gcc-ar-4.7
++RANLIB=$(DEB_HOST_GNU_TYPE)-gcc-ranlib-4.7
+ 
+ DPKG_CFLAGS  := $(shell dpkg-buildflags --get CPPFLAGS; dpkg-buildflags --get CFLAGS)
+ DPKG_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+@@ -171,8 +171,6 @@
+       LTO_CFLAGS += -ffat-lto-objects
+     endif
+     EXTRA_OPT_CFLAGS += $(LTO_CFLAGS)
+-    AR=$(DEB_HOST_GNU_TYPE)-gcc-ar
+-    RANLIB=$(DEB_HOST_GNU_TYPE)-gcc-ranlib
+ endif
+ 
+ make_build_target = $(if $(with_pgo),profile-opt)
+@@ -628,7 +626,6 @@
+ 
+ stamps/stamp-doc-html:
+ 	dh_testdir
+-	$(MAKE) -C Doc html
+ 	touch stamps/stamp-doc-html
+ 
+ build-doc: stamps/stamp-patch stamps/stamp-build-doc
+@@ -1215,30 +1212,6 @@
+ 	dh_testdir -i
+ 	dh_testroot -i
+ 
+-	: # $(p_doc) package
+-	dh_installdirs -p$(p_doc) \
+-		usr/share/doc/$(p_base) \
+-		usr/share/doc/$(p_doc)
+-	dh_installdocs -p$(p_doc)
+-	cp -a Doc/build/html $(d_doc)/usr/share/doc/$(p_base)/
+-	rm -f $(d_doc)/usr/share/doc/$(p_base)/html/_static/jquery.js
+-	rm -f $(d_doc)/usr/share/doc/$(p_base)/html/_static/underscore.js
+-	dh_link -p$(p_doc) \
+-		/usr/share/doc/$(p_base)/html \
+-			/usr/share/doc/$(p_doc)/html \
+-		/usr/share/javascript/jquery/jquery.js \
+-			/usr/share/doc/$(p_base)/html/_static/jquery.js \
+-		/usr/share/javascript/underscore/underscore.js \
+-			/usr/share/doc/$(p_base)/html/_static/underscore.js
+-
+-	: # devhelp docs
+-	$(buildd_static)/python debian/pyhtml2devhelp.py \
+-		$(d_doc)/usr/share/doc/$(p_base)/html index.html $(VER) \
+-		> $(d_doc)/usr/share/doc/$(p_base)/html/$(PVER).devhelp
+-	gzip -9v $(d_doc)/usr/share/doc/$(p_base)/html/$(PVER).devhelp
+-	dh_link -p$(p_doc) \
+-		/usr/share/doc/$(p_base)/html /usr/share/devhelp/books/$(PVER)
+-
+ 	for i in $(p_ltst); do \
+ 	  rm -rf debian/$$i/usr/share/doc/$$i; \
+ 	  ln -s $(p_lbase) debian/$$i/usr/share/doc/$$i; \
+@@ -1298,7 +1271,7 @@
+ endif
+ 
+ 	find $(d_ldbg) $(d_ldev) -name '*.a' ! -type l \
+-		| xargs -n 1 $(DEB_HOST_GNU_TYPE)-objcopy -p --remove-section=.gnu.lto_.*
++		| xargs -n 1 objcopy -p --remove-section=.gnu.lto_.*
+ 	dh_strip -a -N$(p_dbg) -N$(p_ldbg) -Xdebug -Xdbg --dbg-package=$(p_dbg)
+ 	cp Tools/gdb/libpython.py $(d_dbg)/usr/lib/debug/usr/bin/$(PVER)-gdb.py
+ 	ln -sf $(PVER)-gdb.py $(d_dbg)/usr/lib/debug/usr/bin/$(PVER)-dbg-gdb.py
--- a/taskcluster/ci/config.yml
+++ b/taskcluster/ci/config.yml
@@ -36,16 +36,17 @@ treeherder:
         'tc-L10n-Rpk': 'Localized Repackaged Repacks executed by Taskcluster'
         'tc-BM-L10n': 'Beetmover for locales executed by Taskcluster'
         'tc-BMR-L10n': 'Beetmover repackages for locales executed by Taskcluster'
         'c-Up': 'Balrog submission of complete updates'
         'tc-cs': 'Checksum signing executed by Taskcluster'
         'tc-rs': 'Repackage signing executed by Taskcluster'
         'tc-BMcs': 'Beetmover checksums, executed by Taskcluster'
         'Aries': 'Aries Device Image'
+        'Deb7': 'Packages for Debian 7'
         'Nexus 5-L': 'Nexus 5-L Device Image'
         'I': 'Docker Image Builds'
         'TL': 'Toolchain builds for Linux 64-bits'
         'TM': 'Toolchain builds for OSX'
         'TMW': 'Toolchain builds for Windows MinGW'
         'TW32': 'Toolchain builds for Windows 32-bits'
         'TW64': 'Toolchain builds for Windows 64-bits'
         'Searchfox': 'Searchfox builds'
new file mode 100644
--- /dev/null
+++ b/taskcluster/ci/packages/kind.yml
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+loader: taskgraph.loader.transform:loader
+
+transforms:
+  - taskgraph.transforms.try_job:transforms
+  - taskgraph.transforms.job:transforms
+  - taskgraph.transforms.task:transforms
+
+jobs:
+  deb7-python:
+    description: "Python backport for Debian wheezy"
+    treeherder:
+      kind: build
+      platform: packages/opt
+      symbol: Deb7(python)
+      tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+      max-run-time: 1800
+    run:
+      using: debian-package
+      dsc: "http://snapshot.debian.org/archive/debian/20160813T164221Z/pool/main/p/python2.7/python2.7_2.7.9-2+deb8u1.dsc"
+      dsc-sha256: 274c293e7156edf59cb9f0a9d8cedcd94fa801df35adf39b8a9f3d776a250ead
+      patch: python-wheezy.diff
+      pre-build-command: debian/rules control-file