Skip to contentSkip to conversation

package/glibc: switch to using the maintenance branch

PATCH Superseded Romain Naour 3 participants 7 messages Oct 24, 2017 – Oct 28, 2017

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

From: "Yann E. MORIN" <[email protected]>

glibc upstream has sued against doing regular point-releases, but they do have a lot of interesting and important fixes for regressions and security.

Backporting each patch, or cherry-picking individual patches is off limits for us, so we just switch to using the currently-latest HEAD of the maintenance branch instead.

The version number is obtained with:

    $ git describe --match 'glibc-*' --abbrev=40 origin/release/2.26/master

The alternative options were:
- download the tarball from the git tree

    --> does nto work; not an option
  - download the 2.26 tarball, and bundle the individual patches in
    Buildroot
    --> maintenance of patches is a burden; not an option

- download the 2.26 tarball, maintain the list of patches to download from the git tree
--> not an option for the same reason

So we end up just doing a git clone. The git tree is today about ten times the size of the tarball, so a rough estimate makes it at about ten times the download time from the upstream repo.

Also upstream doesn't provide officially an https download location [1]. There is one but it's not reliable, sometimes the connection time out and end-up with a corrupted git repo:

fatal: unable to access 'https://sourceware.org/git/glibc.git/': Failed to connect to sourceware.org port 443: Connection timed out

So switch to using a git mirror from github which is updated once a day [2]. This allow to clone the git repository faster.

[1] https://sourceware.org/git/?p=glibc.git;a=summary
[2] https://github.com/bminor/glibc.git

Cc Peter Korsgaard <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
[Romain: bump 77eea8950ce5495ff033bca3465ccfd2db072ae6 and clone from github]
---
 ...__builtin_types_compatible_p-in-C-mode-bu.patch |  50 -----
 ...02-Do-not-use-generic-selection-in-C-mode.patch |  56 -----
 ...-version-of-issignaling-that-does-not-use.patch | 225 ---------------------
 ...ersion-of-issignaling-when-__NO_LONG_DOUB.patch |  47 -----
 ...-version-of-iszero-that-does-not-use-__MA.patch | 210 -------------------
 ...ify-use-the-builtin-when-optimizing-for-s.patch |  63 ------
 package/glibc/glibc.hash                           |   2 +-
 package/glibc/glibc.mk                             |  11 +-
 8 files changed, 9 insertions(+), 655 deletions(-)
 delete mode 100644 package/glibc/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch
 delete mode 100644 package/glibc/0002-Do-not-use-generic-selection-in-C-mode.patch
 delete mode 100644 package/glibc/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch
 delete mode 100644 package/glibc/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch
 delete mode 100644 package/glibc/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch
 delete mode 100644 package/glibc/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch
package/glibc/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch deleted +0 -50
deleted file mode 100644
index 27a785e..0000000
@@ -1,50 +0,0 @@
-From f7439f9b1089e17b6721f28e228682831a2f0135 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <[email protected]>
-Date: Mon, 21 Aug 2017 14:23:27 +0200
-Subject: [PATCH] Do not use __builtin_types_compatible_p in C++ mode (bug
- 21930)
-
-The logic to define isinf for float128 depends on the availability of
-__builtin_types_compatible_p, which is only available in C mode,
-however, the conditionals do not check for C or C++ mode.  This lead to
-an error in libstdc++ configure, as reported by bug 21930.
-
-This patch adds a conditional for C mode in the definition of isinf for
-float128.  No definition is provided in C++ mode, since libstdc++
-headers undefine isinf.
-
-Tested for powerpc64le (glibc test suite and libstdc++-v3 configure).
-
-	[BZ #21930]
-	* math/math.h (isinf): Check if in C or C++ mode before using
-	__builtin_types_compatible_p, since this is a C mode feature.
-
-(cherry picked from commit 47a67213a9f51c5f8816d240500b10db605d8b77)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <[email protected]>
----
- math/math.h | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/math/math.h b/math/math.h
-index e217080..dea8dbe 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -442,8 +442,12 @@ enum
- 
- /* Return nonzero value if X is positive or negative infinity.  */
- # if __HAVE_DISTINCT_FLOAT128 && !__GNUC_PREREQ (7,0) \
--     && !defined __SUPPORT_SNAN__
--   /* __builtin_isinf_sign is broken for float128 only before GCC 7.0.  */
-+     && !defined __SUPPORT_SNAN__ && !defined __cplusplus
-+   /* Since __builtin_isinf_sign is broken for float128 before GCC 7.0,
-+      use the helper function, __isinff128, with older compilers.  This is
-+      only provided for C mode, because in C++ mode, GCC has no support
-+      for __builtin_types_compatible_p (and when in C++ mode, this macro is
-+      not used anyway, because libstdc++ headers undefine it).  */
- #  define isinf(x) \
-     (__builtin_types_compatible_p (__typeof (x), _Float128) \
-      ? __isinff128 (x) : __builtin_isinf_sign (x))
--- 
-2.9.5
-
package/glibc/0002-Do-not-use-generic-selection-in-C-mode.patch deleted +0 -56

56 lines not on this page · raw message

package/glibc/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch deleted +0 -225

225 lines not on this page · raw message

package/glibc/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch deleted +0 -47

47 lines not on this page · raw message

package/glibc/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch deleted +0 -210

210 lines not on this page · raw message

package/glibc/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch deleted +0 -63

63 lines not on this page · raw message

package/glibc/glibc.hash +1 -1
index 66b9c4f..3663f03 100644
@@ -1,4 +1,4 @@
 # Locally calculated after checking pgp signature (glibc)
-sha256	e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd	glibc-2.26.tar.xz
+sha256  4b926093a3d5fcecda4aa965cc418e3acffd46102c899b156b2802ce62a197fc     glibc-glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6.tar.gz
 # Locally calculated (fetched from Github)
 sha256  adf2dd19a76705a6fb748492eba30cb0be621422190116382a891a3cf099e895     glibc-arc-2017.09-eng010.tar.gz
package/glibc/glibc.mk +8 -3
index 0b8b440..d82eb07 100644
@@ -9,9 +9,14 @@ GLIBC_VERSION =  arc-2017.09-eng010
 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.gz
 else
-GLIBC_VERSION = 2.26
-GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
+# Generate version string using:
+#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
+GLIBC_VERSION = glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6
+# Upstream doesn't officially provide an https download link.
+# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+# sometimes the connection time out. So use a git mirror using https.
+GLIBC_SITE = https://github.com/bminor/glibc.git
+GLIBC_SITE_METHOD = git
 endif
 
 GLIBC_SRC_SUBDIR = .
Signature · 1 line
2.9.5
#1 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

Riomain, All,

On 2017-10-24 16:30 +0200, Romain Naour spake thusly:

Quoted 3 lines

From: "Yann E. MORIN" <[email protected]>

glibc upstream has sued against doing regular point-releases, but they

s/sued/ruled/ (my typo)

Quoted 20 lines

do have a lot of interesting and important fixes for regressions and security.

Backporting each patch, or cherry-picking individual patches is off limits for us, so we just switch to using the currently-latest HEAD of the maintenance branch instead.

The version number is obtained with:

    $ git describe --match 'glibc-*' --abbrev=40 origin/release/2.26/master

The alternative options were:
- download the tarball from the git tree

    --> does nto work; not an option
  - download the 2.26 tarball, and bundle the individual patches in
    Buildroot
    --> maintenance of patches is a burden; not an option

- download the 2.26 tarball, maintain the list of patches to download from the git tree
--> not an option for the same reason

Quoted 5 lines

So we end up just doing a git clone. The git tree is today about ten times the size of the tarball, so a rough estimate makes it at about ten times the download time from the upstream repo.

Also upstream doesn't provide officially an https download location [1].

*doesn't officially provide

Quoted 11 lines

There is one but it's not reliable, sometimes the connection time out and end-up with a corrupted git repo:

fatal: unable to access 'https://sourceware.org/git/glibc.git/': Failed to connect to sourceware.org port 443: Connection timed out

So switch to using a git mirror from github which is updated once a day [2]. This allow to clone the git repository faster.

[1] https://sourceware.org/git/?p=glibc.git;a=summary
[2] https://github.com/bminor/glibc.git

Quoted 7 lines
Cc Peter Korsgaard <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
[Romain: bump 77eea8950ce5495ff033bca3465ccfd2db072ae6 and clone from github]

---

[--SNIP--]

Quoted 7 lines
package/glibc/glibc.mk +0 -0
index 0b8b440..d82eb07 100644
@@ -9,9 +9,14 @@ GLIBC_VERSION =  arc-2017.09-eng010
 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.gz

package/glibc/glibc.mk GLIBC_VERSION = arc-2017.09-eng010 · line 17

Quoted 10 lines
package/glibc/glibc.mk +6 -3
 else
-GLIBC_VERSION = 2.26
-GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
+# Generate version string using:
+#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
+GLIBC_VERSION = glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6
+# Upstream doesn't officially provide an https download link.
+# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+# sometimes the connection time out. So use a git mirror using https.

I would also add something like:

Before bumping the version, first verify that the sha1 really exists on the official git tree.

Regards,
Yann E. MORIN.

Quoted 8 lines
package/glibc/glibc.mk +2 -0
+GLIBC_SITE = https://github.com/bminor/glibc.git
+GLIBC_SITE_METHOD = git
 endif
 
 GLIBC_SRC_SUBDIR = .
Signature · 1 line
2.9.5
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

Yann, All,

Le 28/10/2017 ? 11:55, Yann E. MORIN a ?crit?:

Quoted 8 lines

Riomain, All,

On 2017-10-24 16:30 +0200, Romain Naour spake thusly:

Quoted 3 lines

From: "Yann E. MORIN" <[email protected]>

glibc upstream has sued against doing regular point-releases, but they

s/sued/ruled/ (my typo)

Meh, my typo-autocorrector failed this time :p

Quoted 21 lines
Quoted 21 lines

do have a lot of interesting and important fixes for regressions and security.

Backporting each patch, or cherry-picking individual patches is off limits for us, so we just switch to using the currently-latest HEAD of the maintenance branch instead.

The version number is obtained with:

    $ git describe --match 'glibc-*' --abbrev=40 origin/release/2.26/master

The alternative options were:
- download the tarball from the git tree

    --> does nto work; not an option
  - download the 2.26 tarball, and bundle the individual patches in
    Buildroot
    --> maintenance of patches is a burden; not an option

- download the 2.26 tarball, maintain the list of patches to download from the git tree
--> not an option for the same reason

Quoted 7 lines
Quoted 5 lines

So we end up just doing a git clone. The git tree is today about ten times the size of the tarball, so a rough estimate makes it at about ten times the download time from the upstream repo.

Also upstream doesn't provide officially an https download location [1].

*doesn't officially provide

Fixed.

Quoted 40 lines
Quoted 12 lines

There is one but it's not reliable, sometimes the connection time out and end-up with a corrupted git repo:

fatal: unable to access 'https://sourceware.org/git/glibc.git/': Failed to connect to sourceware.org port 443: Connection timed out

So switch to using a git mirror from github which is updated once a day [2]. This allow to clone the git repository faster.

[1] https://sourceware.org/git/?p=glibc.git;a=summary
[2] https://github.com/bminor/glibc.git

Quoted 7 lines
Cc Peter Korsgaard <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
[Romain: bump 77eea8950ce5495ff033bca3465ccfd2db072ae6 and clone from github]

---

[--SNIP--]

Quoted 7 lines
package/glibc/glibc.mk +0 -0
index 0b8b440..d82eb07 100644
@@ -9,9 +9,14 @@ GLIBC_VERSION =  arc-2017.09-eng010
 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.gz

package/glibc/glibc.mk GLIBC_VERSION = arc-2017.09-eng010 · line 17

Quoted 10 lines
package/glibc/glibc.mk +6 -3
 else
-GLIBC_VERSION = 2.26
-GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
+# Generate version string using:
+#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
+GLIBC_VERSION = glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6
+# Upstream doesn't officially provide an https download link.
+# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+# sometimes the connection time out. So use a git mirror using https.

I would also add something like:

Quoted 2 lines

Before bumping the version, first verify that the sha1 really exists on the official git tree.

You meant "the sha1 really exists on the git mirror tree" I guess :)

Best regards,
Romain

Quoted 13 lines

Regards,
Yann E. MORIN.

Quoted 8 lines
package/glibc/glibc.mk +2 -0
+GLIBC_SITE = https://github.com/bminor/glibc.git
+GLIBC_SITE_METHOD = git
 endif
 
 GLIBC_SRC_SUBDIR = .
Signature · 1 line
2.9.5
#3 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

Hello,

Quoted 6 lines · Romain Naour
Quoted 4 lines

I would also add something like:

Before bumping the version, first verify that the sha1 really exists on the official git tree.

You meant "the sha1 really exists on the git mirror tree" I guess :)

No, I think Yann really meant "in the official tree". The idea is that we shouldn't use a git hash from a "random" github mirror if this git hash doesn't exist in the official Git repository of the project.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#4 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

Thomas, Romain, All,

On 2017-10-28 15:18 +0200, Thomas Petazzoni spake thusly:

Quoted 11 lines · Romain Naour
Quoted 6 lines
Quoted 4 lines

I would also add something like:

Before bumping the version, first verify that the sha1 really exists on the official git tree.

You meant "the sha1 really exists on the git mirror tree" I guess :)

No, I think Yann really meant "in the official tree". The idea is that we shouldn't use a git hash from a "random" github mirror if this git hash doesn't exist in the official Git repository of the project.

Exactly, yes.

Regards,
Yann E. MORIN.

Quoted 7 lines

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

In reply to Romain Naour

Romain, All,

On 2017-10-24 16:30 +0200, Romain Naour spake thusly:

Quoted 5 lines

From: "Yann E. MORIN" <[email protected]>

glibc upstream has sued against doing regular point-releases, but they do have a lot of interesting and important fixes for regressions and security.

[--SNIP--]

Quoted 5 lines
package/glibc/glibc.mk +0 -0
index 0b8b440..d82eb07 100644

package/glibc/glibc.mk GLIBC_VERSION = arc-2017.09-eng010 · line 14

Quoted 9 lines
package/glibc/glibc.mk +3 -3
@@ -9,9 +9,14 @@ GLIBC_VERSION =  arc-2017.09-eng010
 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.gz
 else
-GLIBC_VERSION = 2.26
-GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
+# Generate version string using:
+#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
+GLIBC_VERSION = glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6

And now we are up to glibc-2.26-73-g4b692dffb95ac4812b161eb6a16113d7e824982e

Yes, that's now 73 patches on top of the latest release, and there won't ever be a dot-release. :-(

Regards,
Yann E. MORIN.

Quoted 11 lines
package/glibc/glibc.mk +5 -0
+# Upstream doesn't officially provide an https download link.
+# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+# sometimes the connection time out. So use a git mirror using https.
+GLIBC_SITE = https://github.com/bminor/glibc.git
+GLIBC_SITE_METHOD = git
 endif
 
 GLIBC_SRC_SUBDIR = .
Signature · 1 line
2.9.5
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#6 lore raw

PATCH v2 1/1 package/glibc: switch to using the maintenance branch

Yann, All,

Le 28/10/2017 ? 12:06, Yann E. MORIN a ?crit?:

Quoted 26 lines

Romain, All,

On 2017-10-24 16:30 +0200, Romain Naour spake thusly:

Quoted 5 lines

From: "Yann E. MORIN" <[email protected]>

glibc upstream has sued against doing regular point-releases, but they do have a lot of interesting and important fixes for regressions and security.

[--SNIP--]

Quoted 5 lines
package/glibc/glibc.mk +0 -0
index 0b8b440..d82eb07 100644

package/glibc/glibc.mk GLIBC_VERSION = arc-2017.09-eng010 · line 14

Quoted 9 lines
package/glibc/glibc.mk +3 -3
@@ -9,9 +9,14 @@ GLIBC_VERSION =  arc-2017.09-eng010
 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.gz
 else
-GLIBC_VERSION = 2.26
-GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
+# Generate version string using:
+#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
+GLIBC_VERSION = glibc-2.26-72-g77eea8950ce5495ff033bca3465ccfd2db072ae6

And now we are up to glibc-2.26-73-g4b692dffb95ac4812b161eb6a16113d7e824982e

Quoted 2 lines

Yes, that's now 73 patches on top of the latest release, and there won't ever be a dot-release. :-(

No, It was planned on 24th October:

https://sourceware.org/ml/libc-alpha/2017-10/msg00150.html

Best regards,
Romain

Quoted 16 lines

Regards,
Yann E. MORIN.

Quoted 11 lines
package/glibc/glibc.mk +5 -0
+# Upstream doesn't officially provide an https download link.
+# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+# sometimes the connection time out. So use a git mirror using https.
+GLIBC_SITE = https://github.com/bminor/glibc.git
+GLIBC_SITE_METHOD = git
 endif
 
 GLIBC_SRC_SUBDIR = .
Signature · 1 line
2.9.5