From b826f8baeabbf094beb4b63fe29fb1e64f0d9136 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Sun, 14 May 2017 12:51:12 -0500 Subject: [PATCH] Windows 32-bit build. (#3954) * Updated appveyor, preinstall, and deploy script to build 32 and 64 bit versions. --- appveyor.yml | 30 ++++++++------ package/win/appveyor_buildscript.ps1 | 18 ++++++--- package/win/appveyor_preinstall.ps1 | 59 +++++++++++++++++----------- package/win/package_win32.ps1 | 11 +++++- 4 files changed, 74 insertions(+), 44 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 701f5ca6c..c3d24925d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,39 +7,45 @@ environment: SLIC3R_STATIC: 1 SLIC3R_VERSION: 1.3.0 BOOST_DIR: C:\dev\boost_1_63_0 + WXDIR: C:\dev\wxwidgets WXSHARED: SHARED=0 - FORCE_WX_BUILD: 0 - FORCE_BOOST_REINSTALL: 0 + FORCE_WX_BUILD: 1 + FORCE_BOOST_REINSTALL: 1 ENC_SECRET: secure: QfeTOSKXz1uFCEACqFKLNw== UPLOAD_USER: secure: fYPwnI3p6HNR+eMRJR3JfmyNolFn+Uc0MUn2bBXp9uU= + matrix: + - ARCH: 64bit + - ARCH: 32bit install: - IF DEFINED ENC_SECRET nuget install secure-file -ExcludeVersion - IF DEFINED ENC_SECRET secure-file\tools\secure-file -decrypt package/deploy/slic3r-upload.ppk.enc -secret %ENC_SECRET% - ps: "& package/win/appveyor_preinstall.ps1" cache: -- C:\Users\appveyor\boost.1.63.0.7z -- C:\Users\appveyor\local-lib.7z -- C:\Strawberry\perl\site -- C:\Users\appveyor\freeglut.7z -- C:\users\appveyor\strawberry.msi +- C:\Users\appveyor\local-lib-64bit.7z +- C:\Users\appveyor\local-lib-32bit.7z +- C:\Users\appveyor\freeglut.64bit.7z +- C:\Users\appveyor\freeglut.32bit.7z +- C:\users\appveyor\strawberry.64bit.msi +- C:\users\appveyor\strawberry.32bit.msi - C:\Users\appveyor\winscp.zip - C:\Users\appveyor\extra_perl.7z -- C:\Users\appveyor\wxwidgets.7z +- C:\Users\appveyor\wxwidgets-64bit.7z +- C:\Users\appveyor\wxwidgets-32bit.7z +- C:\Users\appveyor\boost.1.63.0.32bit.7z +- C:\Users\appveyor\boost.1.63.0.64bit.7z build_script: - ps: "& package/win/appveyor_buildscript.ps1" -test_script: -- ps: "mkdir C:\\Andrés\nwget \"http://www.thingiverse.com/download:73351\" -o\"C:\\Andrés\\5mm.stl\"\necho \"bed_temperature=60\" > C:\\Andrés\\test.ini\n\ncd C:\\projects\\slic3r\nperl slic3r.pl --load \"C:\\Andrés\\test.ini\" \"C:\\Andrés\\5mm.stl\"\n\nif (!(Test-Path \"C:\\Andrés\\5mm.gcode\")) {\necho \"IS IT HERE\"\n}" artifacts: - path: .\slic3r*zip name: slic3r-dev deploy_script: -- ps: "& package/win/appveyor_deploy.ps1" +- ps: "cd C:/projects/slic3r; & package/win/appveyor_deploy.ps1" on_success: - ps: on_failure: -- ps: + - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) on_finish: - ps: diff --git a/package/win/appveyor_buildscript.ps1 b/package/win/appveyor_buildscript.ps1 index 4f98dcbf4..f09fdaadd 100644 --- a/package/win/appveyor_buildscript.ps1 +++ b/package/win/appveyor_buildscript.ps1 @@ -1,20 +1,26 @@ -if (!(Test-Path "C:\users\appveyor\local-lib.7z")) { - wget "http://www.siusgs.com/slic3r/buildserver/win/slic3r-perl-dependencies-5.24.0-win-seh-gcc6.3.0-x64.7z" -o "C:\users\appveyor\local-lib.7z" | Write-Output +if (!(Test-Path "C:\users\appveyor\local-lib-$env:ARCH.7z")) { + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=local-lib-$env:ARCH.7z" -o "C:\users\appveyor\local-lib-$env:ARCH.7z" | Write-Output } -if (Test-Path "C:\users\appveyor\local-lib.7z") { - cmd /c "7z x C:\Users\appveyor\local-lib.7z -oC:\projects\slic3r" -y | Write-Output +if (Test-Path "C:\users\appveyor\local-lib-$env:ARCH.7z") { + cmd /c "7z x C:\Users\appveyor\local-lib-$env:ARCH.7z -oC:\projects\slic3r" -y | Write-Output rm -r 'C:\projects\slic3r\local-lib\Slic3r*' } $env:Path = "C:\Strawberry\c\bin;C:\Strawberry\perl\bin;" + $env:Path cd C:\projects\slic3r + rm -r 'C:\Program Files (x86)\Microsoft Vis*\bin' -Force + Add-AppveyorCompilationMessage -Message "Building Slic3r XS" -perl Build.pl -if (-NOT ($LASTEXITCODE -eq 0)) { +perl ./Build.pl + +if ($LastExitCode -ne 0) { Add-AppveyorCompilationMessage -Message "XS Failed to Build" -Category Error + $host.SetShouldExit($LastExitCode) + exit } + Add-AppveyorCompilationMessage -Message "Making ZIP package" cd package/win ./compile_wrapper.ps1 524| Write-Output diff --git a/package/win/appveyor_preinstall.ps1 b/package/win/appveyor_preinstall.ps1 index 4ba912e14..90b9be7ec 100644 --- a/package/win/appveyor_preinstall.ps1 +++ b/package/win/appveyor_preinstall.ps1 @@ -1,19 +1,28 @@ mkdir C:\projects\slic3r\FreeGLUT -if (!(Test-Path "C:\users\appveyor\freeglut.7z")) +if (!(Test-Path "C:\users\appveyor\freeglut.$env:ARCH.7z")) { - wget "http://www.siusgs.com/slic3r/buildserver/win/freeglut-mingw-3.0.0.win64.7z" -o C:\users\appveyor\freeglut.7z + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=freeglut-mingw-3.0.0.$env:ARCH.7z" -o C:\users\appveyor\freeglut.$env:ARCH.7z } -cmd /c "7z x C:\Users\appveyor\freeglut.7z -oC:\projects\slic3r\FreeGLUT" +cmd /c "7z x C:\Users\appveyor\freeglut.$env:ARCH.7z -oC:\projects\slic3r\FreeGLUT" -if (!(Test-Path "C:\users\appveyor\strawberry.msi")) { - wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=slic3r-perl-5.24.1.4-64bit.msi" -o "C:\users\appveyor\strawberry.msi" | Write-Output -} -if (!(Test-Path "C:\users\appveyor\extra_perl.7z")) { - wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=Strawberry-6.3.0-seg-archive.7z" -o "C:\users\appveyor\extra_perl.7z" | Write-Output +if (!(Test-Path "C:\users\appveyor\strawberry.$env:ARCH.msi")) { + if ($env:ARCH -eq "64bit") { + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=slic3r-perl-5.24.1.4-64bit.msi" -o "C:\users\appveyor\strawberry.$env:ARCH.msi" | Write-Output + } else { + wget "http://strawberryperl.com/download/5.24.1.1/strawberry-perl-5.24.1.1-32bit.msi" -o "C:\users\appveyor\strawberry.$env:ARCH.msi" | Write-Output + } } -msiexec.exe /i "C:\users\appveyor\strawberry.msi" /quiet -cmd /c "7z x -aoa C:\Users\appveyor\extra_perl.7z -oC:\" +if (!($env:ARCH -eq "32bit")) { + if (!(Test-Path "C:\users\appveyor\extra_perl.7z")) { + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=Strawberry-6.3.0-seg-archive.7z" -o "C:\users\appveyor\extra_perl.7z" | Write-Output + } +} + +msiexec.exe /i "C:\users\appveyor\strawberry.$env:ARCH.msi" /quiet +if (!($env:ARCH -eq "32bit")) { + cmd /c "7z x -aoa C:\Users\appveyor\extra_perl.7z -oC:\" +} if (!(Test-Path "C:\users\appveyor\winscp.zip")) { wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=WinSCP-5.9.4-Portable.zip" -o "C:\users\appveyor\winscp.zip" | Write-Output @@ -33,10 +42,14 @@ if(Test-Path -Path 'C:\Strawberry' ) { cmd /c mklink /D C:\Perl C:\Strawberry\perl mkdir C:\dev if (!(Test-Path "C:\users\appveyor\boost.1.63.0.7z") -Or $env:FORCE_BOOST_REINSTALL -eq 1) { - wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=boost_1_63_0-x64-gcc-6.3.0-seh.7z" -O "C:\users\appveyor\boost.1.63.0.7z" | Write-Output + if ($env:ARCH -eq "64bit") { + wget "http://www.siusgs.com/slic3r/buildserver/win/boost_1_63_0-x64-gcc-6.3.0-seh.7z" -O "C:\users\appveyor\boost.1.63.0.$env:ARCH.7z" | Write-Output + } else { + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=boost_1_63_0-x32-gcc-4.9.2-sjlj.7z" -O "C:\users\appveyor\boost.1.63.0.$env:ARCH.7z" | Write-Output + } } Add-AppveyorCompilationMessage -Message "Extracting cached archive." - cmd /c "7z x C:\Users\appveyor\boost.1.63.0.7z -oC:\dev" + cmd /c "7z x C:\Users\appveyor\boost.1.63.0.$env:ARCH.7z -oC:\dev" mkdir C:\dev\CitrusPerl cmd /C mklink /D C:\dev\CitrusPerl\mingw32 C:\Strawberry\c @@ -53,19 +66,17 @@ if(Test-Path -Path 'C:\Strawberry' ) { Add-AppveyorCompilationMessage -Message "Installing wxWidgets (xsgui dependency))" if ($env:FORCE_WX_BUILD -eq 1) { - rm "C:\Users\appveyor\wxwidgets.7z" -Force + rm "C:\Users\appveyor\wxwidgets-$env:ARCH.7z" -Force } -if (!(Test-Path "C:\Users\appveyor\wxwidgets.7z")) { - Add-AppveyorCompilationMessage -Message "Compiling wxWidgets" - git clone https://github.com/wxWidgets/wxWidgets -b "v3.1.0" -q C:\dev\wxWidgets - cd C:\dev\wxwidgets - cp .\include\wx\msw\setup0.h include/wx/msw/setup.h - cd build\msw - mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" BUILD=release VENDOR=Slic3r - cd C:\dev - 7z a C:\Users\appveyor\wxwidgets.7z wxwidgets - cd C:\projects\slic3r + +if (!(Test-Path "C:\Users\appveyor\wxwidgets-$env:ARCH.7z")) { + Add-AppveyorCompilationMessage -Message "Extracting wxWidgets for $env:ARCH" + wget "https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=wxwidgets-$env:ARCH.7z" -o C:\users\appveyor\wxwidgets-$env:ARCH.7z + 7z x C:\users\appveyor\wxwidgets-$env:ARCH.7z -oC:\dev } else { Add-AppveyorCompilationMessage -Message "Extracting prebuilt wxWidgets." - 7z x "C:\Users\appveyor\wxwidgets.7z" -oC:\dev + 7z x "C:\Users\appveyor\wxwidgets-$env:ARCH.7z" -oC:\dev } + +cpan App::cpanminus +cpan PAR::Packer diff --git a/package/win/package_win32.ps1 b/package/win/package_win32.ps1 index 8c1cc977a..717b30488 100644 --- a/package/win/package_win32.ps1 +++ b/package/win/package_win32.ps1 @@ -41,6 +41,12 @@ if ($exe) { New-Variable -Name "STRAWBERRY_PATH" -Value "C:\Strawberry" cpanm "PAR::Packer" +if ($env:ARCH -eq "32bit") { + $perlarch = "sjlj" +} else { + $perlarch = "seh" +} + pp ` -a "slic3r.exe;slic3r.exe" ` @@ -54,9 +60,10 @@ pp ` -a "../../FreeGLUT/freeglut.dll;freeglut.dll" ` -a "${STRAWBERRY_PATH}\perl\bin\perl${perlversion}.dll;perl${perlversion}.dll" ` -a "${STRAWBERRY_PATH}\perl\bin\libstdc++-6.dll;libstdc++-6.dll" ` --a "${STRAWBERRY_PATH}\perl\bin\libgcc_s_seh-1.dll;libgcc_s_seh-1.dll" ` +-a "${STRAWBERRY_PATH}\perl\bin\libgcc_s_${perlarch}-1.dll;libgcc_s_${perlarch}-1.dll" ` -a "${STRAWBERRY_PATH}\perl\bin\libwinpthread-1.dll;libwinpthread-1.dll" ` -a "${STRAWBERRY_PATH}\c\bin\pthreadGC2-w64.dll;pthreadGC2-w64.dll" ` +-a "${STRAWBERRY_PATH}\c\bin\pthreadGC2-w32.dll;pthreadGC2-w32.dll" ` -a "${STRAWBERRY_PATH}\c\bin\libglut-0__.dll;libglut-0__.dll" ` -M AutoLoader ` -M B ` @@ -152,7 +159,7 @@ if ($exe) { } else { # make this more useful for not being on the appveyor server if ($env:APPVEYOR) { - copy ..\..\slic3r.par "..\..\slic3r-${current_branch}.${current_date}.${env:APPVEYOR_BUILD_NUMBER}.$(git rev-parse --short HEAD).zip" + copy ..\..\slic3r.par "..\..\slic3r-${current_branch}.${current_date}.${env:APPVEYOR_BUILD_NUMBER}.$(git rev-parse --short HEAD).$env:ARCH.zip" } else { copy ..\..\slic3r.par "..\..\slic3r-${current_branch}.${current_date}.$(git rev-parse --short HEAD).zip" del ..\..\slic3r.par