summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--appveyor.yml59
-rw-r--r--infrastructure/cmake/CMakeLists.txt67
-rwxr-xr-xinfrastructure/cmake/getversion.pl2
3 files changed, 100 insertions, 28 deletions
diff --git a/appveyor.yml b/appveyor.yml
index a0ccf95c..0ca5d8ee 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,4 +1,4 @@
-version: 1.0.{build}-{branch}
+version: 0.12.{branch}.appveyor_{build}
clone_depth: 1
@@ -8,25 +8,34 @@ skip_tags: true
os: Windows Server 2012
platform:
-# - x86
-# - x64
- - Win32
+ - Win32 # CMake sucks
+ - x64
configuration:
- Debug
- Release
environment:
- VisualStudioVersion: 10.0
- Generator: Visual Studio 10
+ VisualStudioVersion: 11.0
+ Generator_Base: Visual Studio 11 2012
OPENSSL_VERSION: 1.0.2f
PCRE_VERSION: 8.38
CMAKE_UNIBUILD_DIR: '%APPVEYOR_BUILD_FOLDER%\..\cmake'
+ BOXBACKUP_VERSION_BASE: 0.12
init:
# Uncomment the following two lines to enable RDP access to the virtual machine for debugging.
# - reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
+ - ps: $env:date_string = Get-Date -Format "yyMMdd"
+ - ps: $env:sane_platform = $($env:PLATFORM.replace("Win32", "x86"))
+ # http://help.appveyor.com/discussions/problems/2874-how-can-i-add-commit-id-to-build-version
+ - ps: $env:boxbackup_version_full="$env:BOXBACKUP_VERSION_BASE.$env:APPVEYOR_REPO_BRANCH.$env:date_string.$($env:APPVEYOR_REPO_COMMIT.substring(0,7))"
+ - ps: Update-AppveyorBuild -Version "$env:boxbackup_version_full"
+ - ps: $env:compiled_version="$($env:boxbackup_version_full)_Win_$($env:sane_platform)_$($env:CONFIGURATION)"
+ # The only way to switch between 32-bit and 64-bit compilers appears to be to append " Win64"
+ # to the generator name if you want a 64-bit build (x64 platform):
+ - ps: $env:generator_name="$($env:Generator_Base)$(if ($env:PLATFORM.equals('x64')) {' Win64'})"
build:
parallel: true
@@ -35,15 +44,15 @@ build:
install:
# test_bbackupd needs 7zip (or cmake -E tar) to extract tar archives on Windows:
- - cinst -y --limit-output 7zip.commandline
- # Install cmake.portable instead of cmake, to get it on the path again:
- # http://disq.us/p/xdknrt
+ - cinst -y --limit-output 7zip.commandline nsis.portable
- dir "c:\Program Files"
- dir "c:\Program Files (x86)"
# We don't need strawberryperl on AppVeyor because there is already a Perl in c:\Perl.
# If you are doing this on a fresh box for development, you would probably want to
# install Chocolatey and then run:
- # cinst -y cmake strawberryperl git vim visualstudio2012wdx
+ # cinst -y cmake.portable strawberryperl git vim visualstudio2012wdx
+ # We install cmake.portable instead of cmake, to get it on the path again
+ # <http://disq.us/p/xdknrt>.
- '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86'
- if not exist %CMAKE_UNIBUILD_DIR% md %CMAKE_UNIBUILD_DIR%
@@ -51,7 +60,12 @@ install:
# We need to specify the generator here, in case the user has more than one installed.
# CMake always seems to default to the latest version of Visual Studio, not the one on
# the current PATH.
- - cmake -G "%Generator%" -A %PLATFORM% %APPVEYOR_BUILD_FOLDER%\infrastructure\cmake\windows
+ - echo cmake -G "%generator_name%" -DDEBUG=1
+ -DBOXBACKUP_VERSION=%compiled_version%
+ %APPVEYOR_BUILD_FOLDER%\infrastructure\cmake\windows
+ - cmake -G "%generator_name%" -DDEBUG=1
+ -DBOXBACKUP_VERSION=%compiled_version%
+ %APPVEYOR_BUILD_FOLDER%\infrastructure\cmake\windows
# Leave the current directory in the correct place to find the solution file using its relative path above.
@@ -63,3 +77,26 @@ test_script:
# - dir %PLATFORM%\%CONFIGURATION%
- ctest -C %CONFIGURATION% -V --interactive-debug-mode 0
+ # After running tests successfully, and before collecting artifacts, build them and copy them
+ # to the right place:
+ - cmake --build . --config %CONFIGURATION% --target package
+
+ # AppVeyor refuses to package files outside of the project directory, so we need to push them:
+ - dir
+ - appveyor PushArtifact -path BoxBackup-%compiled_version%.zip -DeploymentName BoxBackup-%compiled_version%
+ - appveyor PushArtifact -path BoxBackup-%compiled_version%.exe -DeploymentName BoxBackup-%compiled_version%
+
+deploy:
+ - provider: GitHub
+ release: BoxBackup-$(boxbackup_version_full)
+ artifact: BoxBackup-$(compiled_version)
+ description: "Windows client binaries auto-built by AppVeyor"
+ draft: false
+ prerelease: true
+ auth_token:
+ secure: WZi3MJGA5zIIAAij0if4auYeltJlyWUOePTYlCGvrNrgEVjYRkqILHzvVKDnLn43
+ on:
+ branch:
+ - master
+ - s3_support_merge
+
diff --git a/infrastructure/cmake/CMakeLists.txt b/infrastructure/cmake/CMakeLists.txt
index cba7c739..25015452 100644
--- a/infrastructure/cmake/CMakeLists.txt
+++ b/infrastructure/cmake/CMakeLists.txt
@@ -78,25 +78,38 @@ foreach(file_to_configure ${files_to_configure})
"${base_dir}/${file_to_configure}.out")
endforeach()
-# Work out the current Box version (requires Perl) and update lib/common/BoxVersion.h,
-# but only if it has changed, to avoid unnecessary complete rebuilds due to timestamps.
-execute_process(
- COMMAND ${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl
- WORKING_DIRECTORY ${base_dir}/infrastructure
- RESULT_VARIABLE status
- OUTPUT_VARIABLE new_version_define
- ERROR_VARIABLE command_output)
-if(NOT status EQUAL 0)
- message(FATAL_ERROR "Failed to execute: "
- "${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl: "
- "status ${status}: ${command_output}")
+# If BOXBACKUP_VERSION is defined when running CMake (as the AppVeyor config does), use it
+# as-is, since it contains the full version number, branch, and platform (Win32/Win64):
+if(BOXBACKUP_VERSION)
+ set(boxbackup_version ${BOXBACKUP_VERSION})
+ # Remove CPACK_SYSTEM_NAME from the default CPACK_PACKAGE_NAME, because it's already
+ # included in the CPACK_PACKAGE_VERSION:
+ set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${boxbackup_version})
+else()
+ # Work out the current Box version (requires Perl) and update lib/common/BoxVersion.h,
+ # but only if it has changed, to avoid unnecessary complete rebuilds due to timestamps.
+ execute_process(
+ COMMAND ${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl
+ WORKING_DIRECTORY ${base_dir}/infrastructure
+ RESULT_VARIABLE status
+ OUTPUT_VARIABLE boxbackup_version
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_VARIABLE command_output)
+ if(NOT status EQUAL 0)
+ message(FATAL_ERROR "Failed to execute: "
+ "${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl: "
+ "status ${status}: ${command_output}")
+ endif()
endif()
-file(WRITE "${base_dir}/lib/common/BoxVersion.h.new" "${new_version_define}")
+
+file(WRITE "${base_dir}/lib/common/BoxVersion.h.new"
+ "#define BOX_VERSION \"${boxbackup_version}\"\n")
replace_file_if_different(
"${base_dir}/lib/common/BoxVersion.h"
"${base_dir}/lib/common/BoxVersion.h.new")
add_definitions(-DBOX_CMAKE -DNEED_BOX_VERSION_H)
+
if(WIN32)
add_definitions(-DWIN32)
endif()
@@ -331,6 +344,16 @@ foreach(module_dep ${module_deps})
endif()
endforeach()
+if(WIN32)
+ install(FILES ${base_dir}/bin/bbackupd/win32/NotifySysAdmin.vbs
+ DESTINATION "." COMPONENT Extras)
+ install(FILES ${base_dir}/bin/bbackupd/win32/bbackupd.conf
+ DESTINATION "." COMPONENT Extras)
+else()
+ install(FILES ${base_dir}/bin/bbackupd/bbackupd-config
+ DESTINATION "." COMPONENT Extras)
+endif()
+
# We can't do anything conditional on CMAKE_BUILD_TYPE because that's not valid for multi-configuration
# generators such as MSVC. We need to use a generator expression instead.
target_compile_definitions(lib_common PUBLIC $<$<CONFIG:Release>:BOX_RELEASE_BUILD>)
@@ -353,9 +376,6 @@ if(WIN32)
target_link_libraries(lib_common PUBLIC ws2_32 gdi32)
endif()
-# Link to ZLib
-# http://stackoverflow.com/a/6174604/648162
-include_directories(${base_dir}/../zlib-win32/include)
# On Windows we want to statically link zlib to make debugging and distribution easier,
# but FindZLIB.cmake doesn't offer that as an option, so we have to go through some
# contortions to "find" the correct library. ZLIB_ROOT is required in this case.
@@ -688,3 +708,18 @@ set_tests_properties(backupdiff PROPERTIES TIMEOUT 32)
set_tests_properties(bbackupd PROPERTIES TIMEOUT 1200)
set_tests_properties(s3store PROPERTIES TIMEOUT 20)
set_tests_properties(httpserver PROPERTIES TIMEOUT 40)
+
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Box Backup is an open source, completely automatic, on-line backup system")
+set(CPACK_PACKAGE_VENDOR "www.BoxBackup.org")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${base_dir}/README.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${base_dir}/LICENSE.txt")
+set(CPACK_PACKAGE_VERSION ${boxbackup_version})
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "Box Backup")
+set(CPACK_COMPONENTS_ALL Applications Extras)
+set(CPACK_GENERATOR "ZIP;NSIS")
+set(CPACK_NSIS_DISPLAY_NAME "Box Backup")
+set(CPACK_NSIS_HELP_LINK "http://www.boxbackup.org/")
+set(CPACK_NSIS_URL_INFO_ABOUT "http://www.boxbackup.org/")
+set(CPACK_NSIS_CONTACT "boxbackup@boxbackup.org")
+set(CPACK_NSIS_MODIFY_PATH ON)
+include(CPack)
diff --git a/infrastructure/cmake/getversion.pl b/infrastructure/cmake/getversion.pl
index 67e1f8a5..d7ca0333 100755
--- a/infrastructure/cmake/getversion.pl
+++ b/infrastructure/cmake/getversion.pl
@@ -8,6 +8,6 @@ chdir $basedir or die "Failed to change to base directory: $basedir: $!";
require "$basedir/infrastructure/BoxPlatform.pm.in";
-print "#define BOX_VERSION \"$BoxPlatform::product_version\"\n";
+print "$BoxPlatform::product_version\n";
exit 0;