Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
54e3b3a3
Commit
54e3b3a3
authored
Jun 21, 2013
by
Petr Prikryl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
New script winbuild/pack_the_distribution_for_windows.py
parent
5f63c194
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
264 additions
and
0 deletions
+264
-0
pack_the_distribution_for_windows.py
winbuild/pack_the_distribution_for_windows.py
+264
-0
No files found.
winbuild/pack_the_distribution_for_windows.py
0 → 100644
View file @
54e3b3a3
#! python3
import
glob
import
os
import
re
import
shutil
import
subprocess
import
sys
import
textwrap
def
getCurrentSubdirName
():
subdir
,
fname
=
os
.
path
.
split
(
os
.
path
.
realpath
(
__file__
))
return
os
.
path
.
basename
(
subdir
)
def
getCurrentBranchName
():
result
=
None
cmd
=
'git branch --list --no-color'
pipe
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
.
stdout
for
line
in
pipe
:
line
=
line
.
decode
(
'utf-8'
)
if
line
.
startswith
(
'*'
):
result
=
line
[
2
:]
.
rstrip
()
pipe
.
close
()
return
result
def
getUserName
():
user
=
None
# init
p
=
subprocess
.
Popen
(
'git config user.name'
,
stdout
=
subprocess
.
PIPE
)
user
=
p
.
communicate
()[
0
]
user
=
user
.
decode
(
'utf-8'
)
p
.
wait
()
return
user
def
getUserInitials
():
user
=
getUserName
()
return
''
.
join
(
s
[
0
]
for
s
in
user
.
split
())
def
gitSHA_date_time
():
cmd
=
'git rev-parse --short HEAD'
p
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
output
=
p
.
communicate
()[
0
]
output
=
output
.
decode
(
'ASCII'
)
p
.
wait
()
sha
=
output
.
strip
()
cmd
=
'git show -s --format="
%
ci" '
+
sha
p
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
output
=
p
.
communicate
()[
0
]
output
=
output
.
decode
(
'ASCII'
)
p
.
wait
()
date
=
output
.
strip
()
lst
=
date
.
split
()
# string like '2013-06-21 09:23:47 +0200'
dstamp
=
lst
[
0
]
.
replace
(
'-'
,
''
)
# '20130621' for the date
tstamp
=
lst
[
1
]
.
replace
(
':'
,
''
)
# '092347' for the time
return
sha
,
dstamp
,
tstamp
def
gitDescribe
():
result
=
None
cmd
=
'git describe'
p
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
descr
=
p
.
communicate
()[
0
]
descr
=
descr
.
decode
(
'utf-8'
)
p
.
wait
()
return
descr
.
strip
()
def
getDoxygenVersion
():
# ... from the VERSION file.
sdir
,
fname
=
getThisScriptPathAndName
()
version_fname
=
os
.
path
.
join
(
sdir
,
'..'
,
'VERSION'
)
with
open
(
version_fname
)
as
f
:
lst
=
f
.
readlines
()
doxver
=
lst
[
0
]
.
strip
()
m
=
re
.
match
(
r'^(?P<ver>[0-9.]+)(-(?P<date>\d{8}))?'
,
doxver
)
assert
m
ver
=
m
.
group
(
'ver'
)
return
ver
def
getThisScriptPathAndName
():
script_fname
=
os
.
path
.
realpath
(
__file__
)
sdir
,
fname
=
os
.
path
.
split
(
script_fname
)
return
sdir
,
fname
def
getEmptyDistribDir
():
# Get this script full path, name, and the script subdir name
# (for checking the location).
sdir
,
fname
=
getThisScriptPathAndName
()
subdir
=
os
.
path
.
basename
(
sdir
)
assert
subdir
==
'winbuild'
# The distribution directory will be a subdirectory of the "../__put"
# (created if it does not exist, not the part of the git repo).
target_dir
=
os
.
path
.
normpath
(
os
.
path
.
join
(
sdir
,
'..'
,
'__put'
))
if
not
os
.
path
.
exists
(
target_dir
):
os
.
mkdir
(
target_dir
)
assert
os
.
path
.
isdir
(
target_dir
)
# The distribution subdir is composed out of 'Doxygen-', version stamp,
# timestamp, and commit id (partial SHA). Ignore the date from the VERSION
# file, take the commit date.
ver
=
getDoxygenVersion
()
sha
,
dstamp
,
tstamp
=
gitSHA_date_time
()
dist_subdir
=
'Doxygen-'
+
ver
+
'-'
+
dstamp
+
tstamp
dist_dir
=
os
.
path
.
join
(
target_dir
,
dist_subdir
)
print
(
dist_dir
)
if
os
.
path
.
isdir
(
dist_dir
):
print
(
"Removing the existing '{}'"
.
format
(
dist_dir
))
shutil
.
rmtree
(
dist_dir
)
assert
not
os
.
path
.
exists
(
dist_dir
)
print
(
"Creating the new '{}'"
.
format
(
dist_dir
))
os
.
mkdir
(
dist_dir
)
assert
os
.
path
.
isdir
(
dist_dir
)
return
dist_dir
def
copyBinaries
(
dist_dir
,
subdir
):
'''Copy the Windows binaries (doxygen.exe only) to the dist_dir directory.'''
# Source file should exist.
sdir
,
fname
=
getThisScriptPathAndName
()
src
=
os
.
path
.
normpath
(
os
.
path
.
join
(
sdir
,
'..'
,
'bin'
,
subdir
,
'doxygen.exe'
))
assert
os
.
path
.
isfile
(
src
)
# Destination directory must not exist. It must be created first.
dst_dir
=
os
.
path
.
normpath
(
os
.
path
.
join
(
dist_dir
,
'bin'
,
subdir
))
assert
not
os
.
path
.
isdir
(
dst_dir
)
os
.
makedirs
(
dst_dir
)
# Copy the file.
print
(
"Copying '{}'"
.
format
(
src
))
shutil
.
copy2
(
src
,
dst_dir
)
def
getBinariesZipBareName
():
ver
=
getDoxygenVersion
()
sha
,
dstamp
,
tstamp
=
gitSHA_date_time
()
fname
=
'doxygenw{}_{}.zip'
.
format
(
dstamp
,
ver
.
replace
(
'.'
,
'_'
))
return
fname
def
getTranslatorReportZipBareName
():
ver
=
getDoxygenVersion
()
sha
,
dstamp
,
tstamp
=
gitSHA_date_time
()
fname
=
'tr{}_{}.zip'
.
format
(
dstamp
,
ver
.
replace
(
'.'
,
'_'
))
return
fname
def
zipBinaries
(
distr_dir
):
# Build the zip filename. It is to be located at the same level as distr_dir.
zip_bare_name
=
getBinariesZipBareName
()
dst
,
distr_subdir
=
os
.
path
.
split
(
distr_dir
)
zip_full_name
=
os
.
path
.
join
(
dst
,
zip_bare_name
)
if
os
.
path
.
isfile
(
zip_full_name
):
print
(
"Removing the existing '{}'"
.
format
(
zip_full_name
))
os
.
remove
(
zip_full_name
)
# Change the working directory to destination directory and zip from
# there using the bare names so that the full path is not zipped inside.
wd
=
os
.
getcwd
()
os
.
chdir
(
dst
)
print
(
"Zipping new '{}'"
.
format
(
zip_full_name
))
subprocess
.
call
(
'zip -r {} {}'
.
format
(
zip_bare_name
,
distr_subdir
),
shell
=
True
)
os
.
chdir
(
wd
)
# back to the original working directory
def
buildAndZipTranslatorReport
(
distr_dir
):
# Build the translator report zip filename. It is to be located at the same
# level as distr_dir.
zip_bare_name
=
getTranslatorReportZipBareName
()
dst
,
subdir
=
os
.
path
.
split
(
distr_dir
)
zip_full_name
=
os
.
path
.
join
(
dst
,
zip_bare_name
)
if
os
.
path
.
isfile
(
zip_full_name
):
print
(
"Removing the existing '{}'"
.
format
(
zip_full_name
))
os
.
remove
(
zip_full_name
)
print
(
"Zipping new '{}'"
.
format
(
zip_full_name
))
# Change the working directory to the doc one and generate
# the translator report.
sdir
,
fname
=
getThisScriptPathAndName
()
docdir
=
os
.
path
.
join
(
sdir
,
'..'
,
'doc'
)
assert
os
.
path
.
isdir
(
docdir
)
wd
=
os
.
getcwd
()
os
.
chdir
(
docdir
)
subprocess
.
call
(
'python translator.py'
,
shell
=
True
)
# Zip the generated translator_report.txt.
subprocess
.
call
(
'zip -r {} {}'
.
format
(
zip_full_name
,
'translator_report.txt'
),
shell
=
True
)
os
.
chdir
(
wd
)
# back to the original working directory
def
xxx
():
# Vytvoříme dopis.
subject
=
'Windows binaries available for
%
s in SVN'
%
doxdir
subject
=
subject
.
replace
(
' '
,
'
%20
'
)
body
=
textwrap
.
dedent
(
'''
\
Hi,
If interested, you can download the doxygen binaries
compiled for MS Windows from
http://sourceforge.net/projects/doxygen/files/snapshots/doxygen-1.8-svn/windows
This is the place where you should find also the next
releases. Name of the archive file is
%
s
The related translator report can be found inside the directory
http://sourceforge.net/projects/doxygen/files/snapshots/doxygen-1.8-svn/translator_reports/
Name of the archive file is
%
s
The binaries are NOT created automatically, so it may
happen that some newer SVN sources were not compiled
because I am not present to do that or I forgot... ;)
Regards,
Petr
--
Petr Prikryl (prikryl at atlas dot cz)'''
)
%
(
doxzipname
,
trzipname
)
body
=
body
.
replace
(
'
\n
'
,
'
%0
d'
)
# Zkonstruujeme URI a spustíme mailer pro odeslání dopisu.
to_addr
=
'doxygen-users@lists.sourceforge.net'
mailtoURI
=
'mailto:
%
s?subject=
%
s&body=
%
s'
%
(
to_addr
,
subject
,
body
)
os
.
startfile
(
mailtoURI
)
if
__name__
==
'__main__'
:
# Create the empty directory for the distribution files.
dist_dir
=
getEmptyDistribDir
()
# Copy the compiled binaries to the distribution directory and zip them.
copyBinaries
(
dist_dir
,
'Debug'
)
copyBinaries
(
dist_dir
,
'Debug64'
)
copyBinaries
(
dist_dir
,
'Release'
)
copyBinaries
(
dist_dir
,
'Release64'
)
zipBinaries
(
dist_dir
)
# The translator report...
buildAndZipTranslatorReport
(
dist_dir
)
\ No newline at end of file
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