classification
Title: os.mknod missing on Solaris
Type: enhancement Stage: resolved
Components: Extension Modules Versions: Python 3.1, Python 3.2, Python 2.7, Python 2.6
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: jcea Nosy List: barry, benjamin.peterson, jcea, loewis, movement, pitrou, rpetrov, sandberg
Priority: high Keywords: needs review, patch

Created on 2008-09-22 09:38 by sandberg, last changed 2010-04-28 12:03 by jcea. This issue is now closed.

Files
File name Uploaded Description Edit
mknod-solaris_3.diff jcea, 2010-04-26 16:45
Messages (23)
msg73562 - (view) Author: Erik Carstensen (sandberg) Date: 2008-09-22 09:38
When building Python on Solaris, I don't get the os.mknod function. This
seems to be a combination of two errors:
1. The definition of posix_mknod() in posixmodule.c is surrounded by:
#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
It works fine if I remove the HAVE_MAKEDEV define.

2. The reason why HAVE_MAKEDEV doesn't work, is that the Python
configure script only looks for makedev in <sys/types.h>, while on
Solaris you need to include <sys/mkdev.h> as well.

cc -V gives:
cc: Sun C 5.9 SunOS_sparc Patch 124867-01 2007/07/12
uname -a gives:
SunOS zelda 5.9 Generic_117171-07 sun4us sparc FJSV,GPUZC-M
msg73595 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-09-22 21:03
It would be best if you could contribute a patch to fix this. The source
of configure is configure.in; you need autoconf to generate configure
from it.
msg101007 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-13 16:29
The patch seems to be trivial. I need review, specially compiling under non-Solaris OS.

I plan to commit this patch to 2.6, 2.7, 3.1 and 3.2.

Must I update "NEWS"?
msg101009 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2010-03-13 17:07
Compiles fine under Debian stable.
You shouldn't commit to 2.6 until 2.6.5 is released, though. If you want to do so, contact Barry first.
msg101010 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-03-13 17:08
You do need a NEWS entry.
msg101021 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-13 20:23
Please, do the final review, ready for commiting.

I have asked about committing to 2.6 in the python-committers mailing list.
msg101027 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2010-03-13 22:27
This will not block 2.6.5 but is a candidate for 2.6.6.
msg101060 - (view) Author: Roumen Petrov (rpetrov) * Date: 2010-03-14 19:01
Some questions: 
- why patch don't update  posixmodule.c and remove  defined(HAVE_MAKEDEV) ?
- how is defined HAVE_DEVICE_MACROS in pyconfig.h

About changes in configure.in - I'm not sure that they are correct (more later).
msg101115 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-15 14:19
I just did the minimal change. I don't know if removing "defined(HAVE_MAKEDEV)" is safe.

"HAVE_DEVICE_MACROS" is defined if "configure" finds "makedev()" macro.

Clarify your comment about configure.in changes being wrong.
msg101135 - (view) Author: Roumen Petrov (rpetrov) * Date: 2010-03-15 22:13
Jesús Cea Avión wrote:
>
> Jesús Cea Avión<jcea@jcea.es>  added the comment:
>
> I just did the minimal change. I don't know if removing "defined(HAVE_MAKEDEV)" is safe.

The python build system is full with minimal changes and result is a big 
mess. Did you found which revision add ".. defined(HAVE_MAKEDEV)" in 
posix*.c ?

> "HAVE_DEVICE_MACROS" is defined if "configure" finds "makedev()" macro.

And what is result on you platform ?

> Clarify your comment about configure.in changes being wrong.

Usually just adding #include <xxxx> will break test on platforms where 
xxxx is missing.

The correct implementation will depend from above.

Cases:
1) platform is no longer supported - it is save to remove test case from 
configure and defined(HAVE_MAKEDEV) from posixmodule.c

2) HAVE_DEVICE_MACROS is defined for you . Then check how is written 
test for HAVE_DEVICE_MACROS and make test for makedev similar.

Roumen
msg101190 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2010-03-16 20:50
jcea, why did  you make this a release blocker for 2.6.5?
msg101232 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-17 15:34
Sorry, Barry. Don't know what happened. Probably write a followup without reloading the page and "undid" previous changes.

I keep my issues permanently open in firefox tabs. I will try to be more careful.
msg101515 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-22 15:32
Roumen Petrov (rpetrov) wrote:
>>
>> Jesús Cea Avión<jcea@jcea.es>  added the comment:
>>
>> I just did the minimal change. I don't know if removing "defined(HAVE_MAKEDEV)" is safe.

> The python build system is full with minimal changes and result is a
> big mess. Did you found which revision add ".. defined(HAVE_MAKEDEV)"
> in posix*.c ?

The code was added in 2002-07-30 by nnorwitz, to support OSF1 (Dec Unix). Is that platform still supported?. I don't see any related  buildbot.

>> "HAVE_DEVICE_MACROS" is defined if "configure" finds "makedev()" macro.

> And what is result on you platform ?

It is defined if I add the new "include".


> Cases:
> 1) platform is no longer supported - it is save to remove test case from 
> configure and defined(HAVE_MAKEDEV) from posixmodule.c

Do we have a list of officially supported?.

> 2) HAVE_DEVICE_MACROS is defined for you . Then check how is written 
> test for HAVE_DEVICE_MACROS and make test for makedev similar.

Investigating the issue, I could say that HAVE_MAKEDEV should be deleted, but I don't have access to a OSF1 machine for trying.

How should I proceed?
msg101519 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-03-22 16:37
My browser keeps deleting nosy.  Sorry.

Roumen, please read.
msg101536 - (view) Author: Roumen Petrov (rpetrov) * Date: 2010-03-22 21:24
>>> "HAVE_DEVICE_MACROS" is defined if "configure" finds "makedev()" macro.
>> And what is result on you platform ?
>It is defined if I add the new "include".

a) Why you touch test case for "AC_MSG_CHECKING(for major, minor, and makedev)
AC_TRY_LINK([
#if defined(MAJOR_IN_MKDEV)
#include <sys/mkdev.h>
#elif defined(MAJOR_IN_SYSMACROS)
#include <sys/sysmacros.h>
#else
#include <sys/types.h>
#endif
],[
  makedev(major(0),minor(0));
],[
  AC_DEFINE(HAVE_DEVICE_MACROS, 1,
	    [Define to 1 if you have the device macros.])
  AC_MSG_RESULT(yes)
],[
  AC_MSG_RESULT(no)
])"
?
Sorry I did't understand why this test case fail for you.


b) PEP 11 list unsupported platforms and OSF1 is not listed.

c) So code if from revision 27820 that fix "SF patch #584245, get python to link on OSF1 (Dec Unix)" . The current patch as is will break OSF1 and other OS-es (as example linux don't define this header). Just adding new include will fail test case and will left as undefined HAVE_MAKEDEV => mknod won't be added for those platforms.
msg102272 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2010-04-03 15:26
I think this small change can slip in after beta.
msg104248 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-04-26 16:45
Please, Review. Roumen?.

I plan to commit this to 2.7, 2.6, 3.1 and 3.2, if you agree.
msg104249 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2010-04-26 16:55
Jesus, this looks ok, have you checked the changes work fine under e.g. Linux?
I don't think DEC Unix is supported anymore, actually I'm not sure anyone still uses it.
msg104251 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-04-26 17:11
Pitrou, the code configures correctly in Linux.

Reading PEP11, I don't see the procedure to propose a platform for deprecation. Just mailing python-dev?

I will delay the patch committing a couple of days, just in case somebody else want to comment.

Thanks for the review, Pitrou.
msg104252 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2010-04-26 17:22
> Reading PEP11, I don't see the procedure to propose a platform for
> deprecation. Just mailing python-dev?

Yes.

> Thanks for the review, Pitrou.

You can call me Antoine.
msg104265 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-04-26 18:00
Informal europeans! :-).

Hi, Antoine, I am Jesús (sunny Spain!).

Deprecation request mailed to python-dev.
msg104279 - (view) Author: Roumen Petrov (rpetrov) * Date: 2010-04-26 21:30
Sorry Jesús, right now I cannot test new patch it but It looks goodand I 
expect first test to succeed so that second won't be tested as result 
OCF_XXX to be defined. If there is no spelling error it is fine.

Roumen
msg104427 - (view) Author: Jesús Cea Avión (jcea) * (Python committer) Date: 2010-04-28 12:03
Patch committed.

trunk (2.7): r80574
2.6: r80575
py3k (3.2): r80576
3.1: r80577
History
Date User Action Args
2010-04-28 12:03:49jceasetstatus: open -> closed
resolution: accepted
messages: + msg104427

stage: commit review -> resolved
2010-04-26 21:30:44rpetrovsetmessages: + msg104279
2010-04-26 18:00:05jceasetmessages: + msg104265
2010-04-26 17:22:18pitrousetmessages: + msg104252
2010-04-26 17:11:09jceasetmessages: + msg104251
2010-04-26 16:55:24pitrousetpriority: release blocker -> high

messages: + msg104249
2010-04-26 16:45:48jceasetfiles: + mknod-solaris_3.diff

messages: + msg104248
2010-04-26 16:42:59jceasetfiles: - mknod-solaris_2.diff
2010-04-10 19:28:20benjamin.petersonsetpriority: deferred blocker -> release blocker
2010-04-03 15:26:35benjamin.petersonsetpriority: release blocker -> deferred blocker
nosy: + benjamin.peterson
messages: + msg102272

2010-03-22 21:24:37rpetrovsetmessages: + msg101536
2010-03-22 16:37:13jceasetnosy: + barry, rpetrov
messages: + msg101519
2010-03-22 15:32:42jceasetnosy: - barry, rpetrov
messages: + msg101515
2010-03-19 23:12:23barrysetpriority: deferred blocker -> release blocker
2010-03-17 15:34:00jceasetmessages: + msg101232
2010-03-16 20:50:41barrysetpriority: release blocker -> deferred blocker
nosy: + barry
messages: + msg101190

2010-03-15 22:13:12rpetrovsetnosy: + rpetrov
messages: + msg101135
2010-03-15 14:19:31jceasetpriority: deferred blocker -> release blocker
nosy: - barry, rpetrov
messages: + msg101115

2010-03-14 19:01:25rpetrovsetnosy: + rpetrov
messages: + msg101060
2010-03-13 22:27:47barrysetpriority: release blocker -> deferred blocker
nosy: + barry
messages: + msg101027

2010-03-13 20:31:14jceasetpriority: normal -> release blocker
2010-03-13 20:23:54jceasetfiles: - mknod-solaris.diff
2010-03-13 20:23:23jceasetfiles: + mknod-solaris_2.diff

messages: + msg101021
versions: + Python 2.6, Python 3.1, Python 2.7, Python 3.2, - Python 2.5
2010-03-13 20:19:14jceasetmessages: - msg101020
2010-03-13 20:18:22jceasettype: behavior -> enhancement
messages: + msg101020
stage: patch review -> commit review
2010-03-13 17:08:03loewissetmessages: + msg101010
2010-03-13 17:07:18pitrousetnosy: + pitrou
messages: + msg101009
2010-03-13 16:29:46jceasetstage: patch review
2010-03-13 16:29:06jceasetfiles: + mknod-solaris.diff
priority: normal

assignee: jcea

keywords: + needs review, patch
nosy: + jcea
messages: + msg101007
2009-02-16 00:59:36movementsetnosy: + movement
2008-09-22 21:03:20loewissetnosy: + loewis
messages: + msg73595
2008-09-22 09:38:53sandbergcreate