blob: ee1b17b66d5a14eccd9c29c1bd395d76921b381f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
@ECHO OFF
REM This script builds and signs the Windows packages on Gitlab
ECHO "Start Time"
TIME /T
REM List currently used cygwin and target folders for debugging / maintenance purposes
ECHO "Currently used cygwin folders"
DIR C:\cygwin*
ECHO "Currently used target folders"
DIR C:\coq*
if %ARCH% == 32 (
SET ARCHLONG=i686
SET CYGROOT=C:\cygwin
SET SETUP=setup-x86.exe
)
if %ARCH% == 64 (
SET ARCHLONG=x86_64
SET CYGROOT=C:\cygwin64
SET SETUP=setup-x86_64.exe
)
SET DESTCOQ=C:\coq%ARCH%_inst
CALL :MakeUniqueFolder %CYGROOT% CYGROOT
CALL :MakeUniqueFolder %DESTCOQ% DESTCOQ
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://www.cygwin.com/%SETUP%', '%SETUP%')"
SET CYGCACHE=%CYGROOT%\var\cache\setup
SET CI_PROJECT_DIR_MFMT=%CI_PROJECT_DIR:\=/%
SET CI_PROJECT_DIR_CFMT=%CI_PROJECT_DIR_MFMT:C:/=/cygdrive/c/%
SET COQREGTESTING=Y
SET PATH=%PATH%;C:\Program Files\7-Zip\;C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
if exist %CYGROOT%\build\ rd /s /q %CYGROOT%\build
if exist %DESTCOQ%\ rd /s /q %DESTCOQ%
call %CI_PROJECT_DIR%\dev\build\windows\MakeCoq_MinGW.bat -threads=1 ^
-arch=%ARCH% -installer=Y -coqver=%CI_PROJECT_DIR_CFMT% ^
-destcyg=%CYGROOT% -destcoq=%DESTCOQ% -cygcache=%CYGCACHE% ^
-addon=bignums ^
-addon=equations ^
-addon=ltac2 ^
-addon=mtac2 ^
-addon=mathcomp ^
-addon=menhir ^
-addon=menhirlib ^
-addon=compcert ^
-addon=vst ^
-addon=aactactics ^
-addon=extlib ^
-addon=quickchick ^
-addon=coquelicot ^
-make=N ^
-setup %CI_PROJECT_DIR%\%SETUP% || GOTO ErrorCopyLogFilesAndExit
ECHO "Start Artifact Creation"
TIME /T
mkdir artifacts
CALL :CopyLogFiles
copy "%CYGROOT%\build\coq-local\dev\nsis\*.exe" artifacts || GOTO ErrorExit
REM The open source archive is only required for release builds
IF DEFINED WIN_CERTIFICATE_PATH (
7z a artifacts\coq-opensource-archive-windows-%ARCHLONG%.zip %CYGROOT%\build\tarballs\* || GOTO ErrorExit
) ELSE (
REM In non release builds, create a dummy file
ECHO "This is not a release build - open source archive not created / uploaded" > artifacts\coq-opensource-info.txt
)
REM DO NOT echo the signing command below, as this would leak secrets in the logs
IF DEFINED WIN_CERTIFICATE_PATH (
IF DEFINED WIN_CERTIFICATE_PASSWORD (
ECHO Signing package
@signtool sign /f %WIN_CERTIFICATE_PATH% /p %WIN_CERTIFICATE_PASSWORD% dev\nsis\*.exe
signtool verify /pa dev\nsis\*.exe
)
)
ECHO "Finished Artifact Creation"
TIME /T
CALL :CleanupFolders
ECHO "Finished Cleanup"
TIME /T
GOTO :EOF
:CopyLogFiles
ECHO Copy log files for artifact upload
MKDIR artifacts\buildlogs
COPY %CYGROOT%\build\buildlogs\* artifacts\buildlogs
MKDIR artifacts\filelists
COPY %CYGROOT%\build\filelists\* artifacts\filelists
MKDIR artifacts\flagfiles
COPY %CYGROOT%\build\flagfiles\* artifacts\flagfiles
GOTO :EOF
:CleanupFolders
ECHO "Cleaning %CYGROOT%"
DEL /S /F /Q "%CYGROOT%" > NUL
ECHO "Cleaning %DESTCOQ%"
DEL /S /F /Q "%DESTCOQ%" > NUL
GOTO :EOF
:MakeUniqueFolder
REM Create a uniquely named folder
REM This script is safe because folder creation is atomic - either we create it or fail
REM %1 = base path or directory (_%RANDOM%_%RANDOM% is appended to this)
REM %2 = name of the variable which receives the unique folder name
SET "UNIQUENAME=%1_%RANDOM%_%RANDOM%"
MKDIR "%UNIQUENAME%"
IF ERRORLEVEL 1 GOTO :MakeUniqueFolder
SET "%2=%UNIQUENAME%"
GOTO :EOF
:ErrorCopyLogFilesAndExit
CALL :CopyLogFiles
REM fall through
:ErrorExit
CALL :CleanupFolders
ECHO ERROR %0 failed
EXIT /b 1
|