mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Configure github actions
This commit is contained in:
		
				
					committed by
					
						 Arseniy Shestakov
						Arseniy Shestakov
					
				
			
			
				
	
			
			
			
						parent
						
							2669aa446e
						
					
				
				
					commit
					6d8373a473
				
			
							
								
								
									
										102
									
								
								.github/workflows/github.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								.github/workflows/github.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| name: CMake | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|   pull_request: | ||||
|     branches: [ develop ] | ||||
|  | ||||
| env: | ||||
|   # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | ||||
|   BUILD_TYPE: Release | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - platform: linux | ||||
|             os: ubuntu-20.04 | ||||
|             cc: clang-10 | ||||
|             cxx: clang++-10 | ||||
|             test: 0 | ||||
|           - platform: linux | ||||
|             os: ubuntu-20.04 | ||||
|             cc: gcc-9 | ||||
|             cxx: g++-9 | ||||
|             test: 0 | ||||
|           - platform: mac | ||||
|             os: macos-latest | ||||
|             test: 0 | ||||
|           - platform: mxe | ||||
|             os: ubuntu-20.04 | ||||
|             mxe: i686-w64-mingw32.shared | ||||
|             test: 0 | ||||
|              | ||||
|     runs-on: ${{ matrix.os }} | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|  | ||||
|     - name: Dependencies | ||||
|       run: source ${{github.workspace}}/CI/${{matrix.platform}}/before_install.sh | ||||
|       env: | ||||
|         MXE_TARGET: ${{ matrix.mxe }} | ||||
|          | ||||
|     - name: Git branch name | ||||
|       id: git-branch-name | ||||
|       uses: EthanSK/git-branch-name-action@v1 | ||||
|  | ||||
|     - name: Build Number | ||||
|       run: | | ||||
|         source ${{github.workspace}}/CI/get_package_name.sh | ||||
|         echo VCMI_PACKAGE_FILE_NAME="$VCMI_PACKAGE_FILE_NAME" >> $GITHUB_ENV | ||||
|         echo VCMI_PACKAGE_NAME_SUFFIX="$VCMI_PACKAGE_NAME_SUFFIX" >> $GITHUB_ENV | ||||
|       env: | ||||
|         PULL_REQUEST: ${{ github.event.pull_request.number }} | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: | | ||||
|         mkdir ${{github.workspace}}/build | ||||
|         cd ${{github.workspace}}/build | ||||
|         cmake -G Ninja .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | ||||
|             -DENABLE_TEST=${{matrix.test}} \ | ||||
|             -DPACKAGE_NAME_SUFFIX:STRING="$VCMI_PACKAGE_NAME_SUFFIX" \ | ||||
|             -DPACKAGE_FILE_NAME:STRING="$VCMI_PACKAGE_FILE_NAME" | ||||
|       env: | ||||
|         CC: ${{ matrix.cc }} | ||||
|         CXX: ${{ matrix.cxx }} | ||||
|  | ||||
|     - name: Build | ||||
|       run: | | ||||
|         cd ${{github.workspace}}/build | ||||
|         ninja | ||||
|  | ||||
|     - name: Test | ||||
|       run: | | ||||
|         cd ${{github.workspace}}/build | ||||
|         ctest -C Release -V | ||||
|       if: ${{ matrix.test == 1 }} | ||||
|    | ||||
|     - name: Upload build | ||||
|       id: cpack | ||||
|       run: | | ||||
|         cd ${{github.workspace}}/build | ||||
|         source ${{github.workspace}}/CI/${{matrix.platform}}/upload_package.sh | ||||
|       env: | ||||
|         DEPLOY_RSA: ${{ secrets.DEPLOY_RSA }} | ||||
|          | ||||
|     - name: Additional logs | ||||
|       if: ${{ failure() && steps.cpack.outcome == 'failure' && matrix.platform == 'mxe' }} | ||||
|       run: | | ||||
|         cat ${{github.workspace}}/build/_CPack_Packages/win32/NSIS/project.nsi | ||||
|         cat ${{github.workspace}}/build/_CPack_Packages/win32/NSIS/NSISOutput.log | ||||
|          | ||||
|     - uses: act10ns/slack@v1 | ||||
|       with: | ||||
|         status: ${{ job.status }} | ||||
|         channel: '#notifications' | ||||
|       env: | ||||
|         SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | ||||
|       if: always() | ||||
							
								
								
									
										973
									
								
								CI/NSIS.template.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										973
									
								
								CI/NSIS.template.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,973 @@ | ||||
| ; CPack install script designed for a nmake build | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; You must define these values | ||||
|  | ||||
|   !define VERSION "@CPACK_PACKAGE_VERSION@" | ||||
|   !define PATCH  "@CPACK_PACKAGE_VERSION_PATCH@" | ||||
|   !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Variables | ||||
|  | ||||
|   Var MUI_TEMP | ||||
|   Var STARTMENU_FOLDER | ||||
|   Var SV_ALLUSERS | ||||
|   Var START_MENU | ||||
|   Var DO_NOT_ADD_TO_PATH | ||||
|   Var ADD_TO_PATH_ALL_USERS | ||||
|   Var ADD_TO_PATH_CURRENT_USER | ||||
|   Var INSTALL_DESKTOP | ||||
|   Var IS_DEFAULT_INSTALLDIR | ||||
| ;-------------------------------- | ||||
| ;Include Modern UI | ||||
|  | ||||
|   Unicode True | ||||
|   !include "MUI.nsh" | ||||
|  | ||||
|   ;Default installation folder | ||||
|   InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;General | ||||
|  | ||||
|   ;Name and file | ||||
|   Name "@CPACK_NSIS_PACKAGE_NAME@" | ||||
|   OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" | ||||
|  | ||||
|   ;Set compression | ||||
|   SetCompressor @CPACK_NSIS_COMPRESSOR@ | ||||
|  | ||||
|   ;Require administrator access | ||||
|   RequestExecutionLevel admin | ||||
|  | ||||
| @CPACK_NSIS_DEFINES@ | ||||
|  | ||||
|   !include Sections.nsh | ||||
|  | ||||
| ;--- Component support macros: --- | ||||
| ; The code for the add/remove functionality is from: | ||||
| ;   http://nsis.sourceforge.net/Add/Remove_Functionality | ||||
| ; It has been modified slightly and extended to provide | ||||
| ; inter-component dependencies. | ||||
| Var AR_SecFlags | ||||
| Var AR_RegFlags | ||||
| @CPACK_NSIS_SECTION_SELECTED_VARS@ | ||||
|  | ||||
| ; Loads the "selected" flag for the section named SecName into the | ||||
| ; variable VarName. | ||||
| !macro LoadSectionSelectedIntoVar SecName VarName | ||||
|  SectionGetFlags ${${SecName}} $${VarName} | ||||
|  IntOp $${VarName} $${VarName} & ${SF_SELECTED}  ;Turn off all other bits | ||||
| !macroend | ||||
|  | ||||
| ; Loads the value of a variable... can we get around this? | ||||
| !macro LoadVar VarName | ||||
|   IntOp $R0 0 + $${VarName} | ||||
| !macroend | ||||
|  | ||||
| ; Sets the value of a variable | ||||
| !macro StoreVar VarName IntValue | ||||
|   IntOp $${VarName} 0 + ${IntValue} | ||||
| !macroend | ||||
|  | ||||
| !macro InitSection SecName | ||||
|   ;  This macro reads component installed flag from the registry and | ||||
|   ;changes checked state of the section on the components page. | ||||
|   ;Input: section index constant name specified in Section command. | ||||
|  | ||||
|   ClearErrors | ||||
|   ;Reading component status from registry | ||||
|   ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed" | ||||
|   IfErrors "default_${SecName}" | ||||
|     ;Status will stay default if registry value not found | ||||
|     ;(component was never installed) | ||||
|   IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits | ||||
|   SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading default section flags | ||||
|   IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE  ;Turn lowest (enabled) bit off | ||||
|   IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags      ;Change lowest bit | ||||
|  | ||||
|   ; Note whether this component was installed before | ||||
|   !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags | ||||
|   IntOp $R0 $AR_RegFlags & $AR_RegFlags | ||||
|  | ||||
|   ;Writing modified flags | ||||
|   SectionSetFlags ${${SecName}} $AR_SecFlags | ||||
|  | ||||
|  "default_${SecName}:" | ||||
|  !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected | ||||
| !macroend | ||||
|  | ||||
| !macro FinishSection SecName | ||||
|   ;  This macro reads section flag set by user and removes the section | ||||
|   ;if it is not selected. | ||||
|   ;Then it writes component installed flag to registry | ||||
|   ;Input: section index constant name specified in Section command. | ||||
|  | ||||
|   SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading section flags | ||||
|   ;Checking lowest bit: | ||||
|   IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED} | ||||
|   IntCmp $AR_SecFlags 1 "leave_${SecName}" | ||||
|     ;Section is not selected: | ||||
|     ;Calling Section uninstall macro and writing zero installed flag | ||||
|     !insertmacro "Remove_${${SecName}}" | ||||
|     WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ | ||||
|   "Installed" 0 | ||||
|     Goto "exit_${SecName}" | ||||
|  | ||||
|  "leave_${SecName}:" | ||||
|     ;Section is selected: | ||||
|     WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ | ||||
|   "Installed" 1 | ||||
|  | ||||
|  "exit_${SecName}:" | ||||
| !macroend | ||||
|  | ||||
| !macro RemoveSection_CPack SecName | ||||
|   ;  This macro is used to call section's Remove_... macro | ||||
|   ;from the uninstaller. | ||||
|   ;Input: section index constant name specified in Section command. | ||||
|  | ||||
|   !insertmacro "Remove_${${SecName}}" | ||||
| !macroend | ||||
|  | ||||
| ; Determine whether the selection of SecName changed | ||||
| !macro MaybeSelectionChanged SecName | ||||
|   !insertmacro LoadVar ${SecName}_selected | ||||
|   SectionGetFlags ${${SecName}} $R1 | ||||
|   IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits | ||||
|  | ||||
|   ; See if the status has changed: | ||||
|   IntCmp $R0 $R1 "${SecName}_unchanged" | ||||
|   !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected | ||||
|  | ||||
|   IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected" | ||||
|   !insertmacro "Deselect_required_by_${SecName}" | ||||
|   goto "${SecName}_unchanged" | ||||
|  | ||||
|   "${SecName}_was_selected:" | ||||
|   !insertmacro "Select_${SecName}_depends" | ||||
|  | ||||
|   "${SecName}_unchanged:" | ||||
| !macroend | ||||
| ;--- End of Add/Remove macros --- | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Interface Settings | ||||
|  | ||||
|   !define MUI_HEADERIMAGE | ||||
|   !define MUI_ABORTWARNING | ||||
|  | ||||
| ;---------------------------------------- | ||||
| ; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" | ||||
| ;---------------------------------------- | ||||
| !verbose 3 | ||||
| !include "WinMessages.NSH" | ||||
| !verbose 4 | ||||
| ;==================================================== | ||||
| ; get_NT_environment | ||||
| ;     Returns: the selected environment | ||||
| ;     Output : head of the stack | ||||
| ;==================================================== | ||||
| !macro select_NT_profile UN | ||||
| Function ${UN}select_NT_profile | ||||
|    StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single | ||||
|       DetailPrint "Selected environment for all users" | ||||
|       Push "all" | ||||
|       Return | ||||
|    environment_single: | ||||
|       DetailPrint "Selected environment for current user only." | ||||
|       Push "current" | ||||
|       Return | ||||
| FunctionEnd | ||||
| !macroend | ||||
| !insertmacro select_NT_profile "" | ||||
| !insertmacro select_NT_profile "un." | ||||
| ;---------------------------------------------------- | ||||
| !define NT_current_env 'HKCU "Environment"' | ||||
| !define NT_all_env     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' | ||||
|  | ||||
| !ifndef WriteEnvStr_RegKey | ||||
|   !ifdef ALL_USERS | ||||
|     !define WriteEnvStr_RegKey \ | ||||
|        'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' | ||||
|   !else | ||||
|     !define WriteEnvStr_RegKey 'HKCU "Environment"' | ||||
|   !endif | ||||
| !endif | ||||
|  | ||||
| ; AddToPath - Adds the given dir to the search path. | ||||
| ;        Input - head of the stack | ||||
| ;        Note - Win9x systems requires reboot | ||||
|  | ||||
| Function AddToPath | ||||
|   Exch $0 | ||||
|   Push $1 | ||||
|   Push $2 | ||||
|   Push $3 | ||||
|  | ||||
|   # don't add if the path doesn't exist | ||||
|   IfFileExists "$0\*.*" "" AddToPath_done | ||||
|  | ||||
|   ReadEnvStr $1 PATH | ||||
|   ; if the path is too long for a NSIS variable NSIS will return a 0 | ||||
|   ; length string.  If we find that, then warn and skip any path | ||||
|   ; modification as it will trash the existing path. | ||||
|   StrLen $2 $1 | ||||
|   IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done | ||||
|     CheckPathLength_ShowPathWarning: | ||||
|     Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!" | ||||
|     Goto AddToPath_done | ||||
|   CheckPathLength_Done: | ||||
|   Push "$1;" | ||||
|   Push "$0;" | ||||
|   Call StrStr | ||||
|   Pop $2 | ||||
|   StrCmp $2 "" "" AddToPath_done | ||||
|   Push "$1;" | ||||
|   Push "$0\;" | ||||
|   Call StrStr | ||||
|   Pop $2 | ||||
|   StrCmp $2 "" "" AddToPath_done | ||||
|   GetFullPathName /SHORT $3 $0 | ||||
|   Push "$1;" | ||||
|   Push "$3;" | ||||
|   Call StrStr | ||||
|   Pop $2 | ||||
|   StrCmp $2 "" "" AddToPath_done | ||||
|   Push "$1;" | ||||
|   Push "$3\;" | ||||
|   Call StrStr | ||||
|   Pop $2 | ||||
|   StrCmp $2 "" "" AddToPath_done | ||||
|  | ||||
|   Call IsNT | ||||
|   Pop $1 | ||||
|   StrCmp $1 1 AddToPath_NT | ||||
|     ; Not on NT | ||||
|     StrCpy $1 $WINDIR 2 | ||||
|     FileOpen $1 "$1\autoexec.bat" a | ||||
|     FileSeek $1 -1 END | ||||
|     FileReadByte $1 $2 | ||||
|     IntCmp $2 26 0 +2 +2 # DOS EOF | ||||
|       FileSeek $1 -1 END # write over EOF | ||||
|     FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" | ||||
|     FileClose $1 | ||||
|     SetRebootFlag true | ||||
|     Goto AddToPath_done | ||||
|  | ||||
|   AddToPath_NT: | ||||
|     StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey | ||||
|       ReadRegStr $1 ${NT_current_env} "PATH" | ||||
|       Goto DoTrim | ||||
|     ReadAllKey: | ||||
|       ReadRegStr $1 ${NT_all_env} "PATH" | ||||
|     DoTrim: | ||||
|     StrCmp $1 "" AddToPath_NTdoIt | ||||
|       Push $1 | ||||
|       Call Trim | ||||
|       Pop $1 | ||||
|       StrCpy $0 "$1;$0" | ||||
|     AddToPath_NTdoIt: | ||||
|       StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey | ||||
|         WriteRegExpandStr ${NT_current_env} "PATH" $0 | ||||
|         Goto DoSend | ||||
|       WriteAllKey: | ||||
|         WriteRegExpandStr ${NT_all_env} "PATH" $0 | ||||
|       DoSend: | ||||
|       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 | ||||
|  | ||||
|   AddToPath_done: | ||||
|     Pop $3 | ||||
|     Pop $2 | ||||
|     Pop $1 | ||||
|     Pop $0 | ||||
| FunctionEnd | ||||
|  | ||||
|  | ||||
| ; RemoveFromPath - Remove a given dir from the path | ||||
| ;     Input: head of the stack | ||||
|  | ||||
| Function un.RemoveFromPath | ||||
|   Exch $0 | ||||
|   Push $1 | ||||
|   Push $2 | ||||
|   Push $3 | ||||
|   Push $4 | ||||
|   Push $5 | ||||
|   Push $6 | ||||
|  | ||||
|   IntFmt $6 "%c" 26 # DOS EOF | ||||
|  | ||||
|   Call un.IsNT | ||||
|   Pop $1 | ||||
|   StrCmp $1 1 unRemoveFromPath_NT | ||||
|     ; Not on NT | ||||
|     StrCpy $1 $WINDIR 2 | ||||
|     FileOpen $1 "$1\autoexec.bat" r | ||||
|     GetTempFileName $4 | ||||
|     FileOpen $2 $4 w | ||||
|     GetFullPathName /SHORT $0 $0 | ||||
|     StrCpy $0 "SET PATH=%PATH%;$0" | ||||
|     Goto unRemoveFromPath_dosLoop | ||||
|  | ||||
|     unRemoveFromPath_dosLoop: | ||||
|       FileRead $1 $3 | ||||
|       StrCpy $5 $3 1 -1 # read last char | ||||
|       StrCmp $5 $6 0 +2 # if DOS EOF | ||||
|         StrCpy $3 $3 -1 # remove DOS EOF so we can compare | ||||
|       StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine | ||||
|       StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine | ||||
|       StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine | ||||
|       StrCmp $3 "" unRemoveFromPath_dosLoopEnd | ||||
|       FileWrite $2 $3 | ||||
|       Goto unRemoveFromPath_dosLoop | ||||
|       unRemoveFromPath_dosLoopRemoveLine: | ||||
|         SetRebootFlag true | ||||
|         Goto unRemoveFromPath_dosLoop | ||||
|  | ||||
|     unRemoveFromPath_dosLoopEnd: | ||||
|       FileClose $2 | ||||
|       FileClose $1 | ||||
|       StrCpy $1 $WINDIR 2 | ||||
|       Delete "$1\autoexec.bat" | ||||
|       CopyFiles /SILENT $4 "$1\autoexec.bat" | ||||
|       Delete $4 | ||||
|       Goto unRemoveFromPath_done | ||||
|  | ||||
|   unRemoveFromPath_NT: | ||||
|     StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey | ||||
|       ReadRegStr $1 ${NT_current_env} "PATH" | ||||
|       Goto unDoTrim | ||||
|     unReadAllKey: | ||||
|       ReadRegStr $1 ${NT_all_env} "PATH" | ||||
|     unDoTrim: | ||||
|     StrCpy $5 $1 1 -1 # copy last char | ||||
|     StrCmp $5 ";" +2 # if last char != ; | ||||
|       StrCpy $1 "$1;" # append ; | ||||
|     Push $1 | ||||
|     Push "$0;" | ||||
|     Call un.StrStr ; Find `$0;` in $1 | ||||
|     Pop $2 ; pos of our dir | ||||
|     StrCmp $2 "" unRemoveFromPath_done | ||||
|       ; else, it is in path | ||||
|       # $0 - path to add | ||||
|       # $1 - path var | ||||
|       StrLen $3 "$0;" | ||||
|       StrLen $4 $2 | ||||
|       StrCpy $5 $1 -$4 # $5 is now the part before the path to remove | ||||
|       StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove | ||||
|       StrCpy $3 $5$6 | ||||
|  | ||||
|       StrCpy $5 $3 1 -1 # copy last char | ||||
|       StrCmp $5 ";" 0 +2 # if last char == ; | ||||
|         StrCpy $3 $3 -1 # remove last char | ||||
|  | ||||
|       StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey | ||||
|         WriteRegExpandStr ${NT_current_env} "PATH" $3 | ||||
|         Goto unDoSend | ||||
|       unWriteAllKey: | ||||
|         WriteRegExpandStr ${NT_all_env} "PATH" $3 | ||||
|       unDoSend: | ||||
|       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 | ||||
|  | ||||
|   unRemoveFromPath_done: | ||||
|     Pop $6 | ||||
|     Pop $5 | ||||
|     Pop $4 | ||||
|     Pop $3 | ||||
|     Pop $2 | ||||
|     Pop $1 | ||||
|     Pop $0 | ||||
| FunctionEnd | ||||
|  | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ; Uninstall sutff | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
|  | ||||
| ########################################### | ||||
| #            Utility Functions            # | ||||
| ########################################### | ||||
|  | ||||
| ;==================================================== | ||||
| ; IsNT - Returns 1 if the current system is NT, 0 | ||||
| ;        otherwise. | ||||
| ;     Output: head of the stack | ||||
| ;==================================================== | ||||
| ; IsNT | ||||
| ; no input | ||||
| ; output, top of the stack = 1 if NT or 0 if not | ||||
| ; | ||||
| ; Usage: | ||||
| ;   Call IsNT | ||||
| ;   Pop $R0 | ||||
| ;  ($R0 at this point is 1 or 0) | ||||
|  | ||||
| !macro IsNT un | ||||
| Function ${un}IsNT | ||||
|   Push $0 | ||||
|   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion | ||||
|   StrCmp $0 "" 0 IsNT_yes | ||||
|   ; we are not NT. | ||||
|   Pop $0 | ||||
|   Push 0 | ||||
|   Return | ||||
|  | ||||
|   IsNT_yes: | ||||
|     ; NT!!! | ||||
|     Pop $0 | ||||
|     Push 1 | ||||
| FunctionEnd | ||||
| !macroend | ||||
| !insertmacro IsNT "" | ||||
| !insertmacro IsNT "un." | ||||
|  | ||||
| ; StrStr | ||||
| ; input, top of stack = string to search for | ||||
| ;        top of stack-1 = string to search in | ||||
| ; output, top of stack (replaces with the portion of the string remaining) | ||||
| ; modifies no other variables. | ||||
| ; | ||||
| ; Usage: | ||||
| ;   Push "this is a long ass string" | ||||
| ;   Push "ass" | ||||
| ;   Call StrStr | ||||
| ;   Pop $R0 | ||||
| ;  ($R0 at this point is "ass string") | ||||
|  | ||||
| !macro StrStr un | ||||
| Function ${un}StrStr | ||||
| Exch $R1 ; st=haystack,old$R1, $R1=needle | ||||
|   Exch    ; st=old$R1,haystack | ||||
|   Exch $R2 ; st=old$R1,old$R2, $R2=haystack | ||||
|   Push $R3 | ||||
|   Push $R4 | ||||
|   Push $R5 | ||||
|   StrLen $R3 $R1 | ||||
|   StrCpy $R4 0 | ||||
|   ; $R1=needle | ||||
|   ; $R2=haystack | ||||
|   ; $R3=len(needle) | ||||
|   ; $R4=cnt | ||||
|   ; $R5=tmp | ||||
|   loop: | ||||
|     StrCpy $R5 $R2 $R3 $R4 | ||||
|     StrCmp $R5 $R1 done | ||||
|     StrCmp $R5 "" done | ||||
|     IntOp $R4 $R4 + 1 | ||||
|     Goto loop | ||||
| done: | ||||
|   StrCpy $R1 $R2 "" $R4 | ||||
|   Pop $R5 | ||||
|   Pop $R4 | ||||
|   Pop $R3 | ||||
|   Pop $R2 | ||||
|   Exch $R1 | ||||
| FunctionEnd | ||||
| !macroend | ||||
| !insertmacro StrStr "" | ||||
| !insertmacro StrStr "un." | ||||
|  | ||||
| Function Trim ; Added by Pelaca | ||||
| 	Exch $R1 | ||||
| 	Push $R2 | ||||
| Loop: | ||||
| 	StrCpy $R2 "$R1" 1 -1 | ||||
| 	StrCmp "$R2" " " RTrim | ||||
| 	StrCmp "$R2" "$\n" RTrim | ||||
| 	StrCmp "$R2" "$\r" RTrim | ||||
| 	StrCmp "$R2" ";" RTrim | ||||
| 	GoTo Done | ||||
| RTrim: | ||||
| 	StrCpy $R1 "$R1" -1 | ||||
| 	Goto Loop | ||||
| Done: | ||||
| 	Pop $R2 | ||||
| 	Exch $R1 | ||||
| FunctionEnd | ||||
|  | ||||
| Function ConditionalAddToRegisty | ||||
|   Pop $0 | ||||
|   Pop $1 | ||||
|   StrCmp "$0" "" ConditionalAddToRegisty_EmptyString | ||||
|     WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \ | ||||
|     "$1" "$0" | ||||
|     ;MessageBox MB_OK "Set Registry: '$1' to '$0'" | ||||
|     DetailPrint "Set install registry entry: '$1' to '$0'" | ||||
|   ConditionalAddToRegisty_EmptyString: | ||||
| FunctionEnd | ||||
|  | ||||
| ;-------------------------------- | ||||
|  | ||||
| !ifdef CPACK_USES_DOWNLOAD | ||||
| Function DownloadFile | ||||
|     IfFileExists $INSTDIR\* +2 | ||||
|     CreateDirectory $INSTDIR | ||||
|     Pop $0 | ||||
|  | ||||
|     ; Skip if already downloaded | ||||
|     IfFileExists $INSTDIR\$0 0 +2 | ||||
|     Return | ||||
|  | ||||
|     StrCpy $1 "@CPACK_DOWNLOAD_SITE@" | ||||
|  | ||||
|   try_again: | ||||
|     NSISdl::download "$1/$0" "$INSTDIR\$0" | ||||
|  | ||||
|     Pop $1 | ||||
|     StrCmp $1 "success" success | ||||
|     StrCmp $1 "Cancelled" cancel | ||||
|     MessageBox MB_OK "Download failed: $1" | ||||
|   cancel: | ||||
|     Return | ||||
|   success: | ||||
| FunctionEnd | ||||
| !endif | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; Installation types | ||||
| @CPACK_NSIS_INSTALLATION_TYPES@ | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; Component sections | ||||
| @CPACK_NSIS_COMPONENT_SECTIONS@ | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; Define some macro setting for the gui | ||||
| @CPACK_NSIS_INSTALLER_MUI_ICON_CODE@ | ||||
| @CPACK_NSIS_INSTALLER_ICON_CODE@ | ||||
| @CPACK_NSIS_INSTALLER_MUI_WELCOMEFINISH_CODE@ | ||||
| @CPACK_NSIS_INSTALLER_MUI_UNWELCOMEFINISH_CODE@ | ||||
| @CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@ | ||||
| @CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@ | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Pages | ||||
|   !insertmacro MUI_PAGE_WELCOME | ||||
|  | ||||
|   !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" | ||||
|   Page custom InstallOptionsPage | ||||
|   !insertmacro MUI_PAGE_DIRECTORY | ||||
|  | ||||
|   ;Start Menu Folder Page Configuration | ||||
|   !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" | ||||
|   !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" | ||||
|   !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" | ||||
|   !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER | ||||
|  | ||||
|   @CPACK_NSIS_PAGE_COMPONENTS@ | ||||
|  | ||||
|   !insertmacro MUI_PAGE_INSTFILES | ||||
|   !insertmacro MUI_PAGE_FINISH | ||||
|  | ||||
|   !insertmacro MUI_UNPAGE_CONFIRM | ||||
|   !insertmacro MUI_UNPAGE_INSTFILES | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Languages | ||||
|  | ||||
|   !insertmacro MUI_LANGUAGE "English" ;first language is the default language | ||||
|   !insertmacro MUI_LANGUAGE "Albanian" | ||||
|   !insertmacro MUI_LANGUAGE "Arabic" | ||||
|   !insertmacro MUI_LANGUAGE "Basque" | ||||
|   !insertmacro MUI_LANGUAGE "Belarusian" | ||||
|   !insertmacro MUI_LANGUAGE "Bosnian" | ||||
|   !insertmacro MUI_LANGUAGE "Breton" | ||||
|   !insertmacro MUI_LANGUAGE "Bulgarian" | ||||
|   !insertmacro MUI_LANGUAGE "Croatian" | ||||
|   !insertmacro MUI_LANGUAGE "Czech" | ||||
|   !insertmacro MUI_LANGUAGE "Danish" | ||||
|   !insertmacro MUI_LANGUAGE "Dutch" | ||||
|   !insertmacro MUI_LANGUAGE "Estonian" | ||||
|   !insertmacro MUI_LANGUAGE "Farsi" | ||||
|   !insertmacro MUI_LANGUAGE "Finnish" | ||||
|   !insertmacro MUI_LANGUAGE "French" | ||||
|   !insertmacro MUI_LANGUAGE "German" | ||||
|   !insertmacro MUI_LANGUAGE "Greek" | ||||
|   !insertmacro MUI_LANGUAGE "Hebrew" | ||||
|   !insertmacro MUI_LANGUAGE "Hungarian" | ||||
|   !insertmacro MUI_LANGUAGE "Icelandic" | ||||
|   !insertmacro MUI_LANGUAGE "Indonesian" | ||||
|   !insertmacro MUI_LANGUAGE "Irish" | ||||
|   !insertmacro MUI_LANGUAGE "Italian" | ||||
|   !insertmacro MUI_LANGUAGE "Japanese" | ||||
|   !insertmacro MUI_LANGUAGE "Korean" | ||||
|   !insertmacro MUI_LANGUAGE "Kurdish" | ||||
|   !insertmacro MUI_LANGUAGE "Latvian" | ||||
|   !insertmacro MUI_LANGUAGE "Lithuanian" | ||||
|   !insertmacro MUI_LANGUAGE "Luxembourgish" | ||||
|   !insertmacro MUI_LANGUAGE "Macedonian" | ||||
|   !insertmacro MUI_LANGUAGE "Malay" | ||||
|   !insertmacro MUI_LANGUAGE "Mongolian" | ||||
|   !insertmacro MUI_LANGUAGE "Norwegian" | ||||
|   !insertmacro MUI_LANGUAGE "Polish" | ||||
|   !insertmacro MUI_LANGUAGE "Portuguese" | ||||
|   !insertmacro MUI_LANGUAGE "PortugueseBR" | ||||
|   !insertmacro MUI_LANGUAGE "Romanian" | ||||
|   !insertmacro MUI_LANGUAGE "Russian" | ||||
|   !insertmacro MUI_LANGUAGE "Serbian" | ||||
|   !insertmacro MUI_LANGUAGE "SerbianLatin" | ||||
|   !insertmacro MUI_LANGUAGE "SimpChinese" | ||||
|   !insertmacro MUI_LANGUAGE "Slovak" | ||||
|   !insertmacro MUI_LANGUAGE "Slovenian" | ||||
|   !insertmacro MUI_LANGUAGE "Spanish" | ||||
|   !insertmacro MUI_LANGUAGE "Swedish" | ||||
|   !insertmacro MUI_LANGUAGE "Thai" | ||||
|   !insertmacro MUI_LANGUAGE "TradChinese" | ||||
|   !insertmacro MUI_LANGUAGE "Turkish" | ||||
|   !insertmacro MUI_LANGUAGE "Ukrainian" | ||||
|   !insertmacro MUI_LANGUAGE "Welsh" | ||||
|  | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Reserve Files | ||||
|  | ||||
|   ;These files should be inserted before other files in the data block | ||||
|   ;Keep these lines before any File command | ||||
|   ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA) | ||||
|  | ||||
|   ReserveFile "NSIS.InstallOptions.ini" | ||||
|   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Installer Sections | ||||
|  | ||||
| Section "-Core installation" | ||||
|   ;Use the entire tree produced by the INSTALL target.  Keep the | ||||
|   ;list of directories here in sync with the RMDir commands below. | ||||
|   SetOutPath "$INSTDIR" | ||||
|   @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@ | ||||
|   @CPACK_NSIS_FULL_INSTALL@ | ||||
|  | ||||
|   ;Store installation folder | ||||
|   WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR | ||||
|  | ||||
|   ;Create uninstaller | ||||
|   WriteUninstaller "$INSTDIR\Uninstall.exe" | ||||
|   Push "DisplayName" | ||||
|   Push "@CPACK_NSIS_DISPLAY_NAME@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "DisplayVersion" | ||||
|   Push "@CPACK_PACKAGE_VERSION@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "Publisher" | ||||
|   Push "@CPACK_PACKAGE_VENDOR@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "UninstallString" | ||||
|   Push "$INSTDIR\Uninstall.exe" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "NoRepair" | ||||
|   Push "1" | ||||
|   Call ConditionalAddToRegisty | ||||
|  | ||||
|   !ifdef CPACK_NSIS_ADD_REMOVE | ||||
|   ;Create add/remove functionality | ||||
|   Push "ModifyPath" | ||||
|   Push "$INSTDIR\AddRemove.exe" | ||||
|   Call ConditionalAddToRegisty | ||||
|   !else | ||||
|   Push "NoModify" | ||||
|   Push "1" | ||||
|   Call ConditionalAddToRegisty | ||||
|   !endif | ||||
|  | ||||
|   ; Optional registration | ||||
|   Push "DisplayIcon" | ||||
|   Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "HelpLink" | ||||
|   Push "@CPACK_NSIS_HELP_LINK@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "URLInfoAbout" | ||||
|   Push "@CPACK_NSIS_URL_INFO_ABOUT@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "Contact" | ||||
|   Push "@CPACK_NSIS_CONTACT@" | ||||
|   Call ConditionalAddToRegisty | ||||
|   !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State" | ||||
|   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application | ||||
|  | ||||
|   ;Create shortcuts | ||||
|   CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" | ||||
| @CPACK_NSIS_CREATE_ICONS@ | ||||
| @CPACK_NSIS_CREATE_ICONS_EXTRA@ | ||||
|   CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" | ||||
|  | ||||
|   ;Read a value from an InstallOptions INI file | ||||
|   !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" | ||||
|   !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" | ||||
|   !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" | ||||
|  | ||||
|   ; Write special uninstall registry entries | ||||
|   Push "StartMenu" | ||||
|   Push "$STARTMENU_FOLDER" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "DoNotAddToPath" | ||||
|   Push "$DO_NOT_ADD_TO_PATH" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "AddToPathAllUsers" | ||||
|   Push "$ADD_TO_PATH_ALL_USERS" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "AddToPathCurrentUser" | ||||
|   Push "$ADD_TO_PATH_CURRENT_USER" | ||||
|   Call ConditionalAddToRegisty | ||||
|   Push "InstallToDesktop" | ||||
|   Push "$INSTALL_DESKTOP" | ||||
|   Call ConditionalAddToRegisty | ||||
|  | ||||
|   !insertmacro MUI_STARTMENU_WRITE_END | ||||
|  | ||||
| @CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ | ||||
|  | ||||
| SectionEnd | ||||
|  | ||||
| Section "-Add to path" | ||||
|   Push $INSTDIR\bin | ||||
|   StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath | ||||
|   StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0 | ||||
|     Call AddToPath | ||||
|   doNotAddToPath: | ||||
| SectionEnd | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; Create custom pages | ||||
| Function InstallOptionsPage | ||||
|   !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@" | ||||
|   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" | ||||
|  | ||||
| FunctionEnd | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; determine admin versus local install | ||||
| Function un.onInit | ||||
|  | ||||
|   ClearErrors | ||||
|   UserInfo::GetName | ||||
|   IfErrors noLM | ||||
|   Pop $0 | ||||
|   UserInfo::GetAccountType | ||||
|   Pop $1 | ||||
|   StrCmp $1 "Admin" 0 +3 | ||||
|     SetShellVarContext all | ||||
|     ;MessageBox MB_OK 'User "$0" is in the Admin group' | ||||
|     Goto done | ||||
|   StrCmp $1 "Power" 0 +3 | ||||
|     SetShellVarContext all | ||||
|     ;MessageBox MB_OK 'User "$0" is in the Power Users group' | ||||
|     Goto done | ||||
|  | ||||
|   noLM: | ||||
|     ;Get installation folder from registry if available | ||||
|  | ||||
|   done: | ||||
|  | ||||
| FunctionEnd | ||||
|  | ||||
| ;--- Add/Remove callback functions: --- | ||||
| !macro SectionList MacroName | ||||
|   ;This macro used to perform operation on multiple sections. | ||||
|   ;List all of your components in following manner here. | ||||
| @CPACK_NSIS_COMPONENT_SECTION_LIST@ | ||||
| !macroend | ||||
|  | ||||
| Section -FinishComponents | ||||
|   ;Removes unselected components and writes component status to registry | ||||
|   !insertmacro SectionList "FinishSection" | ||||
|  | ||||
| !ifdef CPACK_NSIS_ADD_REMOVE | ||||
|   ; Get the name of the installer executable | ||||
|   System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' | ||||
|   StrCpy $R3 $R0 | ||||
|  | ||||
|   ; Strip off the last 13 characters, to see if we have AddRemove.exe | ||||
|   StrLen $R1 $R0 | ||||
|   IntOp $R1 $R0 - 13 | ||||
|   StrCpy $R2 $R0 13 $R1 | ||||
|   StrCmp $R2 "AddRemove.exe" addremove_installed | ||||
|  | ||||
|   ; We're not running AddRemove.exe, so install it | ||||
|   CopyFiles $R3 $INSTDIR\AddRemove.exe | ||||
|  | ||||
|   addremove_installed: | ||||
| !endif | ||||
| SectionEnd | ||||
| ;--- End of Add/Remove callback functions --- | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; Component dependencies | ||||
| Function .onSelChange | ||||
|   !insertmacro SectionList MaybeSelectionChanged | ||||
| FunctionEnd | ||||
|  | ||||
| ;-------------------------------- | ||||
| ;Uninstaller Section | ||||
|  | ||||
| Section "Uninstall" | ||||
|   ReadRegStr $START_MENU SHCTX \ | ||||
|    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu" | ||||
|   ;MessageBox MB_OK "Start menu is in: $START_MENU" | ||||
|   ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \ | ||||
|     "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath" | ||||
|   ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \ | ||||
|     "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers" | ||||
|   ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \ | ||||
|     "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser" | ||||
|   ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS" | ||||
|   ReadRegStr $INSTALL_DESKTOP SHCTX \ | ||||
|     "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop" | ||||
|   ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP " | ||||
|  | ||||
| @CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@ | ||||
|  | ||||
|   ;Remove files we installed. | ||||
|   ;Keep the list of directories here in sync with the File commands above. | ||||
| @CPACK_NSIS_DELETE_FILES@ | ||||
| @CPACK_NSIS_DELETE_DIRECTORIES@ | ||||
|  | ||||
| !ifdef CPACK_NSIS_ADD_REMOVE | ||||
|   ;Remove the add/remove program | ||||
|   Delete "$INSTDIR\AddRemove.exe" | ||||
| !endif | ||||
|  | ||||
|   ;Remove the uninstaller itself. | ||||
|   Delete "$INSTDIR\Uninstall.exe" | ||||
|   DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" | ||||
|  | ||||
|   ;Remove the installation directory if it is empty. | ||||
|   RMDir "$INSTDIR" | ||||
|  | ||||
|   ; Remove the registry entries. | ||||
|   DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" | ||||
|  | ||||
|   ; Removes all optional components | ||||
|   !insertmacro SectionList "RemoveSection_CPack" | ||||
|  | ||||
|   !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP | ||||
|  | ||||
|   Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" | ||||
| @CPACK_NSIS_DELETE_ICONS@ | ||||
| @CPACK_NSIS_DELETE_ICONS_EXTRA@ | ||||
|  | ||||
|   ;Delete empty start menu parent diretories | ||||
|   StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" | ||||
|  | ||||
|   startMenuDeleteLoop: | ||||
|     ClearErrors | ||||
|     RMDir $MUI_TEMP | ||||
|     GetFullPathName $MUI_TEMP "$MUI_TEMP\.." | ||||
|  | ||||
|     IfErrors startMenuDeleteLoopDone | ||||
|  | ||||
|     StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop | ||||
|   startMenuDeleteLoopDone: | ||||
|  | ||||
|   ; If the user changed the shortcut, then untinstall may not work. This should | ||||
|   ; try to fix it. | ||||
|   StrCpy $MUI_TEMP "$START_MENU" | ||||
|   Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" | ||||
| @CPACK_NSIS_DELETE_ICONS_EXTRA@ | ||||
|  | ||||
|   ;Delete empty start menu parent diretories | ||||
|   StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" | ||||
|  | ||||
|   secondStartMenuDeleteLoop: | ||||
|     ClearErrors | ||||
|     RMDir $MUI_TEMP | ||||
|     GetFullPathName $MUI_TEMP "$MUI_TEMP\.." | ||||
|  | ||||
|     IfErrors secondStartMenuDeleteLoopDone | ||||
|  | ||||
|     StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop | ||||
|   secondStartMenuDeleteLoopDone: | ||||
|  | ||||
|   DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" | ||||
|  | ||||
|   Push $INSTDIR\bin | ||||
|   StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0 | ||||
|     Call un.RemoveFromPath | ||||
|   doNotRemoveFromPath: | ||||
| SectionEnd | ||||
|  | ||||
| ;-------------------------------- | ||||
| ; determine admin versus local install | ||||
| ; Is install for "AllUsers" or "JustMe"? | ||||
| ; Default to "JustMe" - set to "AllUsers" if admin or on Win9x | ||||
| ; This function is used for the very first "custom page" of the installer. | ||||
| ; This custom page does not show up visibly, but it executes prior to the | ||||
| ; first visible page and sets up $INSTDIR properly... | ||||
| ; Choose different default installation folder based on SV_ALLUSERS... | ||||
| ; "Program Files" for AllUsers, "My Documents" for JustMe... | ||||
|  | ||||
| Function .onInit | ||||
|   StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst | ||||
|  | ||||
|   ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString" | ||||
|   StrCmp $0 "" inst | ||||
|  | ||||
|   MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \ | ||||
|   "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \ | ||||
|   /SD IDYES IDYES uninst IDNO inst | ||||
|   Abort | ||||
|  | ||||
| ;Run the uninstaller | ||||
| uninst: | ||||
|   ClearErrors | ||||
|   StrLen $2 "\Uninstall.exe" | ||||
|   StrCpy $3 $0 -$2 # remove "\Uninstall.exe" from UninstallString to get path | ||||
|   ExecWait '"$0" /S _?=$3' ;Do not copy the uninstaller to a temp file | ||||
|  | ||||
|   IfErrors uninst_failed inst | ||||
| uninst_failed: | ||||
|   MessageBox MB_OK|MB_ICONSTOP "Uninstall failed." | ||||
|   Abort | ||||
|  | ||||
|  | ||||
| inst: | ||||
|   ; Reads components status for registry | ||||
|   !insertmacro SectionList "InitSection" | ||||
|  | ||||
|   ; check to see if /D has been used to change | ||||
|   ; the install directory by comparing it to the | ||||
|   ; install directory that is expected to be the | ||||
|   ; default | ||||
|   StrCpy $IS_DEFAULT_INSTALLDIR 0 | ||||
|   StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2 | ||||
|     StrCpy $IS_DEFAULT_INSTALLDIR 1 | ||||
|  | ||||
|   StrCpy $SV_ALLUSERS "JustMe" | ||||
|   ; if default install dir then change the default | ||||
|   ; if it is installed for JustMe | ||||
|   StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 | ||||
|     StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@" | ||||
|  | ||||
|   ClearErrors | ||||
|   UserInfo::GetName | ||||
|   IfErrors noLM | ||||
|   Pop $0 | ||||
|   UserInfo::GetAccountType | ||||
|   Pop $1 | ||||
|   StrCmp $1 "Admin" 0 +4 | ||||
|     SetShellVarContext all | ||||
|     ;MessageBox MB_OK 'User "$0" is in the Admin group' | ||||
|     StrCpy $SV_ALLUSERS "AllUsers" | ||||
|     Goto done | ||||
|   StrCmp $1 "Power" 0 +4 | ||||
|     SetShellVarContext all | ||||
|     ;MessageBox MB_OK 'User "$0" is in the Power Users group' | ||||
|     StrCpy $SV_ALLUSERS "AllUsers" | ||||
|     Goto done | ||||
|  | ||||
|   noLM: | ||||
|     StrCpy $SV_ALLUSERS "AllUsers" | ||||
|     ;Get installation folder from registry if available | ||||
|  | ||||
|   done: | ||||
|   StrCmp $SV_ALLUSERS "AllUsers" 0 +3 | ||||
|     StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 | ||||
|       StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" | ||||
|  | ||||
|   StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage | ||||
|     !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini" | ||||
|  | ||||
|   noOptionsPage: | ||||
| FunctionEnd | ||||
							
								
								
									
										210
									
								
								CI/appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										210
									
								
								CI/appveyor.yml
									
									
									
									
									
								
							| @@ -1,105 +1,105 @@ | ||||
| # Common configuration for all branches | ||||
| version: 1.0.{build} | ||||
| max_jobs: 2 | ||||
| clone_depth: 10 | ||||
| clone_folder: c:\projects\vcmi\source | ||||
| install: | ||||
| - bash c:\projects\vcmi\source\CI\msvc\install.sh | ||||
| build_script: | ||||
| - cmd: c:\projects\vcmi\source\CI\msvc\build_script.bat | ||||
| artifacts: | ||||
| - path: build_$(VCMI_BUILD_PLATFORM)\*.exe | ||||
| notifications: | ||||
|   - provider: Slack | ||||
|     incoming_webhook: | ||||
|       secure: zxT3HTnxL744HiSv7ig7sjGL4LmJ8n3MsY8PEA/kinbVMkmcxrSgVBVkHV79RfSWSyq4oLMSRvMMpG8SuDWnf6oK/qvgaiAWfwwlCIiA7uQ= | ||||
|  | ||||
| # Branch-specific configuration | ||||
| for: | ||||
| # Extended configuration for toolchain_test branch | ||||
| - | ||||
|   branches: | ||||
|     only: | ||||
|       - toolchain_test | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: MSVS 2015 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2015 x86 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2015 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2015 x64 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x86 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2017 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x64 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
| # Special configuration for coverity_scan branch | ||||
| - | ||||
|   branches: | ||||
|     only: | ||||
|       - coverity_scan | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: Coverity - MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|         environment: | ||||
|     coverity_token: | ||||
|       secure: XNnpYevnZxGmXW1zLu+3js2S+pqfWPQmL26hVgOTBTI= | ||||
|     coverity_email: | ||||
|       secure: JDd5yXvYaq/yJEVjoadEhA== | ||||
|   build_script: | ||||
|     - cmd: c:\projects\vcmi\source\CI\msvc\coverity_build_script.bat | ||||
|   after_test: | ||||
|     - ps: c:\projects\vcmi\source\CI\msvc\coverity_upload_script.ps | ||||
|  | ||||
| # Default configuration for all other branches | ||||
| - | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
| # Common configuration for all branches | ||||
| version: 1.0.{build} | ||||
| max_jobs: 2 | ||||
| clone_depth: 10 | ||||
| clone_folder: c:\projects\vcmi\source | ||||
| install: | ||||
| - bash c:\projects\vcmi\source\CI\msvc\install.sh | ||||
| build_script: | ||||
| - cmd: c:\projects\vcmi\source\CI\msvc\build_script.bat | ||||
| artifacts: | ||||
| - path: build_$(VCMI_BUILD_PLATFORM)\*.exe | ||||
| notifications: | ||||
|   - provider: Slack | ||||
|     incoming_webhook: | ||||
|       secure: zxT3HTnxL744HiSv7ig7sjGL4LmJ8n3MsY8PEA/kinbVMkmcxrSgVBVkHV79RfSWSyq4oLMSRvMMpG8SuDWnf6oK/qvgaiAWfwwlCIiA7uQ= | ||||
|  | ||||
| # Branch-specific configuration | ||||
| for: | ||||
| # Extended configuration for toolchain_test branch | ||||
| - | ||||
|   branches: | ||||
|     only: | ||||
|       - toolchain_test | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: MSVS 2015 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2015 x86 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2015 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2015 x64 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 | ||||
|         VCMI_GENERATOR: Visual Studio 14 2015 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x86 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
|       - NAME: MSVS 2017 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x64 - Debug | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Debug | ||||
|  | ||||
| # Special configuration for coverity_scan branch | ||||
| - | ||||
|   branches: | ||||
|     only: | ||||
|       - coverity_scan | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: Coverity - MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|         environment: | ||||
|     coverity_token: | ||||
|       secure: XNnpYevnZxGmXW1zLu+3js2S+pqfWPQmL26hVgOTBTI= | ||||
|     coverity_email: | ||||
|       secure: JDd5yXvYaq/yJEVjoadEhA== | ||||
|   build_script: | ||||
|     - cmd: c:\projects\vcmi\source\CI\msvc\coverity_build_script.bat | ||||
|   after_test: | ||||
|     - ps: c:\projects\vcmi\source\CI\msvc\coverity_upload_script.ps | ||||
|  | ||||
| # Default configuration for all other branches | ||||
| - | ||||
|   environment: | ||||
|     matrix: | ||||
|       - NAME: MSVS 2017 x86 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 | ||||
|         VCMI_BUILD_PLATFORM: x86 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|       - NAME: MSVS 2017 x64 - Release | ||||
|         APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 | ||||
|         VCMI_GENERATOR: Visual Studio 15 2017 Win64 | ||||
|         VCMI_BUILD_PLATFORM: x64 | ||||
|         VCMI_BUILD_CONFIGURATION: Release | ||||
|   | ||||
| @@ -13,6 +13,13 @@ then | ||||
| 	TMP_BRANCH="$APPVEYOR_REPO_BRANCH" | ||||
| 	TMP_PRID="$APPVEYOR_PULL_REQUEST_NUMBER" | ||||
| 	TMP_COMMIT="$APPVEYOR_REPO_COMMIT" | ||||
| elif [ ! -z "${GITHUB_RUN_ID}" ]; | ||||
| then | ||||
| 	echo "Using Github environment variables!" | ||||
| 	TMP_JOBID="$GITHUB_RUN_ID" | ||||
| 	TMP_BRANCH=${GITHUB_REF#refs/heads/} | ||||
| 	TMP_PRID="$PULL_REQUEST" | ||||
| 	TMP_COMMIT=$(git rev-parse --short "$GITHUB_SHA") | ||||
| else | ||||
| 	echo "No Travir or AppVeyor environment variables found!" | ||||
| 	exit | ||||
|   | ||||
| @@ -1,26 +1,16 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| #new Clang | ||||
| sudo add-apt-repository --yes ppa:h-rayflood/llvm | ||||
| sudo apt-get update | ||||
|  | ||||
| #new SDL2 | ||||
| sudo add-apt-repository --yes ppa:zoogie/sdl2-snapshots | ||||
| # Boost | ||||
| wget -nv https://boostorg.jfrog.io/artifactory/main/release/1.66.0/source/boost_1_66_0.tar.gz | ||||
| tar xfz boost_1_66_0.tar.gz | ||||
| cd boost_1_66_0 | ||||
| ./bootstrap.sh --with-libraries=program_options,filesystem,system,thread,locale,date_time | ||||
| ./b2 | ||||
| sudo ./b2 install | ||||
|  | ||||
| #new Qt | ||||
| sudo add-apt-repository --yes ppa:beineri/opt-qt571-trusty | ||||
|  | ||||
| #new CMake | ||||
| sudo add-apt-repository --yes ppa:george-edison55/cmake-3.x | ||||
|  | ||||
| sudo apt-get update -qq | ||||
|  | ||||
| sudo apt-get install -qq $SUPPORT | ||||
| sudo apt-get install -qq $PACKAGE | ||||
| sudo apt-get install -qq cmake ninja-build libboost1.54-all-dev zlib1g-dev | ||||
| sudo apt-get install -qq libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev | ||||
| sudo apt-get install -qq libavformat-dev libswscale-dev | ||||
| sudo apt-get install -qq qt57declarative | ||||
|  | ||||
| #setup compiler | ||||
| source /opt/qt57/bin/qt57-env.sh | ||||
| export CC=${REAL_CC} CXX=${REAL_CXX} | ||||
| # Dependencies | ||||
| sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev | ||||
| sudo apt-get install qtbase5-dev | ||||
| sudo apt-get install ninja-build zlib1g-dev libavformat-dev libswscale-dev libtbb-dev | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| brew update | ||||
| brew install smpeg2 libpng freetype sdl2 sdl2_ttf sdl2_image qt5 ffmpeg ninja | ||||
| brew install sdl2_mixer | ||||
| brew install smpeg2 libpng freetype qt5 ffmpeg ninja boost tbb | ||||
| brew install sdl2 sdl2_ttf sdl2_image sdl2_mixer | ||||
|  | ||||
| export CMAKE_PREFIX_PATH="/usr/local/opt/qt5:$CMAKE_PREFIX_PATH" | ||||
| echo CMAKE_PREFIX_PATH="/usr/local/opt/qt5:$CMAKE_PREFIX_PATH" >> $GITHUB_ENV | ||||
|   | ||||
| @@ -1,14 +1,16 @@ | ||||
| #!/bin/sh | ||||
| if [ -z "$encrypted_1d30f79f8582_key" ]; | ||||
| if [ -z "$DEPLOY_RSA" ]; | ||||
| then | ||||
| 	# Due to security measures travis not expose encryption keys for PR from forks | ||||
| 	echo "Build generation is skipped for forks" | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
| cpack | ||||
|  | ||||
| touch /tmp/deploy_rsa | ||||
| echo "$DEPLOY_RSA" > /tmp/deploy_rsa | ||||
| chmod 600 /tmp/deploy_rsa | ||||
| openssl aes-256-cbc -K $encrypted_1d30f79f8582_key -iv $encrypted_1d30f79f8582_iv -in $TRAVIS_BUILD_DIR/CI/deploy_rsa.enc -out /tmp/deploy_rsa -d | ||||
|  | ||||
| eval "$(ssh-agent -s)" | ||||
| ssh-add /tmp/deploy_rsa | ||||
|  | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| sudo apt-get install -qq nsis ninja-build | ||||
|  | ||||
| # MXE repository was too slow for Travis far too often | ||||
| wget https://github.com/vcmi/vcmi-deps-mxe/releases/download/2018-02-10/mxe-$MXE_TARGET-2018-02-10.tar | ||||
| wget -nv https://github.com/vcmi/vcmi-deps-mxe/releases/download/2018-02-10/mxe-$MXE_TARGET-2018-02-10.tar | ||||
| tar -xvf mxe-$MXE_TARGET-2018-02-10.tar | ||||
| sudo dpkg -i mxe-*.deb | ||||
| sudo apt-get install -f --yes | ||||
| @@ -35,5 +35,7 @@ mxe-$MXE_TARGET-qtbase | ||||
| fi # Disable | ||||
|  | ||||
| # alias for CMake | ||||
| sudo mv /usr/bin/cmake /usr/bin/cmake.orig | ||||
| sudo ln -s /usr/lib/mxe/usr/bin/$MXE_TARGET-cmake /usr/bin/cmake | ||||
|  | ||||
| CMAKE_LOCATION=$(which cmake) | ||||
| sudo mv $CMAKE_LOCATION $CMAKE_LOCATION.orig | ||||
| sudo ln -s /usr/lib/mxe/usr/bin/$MXE_TARGET-cmake $CMAKE_LOCATION | ||||
|   | ||||
| @@ -1,15 +1,16 @@ | ||||
| #!/bin/sh | ||||
| if [ -z "$encrypted_1d30f79f8582_key" ]; | ||||
| if [ -z "$DEPLOY_RSA" ]; | ||||
| then | ||||
| 	# Due to security measures travis not expose encryption keys for PR from forks | ||||
| 	echo "Build generation is skipped for forks" | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
| cpack | ||||
|  | ||||
| touch /tmp/deploy_rsa | ||||
| echo "$DEPLOY_RSA" > /tmp/deploy_rsa | ||||
| chmod 600 /tmp/deploy_rsa | ||||
| openssl aes-256-cbc -K $encrypted_1d30f79f8582_key -iv $encrypted_1d30f79f8582_iv -in $TRAVIS_BUILD_DIR/CI/deploy_rsa.enc -out /tmp/deploy_rsa -d | ||||
|  | ||||
| eval "$(ssh-agent -s)" | ||||
| ssh-add /tmp/deploy_rsa | ||||
|  | ||||
|   | ||||
| @@ -63,7 +63,7 @@ set(PACKAGE_FILE_NAME "" CACHE STRING "Override for CPack package filename") | ||||
| #        Miscellaneous options             # | ||||
| ############################################ | ||||
|  | ||||
| set(CMAKE_MODULE_PATH ${CMAKE_HOME_DIRECTORY}/cmake_modules) | ||||
| set(CMAKE_MODULE_PATH ${CMAKE_HOME_DIRECTORY}/cmake_modules ${PROJECT_SOURCE_DIR}/CI) | ||||
| # Contains custom functions and macros, but don't altering any options | ||||
| include(VCMIUtils) | ||||
| vcmi_print_important_variables() | ||||
| @@ -87,7 +87,7 @@ define_property( | ||||
| # Generate Version.cpp | ||||
| if(ENABLE_GITVERSION) | ||||
| 	add_custom_target(update_version ALL | ||||
| 		COMMAND ${CMAKE_COMMAND} -DGIT_SHA1="${GIT_SHA1}" -P "${CMAKE_MODULE_PATH}/Version.cmake" | ||||
| 		COMMAND ${CMAKE_COMMAND} -DGIT_SHA1="${GIT_SHA1}" -P "${PROJECT_SOURCE_DIR}/cmake_modules/Version.cmake" | ||||
| 	) | ||||
| else() | ||||
| 	add_definitions(-DVCMI_NO_EXTRA_VERSION) | ||||
|   | ||||
| @@ -30,7 +30,7 @@ SHeroName::SHeroName() : heroId(-1) | ||||
|  | ||||
| PlayerInfo::PlayerInfo(): canHumanPlay(false), canComputerPlay(false), | ||||
| 	aiTactic(EAiTactic::RANDOM), isFactionRandom(false), hasRandomHero(false), mainCustomHeroPortrait(-1), mainCustomHeroId(-1), hasMainTown(false), | ||||
| 	generateHeroAtMainTown(false), team(TeamID::NO_TEAM), /* following are unused */ generateHero(false), p7(0), powerPlaceholders(-1) | ||||
| 	generateHeroAtMainTown(false), posOfMainTown(-1), team(TeamID::NO_TEAM), /* following are unused */ generateHero(false), p7(0), powerPlaceholders(-1) | ||||
| { | ||||
| 	allowedFactions = VLC->townh->getAllowedFactions(); | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
|     GNU GENERAL PUBLIC LICENSE | ||||
|     GNU GENERAL PUBLIC LICENSE | ||||
| 		       Version 2, June 1991 | ||||
|  | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc., | ||||
|   | ||||
| @@ -56,10 +56,6 @@ set(test_SRCS | ||||
|  		spells/targetConditions/ReceptiveFeatureConditionTest.cpp | ||||
|  		spells/targetConditions/SpellEffectConditionTest.cpp | ||||
|  		spells/targetConditions/TargetConditionItemFixture.cpp | ||||
| 		 | ||||
| 		vcai/mock_ResourceManager.cpp | ||||
| 		vcai/mock_VCAI.cpp | ||||
| 		vcai/ResurceManagerTest.cpp | ||||
|  | ||||
|  		mock/mock_IGameCallback.cpp | ||||
|  		mock/mock_MapService.cpp | ||||
| @@ -100,16 +96,12 @@ set(mock_HEADERS | ||||
| 		mock/mock_spells_Spell.h | ||||
| 		mock/mock_vstd_RNG.h | ||||
| 		mock/mock_CPSICallback.h | ||||
| 		 | ||||
| 		vcai/mock_ResourceManager.h | ||||
| 		vcai/mock_VCAI.h | ||||
| 		vcai/mock_VCAI_CGoal.h | ||||
| ) | ||||
|  | ||||
| add_subdirectory_with_folder("3rdparty" googletest EXCLUDE_FROM_ALL) | ||||
|  | ||||
| add_executable(vcmitest ${test_SRCS} ${test_HEADERS} ${mock_HEADERS}) | ||||
| target_link_libraries(vcmitest PRIVATE gtest gmock vcmi ${SYSTEM_LIBS} VCAI) | ||||
| target_link_libraries(vcmitest PRIVATE gtest gmock vcmi ${SYSTEM_LIBS}) | ||||
|  | ||||
| target_include_directories(vcmitest | ||||
| 		PUBLIC	${CMAKE_CURRENT_SOURCE_DIR} | ||||
|   | ||||
| @@ -42,6 +42,12 @@ TEST(MapFormat, Random) | ||||
| 	SCOPED_TRACE("MapFormat_Random start"); | ||||
|  | ||||
| 	CMapGenOptions opt; | ||||
| 	CRmgTemplate tmpl; | ||||
|  | ||||
| 	const_cast<CRmgTemplate::CPlayerCountRange &>(tmpl.getCpuPlayers()).addRange(1, 4); | ||||
| 	const_cast<CRmgTemplate::Zones &>(tmpl.getZones())[0] = std::make_shared<rmg::ZoneOptions>(); | ||||
|  | ||||
| 	opt.setMapTemplate(&tmpl); | ||||
|  | ||||
| 	opt.setHeight(CMapHeader::MAP_SIZE_MIDDLE); | ||||
| 	opt.setWidth(CMapHeader::MAP_SIZE_MIDDLE); | ||||
| @@ -54,7 +60,6 @@ TEST(MapFormat, Random) | ||||
| 	opt.setPlayerTypeForStandardPlayer(PlayerColor(3), EPlayerType::AI); | ||||
|  | ||||
| 	CMapGenerator gen; | ||||
|  | ||||
| 	std::unique_ptr<CMap> initialMap = gen.generate(&opt, TEST_RANDOM_SEED); | ||||
| 	initialMap->name = "Test"; | ||||
| 	SCOPED_TRACE("MapFormat_Random generated"); | ||||
|   | ||||
| @@ -194,6 +194,7 @@ TEST_F(TargetConditionTest, StoresNormalLevelCondition) | ||||
|  | ||||
| TEST_F(TargetConditionTest, StoresReceptiveFeature) | ||||
| { | ||||
| 	redirectFactoryToStub(); | ||||
| 	auto itemStub = std::make_shared<StrictMock<ItemMock>>(); | ||||
| 	EXPECT_CALL(factoryMock, createReceptiveFeature()).WillOnce(Return(itemStub)); | ||||
| 	setupSubject(JsonNode()); | ||||
|   | ||||
| @@ -56,7 +56,9 @@ TEST_F(TeleportApplyTest, MovesUnit) | ||||
| 	BattleHex destination(10, 10); | ||||
| 	auto & unit = unitsFake.add(BattleSide::ATTACKER); | ||||
|  | ||||
| 	setupEmptyBattlefield(); | ||||
| 	ON_CALL(unit, getPosition()).WillByDefault(Return(initial)); | ||||
| 	ON_CALL(mechanicsMock, getEffectLevel()).WillByDefault(Return(1)); | ||||
| 	EXPECT_CALL(unit, unitId()).Times(AtLeast(1)).WillRepeatedly(Return(unitId)); | ||||
|  | ||||
| 	EXPECT_CALL(*battleFake, moveUnit(Eq(unitId), Eq(destination))); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user