From a7dae7fd70baaf6b05668d4c14ce99dc54044159 Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 27 Jul 2017 14:29:33 +1000 Subject: Produce 7zip artifacts on Travis and Appveyor --- appveyor.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index 9a6206a8b..d062a1f3e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -37,16 +37,25 @@ after_build: # Where are these spaces coming from? Regardless, let's remove them $MSVC_BUILD_NAME = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" + $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" $BINTRAY_VERSION = "nightly-$GIT_LONG_HASH" -replace " ", "" # set the build names as env vars so the artifacts can upload them $env:MSVC_BUILD_NAME = $MSVC_BUILD_NAME $env:MSVC_BUILD_PDB = $MSVC_BUILD_PDB + $env:MSVC_SEVENZIP = $MSVC_SEVENZIP $env:GITREV = $GITREV 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb rm .\build\bin\release\*.pdb - 7z a -tzip $MSVC_BUILD_NAME .\build\bin\release\* .\license.txt .\README.md + + mkdir nightly + Copy-Item .\build\bin\release\* -Destination nightly -Recurse + Copy-Item .\license.txt -Destination nightly + Copy-Item .\README.md -Destination nightly + + 7z a -tzip $MSVC_BUILD_NAME nightly\* + 7z a $MSVC_SEVENZIP nightly test_script: - cd build && ctest -VV -C Release && cd .. @@ -58,6 +67,8 @@ artifacts: - path: $(MSVC_BUILD_PDB) name: msvcdebug type: zip + - path: $(MSVC_SEVENZIP) + name: msvcupdate deploy: provider: GitHub @@ -68,7 +79,7 @@ deploy: Short Commit Hash $(GITREV) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" - artifact: msvcbuild + artifact: msvcupdate,msvcbuild draft: false prerelease: false on: -- cgit v1.2.3 From 8bda0ca68dc1182583c0bb2634a93d2776eab3ba Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 3 Aug 2017 15:51:48 +1000 Subject: Travis/AppVeyor: Deploy based upon tags --- appveyor.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index d062a1f3e..eb4e7df87 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,9 +1,6 @@ # shallow clone clone_depth: 10 -# don't build on tag -skip_tags: true - cache: - C:\ProgramData\chocolatey\bin -> appveyor.yml - C:\ProgramData\chocolatey\lib -> appveyor.yml @@ -72,16 +69,11 @@ artifacts: deploy: provider: GitHub - release: nightly-$(appveyor_build_number) - description: | - Citra nightly releases. Please choose the correct download for your operating system from the list below. - - Short Commit Hash $(GITREV) + release: $(appveyor_repo_tag_name) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" artifact: msvcupdate,msvcbuild draft: false prerelease: false on: - branch: master - appveyor_repo_name: citra-emu/citra-nightly + appveyor_repo_tag: true -- cgit v1.2.3 From 80f85b429c7cfce70535e68014ed1bf5dcdfbc03 Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 10 Aug 2017 14:17:27 +1000 Subject: Implement correct folder structure for CI builds --- appveyor.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index eb4e7df87..94e9969f5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,13 +46,21 @@ after_build: 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb rm .\build\bin\release\*.pdb - mkdir nightly - Copy-Item .\build\bin\release\* -Destination nightly -Recurse - Copy-Item .\license.txt -Destination nightly - Copy-Item .\README.md -Destination nightly + # Find out which kind of release we are producing by tag name + if ($env:APPVEYOR_REPO_TAG_NAME) { + $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') + } else { + # There is no repo tag - make assumptions + $RELEASE_DIST = "head" + } - 7z a -tzip $MSVC_BUILD_NAME nightly\* - 7z a $MSVC_SEVENZIP nightly + mkdir $RELEASE_DIST + Copy-Item .\build\bin\release\* -Destination $RELEASE_DIST -Recurse + Copy-Item .\license.txt -Destination $RELEASE_DIST + Copy-Item .\README.md -Destination $RELEASE_DIST + + 7z a -tzip $MSVC_BUILD_NAME $RELEASE_DIST\* + 7z a $MSVC_SEVENZIP $RELEASE_DIST test_script: - cd build && ctest -VV -C Release && cd .. -- cgit v1.2.3 From ab47bf6ad65b870f447fe2c1a39f3c288b906c3d Mon Sep 17 00:00:00 2001 From: James Rowe Date: Wed, 30 Aug 2017 19:39:24 -0600 Subject: Build: Add mingw64 compile support to appveyor Releases will be built with both mingw and msvc and the binaries of both builds will be uploaded to github releases --- appveyor.yml | 163 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 123 insertions(+), 40 deletions(-) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index 94e9969f5..1c390cdd5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,6 +7,15 @@ cache: os: Visual Studio 2017 +environment: + # Tell msys2 to add mingw64 to the path + MSYSTEM: MINGW64 + # Tell msys2 to inherit the current directory when starting the shell + CHERE_INVOKING: 1 + matrix: + - BUILD_TYPE: mingw + - BUILD_TYPE: msvc + platform: - x64 @@ -15,72 +24,146 @@ configuration: install: - git submodule update --init --recursive + - ps: | + if ($env:BUILD_TYPE -eq 'mingw') { + $dependencies = "mingw64/mingw-w64-x86_64-cmake", + "mingw64/mingw-w64-x86_64-qt5", + "mingw64/mingw-w64-x86_64-curl", + "mingw64/mingw-w64-x86_64-SDL2" + # redirect err to null to prevent warnings from becoming errors + # workaround to prevent pacman from failing due to cyclical dependencies + C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw64/mingw-w64-x86_64-freetype mingw64/mingw-w64-x86_64-fontconfig" 2> $null + C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S $dependencies" 2> $null + } before_build: - - mkdir build - - cd build - - cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. + - mkdir %BUILD_TYPE%_build + - cd %BUILD_TYPE%_build + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning + cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0' + } else { + C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" + } - cd .. -build: - project: build/citra.sln - parallel: true +build_script: + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + # https://www.appveyor.com/docs/build-phase + msbuild msvc_build/citra.sln /maxcpucount /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" + } else { + C:\msys64\usr\bin\bash.exe -lc 'mingw32-make -C mingw_build/ 2>&1' + } after_build: - ps: | $GITDATE = $(git show -s --date=short --format='%ad') -replace "-","" $GITREV = $(git show -s --format='%h') - $GIT_LONG_HASH = $(git rev-parse HEAD) - # Where are these spaces coming from? Regardless, let's remove them - $MSVC_BUILD_NAME = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" - $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" - $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" - $BINTRAY_VERSION = "nightly-$GIT_LONG_HASH" -replace " ", "" - - # set the build names as env vars so the artifacts can upload them - $env:MSVC_BUILD_NAME = $MSVC_BUILD_NAME - $env:MSVC_BUILD_PDB = $MSVC_BUILD_PDB - $env:MSVC_SEVENZIP = $MSVC_SEVENZIP - $env:GITREV = $GITREV - - 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb - rm .\build\bin\release\*.pdb # Find out which kind of release we are producing by tag name if ($env:APPVEYOR_REPO_TAG_NAME) { - $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') + $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') } else { - # There is no repo tag - make assumptions - $RELEASE_DIST = "head" + # There is no repo tag - make assumptions + $RELEASE_DIST = "head" } - mkdir $RELEASE_DIST - Copy-Item .\build\bin\release\* -Destination $RELEASE_DIST -Recurse - Copy-Item .\license.txt -Destination $RELEASE_DIST - Copy-Item .\README.md -Destination $RELEASE_DIST - - 7z a -tzip $MSVC_BUILD_NAME $RELEASE_DIST\* - 7z a $MSVC_SEVENZIP $RELEASE_DIST + if ($env:BUILD_TYPE -eq 'msvc') { + # Where are these spaces coming from? Regardless, let's remove them + $MSVC_BUILD_ZIP = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" + $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" + $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" + + # set the build names as env vars so the artifacts can upload them + $env:BUILD_ZIP = $MSVC_BUILD_ZIP + $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB + $env:BUILD_UPDATE = $MSVC_SEVENZIP + + 7z a -tzip $MSVC_BUILD_PDB .\msvc_build\bin\release\*.pdb + rm .\msvc_build\bin\release\*.pdb + + mkdir $RELEASE_DIST + Copy-Item .\msvc_build\bin\release\* -Destination $RELEASE_DIST -Recurse + Copy-Item .\license.txt -Destination $RELEASE_DIST + Copy-Item .\README.md -Destination $RELEASE_DIST + 7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* + 7z a $MSVC_SEVENZIP $RELEASE_DIST + } else { + $MINGW_BUILD_ZIP = "citra-windows-mingw-$GITDATE-$GITREV.zip" -replace " ", "" + $MINGW_SEVENZIP = "citra-windows-mingw-$GITDATE-$GITREV.7z" -replace " ", "" + # not going to bother adding separate debug symbols for mingw, so just upload a README for it + # if someone wants to add them, change mingw to compile with -g and use objdump and strip to separate the symbols from the binary + $MINGW_NO_DEBUG_SYMBOLS = "README_No_Debug_Symbols.txt" + Set-Content -Path $MINGW_NO_DEBUG_SYMBOLS -Value "This is a workaround for Appveyor since msvc has debug symbols but mingw doesnt" -Force + + # store the build information in env vars so we can use them as artifacts + $env:BUILD_ZIP = $MINGW_BUILD_ZIP + $env:BUILD_SYMBOLS = $MINGW_NO_DEBUG_SYMBOLS + $env:BUILD_UPDATE = $MINGW_SEVENZIP + + $CMAKE_SOURCE_DIR = "$env:APPVEYOR_BUILD_FOLDER" + $CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build" + $RELEASE_DIST = $RELEASE_DIST + "-mingw" + + mkdir $RELEASE_DIST + mkdir $RELEASE_DIST/platforms + + # copy the compiled binaries and other release files to the release folder + Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "citra*.exe" | Copy-Item -destination $RELEASE_DIST + Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST + Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST + + # copy all the dll dependencies to the release folder + # hardcoded list because we don't build static and determining the list of dlls from the binary is a pain. + $MingwDLLs = "Qt5Core.dll","Qt5Widgets.dll","Qt5Gui.dll","Qt5OpenGL.dll", + # QT dll dependencies + "libbz2-*.dll","libicudt*.dll","libicuin*.dll","libicuuc*.dll","libffi-*.dll", + "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll", + "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll", + # Runtime/Other dependencies + "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll", + # curl dependencies + "libcurl-*.dll","libnghttp2-*.dll","libeay32.dll","libgmp-*.dll","librtmp-*.dll", + "libgnutls-*.dll","libhogweed-*.dll","libnettle-*.dll","libssh2-*.dll", + "ssleay32.dll","libidn-*.dll","libp11-kit-*.dll","libtasn1-*.dll","libunistring-*.dll" + foreach ($file in $MingwDLLs) { + Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" + } + + # copy the qt windows plugin dll to platforms + Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms" + + 7z a -tzip $MINGW_BUILD_ZIP $RELEASE_DIST\* + 7z a $MINGW_SEVENZIP $RELEASE_DIST + } test_script: - - cd build && ctest -VV -C Release && cd .. + - cd %BUILD_TYPE%_build + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + ctest -VV -C Release + } else { + C:\msys64\usr\bin\bash.exe -lc "ctest -VV -C Release" + } + - cd .. artifacts: - - path: $(MSVC_BUILD_NAME) - name: msvcbuild - type: zip - - path: $(MSVC_BUILD_PDB) - name: msvcdebug + - path: $(BUILD_ZIP) + name: build type: zip - - path: $(MSVC_SEVENZIP) - name: msvcupdate + - path: $(BUILD_SYMBOLS) + name: debugsymbols + - path: $(BUILD_UPDATE) + name: update deploy: provider: GitHub release: $(appveyor_repo_tag_name) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" - artifact: msvcupdate,msvcbuild + artifact: update,build draft: false prerelease: false on: -- cgit v1.2.3 From ef8925b7acfe03cb83963e3f9ec4592ae308f4ee Mon Sep 17 00:00:00 2001 From: James Rowe Date: Tue, 5 Sep 2017 18:57:47 -0600 Subject: Remove excess debug dlls for mingw build --- appveyor.yml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index 1c390cdd5..ec9ca3747 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -131,6 +131,12 @@ after_build: foreach ($file in $MingwDLLs) { Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" } + # the above list copies a few extra debug dlls that aren't needed (thanks globbing patterns!) + # so we can remove them by hardcoding another list of extra dlls to remove + $DebugDLLs = "libicudtd*.dll","libicuind*.dll","libicuucd*.dll" + foreach ($file in $DebugDLLs) { + Remove-Item -path "$RELEASE_DIST/$file" + } # copy the qt windows plugin dll to platforms Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms" -- cgit v1.2.3 From 9e847b754933f09bdf19be0dc45fc32a65052965 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Sat, 9 Sep 2017 11:24:13 -0600 Subject: Build: Enable SSL in mingw by linking against WinSSL The mingw builds aren't submitting telemetry because the curl library they are linked against is configured to use openSSL and openSSL looks for the certificates in the users home folder. This keeps it from contacting web services because it can't communicate over SSL. This commit adds a download in mingw builds that will download a precompiled curl for mingw linked against winssl and sspi. --- appveyor.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'appveyor.yml') diff --git a/appveyor.yml b/appveyor.yml index ec9ca3747..5524eb576 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,7 +44,7 @@ before_build: # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0' } else { - C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" + C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCITRA_USE_BUNDLED_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" } - cd .. @@ -112,9 +112,10 @@ after_build: # copy the compiled binaries and other release files to the release folder Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "citra*.exe" | Copy-Item -destination $RELEASE_DIST + # copy the libcurl dll + Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "libcurl.dll" | Copy-Item -destination $RELEASE_DIST Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST - # copy all the dll dependencies to the release folder # hardcoded list because we don't build static and determining the list of dlls from the binary is a pain. $MingwDLLs = "Qt5Core.dll","Qt5Widgets.dll","Qt5Gui.dll","Qt5OpenGL.dll", @@ -123,11 +124,7 @@ after_build: "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll", "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll", # Runtime/Other dependencies - "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll", - # curl dependencies - "libcurl-*.dll","libnghttp2-*.dll","libeay32.dll","libgmp-*.dll","librtmp-*.dll", - "libgnutls-*.dll","libhogweed-*.dll","libnettle-*.dll","libssh2-*.dll", - "ssleay32.dll","libidn-*.dll","libp11-kit-*.dll","libtasn1-*.dll","libunistring-*.dll" + "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll" foreach ($file in $MingwDLLs) { Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" } -- cgit v1.2.3