Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-123678: Upgrade libexpat 2.6.3 #123689

Merged
merged 1 commit into from
Sep 4, 2024
Merged

Conversation

sethmlarson
Copy link
Contributor

@sethmlarson sethmlarson commented Sep 4, 2024

Copy link
Contributor

@hartwork hartwork left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sethmlarson verified using the Dockerfile below 👍

# Copyright (c) 2022-2024 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the Apache License version 2.0

FROM alpine
RUN apk add --update \
            diffutils \
            git \
            sed \
        && \
    git clone --depth 1 https://github.com/python/cpython cpython-main \
        && \
    ( cd cpython-main && git rev-parse HEAD ) \
        && \
    git clone --depth 1 --branch expat-2.6.3 https://github.com/sethmlarson/cpython cpython-pr \
        && \
    ( cd cpython-pr && git rev-parse HEAD ) \
        && \
    git config --global advice.detachedHead false \
        && \
    git clone --depth 1 --branch R_2_6_2 https://github.com/libexpat/libexpat libexpat_2_6_2 \
        && \
    git clone --depth 1 --branch R_2_6_3 https://github.com/libexpat/libexpat libexpat_2_6_3 \
        && \
    diff -r -u libexpat_2_6_2/expat/lib/ cpython-main/Modules/expat/ | tee 2-6-2.diff \
        && \
    diff -r -u libexpat_2_6_3/expat/lib/ cpython-pr/Modules/expat/ | tee 2-6-3.diff \
        && \
    sed -e '/^Only in /d' -e '/^\(+++\|---\) /d' -e '/^diff /d' -i 2-6-2.diff 2-6-3.diff \
        && \
    diff -u 2-6-2.diff 2-6-3.diff \
        && \
    echo 'Diff is good.'
# docker build .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM alpine
 ---> 05455a08881e
Step 2/2 : RUN apk add --update             diffutils             git             sed         &&     git clone --depth 1 https://github.com/python/cpython cpython-main         &&     ( cd cpython-main && git rev-parse HEAD )         &&     git clone --depth 1 --branch expat-2.6.3 https://github.com/sethmlarson/cpython cpython-pr         &&     ( cd cpython-pr && git rev-parse HEAD )         &&     git config --global advice.detachedHead false         &&     git clone --depth 1 --branch R_2_6_2 https://github.com/libexpat/libexpat libexpat_2_6_2         &&     git clone --depth 1 --branch R_2_6_3 https://github.com/libexpat/libexpat libexpat_2_6_3         &&     diff -r -u libexpat_2_6_2/expat/lib/ cpython-main/Modules/expat/ | tee 2-6-2.diff         &&     diff -r -u libexpat_2_6_3/expat/lib/ cpython-pr/Modules/expat/ | tee 2-6-3.diff         &&     sed -e '/^Only in /d' -e '/^\(+++\|---\) /d' -e '/^diff /d' -i 2-6-2.diff 2-6-3.diff         &&     diff -u 2-6-2.diff 2-6-3.diff         &&     echo 'Diff is good.'
 ---> Running in 03fb2eed1a29
fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz
(1/12) Installing diffutils (3.10-r0)
(2/12) Installing ca-certificates (20240226-r0)
(3/12) Installing brotli-libs (1.1.0-r1)
(4/12) Installing c-ares (1.27.0-r0)
(5/12) Installing libunistring (1.1-r2)
(6/12) Installing libidn2 (2.3.4-r4)
(7/12) Installing nghttp2-libs (1.58.0-r0)
(8/12) Installing libcurl (8.9.0-r0)
(9/12) Installing libexpat (2.6.2-r0)
(10/12) Installing pcre2 (10.42-r2)
(11/12) Installing git (2.43.4-r0)
(12/12) Installing sed (4.9-r2)
Executing busybox-1.36.1-r15.trigger
Executing ca-certificates-20240226-r0.trigger
OK: 19 MiB in 27 packages
Cloning into 'cpython-main'...
Updating files: 100% (5350/5350), done.
d2eafe2f48aac31aa8a152620bdfd0f2a274ee1d
Cloning into 'cpython-pr'...
Updating files: 100% (5350/5350), done.
e6fe0ac014e8f5b17064c20d1ae937dbd4c761a2
Cloning into 'libexpat_2_6_2'...
Cloning into 'libexpat_2_6_3'...
Only in libexpat_2_6_2/expat/lib/: .gitignore
Only in cpython-main/Modules/expat/: COPYING
Only in libexpat_2_6_2/expat/lib/: Makefile.am
Only in cpython-main/Modules/expat/: expat_config.h
diff -r -u libexpat_2_6_2/expat/lib/expat_external.h cpython-main/Modules/expat/expat_external.h
--- libexpat_2_6_2/expat/lib/expat_external.h   2024-09-04 18:04:32.429990554 +0000
+++ cpython-main/Modules/expat/expat_external.h 2024-09-04 18:04:21.161886969 +0000
@@ -64,6 +64,11 @@
    compiled with the cdecl calling convention as the default since
    system headers may assume the cdecl convention.
 */
+
+/* Namespace external symbols to allow multiple libexpat version to
+   co-exist. */
+#include "pyexpatns.h"
+
 #ifndef XMLCALL
 #  if defined(_MSC_VER)
 #    define XMLCALL __cdecl
Only in libexpat_2_6_2/expat/lib/: libexpat.def.cmake
Only in cpython-main/Modules/expat/: pyexpatns.h
Only in libexpat_2_6_3/expat/lib/: .gitignore
Only in cpython-pr/Modules/expat/: COPYING
Only in libexpat_2_6_3/expat/lib/: Makefile.am
Only in cpython-pr/Modules/expat/: expat_config.h
diff -r -u libexpat_2_6_3/expat/lib/expat_external.h cpython-pr/Modules/expat/expat_external.h
--- libexpat_2_6_3/expat/lib/expat_external.h   2024-09-04 18:04:35.764021202 +0000
+++ cpython-pr/Modules/expat/expat_external.h   2024-09-04 18:04:29.352962267 +0000
@@ -64,6 +64,11 @@
    compiled with the cdecl calling convention as the default since
    system headers may assume the cdecl convention.
 */
+
+/* Namespace external symbols to allow multiple libexpat version to
+   co-exist. */
+#include "pyexpatns.h"
+
 #ifndef XMLCALL
 #  if defined(_MSC_VER)
 #    define XMLCALL __cdecl
Only in libexpat_2_6_3/expat/lib/: libexpat.def.cmake
Only in cpython-pr/Modules/expat/: pyexpatns.h
Diff is good.
 ---> Removed intermediate container 03fb2eed1a29
 ---> e85a4065bbe4
Successfully built e85a4065bbe4

@gpshead gpshead added needs backport to 3.8 needs backport to 3.9 only security fixes needs backport to 3.10 only security fixes needs backport to 3.11 only security fixes needs backport to 3.12 bug and security fixes needs backport to 3.13 bugs and security fixes labels Sep 4, 2024
@gpshead gpshead merged commit 40bdb0d into python:main Sep 4, 2024
47 checks passed
@miss-islington-app
Copy link

Thanks @sethmlarson for the PR, and @gpshead for merging it 🌮🎉.. I'm working now to backport this PR to: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Sep 4, 2024
Upgrade libexpat 2.6.3
(cherry picked from commit 40bdb0d)

Co-authored-by: Seth Michael Larson <seth@python.org>
@bedevere-app
Copy link

bedevere-app bot commented Sep 4, 2024

GH-123707 is a backport of this pull request to the 3.13 branch.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Sep 4, 2024
Upgrade libexpat 2.6.3
(cherry picked from commit 40bdb0d)

Co-authored-by: Seth Michael Larson <seth@python.org>
@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Sep 4, 2024
@miss-islington-app
Copy link

Sorry, @sethmlarson and @gpshead, I could not cleanly backport this to 3.11 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 40bdb0deee746e51c71c56329df21e5172fd8aa0 3.11

@bedevere-app
Copy link

bedevere-app bot commented Sep 4, 2024

GH-123708 is a backport of this pull request to the 3.12 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.12 bug and security fixes label Sep 4, 2024
@miss-islington-app
Copy link

Sorry, @sethmlarson and @gpshead, I could not cleanly backport this to 3.10 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 40bdb0deee746e51c71c56329df21e5172fd8aa0 3.10

@sethmlarson sethmlarson deleted the expat-2.6.3 branch September 4, 2024 19:58
@miss-islington-app
Copy link

Sorry, @sethmlarson and @gpshead, I could not cleanly backport this to 3.9 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 40bdb0deee746e51c71c56329df21e5172fd8aa0 3.9

@sethmlarson
Copy link
Contributor Author

Ah I'll close the backports that succeeded and handle the rest, thanks @gpshead!

@miss-islington-app
Copy link

Sorry, @sethmlarson and @gpshead, I could not cleanly backport this to 3.8 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 40bdb0deee746e51c71c56329df21e5172fd8aa0 3.8

@gpshead
Copy link
Member

gpshead commented Sep 4, 2024

I'm not sure if this needs further backporting or not, i didn't look to see what versions those used. the specific int vs size_t change for the bugfix could likely be manually applied if relevant though. leaving that up to you.

@sethmlarson
Copy link
Contributor Author

@gpshead Looks like every branch is upgradeable, so I went ahead and backported to every branch. Those PRs can be closed if we decide not to move forward with them.

@hartwork
Copy link
Contributor

hartwork commented Sep 4, 2024

@gpshead Looks like every branch is upgradeable, so I went ahead and backported to every branch.

@sethmlarson 👍 👍

gpshead pushed a commit that referenced this pull request Sep 4, 2024
gh-123678: Upgrade libexpat 2.6.3 (GH-123689)

Upgrade libexpat 2.6.3
(cherry picked from commit 40bdb0d)

Co-authored-by: Seth Michael Larson <seth@python.org>
encukou pushed a commit that referenced this pull request Sep 5, 2024
gh-123678: Upgrade libexpat 2.6.3 (GH-123689)

(cherry picked from commit 40bdb0d)

Co-authored-by: Seth Michael Larson <seth@python.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type-security A security issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants