Subject: Re: python build error on Sparc Solaris
To: Matt Kolb <muk@msu.edu>
From: Matt Kolb <muk@msu.edu>
List: pkgsrc-users
Date: 08/16/2006 16:33:18
Matt Kolb writes:
> Raymond Meyer writes:
>
>> On Thu, 10 Aug 2006 16:16:42 +0100
>> Raymond Meyer <raymond.meyer@rambler.ru> wrote:
>>
>>> This happens with both lang/python23 and lang/python24.
>>> Does anyone know how to fix this?
>>>
>>> running build
>>> running build_ext
>>> INFO: Can't locate Tcl/Tk libs and/or headers
>>> building 'struct' extension
>>> Traceback (most recent call last):
>>> File "./setup.py", line 1105, in ?
>>> main()
>>> File "./setup.py", line 1099, in main
>>> scripts = ['Tools/scripts/pydoc2.4',
>>> File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/core
>>> .py",
>>> line 149, in setup dist.run_commands() File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/dist
>>> .py",
>>> line 946, in run_commands self.run_command(cmd) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/dist
>>> .py",
>>> line 966, in run_command cmd_obj.run() File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/comm
>>> and/build.py",
>>> line 112, in run self.run_command(cmd_name) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/cmd.
>>> py",
>>> line 333, in run_command self.distribution.run_command(command) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/dist
>>> .py",
>>> line 966, in run_command cmd_obj.run() File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/comm
>>> and/build_ext.py",
>>> line 279, in run self.build_extensions() File "./setup.py", line 179, in
>>> build_extensions build_ext.build_extensions(self)
>>> File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/comm
>>> and/build_ext.py",
>>> line 405, in build_extensions self.build_extension(ext) File
>>> "./setup.py",
>>> line 184, in build_extension build_ext.build_extension(self, ext)
>>> File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/comm
>>> and/build_ext.py",
>>> line 470, in build_extension depends=ext.depends) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/ccom
>>> piler.py",
>>> line 699, in compile self._compile(obj, src, ext, cc_args,
>>> extra_postargs,
>>> pp_opts) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/unix
>>> ccompiler.py",
>>> line 112, in _compile self.spawn(self.compiler_so + cc_args + [src,
>>> '-o',
>>> obj] + File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/ccom
>>> piler.py",
>>> line 1040, in spawn spawn (cmd, dry_run=self.dry_run) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/spaw
>>> n.py",
>>> line 37, in spawn _spawn_posix(cmd, search_path, dry_run=dry_run) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/spaw
>>> n.py",
>>> line 122, in _spawn_posix log.info(string.join(cmd, ' ')) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/log.
>>> py",
>>> line 33, in info self._log(INFO, msg, args) File
>>> "/opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3/Lib/distutils/log.
>>> py",
>>> line 23, in _log print msg % args TypeError: not enough arguments for
>>> format
>>> string *** Error code 1
>>>
>>> Stop.
>>> bmake: stopped in /opt/pkg.obj/lang/python24/work.ultra10/Python-2.4.3
>>> *** Error code 1
>>
>> I just filed a PR for this problem, with a description of a possible fix,
>> see:
>>
>> http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=34217
>>
>
> We've been happily running pkgsrc'd python on solaris 10 in production for
> quite some time. I did have to write a local patch to get it to work
> properly though.
>
> Here it is:
>
> --- Include/pyport.h.orig Tue Apr 4 15:58:33 2006
> +++ Include/pyport.h Tue Apr 4 16:16:22 2006
> @@ -250,9 +250,7 @@
> * a platform where HUGE_VAL is defined incorrectly, fiddle your Python
> * config to #define Py_HUGE_VAL to something that works on your platform.
> */
> -#ifndef Py_HUGE_VAL
> -#define Py_HUGE_VAL HUGE_VAL
> -#endif
> +#define Py_HUGE_VAL DBL_MAX
>
> /* Py_OVERFLOWED(X)
> * Return 1 iff a libm function overflowed. Set errno to 0 before calling
And now that I look at it I remember why I didn't submit it. This is
obviously a hack and is platform specific. I'm not sure what the "right
thing to do" is here, so I'll leave that up to someone with a better set of
ethics ;)
./matt