Bug 14266 - samba fails to build with Python 3.9: invalid open() mode U
Summary: samba fails to build with Python 3.9: invalid open() mode U
Status: RESOLVED FIXED
Alias: None
Product: Samba 4.1 and newer
Classification: Unclassified
Component: Build (show other bugs)
Version: 4.11.0
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Karolin Seeger
QA Contact: Samba QA Contact
URL: https://bugs.python.org/issue37330
Keywords:
Depends on:
Blocks:
 
Reported: 2020-02-05 16:00 UTC by Andreas Schneider
Modified: 2020-03-10 21:12 UTC (History)
2 users (show)

See Also:


Attachments
patch for 4.12 (1.77 KB, patch)
2020-02-06 09:39 UTC, Andreas Schneider
ab: review+
Details
patch for Samba 4.11 (cherry-picked from master patch) (1.77 KB, patch)
2020-02-20 22:23 UTC, Andrew Bartlett
ab: review+
Details
patch for Samba 4.10 (cherry-picked from master patch) (1.77 KB, patch)
2020-02-20 22:50 UTC, Andrew Bartlett
ab: review+
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Schneider 2020-02-05 16:00:18 UTC
samba fails to build with Python 3.9.0a3.

Traceback (most recent call last):
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Scripting.py",
line 159, in waf_entry_point
    run_commands()
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Scripting.py",
line 255, in run_commands
    ctx = run_command(cmd_name)
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Scripting.py",
line 239, in run_command
    ctx.execute()
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Configure.py",
line 159, in execute
    super(ConfigurationContext, self).execute()
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Context.py", line
204, in execute
    self.recurse([os.path.dirname(g_module.root_path)])
  File
"/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Context.py", line
286, in recurse
    user_function(self)
  File "/builddir/build/BUILD/samba-4.12.0rc1/wscript", line 233, in configure
    conf.PROCESS_SEPARATE_RULE('system_mitkrb5')
  File "./buildtools/wafsamba/samba_utils.py", line 685, in
PROCESS_SEPARATE_RULE
    function_code = node.read('rU', None)
  File "/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Node.py",
line 185, in read
    return Utils.readf(self.abspath(), flags, encoding)
  File "/builddir/build/BUILD/samba-4.12.0rc1/third_party/waf/waflib/Utils.py",
line 237, in readf
    with open(fname, m) as f:
ValueError: invalid mode: 'rUb'

See https://docs.python.org/3.9/whatsnew/3.9.html#changes-in-the-python-api

"open(), io.open(), codecs.open() and fileinput.FileInput no longer accept 'U'
(“universal newline”) in the file mode. This flag was deprecated since Python
3.3. In Python 3, the “universal newline” is used by default when a file is
open in text mode. The newline parameter of open() controls how universal
newlines works."
Comment 1 Andreas Schneider 2020-02-06 09:39:29 UTC
Created attachment 15775 [details]
patch for 4.12
Comment 2 Alexander Bokovoy 2020-02-06 09:49:03 UTC
Comment on attachment 15775 [details]
patch for 4.12

LGTM.
Comment 3 Andreas Schneider 2020-02-06 10:41:26 UTC
Karolin, please apply the patch to 4.12. Thanks!
Comment 4 Karolin Seeger 2020-02-06 10:43:13 UTC
(In reply to Andreas Schneider from comment #3)
Pushed to autobuild-v4-12-test.
Comment 5 Karolin Seeger 2020-02-10 08:43:07 UTC
(In reply to Karolin Seeger from comment #4)
Pushed to v4-12-test.
Closing out bug report.

Thanks!
Comment 6 Andrew Bartlett 2020-02-20 22:13:45 UTC
This should also be pushed back to older versions, so that we can build older versions on modern systems in the future.

I'll upload patches.
Comment 7 Andrew Bartlett 2020-02-20 22:23:36 UTC
Created attachment 15802 [details]
patch for Samba 4.11 (cherry-picked from master patch)
Comment 8 Andrew Bartlett 2020-02-20 22:50:56 UTC
Created attachment 15806 [details]
patch for Samba 4.10 (cherry-picked from master patch)
Comment 9 Alexander Bokovoy 2020-02-21 06:56:45 UTC
Comment on attachment 15802 [details]
patch for Samba 4.11 (cherry-picked from master patch)

LGTM
Comment 10 Alexander Bokovoy 2020-02-21 06:57:12 UTC
Comment on attachment 15806 [details]
patch for Samba 4.10 (cherry-picked from master patch)

LGTM
Comment 11 Andrew Bartlett 2020-02-21 07:03:52 UTC
BTW, I've also complained on https://bugs.python.org/issue37330
Comment 12 Karolin Seeger 2020-02-24 08:22:58 UTC
Pushed to autobuild-v4-{10,11}-test.
Comment 13 Karolin Seeger 2020-03-10 09:30:43 UTC
(In reply to Karolin Seeger from comment #12)
Pushed to both branches.
Closing out bug report.

Thanks!
Comment 14 Andrew Bartlett 2020-03-10 21:12:29 UTC
Also, in good news the Python folks will be putting off their breaking change till 3.10, the inclusion of this patch will ensure we are better prepared by then.

https://bugs.python.org/issue37330

https://bugs.python.org/issue39674

https://github.com/python/cpython/commit/942f7a2dea2e95a0fa848329565c0d0288d92e47