2.0.0-rc (#9)
Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
### Issues * \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception * \#2 Require bucket name for S3 mounts * \#3 \[bug\] File size is not being updated in S3 mount * \#4 Upgrade to libfuse-3.x.x * \#5 Switch to renterd for Sia support * \#6 Switch to cpp-httplib to further reduce dependencies * \#7 Remove global_data and calculate used disk space per provider * \#8 Switch to libcurl for S3 mount support ### Changes from v1.x.x * Added read-only encrypt provider * Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305` * Added S3 encryption support via `XChaCha20-Poly1305` * Added replay protection to remote mounts * Added support base64 writes in remote FUSE * Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc` * Removed legacy Sia renter support * Removed Skynet support * Fixed multiple remote mount WinFSP API issues on \*NIX servers * Implemented chunked read and write * Writes for non-cached files are performed in chunks of 8Mib * Removed `repertory-ui` support * Removed `FreeBSD` support * Switched to `libsodium` over `CryptoPP` * Switched to `XChaCha20-Poly1305` for remote mounts * Updated `GoogleTest` to v1.14.0 * Updated `JSON for Modern C++` to v3.11.2 * Updated `OpenSSL` to v1.1.1w * Updated `RocksDB` to v8.5.3 * Updated `WinFSP` to 2023 * Updated `boost` to v1.78.0 * Updated `cURL` to v8.3.0 * Updated `zlib` to v1.3 * Use `upload_manager` for all providers * Adds a delay to uploads to prevent excessive API calls * Supports re-upload after mount restart for incomplete uploads * NOTE: Uploads for all providers are full file (no resume support) * Multipart upload support is planned for S3 Reviewed-on: #9
This commit is contained in:
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Debug 1 0 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Debug 1 0 0 0 0 0 "" 1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Release 1 0 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Release 1 0 0 0 0 0 "" 1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Debug 1 1 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 1 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 1 0 0 0 1 %1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 1 1 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 1 0 0 0 1 %1 0 1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Debug 0 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Debug 0 0 0 0 0 "" 1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
build_win.cmd Release 0 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Debug 1 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 0 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 0 0 0 1 %1
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 1 0 0 0
|
||||
popd
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
|
||||
pushd "%~dp0%.."
|
||||
call build_win.cmd Release 1 0 0 0 1 %1 0 1
|
||||
popd
|
@ -1,31 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo -1 > /proc/sys/fs/binfmt_misc/qemu-aarch64 || true
|
||||
echo ':qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-static:OCF' > /proc/sys/fs/binfmt_misc/register
|
||||
|
||||
cd "$1"
|
||||
|
||||
branch=${2#"origin/"}
|
||||
|
||||
ln -sf "src/arm64" .
|
||||
ln -sf "src/docker" .
|
||||
ln -sf "src/compile_tag.sh" .
|
||||
ln -sf "src/detect_linux_build.sh" .
|
||||
ln -sf "src/run_builds.sh" .
|
||||
ln -sf "src/run_arm64_shell.sh" .
|
||||
ln -sf "src/run_docker_shell.sh" .
|
||||
chmod +x *.sh
|
||||
|
||||
if ./run_builds.sh "$branch" "$3"; then
|
||||
rm -f tag_builds/*.zip
|
||||
rm -f tag_builds/*.b64
|
||||
rm -f tag_builds/*.sha256
|
||||
rm -f tag_builds/*.sig
|
||||
rm -f tag_builds/*.status
|
||||
|
||||
cd tag_builds/solus/$branch
|
||||
./unittests || exit -1
|
||||
exit 0
|
||||
else
|
||||
exit -1
|
||||
fi
|
@ -1,175 +0,0 @@
|
||||
@echo off
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
set ROOT=%~dp0%\..
|
||||
pushd "%ROOT%"
|
||||
|
||||
set ROOT=%CD%
|
||||
set PATH=%ROOT%\bin;%ROOT%\bin\curl\bin;%PATH%
|
||||
set CMAKE=cmake
|
||||
set VS_CMAKE_GENERATOR=Visual Studio 16 2019
|
||||
set TARGET_MODE=%1
|
||||
set /a ENABLE_PACKAGING=%2
|
||||
set /a DISABLE_TESTING=%3
|
||||
set /a DISABLE_PAUSE=%4
|
||||
shift
|
||||
set REPOSITORY=repertory
|
||||
set ERROR_EXIT=0
|
||||
|
||||
set OPENSSL_BIN="c:\OpenSSL-%BUILD_ARCH%\bin\openssl.exe"
|
||||
set REPERTORY_OPENSSL_ROOT="c:\OpenSSL-%BUILD_ARCH%"
|
||||
set BUILD_ARCH=Win64
|
||||
set BUILD_ARCH_LOWER=win64
|
||||
set MSBUILD_ARCH=x64
|
||||
set WINFSP_BASE_NAME=winfsp-x64
|
||||
if NOT EXIST %OPENSSL_BIN% (
|
||||
set OPENSSL_BIN="c:\Program Files\OpenSSL-!BUILD_ARCH!\bin\openssl.exe"
|
||||
set REPERTORY_OPENSSL_ROOT="c:\Program Files\OpenSSL-!BUILD_ARCH!"
|
||||
)
|
||||
|
||||
set PRIVATE_KEY="c:\src\cert\blockstorage_dev_private.pem"
|
||||
set PUBLIC_KEY="%ROOT%\blockstorage_dev_public.pem"
|
||||
|
||||
if "%TARGET_MODE%" NEQ "Debug" (
|
||||
if "%TARGET_MODE%" NEQ "Release" (
|
||||
call :ERROR "[Debug|Release] not specified"
|
||||
)
|
||||
)
|
||||
|
||||
if "%APPVEYOR_BUILD%" == "1" (
|
||||
set CMAKE_OPTS=-DOPENSSL_ROOT_DIR=C:\OpenSSL-v111-!BUILD_ARCH!
|
||||
) else (
|
||||
set CMAKE_OPTS=-DOPENSSL_ROOT_DIR=!REPERTORY_OPENSSL_ROOT!
|
||||
)
|
||||
|
||||
if "%DISABLE_SIGNING%" == "1" (
|
||||
set CMAKE_OPTS=%CMAKE_OPTS% -DENABLE_SIGNING=OFF
|
||||
) else (
|
||||
if "%USERNAME%" == "sgraves" (
|
||||
set CMAKE_OPTS=%CMAKE_OPTS% -DENABLE_SIGNING=ON
|
||||
)
|
||||
if "%USERNAME%" == "scott" (
|
||||
set CMAKE_OPTS=%CMAKE_OPTS% -DENABLE_SIGNING=ON
|
||||
)
|
||||
if "%USERNAME%" == "Scott Graves" (
|
||||
set CMAKE_OPTS=%CMAKE_OPTS% -DENABLE_SIGNING=ON
|
||||
)
|
||||
)
|
||||
|
||||
set BUILD_DIR=build%OUTPUT_DIR_EXTRA%
|
||||
for /F "tokens=*" %%f in ('git rev-parse --short HEAD') do (set GIT_REV=%%f)
|
||||
|
||||
mkdir "%BUILD_DIR%" >NUL 2>&1
|
||||
mkdir "%BUILD_DIR%\%TARGET_MODE%" >NUL 2>&1
|
||||
pushd "%BUILD_DIR%\%TARGET_MODE%" >NUL 2>&1
|
||||
echo Building [%TARGET_MODE%] [%BUILD_ARCH%]
|
||||
((%CMAKE% "%ROOT%" %CMAKE_OPTS% -A %MSBUILD_ARCH% -DCMAKE_BUILD_TYPE=%TARGET_MODE% -DCMAKE_GENERATOR="%VS_CMAKE_GENERATOR%" -DCMAKE_CONFIGURATION_TYPES="%TARGET_MODE%" && (%CMAKE% --build . --config %TARGET_MODE%)) || (
|
||||
popd
|
||||
call :ERROR "Compile Error"
|
||||
)
|
||||
|
||||
for /f "tokens=*" %%i in ('grep -m1 -a REPERTORY_VERSION repertory.vcxproj ^| sed -e "s/.*REPERTORY_VERSION=\"//g" -e "s/\".*//g"') do (
|
||||
set APP_VER=%%i
|
||||
)
|
||||
|
||||
for /f "tokens=2 delims=-" %%a in ("%APP_VER%") do (
|
||||
set APP_RELEASE_TYPE=%%a
|
||||
)
|
||||
for /f "tokens=1 delims=." %%a in ("%APP_RELEASE_TYPE%") do (
|
||||
set APP_RELEASE_TYPE=%%a
|
||||
)
|
||||
|
||||
if "%APP_RELEASE_TYPE%"=="alpha" set APP_RELEASE_TYPE=Alpha
|
||||
if "%APP_RELEASE_TYPE%"=="beta" set APP_RELEASE_TYPE=Beta
|
||||
if "%APP_RELEASE_TYPE%"=="rc" set APP_RELEASE_TYPE=RC
|
||||
if "%APP_RELEASE_TYPE%"=="release" set APP_RELEASE_TYPE=Release
|
||||
|
||||
echo Repertory Version: %APP_VER%
|
||||
set TARGET_MODE_LOWER=%TARGET_MODE%
|
||||
call :LOWERCASE TARGET_MODE_LOWER
|
||||
|
||||
set OUT_NAME=repertory_%APP_VER%_%GIT_REV%_!TARGET_MODE_LOWER!_%BUILD_ARCH_LOWER%.zip
|
||||
set OUT_FILE=..\..\%OUT_NAME%
|
||||
|
||||
pushd %TARGET_MODE%
|
||||
if "%DISABLE_TESTING%" NEQ "1" (
|
||||
echo Testing [%TARGET_MODE%]
|
||||
del /q unittests.err 1>NUL 2>&1
|
||||
start "Unittests" /wait /min cmd /v:on /c "unittests.exe>unittests.log 2>&1 || echo ^!errorlevel^!>unittests.err"
|
||||
if EXIST unittests.err (
|
||||
call :ERROR "Unittests Failed"
|
||||
)
|
||||
)
|
||||
|
||||
if "%APPVEYOR_BUILD%" NEQ "1" (
|
||||
echo Signing Application
|
||||
del /q repertory.exe.sha256 1>NUL 2>&1
|
||||
del /q repertory.exe.sig 1>NUL 2>&1
|
||||
((certutil -hashfile repertory.exe SHA256 | sed -e "1d" -e "$d" -e "s/\ //g") > repertory.exe.sha256) || (call :ERROR "Create repertory sha-256 failed")
|
||||
(%OPENSSL_BIN% dgst -sha256 -sign "%PRIVATE_KEY%" -out repertory.exe.sig repertory.exe) || (call :ERROR "Create repertory signature failed")
|
||||
(%OPENSSL_BIN% dgst -sha256 -verify "%PUBLIC_KEY%" -signature repertory.exe.sig repertory.exe) || (call :ERROR "Verify repertory signature failed")
|
||||
)
|
||||
|
||||
if "%ENABLE_PACKAGING%"=="1" (
|
||||
echo Creating Archive [%OUT_FILE%]
|
||||
(7za u "%OUT_FILE%" repertory.exe repertory.exe.sha256 repertory.exe.sig %WINFSP_BASE_NAME%.dll cacert.pem) || (call :ERROR "Create repertory zip failed")
|
||||
|
||||
echo Signing Archive [%OUT_FILE%]
|
||||
(certutil -hashfile "%OUT_FILE%" SHA256 | sed -e "1d" -e "$d" -e "s/\ //g" > "%OUT_FILE%.sha256") || (call :ERROR "Create zip sha-256 failed")
|
||||
(%OPENSSL_BIN% dgst -sha256 -sign "%PRIVATE_KEY%" -out "%OUT_FILE%.sig" "%OUT_FILE%") || (call :ERROR "Create zip signature failed")
|
||||
(%OPENSSL_BIN% dgst -sha256 -verify "%PUBLIC_KEY%" -signature "%OUT_FILE%.sig" "%OUT_FILE%") || (call :ERROR "Verify zip signature failed")
|
||||
(b64.exe -e "%OUT_FILE%.sig" "%OUT_FILE%.sig.b64") || (call :ERROR "Create zip base64 signature failed")
|
||||
for /f "delims=" %%i in ('type %OUT_FILE%.sig.b64') do set APP_SIG=!APP_SIG!%%i
|
||||
for /f "delims=" %%i in ('type %OUT_FILE%.sha256') do set APP_SHA256=!APP_SHA256!%%i
|
||||
)
|
||||
popd
|
||||
popd
|
||||
|
||||
goto :END
|
||||
|
||||
:ERROR
|
||||
echo %1
|
||||
set ERROR_EXIT=1
|
||||
if "%DISABLE_PAUSE%" NEQ "1" (
|
||||
pause
|
||||
)
|
||||
goto :END
|
||||
|
||||
:NO_QUOTES
|
||||
set %~1=!%~1:"=!
|
||||
goto :EOF
|
||||
|
||||
:LOWERCASE
|
||||
set %~1=!%~1:A=a!
|
||||
set %~1=!%~1:B=b!
|
||||
set %~1=!%~1:C=c!
|
||||
set %~1=!%~1:D=d!
|
||||
set %~1=!%~1:E=e!
|
||||
set %~1=!%~1:F=f!
|
||||
set %~1=!%~1:G=g!
|
||||
set %~1=!%~1:H=h!
|
||||
set %~1=!%~1:I=i!
|
||||
set %~1=!%~1:J=j!
|
||||
set %~1=!%~1:K=k!
|
||||
set %~1=!%~1:L=l!
|
||||
set %~1=!%~1:M=m!
|
||||
set %~1=!%~1:N=n!
|
||||
set %~1=!%~1:O=o!
|
||||
set %~1=!%~1:P=p!
|
||||
set %~1=!%~1:Q=q!
|
||||
set %~1=!%~1:R=r!
|
||||
set %~1=!%~1:S=s!
|
||||
set %~1=!%~1:T=t!
|
||||
set %~1=!%~1:U=u!
|
||||
set %~1=!%~1:V=v!
|
||||
set %~1=!%~1:W=w!
|
||||
set %~1=!%~1:X=x!
|
||||
set %~1=!%~1:Y=y!
|
||||
set %~1=!%~1:Z=z!
|
||||
goto :EOF
|
||||
|
||||
:END
|
||||
popd
|
||||
if "!ERROR_EXIT!" NEQ "0" (
|
||||
exit !ERROR_EXIT!
|
||||
)
|
30
scripts/create_containers.sh
Executable file
30
scripts/create_containers.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
|
||||
pushd "$(dirname "$0")"
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
pushd "${CURRENT_DIR}/.."
|
||||
|
||||
function create_containers() {
|
||||
TYPE=$1
|
||||
|
||||
for FILE in ./docker/${TYPE}/*; do
|
||||
DISTRONAME=$(basename ${FILE})
|
||||
CONTAINER_NAME=repertory_${DISTRONAME}
|
||||
TAG_NAME=repertory:${DISTRONAME}
|
||||
echo Creating Container [${CONTAINER_NAME}]
|
||||
|
||||
docker stop ${CONTAINER_NAME}
|
||||
docker rm ${CONTAINER_NAME}
|
||||
docker build -t ${TAG_NAME} - < docker/${TYPE}/${DISTRONAME}
|
||||
docker stop ${CONTAINER_NAME}
|
||||
docker rm ${CONTAINER_NAME}
|
||||
done
|
||||
}
|
||||
|
||||
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||
create_containers aarch64
|
||||
create_containers 64_bit
|
||||
|
||||
popd
|
||||
popd
|
@ -1,9 +0,0 @@
|
||||
@echo off
|
||||
|
||||
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
|
||||
|
||||
md ..\build2\debug
|
||||
pushd "..\build2\debug"
|
||||
(cmake ..\.. -G "CodeBlocks - NMake Makefiles" -DREPERTORY_ENABLE_SKYNET_PREMIUM_TESTS=ON -DREPERTORY_ENABLE_S3_TESTING=ON -DREPERTORY_ENABLE_S3=ON -DCMAKE_BUILD_TYPE=Debug -DREPERTORY_WRITE_SUPPORT=ON && nmake) || exit 1
|
||||
copy /y compile_commands.json ..
|
||||
popd
|
@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p ../build/debug;cd ../build/debug && cmake ../.. -DREPERTORY_ENABLE_SKYNET=ON \
|
||||
-DREPERTORY_ENABLE_S3=ON \
|
||||
-DREPERTORY_ENABLE_SKYNET_PREMIUM_TESTS=ON \
|
||||
-DREPERTORY_ENABLE_S3_TESTING=ON \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DREPERTORY_WRITE_SUPPORT=ON && make -j10 || exit 1
|
||||
|
||||
cd ..
|
||||
|
||||
ln -sf debug/repertory .
|
||||
ln -sf debug/unittests .
|
||||
ln -sf debug/compile_commands.json .
|
5
scripts/make_mingw64.sh
Executable file
5
scripts/make_mingw64.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
pushd "$(dirname "$0")/.."
|
||||
scripts/make_unix_docker.sh ${1} "${2}" 1
|
||||
popd
|
115
scripts/make_package.cmd
Normal file
115
scripts/make_package.cmd
Normal file
@ -0,0 +1,115 @@
|
||||
@echo off
|
||||
setlocal
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set SIGNING_FOLDER=%1
|
||||
set BINARY_FOLDER=%2
|
||||
set SOURCE_FOLDER=%3
|
||||
set OUTPUT_FOLDER=%4
|
||||
|
||||
set PATH=%~dp0%..\bin;!PATH!
|
||||
|
||||
if "%SIGNING_FOLDER%" == "" (
|
||||
call :EXIT_SCRIPT "'SIGNING_FOLDER' is not set (arg1)"
|
||||
)
|
||||
|
||||
if "%BINARY_FOLDER%" == "" (
|
||||
call :EXIT_SCRIPT "'BINARY_FOLDER' is not set (arg2)"
|
||||
)
|
||||
|
||||
if "%SOURCE_FOLDER%" == "" (
|
||||
call :EXIT_SCRIPT "'SOURCE_FOLDER' is not set (arg3)"
|
||||
)
|
||||
|
||||
if "%OUTPUT_FOLDER%" == "" (
|
||||
call :EXIT_SCRIPT "'OUTPUT_FOLDER' is not set (arg4)"
|
||||
)
|
||||
|
||||
call :NORMALIZE "%SIGNING_FOLDER%"
|
||||
set SIGNING_FOLDER=%RETVAL%
|
||||
|
||||
call :NORMALIZE "%BINARY_FOLDER%"
|
||||
set BINARY_FOLDER=%RETVAL%
|
||||
|
||||
call :NORMALIZE "%SOURCE_FOLDER%"
|
||||
set SOURCE_FOLDER=%RETVAL%
|
||||
|
||||
set BUILD_ARCH=Win64
|
||||
set OPENSSL_BIN="c:\OpenSSL-%BUILD_ARCH%\bin\openssl.exe"
|
||||
if NOT EXIST %OPENSSL_BIN% (
|
||||
set OPENSSL_BIN="c:\Program Files\OpenSSL-%BUILD_ARCH%\bin\openssl.exe"
|
||||
set REPERTORY_OPENSSL_ROOT="c:\Program Files\OpenSSL-%BUILD_ARCH%"
|
||||
)
|
||||
|
||||
pushd "%SOURCE_FOLDER%"
|
||||
for /F "tokens=*" %%f in ('git rev-parse --short HEAD') do (set GIT_REV=%%f)
|
||||
for /F "tokens=*" %%f in ('git branch --show-current') do (set GIT_BRANCH=%%f)
|
||||
for /F "tokens=*" %%f in ('grep set(REPERTORY_MAJOR .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%%f)
|
||||
for /F "tokens=*" %%f in ('grep set(REPERTORY_MINOR .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%.%%f)
|
||||
for /F "tokens=*" %%f in ('grep set(REPERTORY_REV .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%.%%f)
|
||||
for /F "tokens=*" %%f in ('grep set(REPERTORY_RELEASE_ITER .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%-%%f)
|
||||
popd
|
||||
|
||||
if "%GIT_BRANCH%" == "development" (
|
||||
set RELEASE_FOLDER=nightly
|
||||
) else (
|
||||
set RELEASE_FOLDER=%REPERTORY_RELEASE_ITER%
|
||||
)
|
||||
|
||||
call :NORMALIZE "%OUTPUT_FOLDER%\!RELEASE_FOLDER!"
|
||||
set OUTPUT_FOLDER=%RETVAL%
|
||||
|
||||
set OUT_FILE=repertory_%REPERTORY_VERSION%_%GIT_REV%_windows_amd64.zip
|
||||
set OUT_ZIP=%BINARY_FOLDER%\%OUT_FILE%
|
||||
set FILE_LIST=repertory.exe repertory.exe.sha256 repertory.exe.sig winfsp-x64.dll winfsp-x64.dll.sha256 winfsp-x64.dll.sig cacert.pem cacert.pem.sha256 cacert.pem.sig
|
||||
|
||||
pushd "%BINARY_FOLDER%"
|
||||
call :CLEANUP
|
||||
|
||||
call :CREATE_HASH "%BINARY_FOLDER%\repertory.exe"
|
||||
call :CREATE_HASH "%BINARY_FOLDER%\winfsp-x64.dll"
|
||||
call :CREATE_HASH "%BINARY_FOLDER%\cacert.pem"
|
||||
|
||||
(7za u "%OUT_FILE%" %FILE_LIST%) || (7z u "%OUT_FILE%" %FILE_LIST%) || (call :EXIT_SCRIPT "Create repertory zip failed")
|
||||
|
||||
call :CREATE_HASH "%OUT_FILE%"
|
||||
|
||||
copy /y "%OUT_ZIP%" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP% to %OUTPUT_FOLDER% failed"
|
||||
copy /y "%OUT_ZIP%.sha256" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP%.sha256 to %OUTPUT_FOLDER% failed"
|
||||
copy /y "%OUT_ZIP%.sig" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP%.sig to %OUTPUT_FOLDER% failed"
|
||||
|
||||
call :CLEANUP
|
||||
popd
|
||||
goto :END
|
||||
|
||||
:CREATE_HASH
|
||||
call :NORMALIZE %1
|
||||
set HASH_FILE=%RETVAL%
|
||||
|
||||
(%OPENSSL_BIN% dgst -sha256 -sign "%SIGNING_FOLDER%\blockstorage_dev_private.pem" -out "%HASH_FILE%.sig" "%HASH_FILE%") || (call :EXIT_SCRIPT "Create %HASH_FILE% signature failed")
|
||||
(%OPENSSL_BIN% dgst -sha256 -verify "%SIGNING_FOLDER%\blockstorage_dev_public.pem" -signature "%HASH_FILE%.sig" "%HASH_FILE%") || (call :EXIT_SCRIPT "Verify %HASH_FILE% signature failed")
|
||||
((certutil -hashfile "%HASH_FILE%" SHA256 | sed -e "1d" -e "$d" -e "s/\ //g") > "%HASH_FILE%.sha256") || (call :EXIT_SCRIPT "Create %HASH_FILE% sha-256 failed")
|
||||
EXIT /B
|
||||
|
||||
:CLEANUP
|
||||
del /q "%OUT_ZIP%" 1>NUL 2>&1
|
||||
del /q "%OUT_ZIP%.sha256" 1>NUL 2>&1
|
||||
del /q "%OUT_ZIP%.sig" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\cacert.pem.sha256" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\cacert.pem.sig" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\repertory.exe.sha256" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\repertory.exe.sig" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\winfsp-x64.dll.sha256" 1>NUL 2>&1
|
||||
del /q "%BINARY_FOLDER%\winfsp-x64.dll.sig" 1>NUL 2>&1
|
||||
EXIT /B
|
||||
|
||||
:NORMALIZE
|
||||
SET RETVAL=%~f1
|
||||
exit /B
|
||||
|
||||
:EXIT_SCRIPT
|
||||
echo %1
|
||||
exit 1
|
||||
|
||||
:END
|
||||
echo Done
|
127
scripts/make_package.sh
Executable file
127
scripts/make_package.sh
Executable file
@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLATFORM_NAME=$1
|
||||
SIGNING_FOLDER=$2
|
||||
BINARY_FOLDER=$3
|
||||
SOURCE_FOLDER=$4
|
||||
OUTPUT_FOLDER=$5
|
||||
ARM64=$6
|
||||
|
||||
LINUX_PLATFORM=alpine
|
||||
|
||||
exit_script() {
|
||||
echo "$1"
|
||||
cd "${CURRENT_DIR}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "${PLATFORM_NAME}" ]; then
|
||||
exit_script "'PLATFORM_NAME' is not set (arg1)"
|
||||
fi
|
||||
|
||||
if [ -z "${SIGNING_FOLDER}" ]; then
|
||||
exit_script "'SIGNING_FOLDER' is not set (arg2)"
|
||||
fi
|
||||
|
||||
if [ -z "${BINARY_FOLDER}" ]; then
|
||||
exit_script "'BINARY_FOLDER' is not set (arg3)"
|
||||
fi
|
||||
|
||||
if [ -z "${SOURCE_FOLDER}" ]; then
|
||||
exit_script "'SOURCE_FOLDER' is not set (arg4)"
|
||||
fi
|
||||
|
||||
if [ -z "${OUTPUT_FOLDER}" ]; then
|
||||
exit_script "'OUTPUT_FOLDER' is not set (arg5)"
|
||||
fi
|
||||
|
||||
if [ "${PLATFORM_NAME}" == "darwin" ]; then
|
||||
SHA256_EXEC="shasum -a 256 -b"
|
||||
else
|
||||
SHA256_EXEC="sha256sum -b"
|
||||
fi
|
||||
|
||||
pushd "${SOURCE_FOLDER}"
|
||||
BRANCH=$(git branch --show-current)
|
||||
RELEASE=$(grep set\(REPERTORY_RELEASE_ITER ./CMakeLists.txt | sed s/\)//g | awk '{print $2}')
|
||||
|
||||
if [ "${BRANCH}" == "master" ] || [ "${BRANCH}" == "alpha" ] || [ "${BRANCH}" == "beta" ] || [ "${BRANCH}" == "rc" ]; then
|
||||
OUTPUT_FOLDER=${OUTPUT_FOLDER}/${RELEASE}
|
||||
else
|
||||
OUTPUT_FOLDER=${OUTPUT_FOLDER}/nightly
|
||||
fi
|
||||
|
||||
GIT_REV=$(git rev-parse --short HEAD)
|
||||
REPERTORY_VERSION=$(grep set\(REPERTORY_MAJOR ./CMakeLists.txt | sed s/\)//g | awk '{print $2}')
|
||||
REPERTORY_VERSION=${REPERTORY_VERSION}.$(grep set\(REPERTORY_MINOR ./CMakeLists.txt | sed s/\)//g | awk '{print $2}')
|
||||
REPERTORY_VERSION=${REPERTORY_VERSION}.$(grep set\(REPERTORY_REV ./CMakeLists.txt | sed s/\)//g | awk '{print $2}')
|
||||
REPERTORY_VERSION=${REPERTORY_VERSION}-${RELEASE}
|
||||
popd
|
||||
|
||||
REPERTORY_BINARY=repertory
|
||||
if [ "${ARM64}" == "1" ]; then
|
||||
if [ "${PLATFORM_NAME}" == "${LINUX_PLATFORM}" ]; then
|
||||
ZIP_FILE_NAME=repertory_${REPERTORY_VERSION}_${GIT_REV}_linux_arm64.zip
|
||||
else
|
||||
ZIP_FILE_NAME=repertory_${REPERTORY_VERSION}_${GIT_REV}_${PLATFORM_NAME}_arm64.zip
|
||||
fi
|
||||
elif [ "${PLATFORM_NAME}" == "${LINUX_PLATFORM}" ]; then
|
||||
ZIP_FILE_NAME=repertory_${REPERTORY_VERSION}_${GIT_REV}_linux_amd64.zip
|
||||
elif [ "${PLATFORM_NAME}" == "mingw64" ]; then
|
||||
ZIP_FILE_NAME=repertory_${REPERTORY_VERSION}_${GIT_REV}_windows_amd64.zip
|
||||
REPERTORY_BINARY=${REPERTORY_BINARY}.exe
|
||||
else
|
||||
ZIP_FILE_NAME=repertory_${REPERTORY_VERSION}_${GIT_REV}_${PLATFORM_NAME}_amd64.zip
|
||||
fi
|
||||
ZIP_FILE_PATH=./${ZIP_FILE_NAME}
|
||||
|
||||
create_hash_and_sig() {
|
||||
${SHA256_EXEC} ./${1} > ${1}.sha256 || exit_script "SHA-256 failed for $1"
|
||||
openssl dgst -sha256 -sign "${SIGNING_FOLDER}/blockstorage_dev_private.pem" -out ${1}.sig $1 || exit_script "Create signature failed for $1"
|
||||
openssl dgst -sha256 -verify "${SIGNING_FOLDER}/blockstorage_dev_public.pem" -signature ${1}.sig $1 || exit_script "Verify signature failed for $1"
|
||||
}
|
||||
|
||||
clean_directory() {
|
||||
rm -f "${ZIP_FILE_PATH}"
|
||||
rm -f "${ZIP_FILE_PATH}.sha256"
|
||||
rm -f "${ZIP_FILE_PATH}.sig"
|
||||
rm -f "cacert.pem.sha256"
|
||||
rm -f "cacert.pem.sig"
|
||||
rm -f "${REPERTORY_BINARY}.sha256"
|
||||
rm -f "${REPERTORY_BINARY}.sig"
|
||||
if [ "${PLATFORM_NAME}" == "mingw64" ]; then
|
||||
rm -f "winfsp-x64.dll.sha256"
|
||||
rm -f "winfsp-x64.dll.sig"
|
||||
fi
|
||||
}
|
||||
|
||||
pushd "${BINARY_FOLDER}"
|
||||
clean_directory
|
||||
|
||||
strip ./${REPERTORY_BINARY}
|
||||
|
||||
create_hash_and_sig ${REPERTORY_BINARY}
|
||||
create_hash_and_sig cacert.pem
|
||||
if [ "${PLATFORM_NAME}" == "mingw64" ]; then
|
||||
create_hash_and_sig winfsp-x64.dll
|
||||
fi
|
||||
|
||||
if [ "${PLATFORM_NAME}" == "mingw64" ]; then
|
||||
zip "${ZIP_FILE_PATH}" \
|
||||
${REPERTORY_BINARY} ${REPERTORY_BINARY}.sha256 ${REPERTORY_BINARY}.sig \
|
||||
winfsp-x64.dll winfsp-x64.dll.sha256 winfsp-x64.dll.sig \
|
||||
cacert.pem cacert.pem.sha256 cacert.pem.sig || exit_script "Create zip failed"
|
||||
else
|
||||
zip "${ZIP_FILE_PATH}" \
|
||||
${REPERTORY_BINARY} ${REPERTORY_BINARY}.sha256 ${REPERTORY_BINARY}.sig \
|
||||
cacert.pem cacert.pem.sha256 cacert.pem.sig || exit_script "Create zip failed"
|
||||
fi
|
||||
|
||||
create_hash_and_sig ${ZIP_FILE_NAME}
|
||||
|
||||
cp -f "${ZIP_FILE_PATH}" "${OUTPUT_FOLDER}" || exit_script "Copy ${ZIP_FILE_NAME} failed"
|
||||
cp -f "${ZIP_FILE_PATH}.sha256" "${OUTPUT_FOLDER}" || exit_script "Copy ${ZIP_FILE_NAME}.sha256 failed"
|
||||
cp -f "${ZIP_FILE_PATH}.sig" "${OUTPUT_FOLDER}" || exit_script "Copy ${ZIP_FILE_NAME}.sig failed"
|
||||
|
||||
clean_directory
|
||||
popd
|
@ -1,9 +0,0 @@
|
||||
@echo off
|
||||
|
||||
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
|
||||
|
||||
md ..\build2\release
|
||||
pushd "..\build2\release"
|
||||
(cmake ..\.. -G "CodeBlocks - NMake Makefiles" -DREPERTORY_ENABLE_SKYNET_PREMIUM_TESTS=ON -DREPERTORY_ENABLE_S3_TESTING=ON -DREPERTORY_ENABLE_S3=ON -DCMAKE_BUILD_TYPE=Release -DREPERTORY_WRITE_SUPPORT=ON && nmake) || exit 1
|
||||
copy /y compile_commands.json ..
|
||||
popd
|
@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p ../build/release;cd ../build/release && cmake ../.. -DREPERTORY_ENABLE_SKYNET=ON \
|
||||
-DREPERTORY_ENABLE_S3=ON \
|
||||
-DREPERTORY_ENABLE_SKYNET_PREMIUM_TESTS=ON \
|
||||
-DREPERTORY_ENABLE_S3_TESTING=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DREPERTORY_WRITE_SUPPORT=ON && make -j10 || exit 1
|
||||
|
||||
cd ..
|
||||
|
||||
ln -sf release/repertory .
|
||||
ln -sf release/unittests .
|
||||
ln -sf release/compile_commands.json .
|
@ -1,7 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
BUILD_TYPE=$1
|
||||
BUILD_CLEAN=$2
|
||||
BUILD_ARCH=$3
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
SOURCE_DIR=$(dirname "$0")/..
|
||||
SOURCE_DIR=$(realpath ${SOURCE_DIR})
|
||||
|
||||
./make_${BUILD_TYPE}.sh || exit 1
|
||||
NAME=alpine
|
||||
if [ -z "${BUILD_ARCH}" ]; then
|
||||
BUILD_ARCH=64_bit
|
||||
fi
|
||||
|
||||
docker stop repertory_${NAME}
|
||||
docker rm repertory_${NAME}
|
||||
docker build -t repertory:${NAME} - < ${SOURCE_DIR}/docker/${BUILD_ARCH}/${NAME} &&
|
||||
docker run -td -u $(id -u):$(id -g) --device /dev/fuse --cap-add SYS_ADMIN --name repertory_${NAME} --env MY_NUM_JOBS=${MY_NUM_JOBS} -w ${SOURCE_DIR} -v ${SOURCE_DIR}:${SOURCE_DIR}:rw,z repertory:${NAME} &&
|
||||
docker exec repertory_${NAME} /bin/bash -c "${SOURCE_DIR}/scripts/make_unix_docker.sh ${BUILD_TYPE} ${BUILD_CLEAN}"
|
||||
docker stop repertory_${NAME}
|
||||
docker rm repertory_${NAME}
|
||||
|
61
scripts/make_unix_docker.sh
Executable file
61
scripts/make_unix_docker.sh
Executable file
@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
BUILD_TYPE=$1
|
||||
BUILD_CLEAN=$2
|
||||
IS_MINGW=$3
|
||||
if [ "${IS_MINGW}" == "1" ]; then
|
||||
BUILD_ROOT=build3
|
||||
else
|
||||
BUILD_ROOT=build
|
||||
fi
|
||||
|
||||
BUILD_FOLDER=$(echo "${BUILD_TYPE}" | tr '[:upper:]' '[:lower:]')
|
||||
if [ "${BUILD_FOLDER}" == "release" ]; then
|
||||
BUILD_TYPE=Release
|
||||
fi
|
||||
|
||||
NUM_JOBS=${MY_NUM_JOBS}
|
||||
if [[ -z "${NUM_JOBS}" ]]; then
|
||||
NUM_JOBS=$(getconf _NPROCESSORS_ONLN 2> /dev/null || getconf NPROCESSORS_ONLN 2> /dev/null || echo 1)
|
||||
if [ "${NUM_JOBS}" -gt "2" ]; then
|
||||
NUM_JOBS=$(expr ${NUM_JOBS} - 2)
|
||||
elif [ "${NUM_JOBS}" -gt "1" ]; then
|
||||
NUM_JOBS=$(expr ${NUM_JOBS} - 1)
|
||||
fi
|
||||
fi
|
||||
echo "Job count: ${NUM_JOBS}"
|
||||
|
||||
pushd "$(dirname "$0")"
|
||||
mkdir -p ../${BUILD_ROOT}/${BUILD_FOLDER}
|
||||
|
||||
pushd ../${BUILD_ROOT}/${BUILD_FOLDER}
|
||||
|
||||
if [ "${IS_MINGW}" == "1" ]; then
|
||||
TOOLCHAIN=$(realpath ../../cmake/mingw-w64-x86_64.cmake)
|
||||
EXE_EXT=.exe
|
||||
CMAKE_ADDITIONAL_OPTS=-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
fi
|
||||
|
||||
cmake ../.. ${CMAKE_ADDITIONAL_OPTS} \
|
||||
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
||||
-DREPERTORY_ENABLE_S3=ON \
|
||||
-DREPERTORY_ENABLE_S3_TESTING=ON || exit 1
|
||||
|
||||
if [ "${BUILD_CLEAN}" == "clean" ]; then
|
||||
make clean
|
||||
fi
|
||||
|
||||
make -j${NUM_JOBS} || exit 1
|
||||
popd
|
||||
|
||||
pushd ../${BUILD_ROOT}
|
||||
ln -sf ${BUILD_FOLDER}/compile_commands.json .
|
||||
ln -sf ${BUILD_FOLDER}/repertory${EXE_EXT} .
|
||||
ln -sf ${BUILD_FOLDER}/unittests${EXE_EXT} .
|
||||
if [ "${IS_MINGW}" == "1" ]; then
|
||||
ln -sf ${BUILD_FOLDER}/winfsp-x64.dll .
|
||||
fi
|
||||
popd
|
||||
|
||||
ln -sf ../3rd_party/cacert.pem ../${BUILD_ROOT}/cacert.pem
|
||||
popd
|
@ -1,7 +1,44 @@
|
||||
@echo off
|
||||
|
||||
set BUILD_TYPE=%1
|
||||
set MSVC_BUILD_TYPE=%1
|
||||
set BUILD_CLEAN=%2
|
||||
|
||||
pushd "%~dp0"
|
||||
make_%BUILD_TYPE%.cmd || exit 1
|
||||
if "%MSVC_BUILD_TYPE%" == "" (
|
||||
echo "Build type not set"
|
||||
exit 1
|
||||
)
|
||||
|
||||
if "%MSVC_BUILD_TYPE%" == "Debug" (
|
||||
set BUILD_FOLDER=debug
|
||||
) else (
|
||||
if "%MSVC_BUILD_TYPE%" == "Release" (
|
||||
set BUILD_FOLDER=release
|
||||
) else (
|
||||
set BUILD_FOLDER=%MSVC_BUILD_TYPE%
|
||||
)
|
||||
set MSVC_BUILD_TYPE=Release
|
||||
)
|
||||
|
||||
if EXIST "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" (
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||
) else (
|
||||
if EXIST "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat" (
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
||||
)
|
||||
)
|
||||
|
||||
pushd "%~dp0%"
|
||||
md ..\build2\%BUILD_FOLDER%
|
||||
del /q ..\build2\%BUILD_FOLDER%\librepertory.lib
|
||||
del /q ..\build2\%BUILD_FOLDER%\repertory.exe
|
||||
del /q ..\build2\%BUILD_FOLDER%\unittests.exe
|
||||
|
||||
pushd "..\build2\%BUILD_FOLDER%"
|
||||
cmake ..\.. -G "NMake Makefiles" -DREPERTORY_ENABLE_S3_TESTING=ON -DREPERTORY_ENABLE_S3=ON -DCMAKE_BUILD_TYPE=%MSVC_BUILD_TYPE% || exit 1
|
||||
copy /y compile_commands.json ..
|
||||
if "%BUILD_CLEAN%" == "clean" (
|
||||
nmake clean || exit 1
|
||||
)
|
||||
nmake || exit 1
|
||||
popd
|
||||
popd
|
||||
|
25
scripts/run_docker_shell.sh
Executable file
25
scripts/run_docker_shell.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
pushd "$(dirname "$0")"
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
pushd "${CURRENT_DIR}/.."
|
||||
NAME=$1
|
||||
TYPE=$2
|
||||
if [ -z "$NAME" ]; then
|
||||
echo "Name not set"
|
||||
else
|
||||
if [ -z "${TYPE}" ]; then
|
||||
TYPE=64_bit
|
||||
fi
|
||||
|
||||
docker stop repertory_${NAME}
|
||||
docker rm repertory_${NAME}
|
||||
docker build -t repertory:${NAME} - < docker/${TYPE}/${NAME} &&
|
||||
docker run -itd --device /dev/fuse --cap-add SYS_ADMIN --name repertory_${NAME} -v $(pwd):/mnt repertory:${NAME} &&
|
||||
docker exec -it repertory_${NAME} /bin/bash
|
||||
docker stop repertory_${NAME}
|
||||
docker rm repertory_${NAME}
|
||||
fi
|
||||
popd
|
||||
popd
|
11
scripts/setup_msys2.sh
Executable file
11
scripts/setup_msys2.sh
Executable file
@ -0,0 +1,11 @@
|
||||
pacman -Sqyuu --noconfirm &&
|
||||
pacman -S --noconfirm msys2-keyring &&
|
||||
pacman -S --noconfirm --needed --disable-download-timeout \
|
||||
mingw64/mingw-w64-x86_64-cmake \
|
||||
mingw64/mingw-w64-x86_64-gcc \
|
||||
mingw64/mingw-w64-x86_64-gdb \
|
||||
mingw64/mingw-w64-x86_64-make \
|
||||
mingw64/mingw-w64-x86_64-toolchain \
|
||||
msys/git \
|
||||
msys/mercurial \
|
||||
make
|
Reference in New Issue
Block a user