mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-17 03:12:21 +08:00
Merge pull request #5162 from ammolitor/remove_build_dir
remove `build` dir
This commit is contained in:
commit
293204741c
@ -201,9 +201,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fdbclient/BuildFlags.h.in ${CMAKE_CUR
|
|||||||
if (CMAKE_EXPORT_COMPILE_COMMANDS AND WITH_PYTHON)
|
if (CMAKE_EXPORT_COMPILE_COMMANDS AND WITH_PYTHON)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json
|
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json
|
||||||
COMMAND $<TARGET_FILE:Python::Interpreter> ${CMAKE_CURRENT_SOURCE_DIR}/build/gen_compile_db.py
|
COMMAND $<TARGET_FILE:Python::Interpreter> contrib/gen_compile_db.py
|
||||||
ARGS -b ${CMAKE_CURRENT_BINARY_DIR} -s ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json
|
ARGS -b ${CMAKE_CURRENT_BINARY_DIR} -s ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/build/gen_compile_db.py ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json
|
DEPENDS contrib/gen_compile_db.py ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json
|
||||||
COMMENT "Build compile commands for IDE"
|
COMMENT "Build compile commands for IDE"
|
||||||
)
|
)
|
||||||
add_custom_target(processed_compile_commands ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json)
|
add_custom_target(processed_compile_commands ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json)
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
# escape=`
|
|
||||||
ARG IMAGE_TAG=0.1.0
|
|
||||||
|
|
||||||
# Use the latest Windows Server Core image with .NET Framework 4.8.
|
|
||||||
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
|
|
||||||
|
|
||||||
# Restore the default Windows shell for correct batch processing.
|
|
||||||
SHELL ["cmd", "/S", "/C"]
|
|
||||||
|
|
||||||
# Download the Build Tools bootstrapper.
|
|
||||||
ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
|
|
||||||
|
|
||||||
# Install Build Tools with the Microsoft.VisualStudio.Workload.AzureBuildTools workload, excluding workloads and components with known issues.
|
|
||||||
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
|
|
||||||
--installPath C:\BuildTools `
|
|
||||||
--add Microsoft.VisualStudio.Workload.VCTools `
|
|
||||||
--add Microsoft.VisualStudio.Component.TestTools.BuildTools `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.ASAN `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.CMake.Project `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `
|
|
||||||
--add Microsoft.VisualStudio.Component.Windows10SDK.18362 `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Llvm.Clang `
|
|
||||||
|| IF "%ERRORLEVEL%"=="3010" EXIT 0
|
|
||||||
|
|
||||||
# Install Choco package manager
|
|
||||||
RUN powershell -Command "iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex"
|
|
||||||
RUN powershell -Command choco install 7zip -y
|
|
||||||
|
|
||||||
# Download boost
|
|
||||||
# We want to make this as early as possible as downloading and unpacking boost takes a very long time
|
|
||||||
RUN mkdir C:\Downloads && `
|
|
||||||
powershell -Command iwr -Uri https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.7z -OutFile C:\Downloads\boost_1_72_0.7z && `
|
|
||||||
powershell -Command (Get-FileHash C:\Downloads\boost_1_72_0.7z).Hash -eq \"247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f\" && `
|
|
||||||
cd \Downloads && "C:\Program Files\7-Zip\7z" x boost_1_72_0.7z && del boost_1_72_0.7z
|
|
||||||
|
|
||||||
# install other dependencies
|
|
||||||
RUN powershell -Command choco install cmake openjdk12 python -y
|
|
||||||
|
|
||||||
# add cmake to the path
|
|
||||||
RUN setx path "%path%;C:\Program Files\CMake\bin;C:\Program Files\7-Zip;C:\Program Files (x86)\Microsoft Visual Studio\installer"
|
|
||||||
|
|
||||||
# Compile boost context
|
|
||||||
RUN C:\BuildTools\Common7\Tools\VsDevCmd.bat && `
|
|
||||||
cd \Downloads\boost_1_72_0 && `
|
|
||||||
.\bootstrap.bat && `
|
|
||||||
powershell -Command `
|
|
||||||
.\b2 variant=release address-model=64 architecture=x86 link=static --with-context --build-type=minimal --layout=system `
|
|
||||||
-j((Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors)
|
|
||||||
|
|
||||||
# CMake's find_package wouldn't be able to find this otherwise
|
|
||||||
RUN setx CMAKE_PREFIX_PATH "C:\Downloads\boost_1_72_0\stage\"
|
|
||||||
|
|
||||||
LABEL version=${IMAGE_TAG}
|
|
||||||
ENV DOCKER_IMAGEVER=${IMAGE_TAG}
|
|
||||||
|
|
||||||
# Enable Windows Update Service (which is required to get .Net Core which is a dependency for wix) and install .Net framework
|
|
||||||
RUN powershell "Set-Service -Name wuauserv -StartupType Manual; Install-WindowsFeature -Name NET-Framework-Features -Verbose"
|
|
||||||
|
|
||||||
# Install WIX
|
|
||||||
RUN powershell -Command choco install wixtoolset --version 3.11.2 -y
|
|
||||||
|
|
||||||
# Define the entry point for the docker container.
|
|
||||||
# This entry point starts the developer command prompt and launches the PowerShell shell.
|
|
||||||
ENTRYPOINT ["C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
|
|
@ -1,9 +0,0 @@
|
|||||||
# Use the latest FoundationDB Windows Build image
|
|
||||||
FROM foundationdb/foundationdb-build-windows:0.1.0
|
|
||||||
|
|
||||||
# Install git
|
|
||||||
RUN powershell -Command choco install git -y
|
|
||||||
|
|
||||||
# Define the entry point for the docker container.
|
|
||||||
# This entry point starts the developer command prompt and launches the PowerShell shell.
|
|
||||||
ENTRYPOINT ["C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
|
|
@ -1,63 +0,0 @@
|
|||||||
param (
|
|
||||||
[string]$SourceDir = (Resolve-Path "$PSScriptRoot\.."),
|
|
||||||
[string]$ImageName = "fdb-windows",
|
|
||||||
# By default we want to leave one CPU core for the OS so the user has some minimal control over the system
|
|
||||||
[string]$Cpus = (Get-CimInstance -ClassName Win32_Processor -Filter "DeviceID='CPU0'").NumberOfLogicalProcessors - 2,
|
|
||||||
# We want to leave at least 1GB of memory for the OS
|
|
||||||
[string]$Memory = (Get-CimInstance -ClassName Win32_ComputerSystem).TotalPhysicalMemory - 2*[Math]::Pow(2, 30),
|
|
||||||
[Parameter(Mandatory=$true)][string]$BuildDir,
|
|
||||||
[switch]$DryRun = $false,
|
|
||||||
[switch]$ForceConfigure = $false,
|
|
||||||
[switch]$SkipDockerBuild = $false,
|
|
||||||
[Parameter(Position=0)][string]$Target = "installer"
|
|
||||||
)
|
|
||||||
|
|
||||||
$BuildDir = Resolve-Path $BuildDir
|
|
||||||
# we don't want a trailing \ in the build dir
|
|
||||||
if ($BuildDir.EndsWith("\")) {
|
|
||||||
$BuildDir = $BuildDir.Substring(0, $BuildDir.Length - 1)
|
|
||||||
}
|
|
||||||
$exponent = 0
|
|
||||||
$Memory = $Memory.ToUpper()
|
|
||||||
if ($Memory.EndsWith("K")) {
|
|
||||||
$exponent = 10
|
|
||||||
} elseif ($Memory.EndsWith("M")) {
|
|
||||||
$exponent = 20
|
|
||||||
} elseif ($Memory.EndsWith("G")) {
|
|
||||||
$exponent = 30
|
|
||||||
} elseif ($Memory.EndsWith("T")) {
|
|
||||||
$exponent = 40
|
|
||||||
}
|
|
||||||
if ($exponent -gt 0) {
|
|
||||||
$Memory = $Memory.Substring(0, $Memory.Length - 1) * [Math]::Pow(2, $exponent)
|
|
||||||
}
|
|
||||||
|
|
||||||
$buildCommand = [string]::Format("Get-Content {0}\build\Dockerfile.windows.devel | docker build -t {1} -m {2} -",
|
|
||||||
$SourceDir, $ImageName, [Math]::Min(16 * [Math]::Pow(2, 30), $Memory))
|
|
||||||
if ($DryRun -and !$SkipDockerBuild) {
|
|
||||||
Write-Output $buildCommand
|
|
||||||
} elseif (!$SkipDockerBuild) {
|
|
||||||
Invoke-Expression -Command $buildCommand
|
|
||||||
}
|
|
||||||
|
|
||||||
# Write build instructions into file
|
|
||||||
$cmdFile = "docker_command.ps1"
|
|
||||||
$batFile = "$BuildDir\$cmdFile"
|
|
||||||
$batFileDocker = "C:\fdbbuild\$cmdFile"
|
|
||||||
# "C:\BuildTools\Common7\Tools\VsDevCmd.bat" | Out-File $batFile
|
|
||||||
"cd \fdbbuild" | Out-File -Append $batFile
|
|
||||||
if ($ForceConfigure -or ![System.IO.File]::Exists("$BuildDir\CMakeCache.txt") -or ($Target -eq "configure")) {
|
|
||||||
"cmake -G ""Visual Studio 16 2019"" -A x64 -T""ClangCL"" -S C:\foundationdb -B C:\fdbbuild --debug-trycompile" | Out-File -Append $batFile
|
|
||||||
}
|
|
||||||
if ($Target -ne "configure") {
|
|
||||||
"msbuild /p:CL_MPCount=$Cpus /m /p:UseMultiToolTask=true /p:Configuration=Release foundationdb.sln" | Out-File -Append $batFile
|
|
||||||
}
|
|
||||||
|
|
||||||
$dockerCommand = "powershell.exe -NoLogo -ExecutionPolicy Bypass -File $batFileDocker"
|
|
||||||
$runCommand = [string]::Format("docker run -v {0}:C:\foundationdb -v {1}:C:\fdbbuild --name fdb-build -m {2} --cpus={3} --rm {4} ""{5}""",
|
|
||||||
$SourceDir, $BuildDir, $Memory, $Cpus, $ImageName, $dockerCommand);
|
|
||||||
if ($DryRun) {
|
|
||||||
Write-Output $runCommand
|
|
||||||
} else {
|
|
||||||
Invoke-Expression $runCommand
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
FROM centos:6
|
|
||||||
LABEL version=0.0.4
|
|
||||||
|
|
||||||
RUN yum install -y yum-utils
|
|
||||||
RUN yum-config-manager --enable rhel-server-rhscl-7-rpms
|
|
||||||
RUN yum -y install centos-release-scl
|
|
||||||
RUN yum install -y devtoolset-7
|
|
||||||
|
|
||||||
# install cmake
|
|
||||||
RUN curl -L https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz > /tmp/cmake.tar.gz &&\
|
|
||||||
echo "563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76 /tmp/cmake.tar.gz" > /tmp/cmake-sha.txt &&\
|
|
||||||
sha256sum -c /tmp/cmake-sha.txt &&\
|
|
||||||
cd /tmp && tar xf cmake.tar.gz && cp -r cmake-3.13.4-Linux-x86_64/* /usr/local/
|
|
||||||
|
|
||||||
# install boost
|
|
||||||
RUN curl -L https://boostorg.jfrog.io/artifactory/main/release/1.67.0/source/boost_1_67_0.tar.bz2 > /tmp/boost.tar.bz2 &&\
|
|
||||||
cd /tmp && echo "2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba boost.tar.bz2" > boost-sha.txt &&\
|
|
||||||
sha256sum -c boost-sha.txt && tar xf boost.tar.bz2 && cp -r boost_1_72_0/boost /usr/local/include/ &&\
|
|
||||||
rm -rf boost.tar.bz2 boost_1_72_0
|
|
||||||
|
|
||||||
# install mono (for actorcompiler)
|
|
||||||
RUN yum install -y epel-release
|
|
||||||
RUN yum install -y mono-core
|
|
||||||
|
|
||||||
# install Java
|
|
||||||
RUN yum install -y java-1.8.0-openjdk-devel
|
|
||||||
|
|
||||||
# install LibreSSL
|
|
||||||
RUN curl https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.2.tar.gz > /tmp/libressl.tar.gz &&\
|
|
||||||
cd /tmp && echo "b8cb31e59f1294557bfc80f2a662969bc064e83006ceef0574e2553a1c254fd5 libressl.tar.gz" > libressl-sha.txt &&\
|
|
||||||
sha256sum -c libressl-sha.txt && tar xf libressl.tar.gz &&\
|
|
||||||
cd libressl-2.8.2 && cd /tmp/libressl-2.8.2 && scl enable devtoolset-7 -- ./configure --prefix=/usr/local/stow/libressl CFLAGS="-fPIC -O3" --prefix=/usr/local &&\
|
|
||||||
cd /tmp/libressl-2.8.2 && scl enable devtoolset-7 -- make -j`nproc` install &&\
|
|
||||||
rm -rf /tmp/libressl-2.8.2 /tmp/libressl.tar.gz
|
|
||||||
|
|
||||||
|
|
||||||
# install dependencies for bindings and documentation
|
|
||||||
# python 2.7 is required for the documentation
|
|
||||||
RUN yum install -y rh-python36-python-devel rh-ruby24 golang python27
|
|
||||||
|
|
||||||
# install packaging tools
|
|
||||||
RUN yum install -y rpm-build debbuild
|
|
||||||
|
|
||||||
CMD scl enable devtoolset-7 python27 rh-python36 rh-ruby24 -- bash
|
|
@ -1,279 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
arguments_usage() {
|
|
||||||
cat <<EOF
|
|
||||||
usage: build.sh [-h] [commands]
|
|
||||||
-h: print this help message and
|
|
||||||
abort execution
|
|
||||||
|
|
||||||
Will execute the passed commands
|
|
||||||
in the order they were passed
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
arguments_parse() {
|
|
||||||
local __res=0
|
|
||||||
while getopts ":h" opt
|
|
||||||
do
|
|
||||||
case ${opt} in
|
|
||||||
h )
|
|
||||||
arguments_usage
|
|
||||||
__res=2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
\? )
|
|
||||||
echo "Unknown option ${opt}"
|
|
||||||
arguments_usage
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND -1))
|
|
||||||
commands=("$@")
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
configure() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
cmake ../foundationdb ${CMAKE_EXTRA_ARGS}
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
build_fast() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
make -j`nproc`
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
configure
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
build_fast
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
package_fast() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
make -j`nproc` packages
|
|
||||||
cpack
|
|
||||||
cpack -G RPM -D GENERATE_EL6=ON
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
package() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
build
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
package_fast
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
rpm() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
configure
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
build_fast
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fakeroot cpack -G RPM -D GENERATE_EL6=ON
|
|
||||||
fakeroot cpack -G RPM
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
deb() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
configure
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
build_fast
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fakeroot cpack -G DEB
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
test-fast() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
ctest -j`nproc` ${CTEST_EXTRA_ARGS}
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
test() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
build
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
test-fast
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
arguments_parse "$@"
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
if [ ${__res} -eq 2 ]
|
|
||||||
then
|
|
||||||
# in this case there was no error
|
|
||||||
# We still want to exit the script
|
|
||||||
__res=0
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
echo "Num commands ${#commands[@]}"
|
|
||||||
for command in "${commands[@]}"
|
|
||||||
do
|
|
||||||
echo "Command: ${command}"
|
|
||||||
case ${command} in
|
|
||||||
configure )
|
|
||||||
configure
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
build )
|
|
||||||
build
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
build/fast )
|
|
||||||
build_fast
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
package )
|
|
||||||
package
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
package/fast )
|
|
||||||
package_fast
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
rpm )
|
|
||||||
rpm
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
deb )
|
|
||||||
deb
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
test-fast)
|
|
||||||
test-fast
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
test)
|
|
||||||
test
|
|
||||||
__res=$?
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
echo "ERROR: Command not found ($command)"
|
|
||||||
__res=1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -1,3 +0,0 @@
|
|||||||
FROM centos:6
|
|
||||||
|
|
||||||
RUN yum install -y yum-utils upstart initscripts
|
|
@ -1,3 +0,0 @@
|
|||||||
FROM centos:7
|
|
||||||
|
|
||||||
RUN yum install -y yum-utils systemd sysvinit-tools
|
|
@ -1,3 +0,0 @@
|
|||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y systemd python
|
|
@ -1,65 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
common: &common
|
|
||||||
image: foundationdb-build:0.0.4
|
|
||||||
build:
|
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
|
|
||||||
build-setup: &build-setup
|
|
||||||
<<: *common
|
|
||||||
depends_on: [common]
|
|
||||||
#debuginfo builds need the build path to be longer than
|
|
||||||
#the path where debuginfo sources are places. Crazy, yes,
|
|
||||||
#see the manual for CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX.
|
|
||||||
volumes:
|
|
||||||
- ../..:/foundationdb/deep/directory/as/debuginfo/doesnt/work/otherwise/foundationdb
|
|
||||||
- ${BUILDDIR}:/foundationdb/deep/directory/as/debuginfo/doesnt/work/otherwise/build
|
|
||||||
working_dir: /foundationdb/deep/directory/as/debuginfo/doesnt/work/otherwise/build
|
|
||||||
|
|
||||||
configure: &configure
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh configure
|
|
||||||
|
|
||||||
build: &build
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh build
|
|
||||||
|
|
||||||
build-fast: &build-fast
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh build/fast
|
|
||||||
|
|
||||||
rpm: &rpm
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh rpm
|
|
||||||
|
|
||||||
deb: &deb
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh deb
|
|
||||||
|
|
||||||
package: &package
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh package
|
|
||||||
|
|
||||||
package-fast: &package-fast
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh package/fast
|
|
||||||
|
|
||||||
test-fast: &test-fast
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh test-fast
|
|
||||||
|
|
||||||
test: &test
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh test
|
|
||||||
|
|
||||||
snowflake-ci: &snowflake-ci
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash ../foundationdb/build/cmake/build.sh package test-fast
|
|
||||||
|
|
||||||
shell:
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-7 rh-ruby24 rh-python36 python27 -- bash
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
|||||||
[centos6]
|
|
||||||
name = fdb-centos6
|
|
||||||
location = centos6-test
|
|
||||||
packages = ^.*el6((?!debuginfo).)*\.rpm$
|
|
||||||
format = rpm
|
|
||||||
|
|
||||||
[centos7]
|
|
||||||
name = fdb-centos7
|
|
||||||
location = centos7-test
|
|
||||||
packages = ^.*el7((?!debuginfo).)*\.rpm$
|
|
||||||
format = rpm
|
|
||||||
|
|
||||||
[ubuntu_16_04]
|
|
||||||
name = fdb-debian
|
|
||||||
location = debian-test
|
|
||||||
packages = ^.*\.deb$
|
|
||||||
format = deb
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
||||||
|
|
||||||
source ${source_dir}/modules/globals.sh
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
source ${source_dir}/modules/deb.sh
|
|
||||||
source ${source_dir}/modules/tests.sh
|
|
||||||
source ${source_dir}/modules/test_args.sh
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
test_args_parse "$@"
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -eq 2 ]
|
|
||||||
then
|
|
||||||
__res=0
|
|
||||||
break
|
|
||||||
elif [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
tests_main
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -1,5 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 2.8.0)
|
|
||||||
project(fdb_c_app C)
|
|
||||||
find_package(FoundationDB-Client REQUIRED)
|
|
||||||
add_executable(app app.c)
|
|
||||||
target_link_libraries(app PRIVATE fdb_c)
|
|
@ -1,7 +0,0 @@
|
|||||||
#define FDB_API_VERSION 710
|
|
||||||
#include <foundationdb/fdb_c.h>
|
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
|
||||||
fdb_select_api_version(710);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,114 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z ${arguments_sh_included+x} ]
|
|
||||||
then
|
|
||||||
arguments_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
arguments_usage() {
|
|
||||||
cat <<EOF
|
|
||||||
usage: test_packages.sh [-h] [commands]
|
|
||||||
-h: print this help message and
|
|
||||||
abort execution
|
|
||||||
-b DIR: point set the fdb build directory
|
|
||||||
(this is a required argument).
|
|
||||||
-s DIR: Path to fdb source directory.
|
|
||||||
-p STR: Colon-separated list of package
|
|
||||||
file names (without path) to
|
|
||||||
test.
|
|
||||||
-c PATH: Path to a ini-file with the docker
|
|
||||||
configuration
|
|
||||||
-t TEST: One of DEB, RPM, ALL
|
|
||||||
-n TESTS: Colon separated list of test names
|
|
||||||
to run (will run all if this option
|
|
||||||
is not set)
|
|
||||||
-j NUM Number of threads the tester should
|
|
||||||
run in parallel.
|
|
||||||
-P STR Pruning strategy for docker container
|
|
||||||
(Can be ALL|FAILED|SUCCEEDED|NONE)
|
|
||||||
Defaults to "SUCCEEDED"
|
|
||||||
|
|
||||||
Will execute the passed commands
|
|
||||||
in the order they were passed
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
arguments_parse() {
|
|
||||||
local __res=0
|
|
||||||
run_deb_tests=1
|
|
||||||
run_rpm_tests=1
|
|
||||||
docker_parallelism=1
|
|
||||||
pruning_strategy=SUCCEEDED
|
|
||||||
while getopts ":hb:s:p:c:t:n:j:P:" opt
|
|
||||||
do
|
|
||||||
case ${opt} in
|
|
||||||
h )
|
|
||||||
arguments_usage
|
|
||||||
__res=2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
b )
|
|
||||||
fdb_build="${OPTARG}"
|
|
||||||
;;
|
|
||||||
s )
|
|
||||||
fdb_source="${OPTARG}"
|
|
||||||
;;
|
|
||||||
p )
|
|
||||||
fdb_packages="${OPTARG}"
|
|
||||||
;;
|
|
||||||
c )
|
|
||||||
docker_ini="${OPTARG}"
|
|
||||||
;;
|
|
||||||
t )
|
|
||||||
if [ "${OPTARG}" = "DEB" ]
|
|
||||||
then
|
|
||||||
run_rpm_tests=0
|
|
||||||
elif [ "${OPTARG}" = "RPM" ]
|
|
||||||
then
|
|
||||||
run_deb_tests=0
|
|
||||||
elif [ "${OPTARG}" != "ALL" ]
|
|
||||||
then
|
|
||||||
echo -e "${RED}No such test: ${OPTARG}${NC}"
|
|
||||||
echo "Note: Currently known tests are: RPM, DEB, and ALL"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
n )
|
|
||||||
tests_to_run="${OPTARG}"
|
|
||||||
;;
|
|
||||||
j )
|
|
||||||
docker_parallelism="${OPTARG}"
|
|
||||||
if [[ $docker_parallelism =~ "^[0-9]+$" ]]
|
|
||||||
then
|
|
||||||
echo -e "${RED}Error: -j expects a number, ${OPTARG}, is not a number" >&2
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
elif [ $docker_parallelism -lt 1 ]
|
|
||||||
then
|
|
||||||
echo -e "${RED}Error: -j ${OPTARG} makes no sense" >&2
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
P )
|
|
||||||
pruning_strategy="${OPTARG}"
|
|
||||||
if ! [[ "${pruning_strategy}" =~ ^(ALL|FAILED|SUCCEEDED|NONE)$ ]]
|
|
||||||
then
|
|
||||||
fail "Unknown pruning strategy ${pruning_strategy}"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
\? )
|
|
||||||
curr_index="$((OPTIND-1))"
|
|
||||||
echo "Unknown option ${@:${curr_index}:1}"
|
|
||||||
arguments_usage
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND -1))
|
|
||||||
commands=("$@")
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,123 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z ${config_sh_included+x} ]
|
|
||||||
then
|
|
||||||
config_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
config_load_vms() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
if [ -z "${docker_ini+x}"]
|
|
||||||
then
|
|
||||||
docker_file="${source_dir}/../docker.ini"
|
|
||||||
fi
|
|
||||||
# parse the ini file and read it into an
|
|
||||||
# associative array
|
|
||||||
eval "$(awk -F ' *= *' '{ if ($1 ~ /^\[/) section=$1; else if ($1 !~ /^$/) printf "ini_%s%s=\47%s\47\n", $1, section, $2 }' ${docker_file})"
|
|
||||||
vms=( "${!ini_name[@]}" )
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo "ERROR: Could not parse config-file ${docker_file}"
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
config_find_packages() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
cd ${fdb_build}
|
|
||||||
while read f
|
|
||||||
do
|
|
||||||
if [[ "${f}" =~ .*"clients".* || "${f}" =~ .*"server".* ]]
|
|
||||||
then
|
|
||||||
if [ -z ${fdb_packages+x} ]
|
|
||||||
then
|
|
||||||
fdb_packages="${f}"
|
|
||||||
else
|
|
||||||
fdb_packages="${fdb_packages}:${f}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done <<< "$(ls *.deb *.rpm)"
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
get_fdb_source() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
cd ${source_dir}
|
|
||||||
while true
|
|
||||||
do
|
|
||||||
if [ -d .git ]
|
|
||||||
then
|
|
||||||
# we found the root
|
|
||||||
pwd
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if [ `pwd` = "/" ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
cd ..
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
fdb_build=0
|
|
||||||
|
|
||||||
config_verify() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
if [ -z ${fdb_source+x} ]
|
|
||||||
then
|
|
||||||
fdb_source=`get_fdb_source`
|
|
||||||
fi
|
|
||||||
if [ ! -d "${fdb_build}" ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
echo "ERROR: Could not find fdb build dir: ${fdb_build}"
|
|
||||||
echo " Either set the environment variable fdb_build or"
|
|
||||||
echo " pass it with -b <PATH_TO_BUILD>"
|
|
||||||
fi
|
|
||||||
if [ ! -f "${fdb_source}/flow/Net2.actor.cpp" ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
echo "ERROR: ${fdb_source} does not appear to be a fdb source"
|
|
||||||
echo " directory. Either pass it with -s or set"
|
|
||||||
echo " the environment variable fdb_source."
|
|
||||||
fi
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
config_load_vms
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,40 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z "${deb_sh_included}" ]
|
|
||||||
then
|
|
||||||
deb_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
install_build_tools() {
|
|
||||||
apt-get -y install cmake gcc
|
|
||||||
}
|
|
||||||
|
|
||||||
install() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
echo "Install FoundationDB"
|
|
||||||
cd /build/packages
|
|
||||||
package_names=()
|
|
||||||
for f in "${package_files[@]}"
|
|
||||||
do
|
|
||||||
package_name="$(dpkg -I ${f} | grep Package | sed 's/.*://')"
|
|
||||||
package_names+=( "${package_name}" )
|
|
||||||
done
|
|
||||||
dpkg -i ${package_files[@]}
|
|
||||||
apt-get -yf -o Dpkg::Options::="--force-confold" install
|
|
||||||
__res=$?
|
|
||||||
sleep 5
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
uninstall() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
apt-get -y remove ${package_names[@]}
|
|
||||||
__res=$?
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,186 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z "${docker_sh_included+x}" ]
|
|
||||||
then
|
|
||||||
docker_sh_included=1
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
source ${source_dir}/modules/config.sh
|
|
||||||
source ${source_dir}/modules/tests.sh
|
|
||||||
|
|
||||||
failed_tests=()
|
|
||||||
|
|
||||||
docker_ids=()
|
|
||||||
docker_threads=()
|
|
||||||
docker_logs=()
|
|
||||||
docker_error_logs=()
|
|
||||||
|
|
||||||
docker_wait_any() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
while [ "${#docker_threads[@]}" -gt 0 ]
|
|
||||||
do
|
|
||||||
IFS=";" read -ra res <${pipe_file}
|
|
||||||
docker_id=${res[0]}
|
|
||||||
result=${res[1]}
|
|
||||||
i=0
|
|
||||||
for (( idx=0; idx<${#docker_ids[@]}; idx++ ))
|
|
||||||
do
|
|
||||||
if [ "${docker_id}" = "${docker_ids[idx]}" ]
|
|
||||||
then
|
|
||||||
i=idx
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ "${result}" -eq 0 ]
|
|
||||||
then
|
|
||||||
echo -e "${GREEN}Test succeeded: ${docker_threads[$i]}"
|
|
||||||
echo -e "\tDocker-ID: ${docker_ids[$i]} "
|
|
||||||
echo -e "\tLog-File: ${docker_logs[$i]}"
|
|
||||||
echo -e "\tErr-File: ${docker_error_logs[$i]} ${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${RED}Test FAILED: ${docker_threads[$i]}"
|
|
||||||
echo -e "\tDocker-ID: ${docker_ids[$i]} "
|
|
||||||
echo -e "\tLog-File: ${docker_logs[$i]}"
|
|
||||||
echo -e "\tErr-File: ${docker_error_logs[$i]} ${NC}"
|
|
||||||
failed_tests+=( "${docker_threads[$i]}" )
|
|
||||||
fi
|
|
||||||
n=$((i+1))
|
|
||||||
docker_ids=( "${docker_ids[@]:0:$i}" "${docker_ids[@]:$n}" )
|
|
||||||
docker_threads=( "${docker_threads[@]:0:$i}" "${docker_threads[@]:$n}" )
|
|
||||||
docker_logs=( "${docker_logs[@]:0:$i}" "${docker_logs[@]:$n}" )
|
|
||||||
docker_error_logs=( "${docker_error_logs[@]:0:$i}" "${docker_error_logs[@]:$n}" )
|
|
||||||
break
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return "${__res}"
|
|
||||||
}
|
|
||||||
|
|
||||||
docker_wait_all() {
|
|
||||||
local __res=0
|
|
||||||
while [ "${#docker_threads[@]}" -gt 0 ]
|
|
||||||
do
|
|
||||||
docker_wait_any
|
|
||||||
if [ "$?" -ne 0 ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
docker_run() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
echo "Testing the following:"
|
|
||||||
echo "======================"
|
|
||||||
for K in "${vms[@]}"
|
|
||||||
do
|
|
||||||
curr_packages=( $(cd ${fdb_build}/packages; ls | grep -P ${ini_packages[${K}]} ) )
|
|
||||||
echo "Will test the following ${#curr_packages[@]} packages in docker-image ${K}:"
|
|
||||||
for p in "${curr_packages[@]}"
|
|
||||||
do
|
|
||||||
echo " ${p}"
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
log_dir="${fdb_build}/pkg_tester"
|
|
||||||
pipe_file="${fdb_build}/pkg_tester.pipe"
|
|
||||||
lock_file="${fdb_build}/pkg_tester.lock"
|
|
||||||
if [ -p "${pipe_file}" ]
|
|
||||||
then
|
|
||||||
rm "${pipe_file}"
|
|
||||||
successOr "Could not delete old pipe file"
|
|
||||||
fi
|
|
||||||
if [ -f "${lock_file}" ]
|
|
||||||
then
|
|
||||||
rm "${lock_file}"
|
|
||||||
successOr "Could not delete old pipe file"
|
|
||||||
fi
|
|
||||||
touch "${lock_file}"
|
|
||||||
successOr "Could not create lock file"
|
|
||||||
mkfifo "${pipe_file}"
|
|
||||||
successOr "Could not create pipe file"
|
|
||||||
mkdir -p "${log_dir}"
|
|
||||||
# setup the containers
|
|
||||||
# TODO: shall we make this parallel as well?
|
|
||||||
for vm in "${vms[@]}"
|
|
||||||
do
|
|
||||||
curr_name="${ini_name[$vm]}"
|
|
||||||
curr_location="${ini_location[$vm]}"
|
|
||||||
if [[ "$curr_location" = /* ]]
|
|
||||||
then
|
|
||||||
cd "${curr_location}"
|
|
||||||
else
|
|
||||||
cd ${source_dir}/../${curr_location}
|
|
||||||
fi
|
|
||||||
docker_buid_logs="${log_dir}/docker_build_${curr_name}"
|
|
||||||
docker build . -t ${curr_name} 1> "${docker_buid_logs}.log" 2> "${docker_buid_logs}.err"
|
|
||||||
successOr "Building Docker image ${curr_name} failed - see ${docker_buid_logs}.log and ${docker_buid_logs}.err"
|
|
||||||
done
|
|
||||||
if [ ! -z "${tests_to_run+x}"]
|
|
||||||
then
|
|
||||||
tests=()
|
|
||||||
IFS=';' read -ra tests <<< "${tests_to_run}"
|
|
||||||
fi
|
|
||||||
for vm in "${vms[@]}"
|
|
||||||
do
|
|
||||||
curr_name="${ini_name[$vm]}"
|
|
||||||
curr_format="${ini_format[$vm]}"
|
|
||||||
curr_packages=( $(cd ${fdb_build}/packages; ls | grep -P ${ini_packages[${vm}]} ) )
|
|
||||||
for curr_test in "${tests[@]}"
|
|
||||||
do
|
|
||||||
if [ "${#docker_ids[@]}" -ge "${docker_parallelism}" ]
|
|
||||||
then
|
|
||||||
docker_wait_any
|
|
||||||
fi
|
|
||||||
log_file="${log_dir}/${curr_name}_${curr_test}.log"
|
|
||||||
err_file="${log_dir}/${curr_name}_${curr_test}.err"
|
|
||||||
docker_id=$( docker run -d -v "${fdb_source}:/foundationdb"\
|
|
||||||
-v "${fdb_build}:/build"\
|
|
||||||
${curr_name} /sbin/init )
|
|
||||||
echo "Starting Test ${curr_name}/${curr_test} Docker-ID: ${docker_id}"
|
|
||||||
{
|
|
||||||
docker exec "${docker_id}" bash \
|
|
||||||
/foundationdb/build/cmake/package_tester/${curr_format}_tests.sh -n ${curr_test} ${curr_packages[@]}\
|
|
||||||
2> ${err_file} 1> ${log_file}
|
|
||||||
res=$?
|
|
||||||
if [ "${pruning_strategy}" = "ALL" ]
|
|
||||||
then
|
|
||||||
docker kill "${docker_id}" > /dev/null
|
|
||||||
elif [ "${res}" -eq 0 ] && [ "${pruning_strategy}" = "SUCCEEDED" ]
|
|
||||||
then
|
|
||||||
docker kill "${docker_id}" > /dev/null
|
|
||||||
elif [ "${res}" -ne 0 ] && [ "${pruning_strategy}" = "FAILED" ]
|
|
||||||
then
|
|
||||||
docker kill "${docker_id}" > /dev/null
|
|
||||||
fi
|
|
||||||
flock "${lock_file}" echo "${docker_id};${res}" >> "${pipe_file}"
|
|
||||||
} &
|
|
||||||
docker_ids+=( "${docker_id}" )
|
|
||||||
docker_threads+=( "${curr_name}/${curr_test}" )
|
|
||||||
docker_logs+=( "${log_file}" )
|
|
||||||
docker_error_logs+=( "${err_file}" )
|
|
||||||
done
|
|
||||||
done
|
|
||||||
docker_wait_all
|
|
||||||
rm ${pipe_file}
|
|
||||||
if [ "${#failed_tests[@]}" -eq 0 ]
|
|
||||||
then
|
|
||||||
echo -e "${GREEN}SUCCESS${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${RED}FAILURE"
|
|
||||||
echo "The following tests failed:"
|
|
||||||
for t in "${failed_tests[@]}"
|
|
||||||
do
|
|
||||||
echo " - ${t}"
|
|
||||||
done
|
|
||||||
echo -e "${NC}"
|
|
||||||
__res=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return "${__res}"
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,23 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# This module has to be included first and only once.
|
|
||||||
# This is because of a limitation of older bash versions
|
|
||||||
# that doesn't allow us to declare associative arrays
|
|
||||||
# globally.
|
|
||||||
|
|
||||||
if [ -z "${global_sh_included+x}"]
|
|
||||||
then
|
|
||||||
global_sh_included=1
|
|
||||||
else
|
|
||||||
echo "global.sh can only be included once"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
declare -A ini_name
|
|
||||||
declare -A ini_location
|
|
||||||
declare -A ini_packages
|
|
||||||
declare -A ini_format
|
|
||||||
declare -A test_start_state
|
|
||||||
declare -A test_exit_state
|
|
||||||
declare -a tests
|
|
||||||
declare -a vms
|
|
@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z "${rpm_sh_included}" ]
|
|
||||||
then
|
|
||||||
rpm_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
conf_save_extension=".rpmsave"
|
|
||||||
|
|
||||||
install_build_tools() {
|
|
||||||
yum -y install cmake gcc
|
|
||||||
}
|
|
||||||
|
|
||||||
install() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
cd /build/packages
|
|
||||||
package_names=()
|
|
||||||
for f in "${package_files[@]}"
|
|
||||||
do
|
|
||||||
package_names+=( "$(rpm -qp ${f})" )
|
|
||||||
done
|
|
||||||
yum install -y ${package_files[@]}
|
|
||||||
__res=$?
|
|
||||||
# give the server some time to come up
|
|
||||||
sleep 5
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
uninstall() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
if [ "$1" == "purge" ]
|
|
||||||
then
|
|
||||||
yum remove --purge -y ${package_names[@]}
|
|
||||||
else
|
|
||||||
yum remove -y ${package_names[@]}
|
|
||||||
fi
|
|
||||||
__res=$?
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z ${test_args_sh_included+x} ]
|
|
||||||
then
|
|
||||||
test_args_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
test_args_usage() {
|
|
||||||
me=`basename "$0"`
|
|
||||||
echo "usage: ${me} [-h] files..."
|
|
||||||
cat <<EOF
|
|
||||||
-n TEST: The name of the test to run
|
|
||||||
|
|
||||||
Will execute the passed commands
|
|
||||||
in the order they were passed
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
test_args_parse() {
|
|
||||||
local __res=0
|
|
||||||
run_deb_tests=1
|
|
||||||
run_rpm_tests=1
|
|
||||||
while getopts ":hn:" opt
|
|
||||||
do
|
|
||||||
case ${opt} in
|
|
||||||
h )
|
|
||||||
test_args_usage
|
|
||||||
__res=2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
n )
|
|
||||||
echo "test_name=${OPTARG}"
|
|
||||||
test_name="${OPTARG}"
|
|
||||||
;;
|
|
||||||
\? )
|
|
||||||
curr_index="$((OPTIND-1))"
|
|
||||||
echo "Unknown option ${@:${curr_index}:1}"
|
|
||||||
arguments_usage
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND -1))
|
|
||||||
package_files=("$@")
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,64 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z "${testing_sh_included+x}" ]
|
|
||||||
then
|
|
||||||
testing_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
|
|
||||||
desired_state() {
|
|
||||||
case $1 in
|
|
||||||
CLEAN )
|
|
||||||
:
|
|
||||||
;;
|
|
||||||
INSTALLED )
|
|
||||||
install
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
tests_healthy() {
|
|
||||||
enterfun
|
|
||||||
local __res=0
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
cd /
|
|
||||||
fdbcli --exec status
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
healthy="$(fdbcli --exec status | grep HEALTHY | wc -l)"
|
|
||||||
if [ -z "${healthy}" ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
tests_clean() {
|
|
||||||
uninstall purge
|
|
||||||
successOr "FoundationDB was not uninstalled correctly"
|
|
||||||
# systemd/initd are not running, so we have to kill manually here
|
|
||||||
pidof fdbmonitor | xargs kill
|
|
||||||
tests_clean_nouninstall
|
|
||||||
rm -rf /etc/foundationdb
|
|
||||||
rm -rf /var/lib/foundationdb
|
|
||||||
rm -rf /var/log/foundationdb
|
|
||||||
}
|
|
||||||
|
|
||||||
tests_main() {
|
|
||||||
new_state="${test_start_state[${test_name}]}"
|
|
||||||
echo "Setting desired state ${new_state} for ${test_name}"
|
|
||||||
desired_state "${new_state}"
|
|
||||||
${test_name}
|
|
||||||
successOr "${test_name} Failed"
|
|
||||||
echo "======================================================================="
|
|
||||||
echo "Test $t successfully finished"
|
|
||||||
echo "======================================================================="
|
|
||||||
current_state="${test_exit_state[${test_name}]}"
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,143 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# In this file the tests are formulated which
|
|
||||||
# should run in the docker container to test
|
|
||||||
# whether the RPM and DEB packages work properly.
|
|
||||||
#
|
|
||||||
# In order to add a test, a user first has to
|
|
||||||
# add the name of the test to the `tests` array
|
|
||||||
# which is defined in this file.
|
|
||||||
#
|
|
||||||
# Then, she must define the state this test
|
|
||||||
# expects the container to be in. To do that,
|
|
||||||
# a value for the test has to be added to the
|
|
||||||
# associative array `test_start_state`. Valid
|
|
||||||
# values are:
|
|
||||||
#
|
|
||||||
# - INSTALLED: In this case, the test will be
|
|
||||||
# started with a freshly installed FDB, but
|
|
||||||
# no other changes were made to the container.
|
|
||||||
# - CLEAN: This simply means that the container
|
|
||||||
# will run a minimal version of the OS (as defined
|
|
||||||
# in the corresponsing Dockerfile)
|
|
||||||
#
|
|
||||||
# A test is then simply a bash function with the
|
|
||||||
# same name as the test. It can use the predefined
|
|
||||||
# bash functions `install` and `uninstall` to either
|
|
||||||
# install or uninstall FDB on the container. The FDB
|
|
||||||
# build directory can be found in `/build`, the
|
|
||||||
# source code will be located in `/foundationdb`
|
|
||||||
|
|
||||||
if [ -z "${tests_sh_included+x}" ]
|
|
||||||
then
|
|
||||||
tests_sh_included=1
|
|
||||||
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
source ${source_dir}/modules/testing.sh
|
|
||||||
|
|
||||||
tests=( "fresh_install" "keep_config" )
|
|
||||||
test_start_state=([fresh_install]=INSTALLED [keep_config]=CLEAN )
|
|
||||||
|
|
||||||
fresh_install() {
|
|
||||||
tests_healthy
|
|
||||||
successOr "Fresh installation is not clean"
|
|
||||||
# test that we can read from and write to fdb
|
|
||||||
cd /
|
|
||||||
timeout 2 fdbcli --exec 'writemode on ; set foo bar'
|
|
||||||
successOr "Cannot write to database"
|
|
||||||
getresult="$(timeout 2 fdbcli --exec 'get foo')"
|
|
||||||
successOr "Get on database failed"
|
|
||||||
if [ "${getresult}" != "\`foo' is \`bar'" ]
|
|
||||||
then
|
|
||||||
fail "value was not set correctly"
|
|
||||||
fi
|
|
||||||
timeout 2 fdbcli --exec 'writemode on ; clear foo'
|
|
||||||
successOr "Deleting value failed"
|
|
||||||
getresult="$(timeout 2 fdbcli --exec 'get foo')"
|
|
||||||
successOr "Get on database failed"
|
|
||||||
if [ "${getresult}" != "\`foo': not found" ]
|
|
||||||
then
|
|
||||||
fail "value was not cleared correctly"
|
|
||||||
fi
|
|
||||||
PYTHON_TARGZ_NAME="$(ls /build/packages | grep 'foundationdb-[0-9.]*\.tar\.gz' | sed 's/\.tar\.gz$//')"
|
|
||||||
tar -C /tmp -xvf /build/packages/${PYTHON_TARGZ_NAME}.tar.gz
|
|
||||||
pushd /tmp/${PYTHON_TARGZ_NAME}
|
|
||||||
python setup.py install
|
|
||||||
successOr "Installing python bindings failed"
|
|
||||||
popd
|
|
||||||
python -c 'import fdb; fdb.api_version(710)'
|
|
||||||
successOr "Loading python bindings failed"
|
|
||||||
|
|
||||||
# Test cmake and pkg-config integration: https://github.com/apple/foundationdb/issues/1483
|
|
||||||
install_build_tools
|
|
||||||
rm -rf build-fdb_c_app
|
|
||||||
mkdir build-fdb_c_app
|
|
||||||
pushd build-fdb_c_app
|
|
||||||
cmake /foundationdb/build/cmake/package_tester/fdb_c_app && make
|
|
||||||
successOr "FoundationDB-Client cmake integration failed"
|
|
||||||
cc /foundationdb/build/cmake/package_tester/fdb_c_app/app.c `pkg-config --libs --cflags foundationdb-client`
|
|
||||||
successOr "FoundationDB-Client pkg-config integration failed"
|
|
||||||
popd
|
|
||||||
}
|
|
||||||
|
|
||||||
keep_config() {
|
|
||||||
mkdir /etc/foundationdb
|
|
||||||
description=$(LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 8)
|
|
||||||
random_str=$(LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 8)
|
|
||||||
successOr "Could not create secret"
|
|
||||||
echo $description:$random_str@127.0.0.1:4500 > /tmp/fdb.cluster
|
|
||||||
successOr "Could not create fdb.cluster file"
|
|
||||||
sed '/\[fdbserver.4500\]/a \[fdbserver.4501\]' /foundationdb/packaging/foundationdb.conf > /tmp/foundationdb.conf
|
|
||||||
successOr "Could not change foundationdb.conf file"
|
|
||||||
# we need to keep these files around for testing that the install didn't change them
|
|
||||||
cp /tmp/fdb.cluster /etc/foundationdb/fdb.cluster
|
|
||||||
cp /tmp/foundationdb.conf /etc/foundationdb/foundationdb.conf
|
|
||||||
|
|
||||||
install
|
|
||||||
successOr "FoundationDB install failed"
|
|
||||||
# make sure we are not in build directory as there is a fdbc.cluster file there
|
|
||||||
echo "Configure new database - Install isn't supposed to do this for us"
|
|
||||||
echo "as there was an existing configuration"
|
|
||||||
cd /
|
|
||||||
timeout 2 fdbcli --exec 'configure new single ssd'
|
|
||||||
successOr "Couldn't configure new database"
|
|
||||||
tests_healthy
|
|
||||||
num_processes="$(timeout 2 fdbcli --exec 'status' | grep "FoundationDB processes" | sed -e 's/.*- //')"
|
|
||||||
if [ "${num_processes}" -ne 2 ]
|
|
||||||
then
|
|
||||||
fail Number of processes incorrect after config change
|
|
||||||
fi
|
|
||||||
|
|
||||||
differences="$(diff /tmp/fdb.cluster /etc/foundationdb/fdb.cluster)"
|
|
||||||
if [ -n "${differences}" ]
|
|
||||||
then
|
|
||||||
fail Install changed configuration files
|
|
||||||
fi
|
|
||||||
differences="$(diff /tmp/foundationdb.conf /etc/foundationdb/foundationdb.conf)"
|
|
||||||
if [ -n "${differences}" ]
|
|
||||||
then
|
|
||||||
fail Install changed configuration files
|
|
||||||
fi
|
|
||||||
|
|
||||||
uninstall
|
|
||||||
# make sure config didn't get deleted
|
|
||||||
# RPM, however, renames the file on remove, so we need to check for this
|
|
||||||
conffile="/etc/foundationdb/foundationdb.conf${conf_save_extension}"
|
|
||||||
if [ ! -f /etc/foundationdb/fdb.cluster ] || [ ! -f "${conffile}" ]
|
|
||||||
then
|
|
||||||
fail "Uninstall removed configuration"
|
|
||||||
fi
|
|
||||||
differences="$(diff /tmp/foundationdb.conf ${conffile})"
|
|
||||||
if [ -n "${differences}" ]
|
|
||||||
then
|
|
||||||
fail "${conffile} changed during remove"
|
|
||||||
fi
|
|
||||||
differences="$(diff /tmp/fdb.cluster /etc/foundationdb/fdb.cluster)"
|
|
||||||
if [ -n "${differences}" ]
|
|
||||||
then
|
|
||||||
fail "/etc/foundationdb/fdb.cluster changed during remove"
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,40 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -z ${util_sh_included+x} ]
|
|
||||||
then
|
|
||||||
util_sh_included=1
|
|
||||||
|
|
||||||
# for colored output
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
|
|
||||||
enterfun() {
|
|
||||||
pushd . > /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
exitfun() {
|
|
||||||
popd > /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
fail() {
|
|
||||||
false
|
|
||||||
successOr ${@:1}
|
|
||||||
}
|
|
||||||
|
|
||||||
successOr() {
|
|
||||||
local __res=$?
|
|
||||||
if [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
if [ "$#" -gt 1 ]
|
|
||||||
then
|
|
||||||
>&2 echo -e "${RED}${@:1} ${NC}"
|
|
||||||
fi
|
|
||||||
exit ${__res}
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fi
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
||||||
|
|
||||||
source ${source_dir}/modules/globals.sh
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
source ${source_dir}/modules/rpm.sh
|
|
||||||
source ${source_dir}/modules/tests.sh
|
|
||||||
source ${source_dir}/modules/test_args.sh
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
test_args_parse "$@"
|
|
||||||
__res=$?
|
|
||||||
if [ ${__res} -eq 2 ]
|
|
||||||
then
|
|
||||||
__res=0
|
|
||||||
break
|
|
||||||
elif [ ${__res} -ne 0 ]
|
|
||||||
then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
tests_main
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
||||||
|
|
||||||
source ${source_dir}/modules/globals.sh
|
|
||||||
source ${source_dir}/modules/config.sh
|
|
||||||
source ${source_dir}/modules/util.sh
|
|
||||||
source ${source_dir}/modules/arguments.sh
|
|
||||||
source ${source_dir}/modules/docker.sh
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local __res=0
|
|
||||||
enterfun
|
|
||||||
for _ in 1
|
|
||||||
do
|
|
||||||
arguments_parse "$@"
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
config_verify
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
__res=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
docker_run
|
|
||||||
__res=$?
|
|
||||||
done
|
|
||||||
exitfun
|
|
||||||
return ${__res}
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -1,105 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
common: &common
|
|
||||||
image: foundationdb/foundationdb-build:0.1.24
|
|
||||||
|
|
||||||
build-setup: &build-setup
|
|
||||||
<<: *common
|
|
||||||
depends_on: [common]
|
|
||||||
volumes:
|
|
||||||
- ..:/__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb
|
|
||||||
working_dir: /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb
|
|
||||||
environment:
|
|
||||||
- MAKEJOBS=1
|
|
||||||
- USE_CCACHE=1
|
|
||||||
- BUILD_DIR=./work
|
|
||||||
|
|
||||||
release-setup: &release-setup
|
|
||||||
<<: *build-setup
|
|
||||||
environment:
|
|
||||||
- MAKEJOBS=1
|
|
||||||
- USE_CCACHE=1
|
|
||||||
- RELEASE=true
|
|
||||||
- BUILD_DIR=./work
|
|
||||||
|
|
||||||
snapshot-setup: &snapshot-setup
|
|
||||||
<<: *build-setup
|
|
||||||
|
|
||||||
build-docs:
|
|
||||||
<<: *build-setup
|
|
||||||
volumes:
|
|
||||||
- ..:/foundationdb
|
|
||||||
working_dir: /foundationdb
|
|
||||||
command: scl enable devtoolset-8 python27 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" docpackage'
|
|
||||||
|
|
||||||
|
|
||||||
release-packages: &release-packages
|
|
||||||
<<: *release-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" packages'
|
|
||||||
|
|
||||||
snapshot-packages: &snapshot-packages
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" packages'
|
|
||||||
|
|
||||||
prb-packages:
|
|
||||||
<<: *snapshot-packages
|
|
||||||
|
|
||||||
|
|
||||||
release-bindings: &release-bindings
|
|
||||||
<<: *release-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" bindings'
|
|
||||||
|
|
||||||
snapshot-bindings: &snapshot-bindings
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'make -j "$${MAKEJOBS}" bindings'
|
|
||||||
|
|
||||||
prb-bindings:
|
|
||||||
<<: *snapshot-bindings
|
|
||||||
|
|
||||||
|
|
||||||
snapshot-cmake: &snapshot-cmake
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -G "Ninja" -DFDB_RELEASE=0 -DUSE_WERROR=ON /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && ninja -v -j "$${MAKEJOBS}" "packages" "strip_targets" && cpack'
|
|
||||||
|
|
||||||
prb-cmake:
|
|
||||||
<<: *snapshot-cmake
|
|
||||||
|
|
||||||
|
|
||||||
snapshot-bindings-cmake: &snapshot-bindings-cmake
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -G "Ninja" -DFDB_RELEASE=0 -DUSE_WERROR=ON /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && ninja -v -j "$${MAKEJOBS}" "bindings/all"'
|
|
||||||
|
|
||||||
prb-bindings-cmake:
|
|
||||||
<<: *snapshot-bindings-cmake
|
|
||||||
|
|
||||||
|
|
||||||
snapshot-cmake: &snapshot-testpackages
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -G "Ninja" -DFDB_RELEASE=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && ninja -v -j "$${MAKEJOBS}"'
|
|
||||||
|
|
||||||
prb-testpackages:
|
|
||||||
<<: *snapshot-testpackages
|
|
||||||
|
|
||||||
|
|
||||||
snapshot-ctest: &snapshot-ctest
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -G "Ninja" -DFDB_RELEASE=1 -DUSE_WERROR=ON /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && ninja -v -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure'
|
|
||||||
|
|
||||||
prb-ctest:
|
|
||||||
<<: *snapshot-ctest
|
|
||||||
|
|
||||||
|
|
||||||
snapshot-correctness: &snapshot-correctness
|
|
||||||
<<: *build-setup
|
|
||||||
command: scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash -c 'mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -G "Ninja" -DFDB_RELEASE=1 -DUSE_WERROR=ON /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && ninja -v -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure'
|
|
||||||
|
|
||||||
prb-correctness:
|
|
||||||
<<: *snapshot-correctness
|
|
||||||
|
|
||||||
|
|
||||||
shell:
|
|
||||||
<<: *build-setup
|
|
||||||
volumes:
|
|
||||||
- ..:/foundationdb
|
|
||||||
entrypoint: /bin/bash
|
|
@ -1,290 +0,0 @@
|
|||||||
FROM centos:6
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
|
|
||||||
RUN sed -i -e '/enabled/d' /etc/yum.repos.d/CentOS-Base.repo && \
|
|
||||||
sed -i -e '/gpgcheck=1/a enabled=0' /etc/yum.repos.d/CentOS-Base.repo && \
|
|
||||||
sed -i -n '/6.1/q;p' /etc/yum.repos.d/CentOS-Vault.repo && \
|
|
||||||
sed -i -e "s/6\.0/$(cut -d\ -f3 /etc/redhat-release)/g" /etc/yum.repos.d/CentOS-Vault.repo && \
|
|
||||||
sed -i -e 's/enabled=0/enabled=1/g' /etc/yum.repos.d/CentOS-Vault.repo && \
|
|
||||||
yum install -y \
|
|
||||||
centos-release-scl-rh \
|
|
||||||
epel-release \
|
|
||||||
scl-utils \
|
|
||||||
yum-utils && \
|
|
||||||
yum-config-manager --enable rhel-server-rhscl-7-rpms && \
|
|
||||||
sed -i -e 's/#baseurl=/baseurl=/g' \
|
|
||||||
-e 's/mirror.centos.org/vault.centos.org/g' \
|
|
||||||
-e 's/mirrorlist=/#mirrorlist=/g' \
|
|
||||||
/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo && \
|
|
||||||
yum install -y \
|
|
||||||
binutils-devel \
|
|
||||||
curl \
|
|
||||||
debbuild \
|
|
||||||
devtoolset-8 \
|
|
||||||
devtoolset-8-libasan-devel \
|
|
||||||
devtoolset-8-libtsan-devel \
|
|
||||||
devtoolset-8-libubsan-devel \
|
|
||||||
devtoolset-8-valgrind-devel \
|
|
||||||
dos2unix \
|
|
||||||
dpkg \
|
|
||||||
gettext-devel \
|
|
||||||
git \
|
|
||||||
golang \
|
|
||||||
java-1.8.0-openjdk-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libuuid-devel \
|
|
||||||
libxslt \
|
|
||||||
lz4 \
|
|
||||||
lz4-devel \
|
|
||||||
lz4-static \
|
|
||||||
mono-devel \
|
|
||||||
redhat-lsb-core \
|
|
||||||
rpm-build \
|
|
||||||
tcl-devel \
|
|
||||||
unzip \
|
|
||||||
wget \
|
|
||||||
rh-python36 \
|
|
||||||
rh-python36-python-devel \
|
|
||||||
rh-ruby24 && \
|
|
||||||
yum clean all && \
|
|
||||||
rm -rf /var/cache/yum
|
|
||||||
|
|
||||||
# build/install autoconf -- same version installed by yum in centos7
|
|
||||||
RUN curl -Ls http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -o autoconf.tar.gz && \
|
|
||||||
echo "954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969 autoconf.tar.gz" > autoconf-sha.txt && \
|
|
||||||
sha256sum -c autoconf-sha.txt && \
|
|
||||||
mkdir autoconf && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory autoconf -xf autoconf.tar.gz && \
|
|
||||||
cd autoconf && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd ../ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install automake -- same version installed by yum in centos7
|
|
||||||
RUN curl -Ls http://ftp.gnu.org/gnu/automake/automake-1.13.4.tar.gz -o automake.tar.gz && \
|
|
||||||
echo "4c93abc0bff54b296f41f92dd3aa1e73e554265a6f719df465574983ef6f878c automake.tar.gz" > automake-sha.txt && \
|
|
||||||
sha256sum -c automake-sha.txt && \
|
|
||||||
mkdir automake && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory automake -xf automake.tar.gz && \
|
|
||||||
cd automake && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd ../ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install git
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/git/git/archive/v2.30.0.tar.gz -o git.tar.gz && \
|
|
||||||
echo "8db4edd1a0a74ebf4b78aed3f9e25c8f2a7db3c00b1aaee94d1e9834fae24e61 git.tar.gz" > git-sha.txt && \
|
|
||||||
sha256sum -c git-sha.txt && \
|
|
||||||
mkdir git && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory git -xf git.tar.gz && \
|
|
||||||
cd git && \
|
|
||||||
make configure && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd ../ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install ninja
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ninja-build/ninja/archive/v1.9.0.zip -o ninja.zip && \
|
|
||||||
echo "8e2e654a418373f10c22e4cc9bdbe9baeca8527ace8d572e0b421e9d9b85b7ef ninja.zip" > ninja-sha.txt && \
|
|
||||||
sha256sum -c ninja-sha.txt && \
|
|
||||||
unzip ninja.zip && \
|
|
||||||
cd ninja-1.9.0 && \
|
|
||||||
./configure.py --bootstrap && \
|
|
||||||
cp ninja /usr/bin && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install cmake
|
|
||||||
RUN curl -Ls https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz -o cmake.tar.gz && \
|
|
||||||
echo "563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76 cmake.tar.gz" > cmake-sha.txt && \
|
|
||||||
sha256sum -c cmake-sha.txt && \
|
|
||||||
mkdir cmake && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory cmake -xf cmake.tar.gz && \
|
|
||||||
cp -r cmake/* /usr/local/ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install LLVM
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
curl -Ls https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/llvm-project-10.0.0.tar.xz -o llvm.tar.xz && \
|
|
||||||
echo "6287a85f4a6aeb07dbffe27847117fe311ada48005f2b00241b523fe7b60716e llvm.tar.xz" > llvm-sha.txt && \
|
|
||||||
sha256sum -c llvm-sha.txt && \
|
|
||||||
mkdir llvm-project && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory llvm-project -xf llvm.tar.xz && \
|
|
||||||
mkdir -p llvm-project/build && \
|
|
||||||
cd llvm-project/build && \
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-G Ninja \
|
|
||||||
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
|
||||||
-DLLVM_INCLUDE_TESTS=OFF \
|
|
||||||
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;libcxx;libcxxabi;libunwind;lld;lldb" \
|
|
||||||
-DLLVM_STATIC_LINK_CXX_STDLIB=ON \
|
|
||||||
../llvm && \
|
|
||||||
cmake --build . && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd ../.. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install openssl
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://www.openssl.org/source/openssl-1.1.1h.tar.gz -o openssl.tar.gz && \
|
|
||||||
echo "5c9ca8774bd7b03e5784f26ae9e9e6d749c9da2438545077e6b3d755a06595d9 openssl.tar.gz" > openssl-sha.txt && \
|
|
||||||
sha256sum -c openssl-sha.txt && \
|
|
||||||
mkdir openssl && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory openssl -xf openssl.tar.gz && \
|
|
||||||
cd openssl && \
|
|
||||||
./config CFLAGS="-fPIC -O3" --prefix=/usr/local && \
|
|
||||||
make -j`nproc` && \
|
|
||||||
make -j1 install && \
|
|
||||||
ln -sv /usr/local/lib64/lib*.so.1.1 /usr/lib64/ && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install rocksdb to /opt
|
|
||||||
RUN curl -Ls https://github.com/facebook/rocksdb/archive/v6.10.1.tar.gz -o rocksdb.tar.gz && \
|
|
||||||
echo "d573d2f15cdda883714f7e0bc87b814a8d4a53a82edde558f08f940e905541ee rocksdb.tar.gz" > rocksdb-sha.txt && \
|
|
||||||
sha256sum -c rocksdb-sha.txt && \
|
|
||||||
tar --directory /opt -xf rocksdb.tar.gz && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install boost 1.67 to /opt
|
|
||||||
RUN curl -Ls https://boostorg.jfrog.io/artifactory/main/release/1.67.0/source/boost_1_67_0.tar.bz2 -o boost_1_67_0.tar.bz2 && \
|
|
||||||
echo "2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba boost_1_67_0.tar.bz2" > boost-sha-67.txt && \
|
|
||||||
sha256sum -c boost-sha-67.txt && \
|
|
||||||
tar --no-same-owner --directory /opt -xjf boost_1_67_0.tar.bz2 && \
|
|
||||||
rm -rf /opt/boost_1_67_0/libs && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install boost 1.72 to /opt
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.bz2 -o boost_1_72_0.tar.bz2 && \
|
|
||||||
echo "59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722 boost_1_72_0.tar.bz2" > boost-sha-72.txt && \
|
|
||||||
sha256sum -c boost-sha-72.txt && \
|
|
||||||
tar --no-same-owner --directory /opt -xjf boost_1_72_0.tar.bz2 && \
|
|
||||||
cd /opt/boost_1_72_0 &&\
|
|
||||||
./bootstrap.sh --with-libraries=context &&\
|
|
||||||
./b2 link=static cxxflags=-std=c++14 --prefix=/opt/boost_1_72_0 install &&\
|
|
||||||
rm -rf /opt/boost_1_72_0/libs && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# jemalloc (needed for FDB after 6.3)
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2 -o jemalloc-5.2.1.tar.bz2 && \
|
|
||||||
echo "34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6 jemalloc-5.2.1.tar.bz2" > jemalloc-sha.txt && \
|
|
||||||
sha256sum -c jemalloc-sha.txt && \
|
|
||||||
mkdir jemalloc && \
|
|
||||||
tar --strip-components 1 --no-same-owner --no-same-permissions --directory jemalloc -xjf jemalloc-5.2.1.tar.bz2 && \
|
|
||||||
cd jemalloc && \
|
|
||||||
./configure --enable-static --disable-cxx && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# Install CCACHE
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ccache/ccache/releases/download/v4.0/ccache-4.0.tar.gz -o ccache.tar.gz && \
|
|
||||||
echo "ac97af86679028ebc8555c99318352588ff50f515fc3a7f8ed21a8ad367e3d45 ccache.tar.gz" > ccache-sha256.txt && \
|
|
||||||
sha256sum -c ccache-sha256.txt && \
|
|
||||||
mkdir ccache &&\
|
|
||||||
tar --strip-components 1 --no-same-owner --directory ccache -xf ccache.tar.gz && \
|
|
||||||
mkdir build && \
|
|
||||||
cd build && \
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DZSTD_FROM_INTERNET=ON ../ccache && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install toml
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ToruNiina/toml11/archive/v3.4.0.tar.gz -o toml.tar.gz && \
|
|
||||||
echo "bc6d733efd9216af8c119d8ac64a805578c79cc82b813e4d1d880ca128bd154d toml.tar.gz" > toml-sha256.txt && \
|
|
||||||
sha256sum -c toml-sha256.txt && \
|
|
||||||
mkdir toml && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory toml -xf toml.tar.gz && \
|
|
||||||
mkdir build && \
|
|
||||||
cd build && \
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dtoml11_BUILD_TEST=OFF ../toml && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# download old fdbserver binaries
|
|
||||||
ARG FDB_VERSION="6.2.29"
|
|
||||||
RUN mkdir -p /opt/foundationdb/old && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/misc/fdbservers-${FDB_VERSION}.tar.gz | \
|
|
||||||
tar --no-same-owner --directory /opt/foundationdb/old -xz && \
|
|
||||||
chmod +x /opt/foundationdb/old/* && \
|
|
||||||
ln -sf /opt/foundationdb/old/fdbserver-${FDB_VERSION} /opt/foundationdb/old/fdbserver
|
|
||||||
|
|
||||||
# build/install distcc
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
curl -Ls https://github.com/distcc/distcc/archive/v3.3.5.tar.gz -o distcc.tar.gz && \
|
|
||||||
echo "13a4b3ce49dfc853a3de550f6ccac583413946b3a2fa778ddf503a9edc8059b0 distcc.tar.gz" > distcc-sha256.txt && \
|
|
||||||
sha256sum -c distcc-sha256.txt && \
|
|
||||||
mkdir distcc && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory distcc -xf distcc.tar.gz && \
|
|
||||||
cd distcc && \
|
|
||||||
./autogen.sh && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
RUN curl -Ls https://github.com/manticoresoftware/manticoresearch/raw/master/misc/junit/ctest2junit.xsl -o /opt/ctest2junit.xsl
|
|
||||||
|
|
||||||
# # Setting this environment variable switches from OpenSSL to BoringSSL
|
|
||||||
# ENV OPENSSL_ROOT_DIR=/opt/boringssl
|
|
||||||
#
|
|
||||||
# # install BoringSSL: TODO: They don't seem to have releases(?) I picked today's master SHA.
|
|
||||||
# RUN cd /opt &&\
|
|
||||||
# git clone https://boringssl.googlesource.com/boringssl &&\
|
|
||||||
# cd boringssl &&\
|
|
||||||
# git checkout e796cc65025982ed1fb9ef41b3f74e8115092816 &&\
|
|
||||||
# mkdir build
|
|
||||||
#
|
|
||||||
# # ninja doesn't respect CXXFLAGS, and the boringssl CMakeLists doesn't expose an option to define __STDC_FORMAT_MACROS
|
|
||||||
# # also, enable -fPIC.
|
|
||||||
# # this is moderately uglier than creating a patchfile, but easier to maintain.
|
|
||||||
# RUN cd /opt/boringssl &&\
|
|
||||||
# for f in crypto/fipsmodule/rand/fork_detect_test.cc \
|
|
||||||
# include/openssl/bn.h \
|
|
||||||
# ssl/test/bssl_shim.cc ; do \
|
|
||||||
# perl -p -i -e 's/#include <inttypes.h>/#define __STDC_FORMAT_MACROS 1\n#include <inttypes.h>/g;' $f ; \
|
|
||||||
# done &&\
|
|
||||||
# perl -p -i -e 's/-Werror/-Werror -fPIC/' CMakeLists.txt &&\
|
|
||||||
# git diff
|
|
||||||
#
|
|
||||||
# RUN cd /opt/boringssl/build &&\
|
|
||||||
# scl enable devtoolset-8 rh-python36 rh-ruby24 -- cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. &&\
|
|
||||||
# scl enable devtoolset-8 rh-python36 rh-ruby24 -- ninja &&\
|
|
||||||
# ./ssl/ssl_test &&\
|
|
||||||
# mkdir -p ../lib && cp crypto/libcrypto.a ssl/libssl.a ../lib
|
|
||||||
#
|
|
||||||
# # Localize time zone
|
|
||||||
# ARG TIMEZONEINFO=America/Los_Angeles
|
|
||||||
# RUN rm -f /etc/localtime && ln -s /usr/share/zoneinfo/${TIMEZONEINFO} /etc/localtime
|
|
||||||
#
|
|
||||||
# LABEL version=${IMAGE_TAG}
|
|
||||||
# ENV DOCKER_IMAGEVER=${IMAGE_TAG}
|
|
||||||
# ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0
|
|
||||||
# ENV CC=/opt/rh/devtoolset-8/root/usr/bin/gcc
|
|
||||||
# ENV CXX=/opt/rh/devtoolset-8/root/usr/bin/g++
|
|
||||||
#
|
|
||||||
# ENV CCACHE_NOHASHDIR=true
|
|
||||||
# ENV CCACHE_UMASK=0000
|
|
||||||
# ENV CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,file_stat_matches"
|
|
||||||
#
|
|
||||||
# CMD scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash
|
|
@ -1,84 +0,0 @@
|
|||||||
ARG REPOSITORY=foundationdb/build
|
|
||||||
ARG VERSION=centos6-latest
|
|
||||||
FROM ${REPOSITORY}:${VERSION}
|
|
||||||
|
|
||||||
# add vscode server
|
|
||||||
RUN yum repolist && \
|
|
||||||
yum -y install \
|
|
||||||
bash-completion \
|
|
||||||
byobu \
|
|
||||||
cgdb \
|
|
||||||
emacs-nox \
|
|
||||||
jq \
|
|
||||||
the_silver_searcher \
|
|
||||||
tmux \
|
|
||||||
tree \
|
|
||||||
vim \
|
|
||||||
zsh && \
|
|
||||||
yum clean all && \
|
|
||||||
rm -rf /var/cache/yum
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
pip3 install \
|
|
||||||
lxml \
|
|
||||||
psutil \
|
|
||||||
python-dateutil \
|
|
||||||
subprocess32 && \
|
|
||||||
mkdir fdb-joshua && \
|
|
||||||
cd fdb-joshua && \
|
|
||||||
git clone https://github.com/FoundationDB/fdb-joshua . && \
|
|
||||||
pip3 install /tmp/fdb-joshua && \
|
|
||||||
cd /tmp && \
|
|
||||||
curl -Ls https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl -o kubectl && \
|
|
||||||
echo "3dbe69e6deb35fbd6fec95b13d20ac1527544867ae56e3dae17e8c4d638b25b9 kubectl" > kubectl.txt && \
|
|
||||||
sha256sum -c kubectl.txt && \
|
|
||||||
mv kubectl /usr/local/bin/kubectl && \
|
|
||||||
chmod 755 /usr/local/bin/kubectl && \
|
|
||||||
curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip -o "awscliv2.zip" && \
|
|
||||||
echo "7ee475f22c1b35cc9e53affbf96a9ffce91706e154a9441d0d39cbf8366b718e awscliv2.zip" > awscliv2.txt && \
|
|
||||||
sha256sum -c awscliv2.txt && \
|
|
||||||
unzip -qq awscliv2.zip && \
|
|
||||||
./aws/install && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
ARG FDB_VERSION="6.2.29"
|
|
||||||
RUN mkdir -p /usr/lib/foundationdb/plugins && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/misc/joshua_tls_library.tar.gz | \
|
|
||||||
tar --strip-components=1 --no-same-owner --directory /usr/lib/foundationdb/plugins -xz && \
|
|
||||||
ln -sf /usr/lib/foundationdb/plugins/FDBGnuTLS.so /usr/lib/foundationdb/plugins/fdb-libressl-plugin.so && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/${FDB_VERSION}/linux/libfdb_c_${FDB_VERSION}.so -o /usr/lib64/libfdb_c_${FDB_VERSION}.so && \
|
|
||||||
ln -sf /usr/lib64/libfdb_c_${FDB_VERSION}.so /usr/lib64/libfdb_c.so
|
|
||||||
|
|
||||||
WORKDIR /root
|
|
||||||
RUN rm -f /root/anaconda-ks.cfg && \
|
|
||||||
printf '%s\n' \
|
|
||||||
'source /opt/rh/devtoolset-8/enable' \
|
|
||||||
'source /opt/rh/rh-python36/enable' \
|
|
||||||
'source /opt/rh/rh-ruby26/enable' \
|
|
||||||
'' \
|
|
||||||
'function cmk_ci() {' \
|
|
||||||
' cmake -S ${HOME}/src/foundationdb -B ${HOME}/build_output -D USE_CCACHE=ON -D USE_WERROR=ON -D RocksDB_ROOT=/opt/rocksdb-6.10.1 -D RUN_JUNIT_TESTS=ON -D RUN_JAVA_INTEGRATION_TESTS=ON -G Ninja && \' \
|
|
||||||
' ninja -v -C ${HOME}/build_output -j 84 all packages strip_targets' \
|
|
||||||
'}' \
|
|
||||||
'function cmk() {' \
|
|
||||||
' cmake -S ${HOME}/src/foundationdb -B ${HOME}/build_output -D USE_CCACHE=ON -D USE_WERROR=ON -D RocksDB_ROOT=/opt/rocksdb-6.10.1 -D RUN_JUNIT_TESTS=ON -D RUN_JAVA_INTEGRATION_TESTS=ON -G Ninja && \' \
|
|
||||||
' ninja -C ${HOME}/build_output -j 84' \
|
|
||||||
'}' \
|
|
||||||
'function ct() {' \
|
|
||||||
' cd ${HOME}/build_output && ctest -j 32 --no-compress-output -T test --output-on-failure' \
|
|
||||||
'}' \
|
|
||||||
'function j() {' \
|
|
||||||
' python3 -m joshua.joshua "${@}"' \
|
|
||||||
'}' \
|
|
||||||
'function jsd() {' \
|
|
||||||
' j start --tarball $(find ${HOME}/build_output/packages -name correctness\*.tar.gz) "${@}"' \
|
|
||||||
'}' \
|
|
||||||
'' \
|
|
||||||
'USER_BASHRC="$HOME/src/.bashrc.local"' \
|
|
||||||
'if test -f "$USER_BASHRC"; then' \
|
|
||||||
' source $USER_BASHRC' \
|
|
||||||
'fi' \
|
|
||||||
'' \
|
|
||||||
>> .bashrc
|
|
@ -1,24 +0,0 @@
|
|||||||
ARG REPOSITORY=foundationdb/build
|
|
||||||
ARG VERSION=centos6-latest
|
|
||||||
FROM ${REPOSITORY}:${VERSION}
|
|
||||||
|
|
||||||
RUN useradd distcc && \
|
|
||||||
source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
update-distcc-symlinks
|
|
||||||
|
|
||||||
EXPOSE 3632
|
|
||||||
EXPOSE 3633
|
|
||||||
USER distcc
|
|
||||||
ENV ALLOW 0.0.0.0/0
|
|
||||||
|
|
||||||
ENTRYPOINT distccd \
|
|
||||||
--daemon \
|
|
||||||
--enable-tcp-insecure \
|
|
||||||
--no-detach \
|
|
||||||
--port 3632 \
|
|
||||||
--log-stderr \
|
|
||||||
--log-level info \
|
|
||||||
--listen 0.0.0.0 \
|
|
||||||
--allow ${ALLOW} \
|
|
||||||
--jobs `nproc`
|
|
@ -1,247 +0,0 @@
|
|||||||
FROM centos:7
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
COPY mono-project.com.rpmkey.pgp ./
|
|
||||||
RUN rpmkeys --import mono-project.com.rpmkey.pgp && \
|
|
||||||
curl -Ls https://download.mono-project.com/repo/centos7-stable.repo -o /etc/yum.repos.d/mono-centos7-stable.repo && \
|
|
||||||
yum repolist && \
|
|
||||||
yum install -y \
|
|
||||||
centos-release-scl-rh \
|
|
||||||
epel-release \
|
|
||||||
scl-utils \
|
|
||||||
yum-utils && \
|
|
||||||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
|
|
||||||
yum install -y \
|
|
||||||
autoconf \
|
|
||||||
automake \
|
|
||||||
binutils-devel \
|
|
||||||
curl \
|
|
||||||
debbuild \
|
|
||||||
devtoolset-8 \
|
|
||||||
devtoolset-8-libasan-devel \
|
|
||||||
devtoolset-8-libtsan-devel \
|
|
||||||
devtoolset-8-libubsan-devel \
|
|
||||||
devtoolset-8-systemtap-sdt-devel \
|
|
||||||
docker-ce \
|
|
||||||
dos2unix \
|
|
||||||
dpkg \
|
|
||||||
gettext-devel \
|
|
||||||
git \
|
|
||||||
golang \
|
|
||||||
java-11-openjdk-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libuuid-devel \
|
|
||||||
libxslt \
|
|
||||||
lz4 \
|
|
||||||
lz4-devel \
|
|
||||||
lz4-static \
|
|
||||||
mono-devel \
|
|
||||||
redhat-lsb-core \
|
|
||||||
rpm-build \
|
|
||||||
tcl-devel \
|
|
||||||
unzip \
|
|
||||||
wget && \
|
|
||||||
if [ "$(uname -p)" == "aarch64" ]; then \
|
|
||||||
yum install -y \
|
|
||||||
rh-python38 \
|
|
||||||
rh-python38-python-devel \
|
|
||||||
rh-ruby27; \
|
|
||||||
else \
|
|
||||||
yum install -y \
|
|
||||||
rh-python36 \
|
|
||||||
rh-python36-python-devel \
|
|
||||||
rh-ruby26; \
|
|
||||||
fi && \
|
|
||||||
yum clean all && \
|
|
||||||
rm -rf /var/cache/yum
|
|
||||||
|
|
||||||
# build/install git
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/git/git/archive/v2.30.0.tar.gz -o git.tar.gz && \
|
|
||||||
echo "8db4edd1a0a74ebf4b78aed3f9e25c8f2a7db3c00b1aaee94d1e9834fae24e61 git.tar.gz" > git-sha.txt && \
|
|
||||||
sha256sum -c git-sha.txt && \
|
|
||||||
mkdir git && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory git -xf git.tar.gz && \
|
|
||||||
cd git && \
|
|
||||||
make configure && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd ../ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install ninja
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ninja-build/ninja/archive/v1.9.0.zip -o ninja.zip && \
|
|
||||||
echo "8e2e654a418373f10c22e4cc9bdbe9baeca8527ace8d572e0b421e9d9b85b7ef ninja.zip" > ninja-sha.txt && \
|
|
||||||
sha256sum -c ninja-sha.txt && \
|
|
||||||
unzip ninja.zip && \
|
|
||||||
cd ninja-1.9.0 && \
|
|
||||||
./configure.py --bootstrap && \
|
|
||||||
cp ninja /usr/bin && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install cmake
|
|
||||||
RUN if [ "$(uname -p)" == "aarch64" ]; then \
|
|
||||||
curl -Ls https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-aarch64.tar.gz -o cmake.tar.gz; \
|
|
||||||
echo "69ec045c6993907a4f4a77349d0a0668f1bd3ce8bc5f6fbab6dc7a7e2ffc4f80 cmake.tar.gz" > cmake-sha.txt; \
|
|
||||||
else \
|
|
||||||
curl -Ls https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz -o cmake.tar.gz; \
|
|
||||||
echo "563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76 cmake.tar.gz" > cmake-sha.txt; \
|
|
||||||
fi && \
|
|
||||||
sha256sum -c cmake-sha.txt && \
|
|
||||||
mkdir cmake && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory cmake -xf cmake.tar.gz && \
|
|
||||||
cp -r cmake/* /usr/local/ && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install LLVM
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/llvm-project-11.0.0.tar.xz -o llvm.tar.xz && \
|
|
||||||
echo "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b llvm.tar.xz" > llvm-sha.txt && \
|
|
||||||
sha256sum -c llvm-sha.txt && \
|
|
||||||
mkdir llvm-project && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory llvm-project -xf llvm.tar.xz && \
|
|
||||||
mkdir -p llvm-project/build && \
|
|
||||||
cd llvm-project/build && \
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-G Ninja \
|
|
||||||
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
|
||||||
-DLLVM_INCLUDE_TESTS=OFF \
|
|
||||||
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;libcxx;libcxxabi;libunwind;lld;lldb" \
|
|
||||||
-DLLVM_STATIC_LINK_CXX_STDLIB=ON \
|
|
||||||
../llvm && \
|
|
||||||
cmake --build . && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd ../.. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install openssl
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://www.openssl.org/source/openssl-1.1.1h.tar.gz -o openssl.tar.gz && \
|
|
||||||
echo "5c9ca8774bd7b03e5784f26ae9e9e6d749c9da2438545077e6b3d755a06595d9 openssl.tar.gz" > openssl-sha.txt && \
|
|
||||||
sha256sum -c openssl-sha.txt && \
|
|
||||||
mkdir openssl && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory openssl -xf openssl.tar.gz && \
|
|
||||||
cd openssl && \
|
|
||||||
./config CFLAGS="-fPIC -O3" --prefix=/usr/local && \
|
|
||||||
make -j`nproc` && \
|
|
||||||
make -j1 install && \
|
|
||||||
ln -sv /usr/local/lib64/lib*.so.1.1 /usr/lib64/ && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install rocksdb to /opt
|
|
||||||
RUN curl -Ls https://github.com/facebook/rocksdb/archive/v6.10.1.tar.gz -o rocksdb.tar.gz && \
|
|
||||||
echo "d573d2f15cdda883714f7e0bc87b814a8d4a53a82edde558f08f940e905541ee rocksdb.tar.gz" > rocksdb-sha.txt && \
|
|
||||||
sha256sum -c rocksdb-sha.txt && \
|
|
||||||
tar --directory /opt -xf rocksdb.tar.gz && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install boost 1.67 to /opt
|
|
||||||
RUN curl -Ls https://boostorg.jfrog.io/artifactory/main/release/1.67.0/source/boost_1_67_0.tar.bz2 -o boost_1_67_0.tar.bz2 && \
|
|
||||||
echo "2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba boost_1_67_0.tar.bz2" > boost-sha-67.txt && \
|
|
||||||
sha256sum -c boost-sha-67.txt && \
|
|
||||||
tar --no-same-owner --directory /opt -xjf boost_1_67_0.tar.bz2 && \
|
|
||||||
rm -rf /opt/boost_1_67_0/libs && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# install boost 1.72 to /opt
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.bz2 -o boost_1_72_0.tar.bz2 && \
|
|
||||||
echo "59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722 boost_1_72_0.tar.bz2" > boost-sha-72.txt && \
|
|
||||||
sha256sum -c boost-sha-72.txt && \
|
|
||||||
tar --no-same-owner --directory /opt -xjf boost_1_72_0.tar.bz2 && \
|
|
||||||
cd /opt/boost_1_72_0 &&\
|
|
||||||
./bootstrap.sh --with-libraries=context &&\
|
|
||||||
./b2 link=static cxxflags=-std=c++14 --prefix=/opt/boost_1_72_0 install &&\
|
|
||||||
rm -rf /opt/boost_1_72_0/libs && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# jemalloc (needed for FDB after 6.3)
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2 -o jemalloc-5.2.1.tar.bz2 && \
|
|
||||||
echo "34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6 jemalloc-5.2.1.tar.bz2" > jemalloc-sha.txt && \
|
|
||||||
sha256sum -c jemalloc-sha.txt && \
|
|
||||||
mkdir jemalloc && \
|
|
||||||
tar --strip-components 1 --no-same-owner --no-same-permissions --directory jemalloc -xjf jemalloc-5.2.1.tar.bz2 && \
|
|
||||||
cd jemalloc && \
|
|
||||||
./configure --enable-static --disable-cxx && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# Install CCACHE
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ccache/ccache/releases/download/v4.0/ccache-4.0.tar.gz -o ccache.tar.gz && \
|
|
||||||
echo "ac97af86679028ebc8555c99318352588ff50f515fc3a7f8ed21a8ad367e3d45 ccache.tar.gz" > ccache-sha256.txt && \
|
|
||||||
sha256sum -c ccache-sha256.txt && \
|
|
||||||
mkdir ccache &&\
|
|
||||||
tar --strip-components 1 --no-same-owner --directory ccache -xf ccache.tar.gz && \
|
|
||||||
mkdir build && \
|
|
||||||
cd build && \
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DZSTD_FROM_INTERNET=ON ../ccache && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# build/install toml
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://github.com/ToruNiina/toml11/archive/v3.4.0.tar.gz -o toml.tar.gz && \
|
|
||||||
echo "bc6d733efd9216af8c119d8ac64a805578c79cc82b813e4d1d880ca128bd154d toml.tar.gz" > toml-sha256.txt && \
|
|
||||||
sha256sum -c toml-sha256.txt && \
|
|
||||||
mkdir toml && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory toml -xf toml.tar.gz && \
|
|
||||||
mkdir build && \
|
|
||||||
cd build && \
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dtoml11_BUILD_TEST=OFF ../toml && \
|
|
||||||
cmake --build . --target install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# download old fdbserver binaries
|
|
||||||
ARG FDB_VERSION="6.2.29"
|
|
||||||
RUN mkdir -p /opt/foundationdb/old && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/misc/fdbservers-${FDB_VERSION}.tar.gz | \
|
|
||||||
tar --no-same-owner --directory /opt/foundationdb/old -xz && \
|
|
||||||
chmod +x /opt/foundationdb/old/* && \
|
|
||||||
ln -sf /opt/foundationdb/old/fdbserver-${FDB_VERSION} /opt/foundationdb/old/fdbserver
|
|
||||||
|
|
||||||
# build/install distcc
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
if [ "$(uname -p)" == "aarch64" ]; then \
|
|
||||||
source /opt/rh/rh-python38/enable; \
|
|
||||||
else \
|
|
||||||
source /opt/rh/rh-python36/enable; \
|
|
||||||
fi && \
|
|
||||||
curl -Ls https://github.com/distcc/distcc/archive/v3.3.5.tar.gz -o distcc.tar.gz && \
|
|
||||||
echo "13a4b3ce49dfc853a3de550f6ccac583413946b3a2fa778ddf503a9edc8059b0 distcc.tar.gz" > distcc-sha256.txt && \
|
|
||||||
sha256sum -c distcc-sha256.txt && \
|
|
||||||
mkdir distcc && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory distcc -xf distcc.tar.gz && \
|
|
||||||
cd distcc && \
|
|
||||||
./autogen.sh && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
# valgrind
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2 -o valgrind-3.17.0.tar.bz2 && \
|
|
||||||
echo "ad3aec668e813e40f238995f60796d9590eee64a16dff88421430630e69285a2 valgrind-3.17.0.tar.bz2" > valgrind-sha.txt && \
|
|
||||||
sha256sum -c valgrind-sha.txt && \
|
|
||||||
mkdir valgrind && \
|
|
||||||
tar --strip-components 1 --no-same-owner --no-same-permissions --directory valgrind -xjf valgrind-3.17.0.tar.bz2 && \
|
|
||||||
cd valgrind && \
|
|
||||||
./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
RUN curl -Ls https://github.com/manticoresoftware/manticoresearch/raw/master/misc/junit/ctest2junit.xsl -o /opt/ctest2junit.xsl
|
|
@ -1,40 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: SKS 1.1.6
|
|
||||||
Comment: Hostname: sks.pod01.fleetstreetops.com
|
|
||||||
|
|
||||||
mQENBFPfqCcBCADctOzyTxfWvf40Nlb+AMkcJyb505WSbzhWU8yPmBNAJOnbwueMsTkNMHEO
|
|
||||||
u8fGRNxRWj5o/Db1N7EoSQtK3OgFnBef8xquUyrzA1nJ2aPfUWX+bhTG1TwyrtLaOssFRz6z
|
|
||||||
/h/ChUIFvt2VZCw+Yx4BiKi+tvgwrHTYB/Yf2J9+R/1O6949n6veFFRBfgPOL0djhvRqXzhv
|
|
||||||
FjJkh4xhTaGVeOnRR3+YQkblmti2n6KYl0n2kNB40ujSqpTloSfnR5tmJpz00WoOA9MJBdvH
|
|
||||||
txTTn8l6rVzXbm4mW9ZmB1kht/BgWaNLaIisW5AZSkQKer35wOWf0G7Gw+cWHq+I7W9pABEB
|
|
||||||
AAG0OlhhbWFyaW4gUHVibGljIEplbmtpbnMgKGF1dG8tc2lnbmluZykgPHJlbGVuZ0B4YW1h
|
|
||||||
cmluLmNvbT6JARwEEAECAAYFAlQIhKQACgkQyQ+cuQ4frQyc1wf+MCusJK4ANLWikbgiSSx1
|
|
||||||
qMBveBlLKLEdCxYY+B9rc/pRDw448iBdd+nuSVdbRoqLgoN8gHbClboP+i22yw+mga0KASD7
|
|
||||||
b1mpdYB0npR3H73zbYArn3qTV8s/yUXkIAEFUtj0yoEuv8KjO8P7nZJh8OuqqAupUVN0s3Kj
|
|
||||||
ONqXqi6Ro3fvVEZWOUFZl/FmY5KmXlpcw+YwE5CaNhJ2WunrjFTDqynRU/LeoPEKuwyYvfo9
|
|
||||||
37zJFCrpAUMTr/9QpEKmV61H7fEHA9oHq97FBwWfjOU0l2mrXt1zJ97xVd2DXxrZodlkiY6B
|
|
||||||
76rhaT4ZhltY1E7WB2Z9WPfTe1Y6jz4fZ4kBHAQQAQgABgUCWEyoiAAKCRABFQplW72BAn/P
|
|
||||||
CAC0GkRBR3JTmG8WGeQMLb/o6Gon9cxpLnKv1GgFbHSM7XYMe7ySh5zxORwFuECuJ5+qcA6c
|
|
||||||
Ve/kJAV8rewLULL9yvHK3oK7R8zoVGbFVm+lyoxiaXpkkWg21Mb8IubiO+tA/dJc7hKQSpoI
|
|
||||||
0+dmJNaNrTVwqj0tQ8e0OL9KvBOYwFbSe06bocSNPVmKCt0EOvpGcQfzFw5UEjJVkqFn/moU
|
|
||||||
rSxj0YsJpwRXB1pOsBaQC6r9oCgUvxPf4H77U07+ImXzxRWInVPYFSXSiBA7p+hzvsikmZEl
|
|
||||||
iIAia8mTteUF1GeK4kafUk6iZZUfBlCIb9sV4O9Vvv8W0VjK4Vg6O2UAiQE4BBMBAgAiBQJT
|
|
||||||
36gnAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCmoZs409gx75DoB/9h5p8u1cUS
|
|
||||||
y6Mp2PjjW398LJZaqWwaa2W/lcLEKN7oWTC5Yf5BEuVsO9270pVln9Cv7hiqcbC8kywk+sZv
|
|
||||||
RsYO3uoTRwsmImc/7uaK382hey1A2hvkH5fYHmY/5Z/Z0bm/A0k0chhG2ycjWjZXYLZ96I0V
|
|
||||||
U3ZBQBHoh3qRtgWq4yWTsCJBX+FKPBdmkIpgcPXQw+hak0mj2sILqjScRZT1Oe+WJsMNMaLa
|
|
||||||
8dSdw+pPm8NM/VGLmO9iTTDApuAsRixpCYLdJY+ThGNrKe6xDswQo8gr3gbBkJi0wLRDP2Rz
|
|
||||||
q7rD0TC2PxOaWOZ7hmyz+EhjLcjZhHNJTaa+NV0k8YAwuQENBFPfqCcBCACtc7HssC9S3PxJ
|
|
||||||
m1youvGfYLhm+KzMO+gIoy7R32VXIZNxrkMYzaeerqSsMwxdhEjyOscT+rJbRGZ+9iPOGeh4
|
|
||||||
AqZlzzOuxQ/Lg5h+2mGVXe0Avb+A2zC56mLSQCL3W8NjABUZdknnc1YIf9Dz05fy4jPEttNS
|
|
||||||
y+Rzte0ITLH1Hy/PKBrlF5n+G1/86f3L5n1ZZXmV3vi+rXT/OyEh9xRS4usmR6kVh4o2XGlI
|
|
||||||
zUrUjhZvb4lxrHfWgzKlWFoUSydaZDk7eikTKF692RiSSpLbDLW2sNOdzT2eqv2B8CJRF5sL
|
|
||||||
bD6BB3dAbH7KfqKiCT3xcCZhNEZw+M+GcRO/HNbnABEBAAGJAR8EGAECAAkFAlPfqCcCGwwA
|
|
||||||
CgkQpqGbONPYMe+sNQgAwjm9PJ45t7NBNTXn1zadoQQbPqz9qAlWiII0k+zzJCTTVqgyIXJY
|
|
||||||
I6zdNiB/Oh1Xajs/T9z9tL54+LLqgtZKa0lzDOmcxn6Iujf3a1MFdYxKgaQtT2ADxAimuBoz
|
|
||||||
3Y1ohxXgAs2+VISWYoPBI+UWhYqg11zq3uwpFIYQBRgkVydCxefCxY19okNp9FPC7KJPpJkO
|
|
||||||
NgDAK693Y9mOZXSq+XeGhjy3Sxesl0PYLIfV33z+vCpc2o1dDA5wuycgfqupNQITkQm6gPOH
|
|
||||||
1jLu8Vttm4fdEtVMcqkn8dJFomo3JW3qxI7IWwjbVRg10G8LGAuBbD6CA0dGSf8PkHFYv2Xs
|
|
||||||
dQ==
|
|
||||||
=MWcF
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,113 +0,0 @@
|
|||||||
ARG REPOSITORY=foundationdb/build
|
|
||||||
ARG VERSION=centos7-latest
|
|
||||||
FROM ${REPOSITORY}:${VERSION}
|
|
||||||
|
|
||||||
# add vscode server
|
|
||||||
RUN yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo && \
|
|
||||||
yum repolist && \
|
|
||||||
yum -y install \
|
|
||||||
bash-completion \
|
|
||||||
byobu \
|
|
||||||
cgdb \
|
|
||||||
emacs-nox \
|
|
||||||
fish \
|
|
||||||
jq \
|
|
||||||
ripgrep \
|
|
||||||
the_silver_searcher \
|
|
||||||
tmux \
|
|
||||||
tree \
|
|
||||||
vim \
|
|
||||||
zsh && \
|
|
||||||
yum clean all && \
|
|
||||||
rm -rf /var/cache/yum
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
pip3 install \
|
|
||||||
lxml \
|
|
||||||
psutil \
|
|
||||||
python-dateutil \
|
|
||||||
subprocess32 && \
|
|
||||||
mkdir fdb-joshua && \
|
|
||||||
cd fdb-joshua && \
|
|
||||||
git clone https://github.com/FoundationDB/fdb-joshua . && \
|
|
||||||
pip3 install /tmp/fdb-joshua && \
|
|
||||||
cd /tmp && \
|
|
||||||
curl -Ls https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl -o kubectl && \
|
|
||||||
echo "3dbe69e6deb35fbd6fec95b13d20ac1527544867ae56e3dae17e8c4d638b25b9 kubectl" > kubectl.txt && \
|
|
||||||
sha256sum -c kubectl.txt && \
|
|
||||||
mv kubectl /usr/local/bin/kubectl && \
|
|
||||||
chmod 755 /usr/local/bin/kubectl && \
|
|
||||||
curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip -o "awscliv2.zip" && \
|
|
||||||
echo "7ee475f22c1b35cc9e53affbf96a9ffce91706e154a9441d0d39cbf8366b718e awscliv2.zip" > awscliv2.txt && \
|
|
||||||
sha256sum -c awscliv2.txt && \
|
|
||||||
unzip -qq awscliv2.zip && \
|
|
||||||
./aws/install && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
ARG FDB_VERSION="6.2.29"
|
|
||||||
RUN mkdir -p /usr/lib/foundationdb/plugins && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/misc/joshua_tls_library.tar.gz | \
|
|
||||||
tar --strip-components=1 --no-same-owner --directory /usr/lib/foundationdb/plugins -xz && \
|
|
||||||
ln -sf /usr/lib/foundationdb/plugins/FDBGnuTLS.so /usr/lib/foundationdb/plugins/fdb-libressl-plugin.so && \
|
|
||||||
curl -Ls https://www.foundationdb.org/downloads/${FDB_VERSION}/linux/libfdb_c_${FDB_VERSION}.so -o /usr/lib64/libfdb_c_${FDB_VERSION}.so && \
|
|
||||||
ln -sf /usr/lib64/libfdb_c_${FDB_VERSION}.so /usr/lib64/libfdb_c.so
|
|
||||||
|
|
||||||
WORKDIR /root
|
|
||||||
RUN curl -Ls https://update.code.visualstudio.com/latest/server-linux-x64/stable -o /tmp/vscode-server-linux-x64.tar.gz && \
|
|
||||||
mkdir -p .vscode-server/bin/latest && \
|
|
||||||
tar --strip-components 1 --no-same-owner --directory .vscode-server/bin/latest -xf /tmp/vscode-server-linux-x64.tar.gz && \
|
|
||||||
touch .vscode-server/bin/latest/0 && \
|
|
||||||
rm -rf /tmp/*
|
|
||||||
RUN rm -f /root/anaconda-ks.cfg && \
|
|
||||||
printf '%s\n' \
|
|
||||||
'#!/usr/bin/env bash' \
|
|
||||||
'set -Eeuo pipefail' \
|
|
||||||
'' \
|
|
||||||
'mkdir -p ~/.docker' \
|
|
||||||
'cat > ~/.docker/config.json << EOF' \
|
|
||||||
'{' \
|
|
||||||
' "proxies":' \
|
|
||||||
' {' \
|
|
||||||
' "default":' \
|
|
||||||
' {' \
|
|
||||||
' "httpProxy": "${HTTP_PROXY}",' \
|
|
||||||
' "httpsProxy": "${HTTPS_PROXY}",' \
|
|
||||||
' "noProxy": "${NO_PROXY}"' \
|
|
||||||
' }' \
|
|
||||||
' }' \
|
|
||||||
'}' \
|
|
||||||
'EOF' \
|
|
||||||
> docker_proxy.sh && \
|
|
||||||
chmod 755 docker_proxy.sh && \
|
|
||||||
printf '%s\n' \
|
|
||||||
'source /opt/rh/devtoolset-8/enable' \
|
|
||||||
'source /opt/rh/rh-python36/enable' \
|
|
||||||
'source /opt/rh/rh-ruby26/enable' \
|
|
||||||
'' \
|
|
||||||
'function cmk_ci() {' \
|
|
||||||
' cmake -S ${HOME}/src/foundationdb -B ${HOME}/build_output -D USE_CCACHE=ON -D USE_WERROR=ON -D RocksDB_ROOT=/opt/rocksdb-6.10.1 -D RUN_JUNIT_TESTS=ON -D RUN_JAVA_INTEGRATION_TESTS=ON -G Ninja && \' \
|
|
||||||
' ninja -v -C ${HOME}/build_output -j 84 all packages strip_targets' \
|
|
||||||
'}' \
|
|
||||||
'function cmk() {' \
|
|
||||||
' cmake -S ${HOME}/src/foundationdb -B ${HOME}/build_output -D USE_CCACHE=ON -D USE_WERROR=ON -D RocksDB_ROOT=/opt/rocksdb-6.10.1 -D RUN_JUNIT_TESTS=ON -D RUN_JAVA_INTEGRATION_TESTS=ON -G Ninja && \' \
|
|
||||||
' ninja -C ${HOME}/build_output -j 84' \
|
|
||||||
'}' \
|
|
||||||
'function ct() {' \
|
|
||||||
' cd ${HOME}/build_output && ctest -j 32 --no-compress-output -T test --output-on-failure' \
|
|
||||||
'}' \
|
|
||||||
'function j() {' \
|
|
||||||
' python3 -m joshua.joshua "${@}"' \
|
|
||||||
'}' \
|
|
||||||
'function jsd() {' \
|
|
||||||
' j start --tarball $(find ${HOME}/build_output/packages -name correctness\*.tar.gz) "${@}"' \
|
|
||||||
'}' \
|
|
||||||
'' \
|
|
||||||
'USER_BASHRC="$HOME/src/.bashrc.local"' \
|
|
||||||
'if test -f "$USER_BASHRC"; then' \
|
|
||||||
' source $USER_BASHRC' \
|
|
||||||
'fi' \
|
|
||||||
'' \
|
|
||||||
'bash ${HOME}/docker_proxy.sh' \
|
|
||||||
>> .bashrc
|
|
@ -1,24 +0,0 @@
|
|||||||
ARG REPOSITORY=foundationdb/build
|
|
||||||
ARG VERSION=centos7-latest
|
|
||||||
FROM ${REPOSITORY}:${VERSION}
|
|
||||||
|
|
||||||
RUN useradd distcc && \
|
|
||||||
source /opt/rh/devtoolset-8/enable && \
|
|
||||||
source /opt/rh/rh-python36/enable && \
|
|
||||||
update-distcc-symlinks
|
|
||||||
|
|
||||||
EXPOSE 3632
|
|
||||||
EXPOSE 3633
|
|
||||||
USER distcc
|
|
||||||
ENV ALLOW 0.0.0.0/0
|
|
||||||
|
|
||||||
ENTRYPOINT distccd \
|
|
||||||
--daemon \
|
|
||||||
--enable-tcp-insecure \
|
|
||||||
--no-detach \
|
|
||||||
--port 3632 \
|
|
||||||
--log-stderr \
|
|
||||||
--log-level info \
|
|
||||||
--listen 0.0.0.0 \
|
|
||||||
--allow ${ALLOW} \
|
|
||||||
--jobs `nproc`
|
|
@ -1,20 +0,0 @@
|
|||||||
ARG REPOSITORY=foundationdb/build
|
|
||||||
ARG VERSION=centos7-latest
|
|
||||||
FROM ${REPOSITORY}:${VERSION}
|
|
||||||
|
|
||||||
ENV YCSB_VERSION=ycsb-foundationdb-binding-0.17.0 \
|
|
||||||
PATH=${PATH}:/usr/bin
|
|
||||||
|
|
||||||
RUN cd /opt \
|
|
||||||
&& eval curl "-Ls https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-foundationdb-binding-0.17.0.tar.gz" \
|
|
||||||
| tar -xzvf -
|
|
||||||
|
|
||||||
RUN rm -Rf /opt/${YCSB_VERSION}/lib/fdb-java-5.2.5.jar
|
|
||||||
|
|
||||||
# COPY The Appropriate fdb-java-.jar Aaron from packages
|
|
||||||
# COPY binary RPM for foundationd-db
|
|
||||||
# Install Binary
|
|
||||||
|
|
||||||
WORKDIR "/opt/${YCSB_VERSION}"
|
|
||||||
|
|
||||||
ENTRYPOINT ["bin/ycsb.sh"]
|
|
@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# we first check whether the user is in the group docker
|
|
||||||
user=$(id -un)
|
|
||||||
DIR_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
|
|
||||||
group=$(id -gn)
|
|
||||||
uid=$(id -u)
|
|
||||||
gid=$(id -g)
|
|
||||||
gids=( $(id -G) )
|
|
||||||
groups=( $(id -Gn) )
|
|
||||||
tmpdir="/tmp/fdb-docker-${DIR_UUID}"
|
|
||||||
image=fdb-dev
|
|
||||||
|
|
||||||
pushd .
|
|
||||||
mkdir ${tmpdir}
|
|
||||||
cd ${tmpdir}
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
cat <<EOF >> Dockerfile
|
|
||||||
FROM foundationdb/foundationdb-dev:0.11.1
|
|
||||||
RUN yum install -y sudo
|
|
||||||
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
|
||||||
RUN groupadd -g 1100 sudo
|
|
||||||
EOF
|
|
||||||
|
|
||||||
num_groups=${#gids[@]}
|
|
||||||
additional_groups="-G sudo"
|
|
||||||
for ((i=0;i<num_groups;i++))
|
|
||||||
do
|
|
||||||
echo "RUN groupadd -g ${gids[$i]} ${groups[$i]} || true" >> Dockerfile
|
|
||||||
if [ ${gids[i]} -ne ${gid} ]
|
|
||||||
then
|
|
||||||
additional_groups="${additional_groups},${gids[$i]}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
cat <<EOF >> Dockerfile
|
|
||||||
RUN useradd -u ${uid} -g ${gid} ${additional_groups} -m ${user}
|
|
||||||
|
|
||||||
USER ${user}
|
|
||||||
CMD scl enable devtoolset-8 rh-python36 rh-ruby24 -- bash
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo "Created ${tmpdir}"
|
|
||||||
echo "Buidling Docker container ${image}"
|
|
||||||
sudo docker build -t ${image} .
|
|
||||||
|
|
||||||
popd
|
|
||||||
|
|
||||||
echo "Writing startup script"
|
|
||||||
mkdir -p $HOME/bin
|
|
||||||
cat <<EOF > $HOME/bin/fdb-dev
|
|
||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
if [ -d "\${CCACHE_DIR}" ]
|
|
||||||
then
|
|
||||||
args="-v \${CCACHE_DIR}:\${CCACHE_DIR}"
|
|
||||||
args="\${args} -e CCACHE_DIR=\${CCACHE_DIR}"
|
|
||||||
args="\${args} -e CCACHE_UMASK=\${CCACHE_UMASK}"
|
|
||||||
ccache_args=\$args
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -t 1 ] ; then
|
|
||||||
TERMINAL_ARGS=-it `# Run in interactive mode and simulate a TTY`
|
|
||||||
else
|
|
||||||
TERMINAL_ARGS=-i `# Run in interactive mode`
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo docker run --rm `# delete (temporary) image after return` \\
|
|
||||||
\${TERMINAL_ARGS} \\
|
|
||||||
--privileged=true `# Run in privileged mode ` \\
|
|
||||||
--cap-add=SYS_PTRACE \\
|
|
||||||
--security-opt seccomp=unconfined \\
|
|
||||||
-v "${HOME}:${HOME}" `# Mount home directory` \\
|
|
||||||
-w="\$(pwd)" \\
|
|
||||||
\${ccache_args} \\
|
|
||||||
${image} "\$@"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF > $HOME/bin/clangd
|
|
||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
fdb-dev scl enable devtoolset-8 rh-python36 rh-ruby24 -- clangd
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if [[ ":$PATH:" != *":$HOME/bin:"* ]]
|
|
||||||
then
|
|
||||||
echo "WARNING: $HOME/bin is not in your PATH!"
|
|
||||||
echo -e "\tThis can cause problems with some scripts (like fdb-clangd)"
|
|
||||||
fi
|
|
||||||
chmod +x $HOME/bin/fdb-dev
|
|
||||||
chmod +x $HOME/bin/clangd
|
|
||||||
echo "To start the dev docker image run $HOME/bin/fdb-dev"
|
|
||||||
echo "$HOME/bin/clangd can be used for IDE integration"
|
|
||||||
echo "You can edit these files but be aware that this script will overwrite your changes if you rerun it"
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cat $1 | grep '<PackageName>' | sed -e 's,^[^>]*>,,' -e 's,<.*,,'
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cat $1 | grep '<Version>' | sed -e 's,^[^>]*>,,' -e 's,<.*,,'
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) != 2:
|
|
||||||
print("Usage: txt-to-toml.py [src.txt]")
|
|
||||||
return 1
|
|
||||||
|
|
||||||
filename = sys.argv[1]
|
|
||||||
|
|
||||||
indent = " "
|
|
||||||
in_workload = False
|
|
||||||
first_test = False
|
|
||||||
keys_before_test = False
|
|
||||||
|
|
||||||
for line in open(filename):
|
|
||||||
k = ""
|
|
||||||
v = ""
|
|
||||||
|
|
||||||
if line.strip().startswith(";"):
|
|
||||||
print((indent if in_workload else "") + line.strip().replace(";", "#"))
|
|
||||||
continue
|
|
||||||
|
|
||||||
if "=" in line:
|
|
||||||
(k, v) = line.strip().split("=")
|
|
||||||
(k, v) = (k.strip(), v.strip())
|
|
||||||
|
|
||||||
if k == "testTitle":
|
|
||||||
first_test = True
|
|
||||||
if in_workload:
|
|
||||||
print("")
|
|
||||||
in_workload = False
|
|
||||||
if keys_before_test:
|
|
||||||
print("")
|
|
||||||
keys_before_test = False
|
|
||||||
print("[[test]]")
|
|
||||||
|
|
||||||
if k == "testName":
|
|
||||||
in_workload = True
|
|
||||||
print("")
|
|
||||||
print(indent + "[[test.workload]]")
|
|
||||||
|
|
||||||
if not first_test:
|
|
||||||
keys_before_test = True
|
|
||||||
|
|
||||||
if v.startswith("."):
|
|
||||||
v = "0" + v
|
|
||||||
|
|
||||||
if any(c.isalpha() or c in ["/", "!"] for c in v):
|
|
||||||
if v != "true" and v != "false":
|
|
||||||
v = "'" + v + "'"
|
|
||||||
|
|
||||||
if k == "buggify":
|
|
||||||
print("buggify = " + ("true" if v == "'on'" else "false"))
|
|
||||||
elif k:
|
|
||||||
print((indent if in_workload else "") + k + " = " + v)
|
|
||||||
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
Loading…
x
Reference in New Issue
Block a user