Add signtool support

hg/develop
kaetemi 5 years ago committed by Jan Boon
parent 22e9c17a72
commit 68d8e21629

@ -187,6 +187,18 @@ if not args.noconf:
PatchmanBridgeServerDirectory PatchmanBridgeServerDirectory
except NameError: except NameError:
PatchmanBridgeServerDirectory = "T:/bridge_server" PatchmanBridgeServerDirectory = "T:/bridge_server"
try:
SignToolExecutable
except NameError:
SignToolExecutable = "C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bin/signtool.exe"
try:
SignToolSha1
except NameError:
SignToolSha1 = ""
try:
SignToolTimestamp
except NameError:
SignToolTimestamp = "http://timestamp.comodoca.com/authenticode"
try: try:
MaxAvailable MaxAvailable
except NameError: except NameError:
@ -258,6 +270,9 @@ if not args.noconf:
PatchmanCfgAdminDirectory = askVar(log, "[IN] Patchman Cfg Admin Directory", PatchmanCfgAdminDirectory).replace("\\", "/") PatchmanCfgAdminDirectory = askVar(log, "[IN] Patchman Cfg Admin Directory", PatchmanCfgAdminDirectory).replace("\\", "/")
PatchmanCfgDefaultDirectory = askVar(log, "[IN] Patchman Cfg Default Directory", PatchmanCfgDefaultDirectory).replace("\\", "/") PatchmanCfgDefaultDirectory = askVar(log, "[IN] Patchman Cfg Default Directory", PatchmanCfgDefaultDirectory).replace("\\", "/")
PatchmanBridgeServerDirectory = askVar(log, "[OUT] Patchman Bridge Server Patch Directory", PatchmanBridgeServerDirectory).replace("\\", "/") PatchmanBridgeServerDirectory = askVar(log, "[OUT] Patchman Bridge Server Patch Directory", PatchmanBridgeServerDirectory).replace("\\", "/")
SignToolExecutable = askVar(log, "Sign Tool Executable", SignToolExecutable).replace("\\", "/")
SignToolSha1 = askVar(log, "Sign Tool Signature SHA1", SignToolSha1)
SignToolTimestamp = askVar(log, "Sign Tool Timestamp Authority", SignToolTimestamp)
MaxAvailable = int(askVar(log, "3dsMax Available", str(MaxAvailable))) MaxAvailable = int(askVar(log, "3dsMax Available", str(MaxAvailable)))
if MaxAvailable: if MaxAvailable:
MaxDirectory = askVar(log, "3dsMax Directory", MaxDirectory).replace("\\", "/") MaxDirectory = askVar(log, "3dsMax Directory", MaxDirectory).replace("\\", "/")
@ -346,6 +361,11 @@ if not args.noconf:
sf.write("PatchmanCfgDefaultDirectory = \"" + str(PatchmanCfgDefaultDirectory) + "\"\n") sf.write("PatchmanCfgDefaultDirectory = \"" + str(PatchmanCfgDefaultDirectory) + "\"\n")
sf.write("PatchmanBridgeServerDirectory = \"" + str(PatchmanBridgeServerDirectory) + "\"\n") sf.write("PatchmanBridgeServerDirectory = \"" + str(PatchmanBridgeServerDirectory) + "\"\n")
sf.write("\n") sf.write("\n")
sf.write("# Sign tool\n")
sf.write("SignToolExecutable = \"" + str(SignToolExecutable) + "\"\n")
sf.write("SignToolSha1 = \"" + str(SignToolSha1) + "\"\n")
sf.write("SignToolTimestamp = \"" + str(SignToolTimestamp) + "\"\n")
sf.write("\n")
sf.write("# 3dsMax directives\n") sf.write("# 3dsMax directives\n")
sf.write("MaxAvailable = " + str(MaxAvailable) + "\n") sf.write("MaxAvailable = " + str(MaxAvailable) + "\n")
sf.write("MaxDirectory = \"" + str(MaxDirectory) + "\"\n") sf.write("MaxDirectory = \"" + str(MaxDirectory) + "\"\n")

@ -541,6 +541,7 @@ def needUpdateDirNoSubdirLogExtMultidir(log, all_dir_base, all_dir_source, dir_s
def findFileMultiDir(log, dirs_where, file_name): def findFileMultiDir(log, dirs_where, file_name):
try: try:
for dir in dirs_where: for dir in dirs_where:
if dir != "":
file = findFile(log, dir, file_name) file = findFile(log, dir, file_name)
if file != "": if file != "":
return file return file
@ -552,6 +553,7 @@ def findFileMultiDir(log, dirs_where, file_name):
def findTool(log, dirs_where, file_name, suffix): def findTool(log, dirs_where, file_name, suffix):
try: try:
for dir in dirs_where: for dir in dirs_where:
if dir != "":
tool = findFile(log, dir, file_name + suffix) tool = findFile(log, dir, file_name + suffix)
if tool != "": if tool != "":
printLog(log, "TOOL " + tool) printLog(log, "TOOL " + tool)

@ -1,3 +1,9 @@
title Ryzom Core: 0_setup.py (EXECUTABLES)
0_setup.py --noconf -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 1_export.py (EXECUTABLES)
1_export.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 2_build.py (EXECUTABLES)
2_build.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 3_install.py (EXECUTABLES) title Ryzom Core: 3_install.py (EXECUTABLES)
3_install.py -ipj common/gamedev common/exedll common/cfg common/data_common 3_install.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: b1_client_dev.py title Ryzom Core: b1_client_dev.py

@ -0,0 +1,64 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief setup sign
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup sign
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup sign")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
# Setup build directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + UnsignedExeDllDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + SignedExeDllDirectory)
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + SignInstallDirectory)
log.close()
# end of file

@ -0,0 +1,57 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export sign
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export sign
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Export sign")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
mkPath(log, ExportBuildDirectory + "/" + UnsignedExeDllDirectory)
for file in SignExeDllFiles:
printLog(log, str(WindowsExeDllCfgDirectories))
printLog(log, file)
filePath = findFileMultiDir(log, WindowsExeDllCfgDirectories, file)
if (filePath != ""):
copyFileIfNeeded(log, filePath, ExportBuildDirectory + "/" + UnsignedExeDllDirectory + "/" + os.path.basename(file))
log.close()
# end of file

@ -0,0 +1,61 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build sign
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build sign
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Build sign")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
if SignToolSha1 != "":
unsignedDirectory = ExportBuildDirectory + "/" + UnsignedExeDllDirectory
signedDirectory = ExportBuildDirectory + "/" + SignedExeDllDirectory
mkPath(log, unsignedDirectory)
mkPath(log, signedDirectory)
unsignedFiles = os.listdir(unsignedDirectory)
for fileName in unsignedFiles:
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"):
if needUpdateLogRemoveDest(log, unsignedDirectory + "/" + fileName, signedDirectory + "/" + fileName):
shutil.copy(unsignedDirectory + "/" + fileName, signedDirectory + "/" + fileName)
subprocess.call([ SignToolExecutable, "sign", "/sha1", SignToolSha1, "/t", SignToolTimestamp, signedDirectory + "/" + fileName ])
log.close()
# end of file

@ -0,0 +1,58 @@
#!/usr/bin/python
#
# \file 3_install.py
# \brief Install sign
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install sign
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install sign")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
srcDir = ExportBuildDirectory + "/" + SignedExeDllDirectory
if SignToolSha1 == "":
srcDir = ExportBuildDirectory + "/" + UnsignedExeDllDirectory
mkPath(log, srcDir)
destDir = InstallDirectory + "/" + SignInstallDirectory
mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "")
log.close()
# end of file
Loading…
Cancel
Save