Ronald Oussoren <ronaldousso...@mac.com> added the comment:

WITH_NEXT_FRAMEWORK is a compile time option, I've added it to globals in 
values like PREFIX are added. That way the python code can behave differently 
for framework builds (which appears to be needed).

There are two big problems with my patches:
- Calculation of sys.prefix doesn't work in test_venv_framework_macos, but 
somehow works with a real installation. I haven't managed to track down the 
difference yet.
- Calculation for test_framework_macos appears to be ok on first glance, but 
adding "/Library/lib/python9.8.zip" as a known file shows that the code to look 
for the stdlib is misbehaving.

The latter appears to be a wider problem, if I add a test case based on 
test_normal_posix with PREFIX=/opt/python9.8 the getpath code looks for 
/opt/lib/python98.zip and uses that when found.

Test case for this (test passed when 
``ns.add_known_file("/opt/lib/python98.zip")`` is commented out:

def test_normal_posix_in_opt(self):
          """Test a 'standard' install layout on *nix
          
          This uses '/opt/python9.8' as PREFIX
          """
          ns = MockPosixNamespace(
              PREFIX="/opt/python9.8",
              argv0="python",
              ENV_PATH="/usr/bin:/opt/python9.8/bin",
          )
          ns.add_known_xfile("/opt/python9.8/bin/python")
          ns.add_known_file("/opt/python9.8/lib/python9.8/os.py")
          ns.add_known_dir("/opt/python9.8/lib/python9.8/lib-dynload")
  
          # This shouldn't matter:
          ns.add_known_file("/opt/lib/python98.zip")
  
          expected = dict(
              executable="/opt/python9.8/bin/python",
              base_executable="/opt/python9.8/bin/python",
              prefix="/opt/python9.8",
              exec_prefix="/opt/python9.8",
              module_search_paths_set=1,
              module_search_paths=[
                  "/opt/python9.8/lib/python98.zip",
                  "/opt/python9.8/lib/python9.8",
                  "/opt/python9.8/lib/python9.8/lib-dynload",
              ],
          )
          actual = getpath(ns, expected)
          self.assertEqual(expected, actual)

This could be problematic, adding a suitably named file outside of $PREFIX 
breaks the python installation.  I haven't checked this with an unchanged 
getpath.py yet, but I shouldn't have made any changes that affect a 
non-framework install.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue46890>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to