Bug 1449629 - Install Python 3.5 in Debian 7 base image; r=glandium

Debian 7 ships Python 3.2 by default. That's too old for our
upcoming build requirement of Python 3.5.

This commit adds a Python 3.5 package for wheezy that backports
the Python 3.5 from a much later Debian version.

The patch was inspired by the existing patch for Python 2.7.
However, it needed additional work. The changes and reasons
should all be documented in the changelog file as part of the
package diff we apply.

I'm a bit disappointed we had to disable PGO. But it was
reliably segfaulting during the build. I didn't feel like going
down that rabbit hole.

MozReview-Commit-ID: ABpHW1KYFQP

--HG--
extra : rebase_source : 02dbd13236fe741cb33f07c803218fda339c214e
This commit is contained in:
Gregory Szorc 2018-04-02 19:27:12 -07:00
Родитель 18e72cea88
Коммит cbab55349e
3 изменённых файлов: 205 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,192 @@
diff --git a/debian/changelog b/debian/changelog
index e19964f..0bc60c2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+python3.5 (3.5.3-1.deb7moz1) wheezy; urgency=medium
+
+ * Mozilla backport for wheezy.
+ * debian/control.in:
+ - Remove libmpdec-dev dependency; wheezy doesn't have it; Python
+ vendors it.
+ - Remove libexpat1-dev dependency; it prevents co-installing some
+ i386 -dev packages.
+ * debian/rules:
+ - Adapt ar, ranlib, and objcopy paths to work on wheezy.
+ - Remove --with-system-libmpdec because wheezy doesn't have it.
+ - Disable PGO builds because they segfault.
+ - Remove -Og from debug builds because GCC 4.7 doesn't like it.
+ * debian/control.in, debian/rules: Don't generate the -doc package
+ and HTML documentation.
+
+ -- Gregory Szorc <gps@mozilla.com> Thu, 29 Mar 2018 20:00:00 -0700
+
python3.5 (3.5.3-1) unstable; urgency=medium
* Python 3.5.3 release.
diff --git a/debian/control.in b/debian/control.in
index 7d36556..ec1af78 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -9,7 +9,6 @@ Build-Depends: debhelper (>= 9), @bd_dpkgdev@
zlib1g-dev, libbz2-dev, liblzma-dev,
libgdbm-dev, libdb-dev,
tk-dev, blt-dev (>= 2.4z), libssl-dev,
- libexpat1-dev, libmpdec-dev (>= 2.4),
libbluetooth-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
locales [!armel !avr32 !hppa !ia64 !mipsel],
libsqlite3-dev, libffi-dev (>= 3.0.5) [!or1k !avr32],
@@ -27,7 +26,7 @@ Architecture: any
Multi-Arch: allowed
Priority: @PRIO@
Depends: @PVER@-minimal (= ${binary:Version}), lib@PVER@-stdlib (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
-Suggests: @PVER@-venv, @PVER@-doc, binutils
+Suggests: @PVER@-venv, binutils
Description: Interactive high-level object-oriented language (version @VER@)
Python is a high-level, interactive, object-oriented language. Its @VER@ version
includes an extensive class library with lots of goodies for
@@ -115,7 +114,7 @@ Description: Examples for the Python language (v@VER@)
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
Description: Header files and a static library for Python (v@VER@)
Header files, a static library and development tools for building
@@ -129,7 +128,7 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
-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}
Recommends: libc6-dev | libc-dev
Description: Header files and a static library for Python (v@VER@)
Header files, a static library and development tools for building
@@ -161,28 +160,6 @@ Description: IDE for Python (v@VER@) using Tkinter
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
-Multi-Arch: foreign
-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 --git a/debian/rules b/debian/rules
index 05895da..294d432 100755
--- a/debian/rules
+++ b/debian/rules
@@ -136,14 +136,14 @@ endif
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_CPPFLAGS:= $(shell dpkg-buildflags --get CPPFLAGS)
DPKG_CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
DPKG_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
OPT_CFLAGS := $(filter-out -O%,$(DPKG_CFLAGS)) # default is -O3
-DEBUG_CFLAGS := $(patsubst -O%,-Og,$(DPKG_CFLAGS))
+DEBUG_CFLAGS := $(DPKG_CFLAGS)
# on alpha, use -O2 only, use -mieee
ifeq ($(DEB_HOST_ARCH),alpha)
@@ -155,14 +155,6 @@ ifeq ($(DEB_HOST_ARCH),m68k)
EXTRA_OPT_FLAGS += -O2
endif
-ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
- ifeq ($(DEB_HOST_ARCH_OS),linux)
- ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 armel armhf i386 powerpc ppc64 ppc64el s390x))
- with_pgo := yes
- endif
- endif
-endif
-
ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 armel armhf i386 powerpc ppc64 ppc64el s390x))
with_lto := yes
endif
@@ -187,8 +179,6 @@ ifeq ($(with_lto),yes)
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)
@@ -322,7 +312,6 @@ common_configure_args = \
--with-computed-gotos \
--without-ensurepip \
--with-system-expat \
- --with-system-libmpdec \
ifneq (,$(filter $(DEB_HOST_ARCH), avr32 or1k))
common_configure_args += --without-ffi
@@ -659,7 +648,6 @@ minimal-test:
stamps/stamp-doc-html:
dh_testdir
- $(MAKE) -C Doc html
@mkdir -p stamps
touch stamps/stamp-doc-html
@@ -1299,26 +1287,6 @@ binary-indep: build-indep install stamps/stamp-control
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
- 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
- cd $(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 -9nv $(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_base) debian/$$i/usr/share/doc/$$i; \
@@ -1377,7 +1345,7 @@ ifneq ($(with_gdbm),yes)
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)
mkdir -p $(d_dbg)/usr/share/gdb/auto-load/usr/bin
cp Tools/gdb/libpython.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)m-gdb.py

Просмотреть файл

@ -34,6 +34,7 @@ jobs:
- deb7-make - deb7-make
- deb7-mercurial - deb7-mercurial
- deb7-python - deb7-python
- deb7-python3.5
- deb7-xz-utils - deb7-xz-utils
toolchain-build: toolchain-build:
symbol: I(toolchain) symbol: I(toolchain)

Просмотреть файл

@ -35,6 +35,18 @@ jobs:
patch: python-wheezy.diff patch: python-wheezy.diff
pre-build-command: debian/rules control-file pre-build-command: debian/rules control-file
deb7-python3.5:
description: "Python 3.5 backport for Debian wheezy"
treeherder:
symbol: Deb7(python3.5)
run:
using: debian-package
dsc:
url: http://snapshot.debian.org/archive/debian/20170119T211826Z/pool/main/p/python3.5/python3.5_3.5.3-1.dsc
sha256: 5259cbb15bb93f7bdfbe9ce03a972ea47f81c86057d5939ef9ce578414b2f1de
patch: python3.5-wheezy.diff
pre-build-command: debian/rules control-file
deb7-cmake: deb7-cmake:
description: "Cmake backport for Debian wheezy" description: "Cmake backport for Debian wheezy"
treeherder: treeherder: