i took a look at the other focal packages and put my thoughts.

RELEASE=focal
TRIGGER=python2.7/2.7.18-1~20.04.4


release  arch     package                version                       exitcode 
 triggers                    requester
-------  -------  ---------------------  ----------------------------  -------- 
 --------------------------  ---------

focal    i386     dbus-python            1.2.16-1build1                14       
 python2.7/2.7.18-1~20.04.4
Has always been giving the exit code 14 ever since glibc/2.31-0ubuntu6   back 
in 2020
In hints as force-badtest 
https://git.launchpad.net/~ubuntu-release/britney/+git/hints-ubuntu/tree/ubuntu-release?h=focal#n230

focal    i386     libxml2                2.9.10+dfsg-5ubuntu0.20.04.6  12       
 python2.7/2.7.18-1~20.04.4
Has been failing since glibc/2.30-0ubuntu3 in 2019
In hints as force-badtest 
https://git.launchpad.net/~ubuntu-release/britney/+git/hints-ubuntu/tree/ubuntu-release?h=focal#n236

focal    arm64    llvm-toolchain-7       1:7.0.1-12                    4        
 python2.7/2.7.18-1~20.04.4
focal    armhf    llvm-toolchain-7       1:7.0.1-12                    4        
 python2.7/2.7.18-1~20.04.4
focal    ppc64el  llvm-toolchain-7       1:7.0.1-12                    4        
 python2.7/2.7.18-1~20.04.4
This package has just never passed on any of these architectures. I'm not sure 
why it's not passing.


focal    amd64    mercurial              5.3.1-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    arm64    mercurial              5.3.1-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    armhf    mercurial              5.3.1-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    i386     mercurial              5.3.1-1ubuntu1                12       
 python2.7/2.7.18-1~20.04.4
focal    ppc64el  mercurial              5.3.1-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    s390x    mercurial              5.3.1-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
Mentioned by Andreas already


focal    amd64    pam-python             1.0.7-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    arm64    pam-python             1.0.7-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    armhf    pam-python             1.0.7-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    ppc64el  pam-python             1.0.7-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
focal    s390x    pam-python             1.0.7-1ubuntu1                4        
 python2.7/2.7.18-1~20.04.4
Mentioned by Andreas already


focal    i386     python-debian          0.1.36ubuntu1.1               12       
 python2.7/2.7.18-1~20.04.4
Fails due to unmet dependencies since glibc/2.30-0ubuntu3. I didn't notice 
anything in the hints.

focal    i386     python-pbr             5.4.5-0ubuntu1                12       
 python2.7/2.7.18-1~20.04.4
Fails due to unmet dependencies since glibc/2.30-0ubuntu3. I didn't notice 
anything in the hints.


focal    amd64    python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
focal    arm64    python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
focal    armhf    python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
focal    i386     python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
focal    ppc64el  python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
focal    s390x    python2.7              2.7.18-1~20.04.4              4        
 python2.7/2.7.18-1~20.04.4
Mentioned in the comment above - seems to be the same tests are failing in the 
Jammy results, but jammy passes the overall test. I'm not sure currently about 
this and would like to dig into it a little bit.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/2002043

Title:
  Python extension modules get built using wrong compiler flags with
  python2

Status in python2.7 package in Ubuntu:
  Invalid
Status in python2.7 source package in Bionic:
  Won't Fix
Status in python2.7 source package in Focal:
  Fix Committed
Status in python2.7 source package in Jammy:
  Fix Committed
Status in python2.7 source package in Kinetic:
  Invalid
Status in python2.7 source package in Lunar:
  Invalid
Status in python2.7 source package in Mantic:
  Invalid

Bug description:
  [ Impact ]

  When compiling Python extensions using Python2, CFLAGS optimization
  flags are dropped.

  This behavior has been caused by our update in this patch
  
http://archive.ubuntu.com/ubuntu/pool/universe/p/python2.7/python2.7_2.7.18-1~20.04.3.diff.gz
  which differs from upstream.

  The fix modifies the portion of code in Lib/distutils/sysconfig.py
  which gets the cflags from the environments, and includes the dropped
  OPT flag from get_config_vars().

  [ Test Plan ]

  There will be 2 separate tests for this bug:
  * Ensuring no-change rebuilds are not changed
  * Ensuring local builds are not changed unless environment variable is set

  Test 1) No-change rebuilds

  To test that no-change rebuilds are not changed, the package python-
  stdlib-extensions will be built against the new python2.7, and confirm
  the compiler flags are not altered. This will be a manual test and
  visual inspection of the build logs.

  Test 2) Functional test

  1. Create test container
  $ lxc launch ubuntu:jammy jammy-2002043
  $ lxc shell jammy-2002043

  2. Install required packages
  For Jammy
  # apt update -y && apt install -y python2 python-pip
  For Focal
  # apt update -y && apt install -y python2 python-setuptools gcc

  3. Create test files
  # mkdir testprog
  # cd testprog
  # cat >setup.py <<EOL
  from setuptools import setup, Extension

  setup(
      name="test",
      ext_modules=[Extension("test", sources=["testmodule.c"])],
      zip_safe=False
  )
  EOL
  # cat >testmodule.c <<EOL
  #include <stdio.h>

  int main(void)
  {
          printf("This is test program");
          return 0;
  }
  EOL

  4. Compile a test program
  # python2 setup.py build_ext --inplace

  5. Check CFLAGS
  # python2 -c "import sysconfig; print(sysconfig.get_config_var('CFLAGS'))"
  -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes 
-Wdate-time -D_FORTIFY_SOURCE=2 -g 
-ffile-prefix-map=/build/python2.7-W40Ff2/python2.7-2.7.18=. -flto=auto 
-ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong 
-Wformat -Werror=format-security

  6. Check the flags used to compile the test wheel
  # strings build/lib.linux-x86_64-2.7/test.so  | grep -- -O
  GNU GIMPLE 11.4.0 -mtune=generic -march=x86-64 -g -g -g -g -O2 -fno-openmp 
-fno-openacc -fcf-protection=full -fno-strict-aliasing -fwrapv 
-fstack-protector-strong -ffat-lto-objects -fstack-protector-strong -fPIC 
-fltrans

  7. Install fixed python
  Once updated, this will simply be an apt update && apt upgrade
  # add-apt-repository ppa:mitchdz/python2.7-optimization-flags -y
  # apt install -y python2.7
  # dpkg -s python2.7 | grep Version:
  Version: 2.7.18-13ubuntu1.2~jammy9

  8. Clean build
  # rm -rf build/ test.so

  9. Enable opt-in environment variable
  # export APPLY_LP2002043_UBUNTU_CFLAGS_WORKAROUND=""

  9. Rebuild with new python2.7 installed
  # python2 setup.py build_ext --inplace

  10. Check build flags
  # strings build/lib.linux-x86_64-2.7/test.so  | grep -- -O
  GNU GIMPLE 11.4.0 -mtune=generic -march=x86-64 -g -g -g -g -O2 -O2 
-fno-openmp -fno-openacc -fcf-protection=full -fno-strict-aliasing -fwrapv 
-fstack-protector-strong -ffat-lto-objects -fstack-protector-strong -fPIC 
-fltrans
  GNU C17 11.4.0 -mtune=generic -march=x86-64 -g -g -O2 -fno-strict-aliasing 
-fwrapv -flto -flto -ffat-lto-objects -fstack-protector-strong -fPIC 
-fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection 
-fcf-protection

  [ Where problems could occur ]

  * Changing optimization flags can cause a myriad of unattended side effects, 
but the change being opt-in means the users should be aware a change is being 
made
  * The change is opt-in, so an informative message is printed to the console 
to spread awareness of the issue and how to use the workaround. A questionably 
made CI/CD system might see the new console output and flag it as a failure, so 
it is important to choose wording carefully.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/2002043/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to