Marcel Telka писал 06.09.2013 09:19:

>http://pkg.openindiana.org/hipster/info/0/runtime%2Fpython-26%402.6.8%2C5.11-0.151.1.8.1%3A20130622T145445Z

This fix is incorrect - it breaks compilation of 32-bit modules,


Which fix? This one?

https://github.com/OpenIndiana/oi-userland/commit/915f0cf9f393b4f3c1c968bfb587669d170bb097


If so, please provide a testcase.

Here's the test case
$ cat test_stat.c
#include <sys/types.h> /* Here I explicitly include this header, because in my version of pyconfg.h it is not included */
#include <python2.6/pyconfig.h>
#include <sys/stat.h>
#include <stdio.h>
int main( int argc, char *argv[])
{
struct stat st;
int ret,kind;

if(argc==0)
ret = lstat("nightly.sh", &st);
else
ret = lstat(argv[1],&st);
kind = st.st_mode & S_IFMT;
printf("ret=%d, st.st_mode=%d, kind=%X\n", ret,st.st_mode,kind);
return 0;
}

$ gcc test_stat.c -o test_stat
$ ./test_stat test_stat.c
ret=0, st.st_mode=0, kind=0

$ gcc -D_FILE_OFFSET_BITS=64 test_stat.c -o test_stat
$ ./test_stat test_stat.c
ret=0, st.st_mode=33188, kind=8000

<sys/feature_tests.h> included from <sys/types.h> overwrites _FILE_OFFSET_BITS definition from pyconfig.h.

So, I assume the correct fix is to ship the following pyconfig.h:
#if defined ( _LP64 ) || defined (__amd64)
#include <python2.6/pyconfig-64.h>
#else
#include <python2.6/pyconfig-32.h>
#endif

or just

#if defined (__amd64)
#include <python2.6/pyconfig-64.h>
#else
#include <python2.6/pyconfig-32.h>
#endif

---
System Administrator of Southern Federal University Computer Center


_______________________________________________
oi-dev mailing list
[email protected]
http://openindiana.org/mailman/listinfo/oi-dev

Reply via email to