Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
fe09baa1
Commit
fe09baa1
authored
Oct 29, 2016
by
Xavier de Gaye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #28444: Fix missing extensions modules when cross compiling.
parent
28293641
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
23 deletions
+28
-23
Makefile.pre.in
Makefile.pre.in
+1
-0
Misc/NEWS
Misc/NEWS
+2
-0
Modules/makesetup
Modules/makesetup
+4
-1
setup.py
setup.py
+21
-22
No files found.
Makefile.pre.in
View file @
fe09baa1
...
...
@@ -20,6 +20,7 @@
# === Variables set by makesetup ===
MODNAMES
=
_MODNAMES_
MODOBJS
=
_MODOBJS_
MODLIBS
=
_MODLIBS_
...
...
Misc/NEWS
View file @
fe09baa1
...
...
@@ -502,6 +502,8 @@ Windows
Build
-----
-
Issue
#
28444
:
Fix
missing
extensions
modules
when
cross
compiling
.
-
Issue
#
28248
:
Update
Windows
build
to
use
OpenSSL
1.0.2
j
.
-
Issue
#
28258
:
Fixed
build
with
Estonian
locale
(
python
-
config
and
distclean
...
...
Modules/makesetup
View file @
fe09baa1
...
...
@@ -29,6 +29,7 @@
#
# Copying Makefile.pre to Makefile:
# - insert an identifying comment at the start
# - replace _MODNAMES_ by the list of modules from Setup
# - replace _MODOBJS_ by the list of objects from Setup (except for
# Setup files after a -n option)
# - replace _MODLIBS_ by the list of libraries from Setup
...
...
@@ -110,6 +111,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
# Rules appended by makedepend
"
>
$rulesf
DEFS
=
NAMES
=
MODS
=
SHAREDMODS
=
OBJS
=
...
...
@@ -181,7 +183,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
*
.
*
)
echo
1>&2
"bad word
$arg
in
$line
"
exit
1
;;
-u
)
skip
=
libs
;
libs
=
"
$libs
-u"
;;
[
a-zA-Z_]
*
)
mods
=
"
$mods
$arg
"
;;
[
a-zA-Z_]
*
)
NAMES
=
"
$NAMES
$arg
"
;
mods
=
"
$mods
$arg
"
;;
*
)
echo
1>&2
"bad word
$arg
in
$line
"
exit
1
;;
esac
...
...
@@ -280,6 +282,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
echo
"1i
\\
"
>
$sedf
str
=
"# Generated automatically from
$makepre
by makesetup."
echo
"
$str
"
>>
$sedf
echo
"s%_MODNAMES_%
$NAMES
%"
>>
$sedf
echo
"s%_MODOBJS_%
$OBJS
%"
>>
$sedf
echo
"s%_MODLIBS_%
$LIBS
%"
>>
$sedf
echo
"/Definitions added by makesetup/a
$NL$NL$DEFS
"
>>
$sedf
...
...
setup.py
View file @
fe09baa1
...
...
@@ -8,7 +8,6 @@ import importlib.util
import
sysconfig
from
distutils
import
log
from
distutils
import
text_file
from
distutils.errors
import
*
from
distutils.core
import
Extension
,
setup
from
distutils.command.build_ext
import
build_ext
...
...
@@ -230,7 +229,12 @@ class PyBuildExt(build_ext):
headers
=
[
sysconfig
.
get_config_h_filename
()]
headers
+=
glob
(
os
.
path
.
join
(
sysconfig
.
get_path
(
'include'
),
"*.h"
))
for
ext
in
self
.
extensions
[:]:
# The sysconfig variable built by makesetup, listing the already
# built modules as configured by the Setup files.
modnames
=
sysconfig
.
get_config_var
(
'MODNAMES'
).
split
()
removed_modules
=
[]
for
ext
in
self
.
extensions
:
ext
.
sources
=
[
find_module_file
(
filename
,
moddirlist
)
for
filename
in
ext
.
sources
]
if
ext
.
depends
is
not
None
:
...
...
@@ -241,26 +245,14 @@ class PyBuildExt(build_ext):
# re-compile extensions if a header file has been changed
ext
.
depends
.
extend
(
headers
)
# If a module has already been built statically,
# don't build it here
if
ext
.
name
in
sys
.
builtin_module_names
:
self
.
extensions
.
remove
(
ext
)
# Parse Modules/Setup and Modules/Setup.local to figure out which
# modules are turned on in the file.
remove_modules
=
[]
for
filename
in
(
'Modules/Setup'
,
'Modules/Setup.local'
):
input
=
text_file
.
TextFile
(
filename
,
join_lines
=
1
)
while
1
:
line
=
input
.
readline
()
if
not
line
:
break
line
=
line
.
split
()
remove_modules
.
append
(
line
[
0
])
input
.
close
()
for
ext
in
self
.
extensions
[:]:
if
ext
.
name
in
remove_modules
:
self
.
extensions
.
remove
(
ext
)
# If a module has already been built by the Makefile,
# don't build it here.
if
ext
.
name
in
modnames
:
removed_modules
.
append
(
ext
)
if
removed_modules
:
self
.
extensions
=
[
x
for
x
in
self
.
extensions
if
x
not
in
removed_modules
]
# When you run "make CC=altcc" or something similar, you really want
# those environment variables passed into the setup.py phase. Here's
...
...
@@ -303,6 +295,13 @@ class PyBuildExt(build_ext):
" detect_modules() for the module's name."
)
print
()
if
removed_modules
:
print
(
"The following modules found by detect_modules() in"
" setup.py, have been"
)
print
(
"built by the Makefile instead, as configured by the"
" Setup files:"
)
print_three_column
([
ext
.
name
for
ext
in
removed_modules
])
if
self
.
failed
:
failed
=
self
.
failed
[:]
print
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment