Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
8ec9f866
Kaydet (Commit)
8ec9f866
authored
Haz 07, 2006
tarafından
Ronald Oussoren
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Move Mac/OSX/Tools one level up
üst
e275d3d4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
703 additions
and
0 deletions
+703
-0
Help_Indexing_Tool_Suite.py
Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py
+110
-0
Miscellaneous_Standards.py
Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py
+49
-0
Required_Suite.py
Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py
+32
-0
Standard_Suite.py
Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py
+0
-0
__init__.py
Mac/Tools/Doc/HelpIndexingTool/__init__.py
+78
-0
odds_and_ends.py
Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py
+49
-0
README
Mac/Tools/Doc/README
+35
-0
setup.py
Mac/Tools/Doc/setup.py
+214
-0
fixapplepython23.py
Mac/Tools/fixapplepython23.py
+119
-0
pythonw.c
Mac/Tools/pythonw.c
+17
-0
No files found.
Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
"""Suite Help Indexing Tool Suite: Special events that just the Help Indexing Tool supports.
Level 0, version 0
Generated from /Developer/Applications/Apple Help Indexing Tool.app
AETE/AEUT resource version 1/1, language 0, script 0
"""
import
aetools
import
MacOS
_code
=
'HIT '
class
Help_Indexing_Tool_Suite_Events
:
def
turn_anchor_indexing
(
self
,
_object
,
_attributes
=
{},
**
_arguments
):
"""turn anchor indexing: Turns anchor indexing on or off.
Required argument:
\xd2
on
\xd3
or
\xd2
off
\xd3
, to turn anchor indexing on or off
Keyword argument _attributes: AppleEvent attribute dictionary
"""
_code
=
'HIT '
_subcode
=
'tAnc'
if
_arguments
:
raise
TypeError
,
'No optional args expected'
_arguments
[
'----'
]
=
_object
_reply
,
_arguments
,
_attributes
=
self
.
send
(
_code
,
_subcode
,
_arguments
,
_attributes
)
if
_arguments
.
get
(
'errn'
,
0
):
raise
aetools
.
Error
,
aetools
.
decodeerror
(
_arguments
)
# XXXX Optionally decode result
if
_arguments
.
has_key
(
'----'
):
return
_arguments
[
'----'
]
_argmap_turn_remote_root
=
{
'with_root_url'
:
'rURL'
,
}
def
turn_remote_root
(
self
,
_object
,
_attributes
=
{},
**
_arguments
):
"""turn remote root: Turn usage of remote root for content on the web on or off. If turning
\xd2
on
\xd3
, supply a string as second parameter.
Required argument:
\xd2
on
\xd3
or
\xd2
off
\xd3
, to turn remote root on or off
Keyword argument with_root_url: The remote root to use, in the form of
\xd2
http://www.apple.com/help/
\xd3
.
Keyword argument _attributes: AppleEvent attribute dictionary
"""
_code
=
'HIT '
_subcode
=
'tRem'
aetools
.
keysubst
(
_arguments
,
self
.
_argmap_turn_remote_root
)
_arguments
[
'----'
]
=
_object
_reply
,
_arguments
,
_attributes
=
self
.
send
(
_code
,
_subcode
,
_arguments
,
_attributes
)
if
_arguments
.
get
(
'errn'
,
0
):
raise
aetools
.
Error
,
aetools
.
decodeerror
(
_arguments
)
# XXXX Optionally decode result
if
_arguments
.
has_key
(
'----'
):
return
_arguments
[
'----'
]
def
use_tokenizer
(
self
,
_object
,
_attributes
=
{},
**
_arguments
):
"""use tokenizer: Tells the indexing tool which tokenizer to use.
Required argument: Specify
\xd2
English
\xd3
,
\xd2
European
\xd3
,
\xd2
Japanese
\xd3
,
\xd2
Korean
\xd3
, or
\xd2
Simple
\xd3
.
Keyword argument _attributes: AppleEvent attribute dictionary
"""
_code
=
'HIT '
_subcode
=
'uTok'
if
_arguments
:
raise
TypeError
,
'No optional args expected'
_arguments
[
'----'
]
=
_object
_reply
,
_arguments
,
_attributes
=
self
.
send
(
_code
,
_subcode
,
_arguments
,
_attributes
)
if
_arguments
.
get
(
'errn'
,
0
):
raise
aetools
.
Error
,
aetools
.
decodeerror
(
_arguments
)
# XXXX Optionally decode result
if
_arguments
.
has_key
(
'----'
):
return
_arguments
[
'----'
]
class
application
(
aetools
.
ComponentItem
):
"""application - Application class """
want
=
'capp'
class
_Prop_idleStatus
(
aetools
.
NProperty
):
"""idleStatus - """
which
=
'sIdl'
want
=
'bool'
application
.
_superclassnames
=
[]
application
.
_privpropdict
=
{
'idleStatus'
:
_Prop_idleStatus
,
}
application
.
_privelemdict
=
{
}
#
# Indices of types declared in this module
#
_classdeclarations
=
{
'capp'
:
application
,
}
_propdeclarations
=
{
'sIdl'
:
_Prop_idleStatus
,
}
_compdeclarations
=
{
}
_enumdeclarations
=
{
}
Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
"""Suite Miscellaneous Standards: Useful events that aren
\xd5
t in any other suite
Level 0, version 0
Generated from /Developer/Applications/Apple Help Indexing Tool.app
AETE/AEUT resource version 1/1, language 0, script 0
"""
import
aetools
import
MacOS
_code
=
'misc'
class
Miscellaneous_Standards_Events
:
def
revert
(
self
,
_object
,
_attributes
=
{},
**
_arguments
):
"""revert: Revert an object to the most recently saved version
Required argument: object to revert
Keyword argument _attributes: AppleEvent attribute dictionary
"""
_code
=
'misc'
_subcode
=
'rvrt'
if
_arguments
:
raise
TypeError
,
'No optional args expected'
_arguments
[
'----'
]
=
_object
_reply
,
_arguments
,
_attributes
=
self
.
send
(
_code
,
_subcode
,
_arguments
,
_attributes
)
if
_arguments
.
get
(
'errn'
,
0
):
raise
aetools
.
Error
,
aetools
.
decodeerror
(
_arguments
)
# XXXX Optionally decode result
if
_arguments
.
has_key
(
'----'
):
return
_arguments
[
'----'
]
#
# Indices of types declared in this module
#
_classdeclarations
=
{
}
_propdeclarations
=
{
}
_compdeclarations
=
{
}
_enumdeclarations
=
{
}
Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
"""Suite Required Suite: Terms that every application should support
Level 1, version 1
Generated from /Developer/Applications/Apple Help Indexing Tool.app
AETE/AEUT resource version 1/1, language 0, script 0
"""
import
aetools
import
MacOS
_code
=
'reqd'
from
StdSuites.Required_Suite
import
*
class
Required_Suite_Events
(
Required_Suite_Events
):
pass
#
# Indices of types declared in this module
#
_classdeclarations
=
{
}
_propdeclarations
=
{
}
_compdeclarations
=
{
}
_enumdeclarations
=
{
}
Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
This diff is collapsed.
Click to expand it.
Mac/Tools/Doc/HelpIndexingTool/__init__.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
"""
Package generated from /Developer/Applications/Apple Help Indexing Tool.app
"""
import
aetools
Error
=
aetools
.
Error
import
Standard_Suite
import
Help_Indexing_Tool_Suite
import
odds_and_ends
import
Miscellaneous_Standards
import
Required_Suite
_code_to_module
=
{
'CoRe'
:
Standard_Suite
,
'HIT '
:
Help_Indexing_Tool_Suite
,
'Odds'
:
odds_and_ends
,
'misc'
:
Miscellaneous_Standards
,
'reqd'
:
Required_Suite
,
}
_code_to_fullname
=
{
'CoRe'
:
(
'HelpIndexingTool.Standard_Suite'
,
'Standard_Suite'
),
'HIT '
:
(
'HelpIndexingTool.Help_Indexing_Tool_Suite'
,
'Help_Indexing_Tool_Suite'
),
'Odds'
:
(
'HelpIndexingTool.odds_and_ends'
,
'odds_and_ends'
),
'misc'
:
(
'HelpIndexingTool.Miscellaneous_Standards'
,
'Miscellaneous_Standards'
),
'reqd'
:
(
'HelpIndexingTool.Required_Suite'
,
'Required_Suite'
),
}
from
Standard_Suite
import
*
from
Help_Indexing_Tool_Suite
import
*
from
odds_and_ends
import
*
from
Miscellaneous_Standards
import
*
from
Required_Suite
import
*
def
getbaseclasses
(
v
):
if
not
getattr
(
v
,
'_propdict'
,
None
):
v
.
_propdict
=
{}
v
.
_elemdict
=
{}
for
superclassname
in
getattr
(
v
,
'_superclassnames'
,
[]):
superclass
=
eval
(
superclassname
)
getbaseclasses
(
superclass
)
v
.
_propdict
.
update
(
getattr
(
superclass
,
'_propdict'
,
{}))
v
.
_elemdict
.
update
(
getattr
(
superclass
,
'_elemdict'
,
{}))
v
.
_propdict
.
update
(
getattr
(
v
,
'_privpropdict'
,
{}))
v
.
_elemdict
.
update
(
getattr
(
v
,
'_privelemdict'
,
{}))
import
StdSuites
#
# Set property and element dictionaries now that all classes have been defined
#
getbaseclasses
(
window
)
getbaseclasses
(
application
)
getbaseclasses
(
document
)
getbaseclasses
(
application
)
#
# Indices of types declared in this module
#
_classdeclarations
=
{
'cwin'
:
window
,
'capp'
:
application
,
'docu'
:
document
,
'capp'
:
application
,
}
class
HelpIndexingTool
(
Standard_Suite_Events
,
Help_Indexing_Tool_Suite_Events
,
odds_and_ends_Events
,
Miscellaneous_Standards_Events
,
Required_Suite_Events
,
aetools
.
TalkTo
):
_signature
=
'hiti'
_moduleName
=
'HelpIndexingTool'
Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
"""Suite odds and ends: Things that should be in some standard suite, but aren
\xd5
t
Level 1, version 1
Generated from /Developer/Applications/Apple Help Indexing Tool.app
AETE/AEUT resource version 1/1, language 0, script 0
"""
import
aetools
import
MacOS
_code
=
'Odds'
class
odds_and_ends_Events
:
def
select
(
self
,
_object
=
None
,
_attributes
=
{},
**
_arguments
):
"""select: Select the specified object
Required argument: the object to select
Keyword argument _attributes: AppleEvent attribute dictionary
"""
_code
=
'misc'
_subcode
=
'slct'
if
_arguments
:
raise
TypeError
,
'No optional args expected'
_arguments
[
'----'
]
=
_object
_reply
,
_arguments
,
_attributes
=
self
.
send
(
_code
,
_subcode
,
_arguments
,
_attributes
)
if
_arguments
.
get
(
'errn'
,
0
):
raise
aetools
.
Error
,
aetools
.
decodeerror
(
_arguments
)
# XXXX Optionally decode result
if
_arguments
.
has_key
(
'----'
):
return
_arguments
[
'----'
]
#
# Indices of types declared in this module
#
_classdeclarations
=
{
}
_propdeclarations
=
{
}
_compdeclarations
=
{
}
_enumdeclarations
=
{
}
Mac/Tools/Doc/README
0 → 100644
Dosyayı görüntüle @
8ec9f866
In this directory you can build the Python documentation in a form that
is suitable for access with Apple Help Viewer. This will enable the
"Python Documentation" menu entries in the MacPython IDE Help menu.
Unfortunately the procedure to build the docs is not very streamlined.
First, edit setup.py. At the top, edit MAJOR_VERSION and MINOR_VERSION,
and check that DESTDIR makes sense. The documentation will be installed
inside PythonIDE.app.
In DocBuild.initialize_options, set self.download to True if you want to
download the docs. Set it to False if you want to build the docs from
the source tree, but this requires LaTex and lots of other stuff.
Doable, but not easy.
Second, if you want to download the docs you may need to do a couple
more edits. The way the docs are packaged will often change between
major releases. Fiddle DocBuild.downloadDocs to make it do the right
thing (download the docs from python.org, unpack them, rename the
directory to "build/html").
After these edits you should be ready to roll. "pythonw setup.py build"
should download and unpack (or build) the docs. Next, it will do some
magic to make the docs indexable. Finally, it will run the Apple Help
Indexing Tool. (This last step is the reason you must use "pythonw" as
opposed to "python"). Usually it will time out while waiting for AHIT to
do its work. Wait until AHIT is done.
Now you're ready to install with "python setup.py install".
After this is done test your work. Fire up PythonIDE, and check that
Help->Python Documentation brings up the documentation in the Help Viewer.
Also open an IDE edit window, type something like "import sys", select
"import", and use Help->Lookup in Python Documentation to check that the
index has been generated correctly.
Mac/Tools/Doc/setup.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
# Build and install an Apple Help Viewer compatible version of the Python
# documentation into the framework.
# Code by Bill Fancher, with some modifications by Jack Jansen.
#
# You must run this as a two-step process
# 1. python setupDocs.py build
# 2. Wait for Apple Help Indexing Tool to finish
# 3. python setupDocs.py install
#
# To do:
# - test whether the docs are available locally before downloading
# - fix buildDocsFromSource
# - Get documentation version from sys.version, fallback to 2.2.1
# - See if we can somehow detect that Apple Help Indexing Tool is finished
# - data_files to setup() doesn't seem the right way to pass the arguments
#
import
sys
,
os
,
re
from
distutils.cmd
import
Command
from
distutils.command.build
import
build
from
distutils.core
import
setup
from
distutils.file_util
import
copy_file
from
distutils.dir_util
import
copy_tree
from
distutils.log
import
log
from
distutils.spawn
import
spawn
from
distutils
import
sysconfig
,
dep_util
from
distutils.util
import
change_root
import
HelpIndexingTool
import
Carbon.File
import
time
MAJOR_VERSION
=
'2.4'
MINOR_VERSION
=
'2.4.1'
DESTDIR
=
'/Applications/MacPython-
%
s/PythonIDE.app/Contents/Resources/English.lproj/PythonDocumentation'
%
MAJOR_VERSION
class
DocBuild
(
build
):
def
initialize_options
(
self
):
build
.
initialize_options
(
self
)
self
.
build_html
=
None
self
.
build_dest
=
None
self
.
download
=
1
self
.
doc_version
=
MINOR_VERSION
# Only needed if download is true
def
finalize_options
(
self
):
build
.
finalize_options
(
self
)
if
self
.
build_html
is
None
:
self
.
build_html
=
os
.
path
.
join
(
self
.
build_base
,
'html'
)
if
self
.
build_dest
is
None
:
self
.
build_dest
=
os
.
path
.
join
(
self
.
build_base
,
'PythonDocumentation'
)
def
spawn
(
self
,
*
args
):
spawn
(
args
,
1
,
self
.
verbose
,
self
.
dry_run
)
def
downloadDocs
(
self
):
workdir
=
os
.
getcwd
()
# XXX Note: the next strings may change from version to version
url
=
'http://www.python.org/ftp/python/doc/
%
s/html-
%
s.tar.bz2'
%
\
(
self
.
doc_version
,
self
.
doc_version
)
tarfile
=
'html-
%
s.tar.bz2'
%
self
.
doc_version
dirname
=
'Python-Docs-
%
s'
%
self
.
doc_version
if
os
.
path
.
exists
(
self
.
build_html
):
raise
RuntimeError
,
'
%
s: already exists, please remove and try again'
%
self
.
build_html
os
.
chdir
(
self
.
build_base
)
self
.
spawn
(
'curl'
,
'-O'
,
url
)
self
.
spawn
(
'tar'
,
'-xjf'
,
tarfile
)
os
.
rename
(
dirname
,
'html'
)
os
.
chdir
(
workdir
)
## print "** Please unpack %s" % os.path.join(self.build_base, tarfile)
## print "** Unpack the files into %s" % self.build_html
## raise RuntimeError, "You need to unpack the docs manually"
def
buildDocsFromSource
(
self
):
srcdir
=
'../../..'
docdir
=
os
.
path
.
join
(
srcdir
,
'Doc'
)
htmldir
=
os
.
path
.
join
(
docdir
,
'html'
)
spawn
((
'make'
,
'--directory'
,
docdir
,
'html'
),
1
,
self
.
verbose
,
self
.
dry_run
)
self
.
mkpath
(
self
.
build_html
)
copy_tree
(
htmldir
,
self
.
build_html
)
def
ensureHtml
(
self
):
if
not
os
.
path
.
exists
(
self
.
build_html
):
if
self
.
download
:
self
.
downloadDocs
()
else
:
self
.
buildDocsFromSource
()
def
hackIndex
(
self
):
ind_html
=
'index.html'
#print 'self.build_dest =', self.build_dest
hackedIndex
=
file
(
os
.
path
.
join
(
self
.
build_dest
,
ind_html
),
'w'
)
origIndex
=
file
(
os
.
path
.
join
(
self
.
build_html
,
ind_html
))
r
=
re
.
compile
(
'<style type="text/css">.*</style>'
,
re
.
DOTALL
)
hackedIndex
.
write
(
r
.
sub
(
'<META NAME="AppleTitle" CONTENT="Python Documentation">'
,
origIndex
.
read
()))
def
hackFile
(
self
,
d
,
f
):
origPath
=
os
.
path
.
join
(
d
,
f
)
assert
(
origPath
[:
len
(
self
.
build_html
)]
==
self
.
build_html
)
outPath
=
os
.
path
.
join
(
self
.
build_dest
,
d
[
len
(
self
.
build_html
)
+
1
:],
f
)
(
name
,
ext
)
=
os
.
path
.
splitext
(
f
)
if
os
.
path
.
isdir
(
origPath
):
self
.
mkpath
(
outPath
)
elif
ext
==
'.html'
:
if
self
.
verbose
:
print
'hacking
%
s to
%
s'
%
(
origPath
,
outPath
)
hackedFile
=
file
(
outPath
,
'w'
)
origFile
=
file
(
origPath
,
'r'
)
hackedFile
.
write
(
self
.
r
.
sub
(
'<dl><dt><dd>'
,
origFile
.
read
()))
else
:
copy_file
(
origPath
,
outPath
)
def
hackHtml
(
self
):
self
.
r
=
re
.
compile
(
'<dl><dd>'
)
os
.
path
.
walk
(
self
.
build_html
,
self
.
visit
,
None
)
def
visit
(
self
,
dummy
,
dirname
,
filenames
):
for
f
in
filenames
:
self
.
hackFile
(
dirname
,
f
)
def
makeHelpIndex
(
self
):
app
=
'/Developer/Applications/Apple Help Indexing Tool.app'
self
.
spawn
(
'open'
,
'-a'
,
app
,
self
.
build_dest
)
print
"Please wait until Apple Help Indexing Tool finishes before installing"
def
makeHelpIndex
(
self
):
app
=
HelpIndexingTool
.
HelpIndexingTool
(
start
=
1
)
app
.
open
(
Carbon
.
File
.
FSSpec
(
self
.
build_dest
))
sys
.
stderr
.
write
(
"Waiting for Help Indexing Tool to start..."
)
while
1
:
# This is bad design in the suite generation code!
idle
=
app
.
_get
(
HelpIndexingTool
.
Help_Indexing_Tool_Suite
.
_Prop_idleStatus
())
time
.
sleep
(
10
)
if
not
idle
:
break
sys
.
stderr
.
write
(
"."
)
sys
.
stderr
.
write
(
"
\n
"
)
sys
.
stderr
.
write
(
"Waiting for Help Indexing Tool to finish..."
)
while
1
:
# This is bad design in the suite generation code!
idle
=
app
.
_get
(
HelpIndexingTool
.
Help_Indexing_Tool_Suite
.
_Prop_idleStatus
())
time
.
sleep
(
10
)
if
idle
:
break
sys
.
stderr
.
write
(
"."
)
sys
.
stderr
.
write
(
"
\n
"
)
def
run
(
self
):
self
.
ensure_finalized
()
self
.
mkpath
(
self
.
build_base
)
self
.
ensureHtml
()
if
not
os
.
path
.
isdir
(
self
.
build_html
):
raise
RuntimeError
,
\
"Can't find source folder for documentation."
self
.
mkpath
(
self
.
build_dest
)
if
dep_util
.
newer
(
os
.
path
.
join
(
self
.
build_html
,
'index.html'
),
os
.
path
.
join
(
self
.
build_dest
,
'index.html'
)):
self
.
mkpath
(
self
.
build_dest
)
self
.
hackHtml
()
self
.
hackIndex
()
self
.
makeHelpIndex
()
class
AHVDocInstall
(
Command
):
description
=
"install Apple Help Viewer html files"
user_options
=
[(
'install-doc='
,
'd'
,
'directory to install HTML tree'
),
(
'root='
,
None
,
"install everything relative to this alternate root directory"
),
]
def
initialize_options
(
self
):
self
.
build_dest
=
None
self
.
install_doc
=
None
self
.
prefix
=
None
self
.
root
=
None
def
finalize_options
(
self
):
self
.
set_undefined_options
(
'install'
,
(
'prefix'
,
'prefix'
),
(
'root'
,
'root'
))
# import pdb ; pdb.set_trace()
build_cmd
=
self
.
get_finalized_command
(
'build'
)
if
self
.
build_dest
==
None
:
build_cmd
=
self
.
get_finalized_command
(
'build'
)
self
.
build_dest
=
build_cmd
.
build_dest
if
self
.
install_doc
==
None
:
self
.
install_doc
=
os
.
path
.
join
(
self
.
prefix
,
DESTDIR
)
print
'INSTALL'
,
self
.
build_dest
,
'->'
,
self
.
install_doc
def
run
(
self
):
self
.
finalize_options
()
self
.
ensure_finalized
()
print
"Running Installer"
instloc
=
self
.
install_doc
if
self
.
root
:
instloc
=
change_root
(
self
.
root
,
instloc
)
self
.
mkpath
(
instloc
)
copy_tree
(
self
.
build_dest
,
instloc
)
print
"Installation complete"
def
mungeVersion
(
infile
,
outfile
):
i
=
file
(
infile
,
'r'
)
o
=
file
(
outfile
,
'w'
)
o
.
write
(
re
.
sub
(
'
\
$
\
(VERSION
\
)'
,
sysconfig
.
get_config_var
(
'VERSION'
),
i
.
read
()))
i
.
close
()
o
.
close
()
def
main
():
# turn off warnings when deprecated modules are imported
## import warnings
## warnings.filterwarnings("ignore",category=DeprecationWarning)
setup
(
name
=
'Documentation'
,
version
=
'
%
d.
%
d'
%
sys
.
version_info
[:
2
],
cmdclass
=
{
'install_data'
:
AHVDocInstall
,
'build'
:
DocBuild
},
data_files
=
[
'dummy'
],
)
if
__name__
==
'__main__'
:
main
()
Mac/Tools/fixapplepython23.py
0 → 100644
Dosyayı görüntüle @
8ec9f866
#!/usr/bin/python
"""fixapplepython23 - Fix Apple-installed Python 2.3 (on Mac OS X 10.3)
Python 2.3 (and 2.3.X for X<5) have the problem that building an extension
for a framework installation may accidentally pick up the framework
of a newer Python, in stead of the one that was used to build the extension.
This script modifies the Makefile (in .../lib/python2.3/config) to use
the newer method of linking extensions with "-undefined dynamic_lookup"
which fixes this problem.
The script will first check all prerequisites, and return a zero exit
status also when nothing needs to be fixed.
"""
import
sys
import
os
import
gestalt
MAKEFILE
=
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/Makefile'
CHANGES
=
((
'LDSHARED=
\t
$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)
\n
'
,
'LDSHARED=
\t
$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup
\n
'
),(
'BLDSHARED=
\t
$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)
\n
'
,
'BLDSHARED=
\t
$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup
\n
'
),(
'CC=
\t\t
gcc
\n
'
,
'CC=
\t\t
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc
\n
'
),(
'CXX=
\t\t
c++
\n
'
,
'CXX=
\t\t
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++
\n
'
))
GCC_SCRIPT
=
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc'
GXX_SCRIPT
=
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++'
SCRIPT
=
"""#!/bin/sh
export MACOSX_DEPLOYMENT_TARGET=10.3
exec
%
s "${@}"
"""
def
findline
(
lines
,
start
):
"""return line starting with given string or -1"""
for
i
in
range
(
len
(
lines
)):
if
lines
[
i
][:
len
(
start
)]
==
start
:
return
i
return
-
1
def
fix
(
makefile
,
do_apply
):
"""Fix the Makefile, if required."""
fixed
=
False
lines
=
open
(
makefile
)
.
readlines
()
for
old
,
new
in
CHANGES
:
i
=
findline
(
lines
,
new
)
if
i
>=
0
:
# Already fixed
continue
i
=
findline
(
lines
,
old
)
if
i
<
0
:
print
'fixapplepython23: Python installation not fixed (appears broken)'
print
'fixapplepython23: missing line:'
,
old
return
2
lines
[
i
]
=
new
fixed
=
True
if
fixed
:
if
do_apply
:
print
'fixapplepython23: Fix to Apple-installed Python 2.3 applied'
os
.
rename
(
makefile
,
makefile
+
'~'
)
open
(
makefile
,
'w'
)
.
writelines
(
lines
)
return
0
else
:
print
'fixapplepython23: Fix to Apple-installed Python 2.3 should be applied'
return
1
else
:
print
'fixapplepython23: No fix needed, appears to have been applied before'
return
0
def
makescript
(
filename
,
compiler
):
"""Create a wrapper script for a compiler"""
dirname
=
os
.
path
.
split
(
filename
)[
0
]
if
not
os
.
access
(
dirname
,
os
.
X_OK
):
os
.
mkdir
(
dirname
,
0755
)
fp
=
open
(
filename
,
'w'
)
fp
.
write
(
SCRIPT
%
compiler
)
fp
.
close
()
os
.
chmod
(
filename
,
0755
)
print
'fixapplepython23: Created'
,
filename
def
main
():
# Check for -n option
if
len
(
sys
.
argv
)
>
1
and
sys
.
argv
[
1
]
==
'-n'
:
do_apply
=
False
else
:
do_apply
=
True
# First check OS version
if
gestalt
.
gestalt
(
'sysv'
)
<
0x1030
:
print
'fixapplepython23: no fix needed on MacOSX < 10.3'
sys
.
exit
(
0
)
# Test that a framework Python is indeed installed
if
not
os
.
path
.
exists
(
MAKEFILE
):
print
'fixapplepython23: Python framework does not appear to be installed (?), nothing fixed'
sys
.
exit
(
0
)
# Check that we can actually write the file
if
do_apply
and
not
os
.
access
(
MAKEFILE
,
os
.
W_OK
):
print
'fixapplepython23: No write permission, please run with "sudo"'
sys
.
exit
(
2
)
# Create the shell scripts
if
do_apply
:
if
not
os
.
access
(
GCC_SCRIPT
,
os
.
X_OK
):
makescript
(
GCC_SCRIPT
,
"gcc"
)
if
not
os
.
access
(
GXX_SCRIPT
,
os
.
X_OK
):
makescript
(
GXX_SCRIPT
,
"g++"
)
# Finally fix the makefile
rv
=
fix
(
MAKEFILE
,
do_apply
)
sys
.
exit
(
rv
)
if
__name__
==
'__main__'
:
main
()
Mac/Tools/pythonw.c
0 → 100644
Dosyayı görüntüle @
8ec9f866
/*
* This wrapper program executes a python executable hidden inside an
* application bundle inside the Python framework. This is needed to run
* GUI code: some GUI API's don't work unless the program is inside an
* application bundle.
*/
#include <unistd.h>
#include <err.h>
static
char
Python
[]
=
PYTHONWEXECUTABLE
;
int
main
(
int
argc
,
char
**
argv
)
{
argv
[
0
]
=
Python
;
execv
(
Python
,
argv
);
err
(
1
,
"execv: %s"
,
Python
);
/* NOTREACHED */
}
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