[Debian-med-packaging] Bug#937262: Help needed (Was: pdb2pqr: Python2 removal in sid/bullseye)
Scott Talbert
swt at techie.net
Thu Dec 12 16:31:09 GMT 2019
On Thu, 12 Dec 2019, Andreas Tille wrote:
> Control: tags -1 help
>
> Hi,
>
> it seems pdb2pqr is orphaned upstream. However, it seems to be worth
> keeping inside Debian thus I tried my luck to port it to Python3 in
> Git[1]. Unfortunately the build runs into
>
> scons: Building targets ...
> CopySubAction("pdb2pqr.py", "pdb2pqr.py.in")
> scons: *** [pdb2pqr.py] TypeError : a bytes-like object is required, not 'str'
> Traceback (most recent call last):
> File "/usr/lib/scons/SCons/Action.py", line 1209, in execute
> result = self.execfunction(target=target, source=rsources, env=env)
> File "/usr/lib/scons/SCons/Action.py", line 1371, in __call__
> return self.parent.actfunc(*args, **kw)
> File "./site_scons/site_init.py", line 123, in CopySubAction
> contents = contents.replace(k, v)
> TypeError: a bytes-like object is required, not 'str'
> scons: building terminated because of errors.
>
> I wonder whether it might just be a scons issue. Please note that I'm
> using scons 3.1.1-4 from experimental that is supposed to run with
> Python3.
>
> Any hint would be welcome.
>
> Kind regards
>
> Andreas.
>
>
> [1] https://salsa.debian.org/med-team/pdb2pqr
I don't see any Python3 changes in that repository. Did you push your
changes?
Anyway, the problem is likely in CopySubAction in site_scons/site_init.py.
On line 111, the file 'sourcefile' is opened as binary. Then, when then
next line, 'contents = r.read()' is executed, contents ends up as a bytes
object. Thus on line 123, when 'contents = contents.replace(k, v)' is
executed, contents is a bytes object, whereas k and v are strings. You
can't mix strings and bytes objects like that in Python 3.
You could perhaps try opening the file as a text file instead (remove the
'b') from the open function call.
Scott
More information about the Debian-med-packaging
mailing list