Skip to content

Commit a5718f6

Browse files
authored
Add Docker-based builder script (#56)
1 parent 717bbbd commit a5718f6

File tree

3 files changed

+54
-6
lines changed

3 files changed

+54
-6
lines changed

build-generic-linux.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/bash
2+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
3+
PROJECT_ROOT="$SCRIPT_DIR"
4+
5+
docker_name="mgconsole_build_generic_linux"
6+
toolchain_url="https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-v4/toolchain-v4-binaries-centos-7-x86_64.tar.gz"
7+
toolchain_tar_gz="$(basename $toolchain_url)"
8+
memgraph_repo="https://github.com/memgraph/memgraph.git"
9+
setup_toolchain_cmd="cd /memgraph/environment/os && \
10+
./centos-7.sh check TOOLCHAIN_RUN_DEPS || \
11+
./centos-7.sh install TOOLCHAIN_RUN_DEPS"
12+
setup_memgraph_cmd="cd /memgraph/environment/os && \
13+
./centos-7.sh check MEMGRAPH_BUILD_DEPS || \
14+
./centos-7.sh install MEMGRAPH_BUILD_DEPS"
15+
mgconsole_build_cmd="source /opt/toolchain-v4/activate && \
16+
mkdir -p /mgconsole/build && cd /mgconsole/build && \
17+
cmake -DCMAKE_BUILD_TYPE=Release .. && make -j"
18+
19+
if [ ! "$(docker info)" ]; then
20+
echo "ERROR: Docker is required"
21+
exit 1
22+
fi
23+
24+
if [ ! "$(docker ps -q -f name=$docker_name)" ]; then
25+
if [ "$(docker ps -aq -f status=exited -f name=$docker_name)" ]; then
26+
echo "Cleanup of the old exited mgconsole build container..."
27+
docker rm $docker_name
28+
fi
29+
docker run -d --network host --name "$docker_name" centos:7 sleep infinity
30+
fi
31+
echo "The mgconsole build container is active!"
32+
33+
docker_exec () {
34+
cmd="$1"
35+
docker exec -it "$docker_name" bash -c "$cmd"
36+
}
37+
38+
docker_exec "mkdir -p /mgconsole"
39+
docker cp -q "$PROJECT_ROOT/." "$docker_name:/mgconsole/"
40+
docker_exec "rm -rf /mgconsole/build/*"
41+
docker_exec "yum install -y wget git"
42+
docker_exec "[ ! -f /$toolchain_tar_gz ] && wget -O /$toolchain_tar_gz $toolchain_url"
43+
docker_exec "[ ! -d /opt/toolchain-v4/ ] && tar -xzf /$toolchain_tar_gz -C /opt"
44+
docker_exec "[ ! -d /memgraph/ ] && git clone $memgraph_repo"
45+
docker_exec "$setup_toolchain_cmd"
46+
docker_exec "$setup_memgraph_cmd"
47+
docker_exec "$mgconsole_build_cmd"
48+
mkdir -p "$PROJECT_ROOT/build/generic"
49+
docker cp -q "$docker_name:/mgconsole/build/src/mgconsole" "$PROJECT_ROOT/build/generic/"

src/CMakeLists.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ if(MGCONSOLE_ON_WINDOWS)
4444
set(CMAKE_CXX_STANDARD_LIBRARIES "-static-libgcc -static-libstdc++ -lws2_32")
4545
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive")
4646
elseif(MGCONSOLE_ON_LINUX)
47-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
47+
# -no-pie -> https://stackoverflow.com/questions/46827433/g-compile-error-rodata-can-not-be-used-when-making-a-shared-object-recomp
48+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++ -no-pie")
4849
endif()
4950

5051
if(MGCONSOLE_ON_LINUX)
@@ -63,7 +64,6 @@ ExternalProject_Add(gflags-proj
6364
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
6465
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
6566
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
66-
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
6767
INSTALL_DIR "${PROJECT_BINARY_DIR}/gflags")
6868

6969
ExternalProject_Get_Property(gflags-proj install_dir)
@@ -121,20 +121,17 @@ target_include_directories(mgconsole
121121
${MGCLIENT_INCLUDE_DIRS}
122122
${REPLXX_INCLUDE_DIRS}
123123
${CMAKE_CURRENT_BINARY_DIR})
124-
125124
target_link_libraries(mgconsole
126125
PRIVATE
127126
${GFLAGS_LIBRARY}
128127
utils
129128
${MGCLIENT_LIBRARY}
130129
${OPENSSL_LIBRARIES})
131-
132130
if(MGCONSOLE_ON_WINDOWS)
133131
target_link_libraries(mgconsole PRIVATE shlwapi)
134132
endif()
135133

136134
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.hpp.in"
137135
"${CMAKE_CURRENT_BINARY_DIR}/version.hpp")
138-
139136
install(TARGETS mgconsole
140137
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

src/utils/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
ExternalProject_Add(replxx-proj
22
PREFIX replxx
33
GIT_REPOSITORY https://github.com/AmokHuginnsson/replxx.git
4-
GIT_TAG release-0.0.3
4+
GIT_TAG release-0.0.4
55
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
66
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
77
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
88
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
9+
"-DREPLXX_BUILD_EXAMPLES=OFF"
10+
"-DBUILD_SHARED_LIBS=OFF"
911
INSTALL_DIR "${PROJECT_BINARY_DIR}/replxx")
1012

1113
if(CMAKE_BUILD_TYPE_LOWERCASE STREQUAL "debug")

0 commit comments

Comments
 (0)