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
41add013
Kaydet (Commit)
41add013
authored
Mar 06, 2012
tarafından
Martin v. Löwis
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Use hg manifest to compute list of library files to include.
üst
2318699f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
126 deletions
+39
-126
msi.py
Tools/msi/msi.py
+39
-126
No files found.
Tools/msi/msi.py
Dosyayı görüntüle @
41add013
...
...
@@ -2,11 +2,11 @@
# (C) 2003 Martin v. Loewis
# See "FOO" in comments refers to MSDN sections with the title FOO.
import
msilib
,
schema
,
sequence
,
os
,
glob
,
time
,
re
,
shutil
,
zipfile
import
subprocess
,
tempfile
from
msilib
import
Feature
,
CAB
,
Directory
,
Dialog
,
Binary
,
add_data
import
uisample
from
win32com.client
import
constants
from
distutils.spawn
import
find_executable
import
tempfile
# Settings can be overridden in config.py below
# 0 for official python.org releases
...
...
@@ -909,31 +909,27 @@ class PyDirectory(Directory):
kw
[
'componentflags'
]
=
2
#msidbComponentAttributesOptional
Directory
.
__init__
(
self
,
*
args
,
**
kw
)
def
check_unpackaged
(
self
):
self
.
unpackaged_files
.
discard
(
'__pycache__'
)
self
.
unpackaged_files
.
discard
(
'.svn'
)
if
self
.
unpackaged_files
:
print
"Warning: Unpackaged files in
%
s"
%
self
.
absolute
print
self
.
unpackaged_files
def
inside_test
(
dir
):
if
dir
.
physical
in
(
'test'
,
'tests'
):
return
True
if
dir
.
basedir
:
return
inside_test
(
dir
.
basedir
)
return
False
def
hgmanifest
():
# Fetch file list from Mercurial
process
=
subprocess
.
Popen
([
'hg'
,
'manifest'
],
stdout
=
subprocess
.
PIPE
)
stdout
,
stderr
=
process
.
communicate
()
# Create nested directories for file tree
result
=
{}
for
line
in
stdout
.
splitlines
():
components
=
line
.
split
(
'/'
)
d
=
result
while
len
(
components
)
>
1
:
d1
=
d
.
setdefault
(
components
[
0
],
{})
d
=
d1
del
components
[
0
]
d
[
components
[
0
]]
=
None
return
result
def
in_packaging_tests
(
dir
):
if
dir
.
physical
==
'tests'
and
dir
.
basedir
.
physical
==
'packaging'
:
return
True
if
dir
.
basedir
:
return
in_packaging_tests
(
dir
.
basedir
)
return
False
# See "File Table", "Component Table", "Directory Table",
# "FeatureComponents Table"
def
add_files
(
db
):
hgfiles
=
hgmanifest
()
cab
=
CAB
(
"python"
)
tmpfiles
=
[]
# Add all executables, icons, text files into the TARGETDIR component
...
...
@@ -995,123 +991,40 @@ def add_files(db):
# Add all .py files in Lib, except tkinter, test
dirs
=
[]
pydirs
=
[(
root
,
"Lib"
)]
pydirs
=
[(
root
,
"Lib"
,
hgfiles
[
"Lib"
],
default_feature
)]
while
pydirs
:
# Commit every now and then, or else installer will complain
db
.
Commit
()
parent
,
dir
=
pydirs
.
pop
()
if
dir
==
".svn"
or
dir
==
'__pycache__'
or
dir
.
startswith
(
"plat-"
):
parent
,
dir
,
files
,
feature
=
pydirs
.
pop
()
if
dir
.
startswith
(
"plat-"
):
continue
elif
dir
in
[
"tkinter"
,
"idlelib"
,
"Icons
"
]:
if
dir
in
[
"tkinter"
,
"idlelib"
,
"turtledemo
"
]:
if
not
have_tcl
:
continue
feature
=
tcltk
tcltk
.
set_current
()
elif
dir
in
(
'test'
,
'tests'
)
or
inside_test
(
parent
)
:
testsuite
.
set_current
()
elif
dir
in
(
'test'
,
'tests'
):
feature
=
testsuite
elif
not
have_ctypes
and
dir
==
"ctypes"
:
continue
else
:
default_feature
.
set_current
()
feature
.
set_current
()
lib
=
PyDirectory
(
db
,
cab
,
parent
,
dir
,
dir
,
"
%
s|
%
s"
%
(
parent
.
make_short
(
dir
),
dir
))
# Add additional files
dirs
.
append
(
lib
)
lib
.
glob
(
"*.txt"
)
if
dir
==
'site-packages'
:
lib
.
add_file
(
"README.txt"
,
src
=
"README"
)
continue
files
=
lib
.
glob
(
"*.py"
)
files
+=
lib
.
glob
(
"*.pyw"
)
if
files
:
# Add an entry to the RemoveFile table to remove bytecode files.
lib
.
remove_pyc
()
# package READMEs if present
lib
.
glob
(
"README"
)
if
dir
==
'Lib'
:
lib
.
add_file
(
"sysconfig.cfg"
)
if
dir
==
'test'
and
parent
.
physical
==
'Lib'
:
lib
.
add_file
(
"185test.db"
)
lib
.
add_file
(
"audiotest.au"
)
lib
.
add_file
(
"sgml_input.html"
)
lib
.
add_file
(
"testtar.tar"
)
lib
.
add_file
(
"test_difflib_expect.html"
)
lib
.
add_file
(
"check_soundcard.vbs"
)
lib
.
add_file
(
"empty.vbs"
)
lib
.
add_file
(
"Sine-1000Hz-300ms.aif"
)
lib
.
glob
(
"*.uue"
)
lib
.
glob
(
"*.pem"
)
lib
.
glob
(
"*.pck"
)
lib
.
glob
(
"cfgparser.*"
)
lib
.
add_file
(
"zip_cp437_header.zip"
)
lib
.
add_file
(
"zipdir.zip"
)
lib
.
add_file
(
"mime.types"
)
if
dir
==
'capath'
:
lib
.
glob
(
"*.0"
)
if
dir
==
'tests'
and
parent
.
physical
==
'distutils'
:
lib
.
add_file
(
"Setup.sample"
)
if
dir
==
'decimaltestdata'
:
lib
.
glob
(
"*.decTest"
)
if
dir
==
'xmltestdata'
:
lib
.
glob
(
"*.xml"
)
lib
.
add_file
(
"test.xml.out"
)
if
dir
==
'output'
:
lib
.
glob
(
"test_*"
)
if
dir
==
'sndhdrdata'
:
lib
.
glob
(
"sndhdr.*"
)
if
dir
==
'idlelib'
:
lib
.
glob
(
"*.def"
)
lib
.
add_file
(
"idle.bat"
)
lib
.
add_file
(
"ChangeLog"
)
if
dir
==
"Icons"
:
lib
.
glob
(
"*.gif"
)
lib
.
add_file
(
"idle.icns"
)
if
dir
==
"command"
and
parent
.
physical
in
(
"distutils"
,
"packaging"
):
lib
.
glob
(
"wininst*.exe"
)
lib
.
add_file
(
"command_template"
)
if
dir
==
"lib2to3"
:
lib
.
removefile
(
"pickle"
,
"*.pickle"
)
if
dir
==
"macholib"
:
lib
.
add_file
(
"README.ctypes"
)
lib
.
glob
(
"fetch_macholib*"
)
if
dir
==
'turtledemo'
:
lib
.
add_file
(
"turtle.cfg"
)
if
dir
==
"pydoc_data"
:
lib
.
add_file
(
"_pydoc.css"
)
if
dir
.
endswith
(
'.dist-info'
):
lib
.
add_file
(
'INSTALLER'
)
lib
.
add_file
(
'REQUESTED'
)
lib
.
add_file
(
'RECORD'
)
lib
.
add_file
(
'METADATA'
)
lib
.
glob
(
'RESOURCES'
)
if
dir
.
endswith
(
'.egg-info'
)
or
dir
==
'EGG-INFO'
:
lib
.
add_file
(
'PKG-INFO'
)
if
in_packaging_tests
(
parent
):
lib
.
glob
(
'*.html'
)
lib
.
glob
(
'*.tar.gz'
)
if
dir
==
'fake_dists'
:
# cannot use glob since there are also egg-info directories here
lib
.
add_file
(
'cheese-2.0.2.egg-info'
)
lib
.
add_file
(
'nut-funkyversion.egg-info'
)
lib
.
add_file
(
'strawberry-0.6.egg'
)
lib
.
add_file
(
'truffles-5.0.egg-info'
)
lib
.
add_file
(
'babar.cfg'
)
lib
.
add_file
(
'babar.png'
)
if
dir
==
"data"
and
parent
.
physical
==
"test_email"
:
# This should contain all non-.svn files listed in subversion
for
f
in
os
.
listdir
(
lib
.
absolute
):
if
f
.
endswith
(
".txt"
)
or
f
==
".svn"
:
continue
if
f
.
endswith
(
".au"
)
or
f
.
endswith
(
".gif"
):
lib
.
add_file
(
f
)
has_py
=
False
for
name
,
subdir
in
files
.
items
():
if
subdir
is
None
:
assert
os
.
path
.
isfile
(
os
.
path
.
join
(
lib
.
absolute
,
name
))
if
name
==
'README'
:
lib
.
add_file
(
"README.txt"
,
src
=
"README"
)
else
:
print
(
"WARNING: New file
%
s in test/test_email/data"
%
f
)
if
dir
==
'tests'
and
parent
.
physical
==
'packaging'
:
lib
.
add_file
(
'SETUPTOOLS-PKG-INFO2'
)
lib
.
add_file
(
'SETUPTOOLS-PKG-INFO'
)
lib
.
add_file
(
'PKG-INFO'
)
for
f
in
os
.
listdir
(
lib
.
absolute
):
if
os
.
path
.
isdir
(
os
.
path
.
join
(
lib
.
absolute
,
f
)):
pydirs
.
append
((
lib
,
f
))
for
d
in
dirs
:
d
.
check_unpackaged
()
lib
.
add_file
(
name
)
has_py
=
has_py
or
name
.
endswith
(
".py"
)
or
name
.
endswith
(
".pyw"
)
else
:
assert
os
.
path
.
isdir
(
os
.
path
.
join
(
lib
.
absolute
,
name
))
pydirs
.
append
((
lib
,
name
,
subdir
,
feature
))
if
has_py
:
lib
.
remove_pyc
()
# Add DLLs
default_feature
.
set_current
()
lib
=
DLLs
...
...
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