From 0ebbfc012fbb43091f97aac78294f211d7ca8e59 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Mon, 4 Mar 2024 14:49:02 +0100 Subject: [PATCH 1/9] Create Dockerfile for the build environment --- Dockerfile | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6342d2b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,64 @@ +# syntax=docker/dockerfile:1 + +FROM ubuntu:22.04 + + +# install build tools +RUN apt-get update +RUN apt-get -y install cmake && apt-get -y install build-essential +RUN apt-get -y install git + +# install dependencies +RUN apt-get -y install libboost-all-dev +RUN apt-get -y install libssl-dev +RUN apt-get -y install libwebsocketpp-dev + +# create slavehost user +RUN useradd -ms /bin/bash slavehost +RUN usermod -aG sudo slavehost + +WORKDIR /home/slavehost + +# install plog dependency +RUN git clone https://github.com/SergiusTheBest/plog.git +WORKDIR /home/slavehost/plog +RUN mkdir build +WORKDIR /home/slavehost/plog/build +RUN cmake .. +RUN make +RUN make install + +# return to user dir +WORKDIR /home/slavehost + +# install nlohmann json +RUN git clone https://github.com/nlohmann/json.git +WORKDIR /home/slavehost/json +RUN mkdir build +WORKDIR /home/slavehost/json/build +RUN cmake .. +RUN make +RUN make install + +# return to user dir +WORKDIR /home/slavehost + +# change user to slavehost +USER slavehost + +# create workspace dir +RUN mkdir -p workspace/nostrsdk + +# Add source files to docker container +COPY include /home/slavehost/workspace/nostrsdk/include +COPY src /home/slavehost/workspace/nostrsdk/src +COPY test /home/slavehost/workspace/nostrsdk/test +COPY .gitignore /home/slavehost/workspace/nostrsdk/.gitignore +COPY CMakeLists.txt /home/slavehost/workspace/nostrsdk/CMakeLists.txt + +WORKDIR /home/slavehost/workspace/nostrsdk/ + +RUN mkdir build +WORKDIR /home/slavehost/workspace/nostrsdk/build +RUN cmake .. +RUN make From a0214e04b327efd88ac9b1c0c408d898a75fd8ea Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Fri, 22 Mar 2024 14:34:04 +0100 Subject: [PATCH 2/9] Update Dockerfile --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 6342d2b..21b284f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,3 +62,5 @@ RUN mkdir build WORKDIR /home/slavehost/workspace/nostrsdk/build RUN cmake .. RUN make + +WORKDIR /home/slavehost From 122fa64dd5c3900d18844d71012f85327bb971c4 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Fri, 22 Mar 2024 14:35:24 +0100 Subject: [PATCH 3/9] Add build instructions to use the Dockerfile --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index b2cd674..53f2566 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +<<<<<<< HEAD # Aedile A Nostr System Development Kit written in C++. @@ -43,3 +44,12 @@ To run unit tests, use the following command: ```bash ctest --preset linux ``` + +### Build using Docker +1. Build docker image: + docker build -t nostr-ubuntu -f Dockerfile + +2. Run docker image + docker run -it --privileged -u slavehost --hostname slavehost nostr-ubuntu bash + + From 7dac29090cb13097131021fc8b438dac47974a9d Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Tue, 18 Jun 2024 23:52:37 +0200 Subject: [PATCH 4/9] add package support for cmake --install --- CMakeLists.txt | 114 ++++++++++++++++++++++-------- cmake/aedileConfig.cmake.in | 5 ++ debian/control | 6 ++ debian/pack.sh | 4 ++ include/nostr.h | 2 + src/client/websocketpp_client.cpp | 1 + 6 files changed, 101 insertions(+), 31 deletions(-) create mode 100644 cmake/aedileConfig.cmake.in create mode 100644 debian/control create mode 100644 debian/pack.sh create mode 100644 include/nostr.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 744eccf..31cf8fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,10 @@ get_directory_property(HAS_PARENT PARENT_DIRECTORY) if(HAS_PARENT) message(STATUS "Configuring as a subproject.") - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../out/${CMAKE_BUILD_TYPE}/bin/) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../out/${CMAKE_BUILD_TYPE}/lib/) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../out/${CMAKE_BUILD_TYPE}/lib/) + set(BINARY_DIR ${CMAKE_SOURCE_DIR}/../out/${CMAKE_BUILD_TYPE}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BINARY_DIR}/bin/) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BINARY_DIR}/lib/) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BINARY_DIR}/lib/) set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/../env/) if(DEFINED ENV{WORKSPACE}) @@ -31,9 +32,10 @@ if(HAS_PARENT) else() message(STATUS "Configuring as a standalone project.") - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}/bin/) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}/lib/) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}/lib/) + set(BINARY_DIR ${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}/) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BINARY_DIR}/bin/) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BINARY_DIR}/lib/) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BINARY_DIR}/lib/) endif() #======== Find dependencies ========# @@ -73,38 +75,88 @@ target_link_libraries(aedile PRIVATE plog::plog websocketpp::websocketpp ) -target_include_directories(aedile PUBLIC ${INCLUDE_DIR}) +target_include_directories(aedile PUBLIC $) set_target_properties(aedile PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) -#======== Build the tests ========# -enable_testing() -include(GoogleTest) +file(COPY include DESTINATION ${BINARY_DIR}) -FetchContent_Declare( - googletest - URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip -) +#======== Install Support ========# +# Specify the version of the project +set_target_properties(aedile PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties(aedile PROPERTIES SOVERSION 0) + +# Define installation directories +set(CMAKE_INSTALL_PREFIX /Users/finrod/Desktop/aedile) -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -FetchContent_MakeAvailable(googletest) +# Install the library +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) -enable_testing() +# Install the headers +install(DIRECTORY include/ DESTINATION include) -set(TEST_DIR ./test) -set(TEST_SOURCES - ${TEST_DIR}/nostr_service_test.cpp +#======== Package Support ========# + +# Create a package configuration file +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion ) -add_executable(aedile_test ${TEST_SOURCES} ${HEADERS}) -target_link_libraries(aedile_test PRIVATE - GTest::gmock - GTest::gtest - GTest::gtest_main - aedile - plog::plog - websocketpp::websocketpp +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake + INSTALL_DESTINATION lib/cmake/${PROJECT_NAME} +) + +# Install the package configuration files +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + DESTINATION lib/cmake/${PROJECT_NAME} ) -target_include_directories(aedile_test PUBLIC ${INCLUDE_DIR}) -set_target_properties(aedile_test PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) -gtest_add_tests(TARGET aedile_test) +# Export targets for use by other projects +install(EXPORT ${PROJECT_NAME}Targets + FILE ${PROJECT_NAME}Targets.cmake + NAMESPACE ${PROJECT_NAME}:: + DESTINATION lib/cmake/${PROJECT_NAME}) + + +#======== Build the tests ========# +# enable_testing() +# include(GoogleTest) + +# FetchContent_Declare( +# googletest +# URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip +# ) + +# set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +# FetchContent_MakeAvailable(googletest) + +# enable_testing() + +# set(TEST_DIR ./test) +# set(TEST_SOURCES +# ${TEST_DIR}/nostr_service_test.cpp +# ) + +# add_executable(aedile_test ${TEST_SOURCES} ${HEADERS}) +# target_link_libraries(aedile_test PRIVATE +# GTest::gmock +# GTest::gtest +# GTest::gtest_main +# aedile +# plog::plog +# websocketpp::websocketpp +# ) +# target_include_directories(aedile_test PUBLIC ${INCLUDE_DIR}) +# set_target_properties(aedile_test PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) + +# gtest_add_tests(TARGET aedile_test) diff --git a/cmake/aedileConfig.cmake.in b/cmake/aedileConfig.cmake.in new file mode 100644 index 0000000..a1c6d45 --- /dev/null +++ b/cmake/aedileConfig.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake") + +check_required_components(${PROJECT_NAME}) diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..f3c30f8 --- /dev/null +++ b/debian/control @@ -0,0 +1,6 @@ +Package: libaedile +Version: 0.0.2 +Maintainer: MichaelJ +Architecture: amd64 +Description: Plug-and-play Nostr Development Kit +Pre-Depends: dpkg ( >= 1.16.1), libwebsocketpp-dev ( >= 0.8.1-7), nlohmann-json3-dev ( >= 3.7.3-1), libssl-dev ( >= 3.0.11-1~deb12u2_amd64.deb) \ No newline at end of file diff --git a/debian/pack.sh b/debian/pack.sh new file mode 100644 index 0000000..8e1a972 --- /dev/null +++ b/debian/pack.sh @@ -0,0 +1,4 @@ +#! /bin/zsh + +rm -rf libaedile +mkdir -p libaedile diff --git a/include/nostr.h b/include/nostr.h new file mode 100644 index 0000000..785a6f1 --- /dev/null +++ b/include/nostr.h @@ -0,0 +1,2 @@ +#include +#include \ No newline at end of file diff --git a/src/client/websocketpp_client.cpp b/src/client/websocketpp_client.cpp index c7504e1..f2c2d5f 100644 --- a/src/client/websocketpp_client.cpp +++ b/src/client/websocketpp_client.cpp @@ -1,4 +1,5 @@ #include "web_socket_client.hpp" +#include using std::error_code; using std::function; From df6c2894735ef6b4804b510e922469c9b76011b8 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Fri, 21 Jun 2024 15:24:46 +0200 Subject: [PATCH 5/9] do not naively build tests all the time --- CMakeLists.txt | 37 +------------------------------------ test/CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 36 deletions(-) create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 31cf8fb..dc64a4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,9 +85,6 @@ file(COPY include DESTINATION ${BINARY_DIR}) set_target_properties(aedile PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(aedile PROPERTIES SOVERSION 0) -# Define installation directories -set(CMAKE_INSTALL_PREFIX /Users/finrod/Desktop/aedile) - # Install the library install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets @@ -127,36 +124,4 @@ install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION lib/cmake/${PROJECT_NAME}) - -#======== Build the tests ========# -# enable_testing() -# include(GoogleTest) - -# FetchContent_Declare( -# googletest -# URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip -# ) - -# set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -# FetchContent_MakeAvailable(googletest) - -# enable_testing() - -# set(TEST_DIR ./test) -# set(TEST_SOURCES -# ${TEST_DIR}/nostr_service_test.cpp -# ) - -# add_executable(aedile_test ${TEST_SOURCES} ${HEADERS}) -# target_link_libraries(aedile_test PRIVATE -# GTest::gmock -# GTest::gtest -# GTest::gtest_main -# aedile -# plog::plog -# websocketpp::websocketpp -# ) -# target_include_directories(aedile_test PUBLIC ${INCLUDE_DIR}) -# set_target_properties(aedile_test PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) - -# gtest_add_tests(TARGET aedile_test) +add_subdirectory(test EXCLUDE_FROM_ALL) \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..a78a8f9 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,32 @@ +#======== Build the tests ========# +enable_testing() +include(GoogleTest) + +FetchContent_Declare( + googletest + URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip +) + +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +FetchContent_MakeAvailable(googletest) + +enable_testing() + +set(TEST_DIR ./) +set(TEST_SOURCES + ${TEST_DIR}/nostr_service_test.cpp +) + +add_executable(aedile_test ${TEST_SOURCES} ${HEADERS}) +target_link_libraries(aedile_test PRIVATE + GTest::gmock + GTest::gtest + GTest::gtest_main + aedile + plog::plog + websocketpp::websocketpp +) +target_include_directories(aedile_test PUBLIC ${INCLUDE_DIR}) +set_target_properties(aedile_test PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) + +gtest_add_tests(TARGET aedile_test) From 4b0fce8d8ced7eed062bfe4ac8bbd926e5b3ea37 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Fri, 21 Jun 2024 15:25:28 +0200 Subject: [PATCH 6/9] generate debian package for libaedile --- .gitignore | 5 +++++ CMakePresets.json | 3 ++- {debian => deb/DEBIAN}/control | 2 +- debian/pack.sh | 4 ---- gen_deb.sh | 21 +++++++++++++++++++++ 5 files changed, 29 insertions(+), 6 deletions(-) rename {debian => deb/DEBIAN}/control (69%) delete mode 100644 debian/pack.sh create mode 100755 gen_deb.sh diff --git a/.gitignore b/.gitignore index 5cf2f9a..ead7931 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,8 @@ cmake_install.cmake # vcpkg vcpkg_installed/ + +# debian packaging +*.deb +deb/opt +deb/usr \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json index d28f1a5..3f4e5d3 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -6,7 +6,8 @@ "generator": "Unix Makefiles", "binaryDir": "${sourceDir}/build/linux", "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "CMAKE_INSTALL_PREFIX": "$env{PACK_DIR}" } } ], diff --git a/debian/control b/deb/DEBIAN/control similarity index 69% rename from debian/control rename to deb/DEBIAN/control index f3c30f8..819ffa4 100644 --- a/debian/control +++ b/deb/DEBIAN/control @@ -3,4 +3,4 @@ Version: 0.0.2 Maintainer: MichaelJ Architecture: amd64 Description: Plug-and-play Nostr Development Kit -Pre-Depends: dpkg ( >= 1.16.1), libwebsocketpp-dev ( >= 0.8.1-7), nlohmann-json3-dev ( >= 3.7.3-1), libssl-dev ( >= 3.0.11-1~deb12u2_amd64.deb) \ No newline at end of file +Pre-Depends: dpkg ( >= 1.16.1), libwebsocketpp-dev ( >= 0.8.1-7), nlohmann-json3-dev ( >= 3.7.3-1), libssl-dev ( >= 3.0), libplog-dev ( >= 1.1.10) diff --git a/debian/pack.sh b/debian/pack.sh deleted file mode 100644 index 8e1a972..0000000 --- a/debian/pack.sh +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/zsh - -rm -rf libaedile -mkdir -p libaedile diff --git a/gen_deb.sh b/gen_deb.sh new file mode 100755 index 0000000..5bfcc05 --- /dev/null +++ b/gen_deb.sh @@ -0,0 +1,21 @@ +#! /bin/bash + +export PACKAGE_NAME="libaedile-dev" +export VERSION="0.0.2" + +export SRC_ROOT_DIR=$(dirname $(readlink -f ${0})) +export PACK_DIR="${SRC_ROOT_DIR}/deb/opt/${PACKAGE_NAME}/usr" +echo $PACK_DIR + + +rm -rf $PACK_DIR +mkdir -p $PACK_DIR + +cd "${SRC_ROOT_DIR}" +cmake --preset=linux +cmake --build build/linux +cmake --install build/linux + +cd "${SRC_ROOT_DIR}" + +dpkg-deb --build deb deb/$PACKAGE_NAME-${VERSION}.deb From e3f5ce98f321ae59411ca7a944f82e0dc3c30049 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Fri, 21 Jun 2024 17:39:50 +0200 Subject: [PATCH 7/9] create symbolic link to /usr/ directory to make installation usable --- CMakePresets.json | 2 +- gen_deb.sh | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 3f4e5d3..0ca4df0 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -7,7 +7,7 @@ "binaryDir": "${sourceDir}/build/linux", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "CMAKE_INSTALL_PREFIX": "$env{PACK_DIR}" + "CMAKE_INSTALL_PREFIX": "$env{INSTALL_DIR}" } } ], diff --git a/gen_deb.sh b/gen_deb.sh index 5bfcc05..65fe464 100755 --- a/gen_deb.sh +++ b/gen_deb.sh @@ -4,18 +4,28 @@ export PACKAGE_NAME="libaedile-dev" export VERSION="0.0.2" export SRC_ROOT_DIR=$(dirname $(readlink -f ${0})) -export PACK_DIR="${SRC_ROOT_DIR}/deb/opt/${PACKAGE_NAME}/usr" -echo $PACK_DIR +export DEB_PACKAGE_ROOT="${SRC_ROOT_DIR}/deb" +export INSTALL_DIR="${DEB_PACKAGE_ROOT}/opt/${PACKAGE_NAME}/usr" -rm -rf $PACK_DIR -mkdir -p $PACK_DIR +rm -rf $INSTALL_DIR +mkdir -p $INSTALL_DIR cd "${SRC_ROOT_DIR}" cmake --preset=linux cmake --build build/linux cmake --install build/linux +rm -rf ${DEB_PACKAGE_ROOT}/usr/ + +mkdir -p ${DEB_PACKAGE_ROOT}/usr/include/aedile/client +mkdir -p ${DEB_PACKAGE_ROOT}/usr/lib + +ln -s ${INSTALL_DIR}/include/nostr.h ${DEB_PACKAGE_ROOT}/usr/include/aedile/nostr.h +ln -s ${INSTALL_DIR}/include/nostr.hpp ${DEB_PACKAGE_ROOT}/usr/include/aedile/nostr.hpp +ln -s ${INSTALL_DIR}/include/client/web_socket_client.hpp ${DEB_PACKAGE_ROOT}/usr/include/aedile/client/web_socket_client.hpp +ln -s ${INSTALL_DIR}/lib/libaedile.a ${DEB_PACKAGE_ROOT}/usr/lib/libaedile.a + cd "${SRC_ROOT_DIR}" dpkg-deb --build deb deb/$PACKAGE_NAME-${VERSION}.deb From 617b13f5c02618c28e8b89d3497f7e8be3e3f375 Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Tue, 15 Oct 2024 22:31:12 +0200 Subject: [PATCH 8/9] remove typo --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 53f2566..b54d0d0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -<<<<<<< HEAD # Aedile A Nostr System Development Kit written in C++. From e26ca5f28faac58f08c4ebce30a6b29b08d6caff Mon Sep 17 00:00:00 2001 From: Finrod Felagund Date: Tue, 15 Oct 2024 22:44:18 +0200 Subject: [PATCH 9/9] enable conditional build of tests to lighten the packaging build --- CMakeLists.txt | 7 +++++- Dockerfile | 66 -------------------------------------------------- README.md | 13 ++-------- 3 files changed, 8 insertions(+), 78 deletions(-) delete mode 100644 Dockerfile diff --git a/CMakeLists.txt b/CMakeLists.txt index dc64a4a..ddb8a4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,4 +124,9 @@ install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION lib/cmake/${PROJECT_NAME}) -add_subdirectory(test EXCLUDE_FROM_ALL) \ No newline at end of file +if(${ENABLE_TESTS}) + enable_testing() + add_subdirectory(test) +else() + add_subdirectory(test EXCLUDE_FROM_ALL) +endif() \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 21b284f..0000000 --- a/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM ubuntu:22.04 - - -# install build tools -RUN apt-get update -RUN apt-get -y install cmake && apt-get -y install build-essential -RUN apt-get -y install git - -# install dependencies -RUN apt-get -y install libboost-all-dev -RUN apt-get -y install libssl-dev -RUN apt-get -y install libwebsocketpp-dev - -# create slavehost user -RUN useradd -ms /bin/bash slavehost -RUN usermod -aG sudo slavehost - -WORKDIR /home/slavehost - -# install plog dependency -RUN git clone https://github.com/SergiusTheBest/plog.git -WORKDIR /home/slavehost/plog -RUN mkdir build -WORKDIR /home/slavehost/plog/build -RUN cmake .. -RUN make -RUN make install - -# return to user dir -WORKDIR /home/slavehost - -# install nlohmann json -RUN git clone https://github.com/nlohmann/json.git -WORKDIR /home/slavehost/json -RUN mkdir build -WORKDIR /home/slavehost/json/build -RUN cmake .. -RUN make -RUN make install - -# return to user dir -WORKDIR /home/slavehost - -# change user to slavehost -USER slavehost - -# create workspace dir -RUN mkdir -p workspace/nostrsdk - -# Add source files to docker container -COPY include /home/slavehost/workspace/nostrsdk/include -COPY src /home/slavehost/workspace/nostrsdk/src -COPY test /home/slavehost/workspace/nostrsdk/test -COPY .gitignore /home/slavehost/workspace/nostrsdk/.gitignore -COPY CMakeLists.txt /home/slavehost/workspace/nostrsdk/CMakeLists.txt - -WORKDIR /home/slavehost/workspace/nostrsdk/ - -RUN mkdir build -WORKDIR /home/slavehost/workspace/nostrsdk/build -RUN cmake .. -RUN make - -WORKDIR /home/slavehost diff --git a/README.md b/README.md index b54d0d0..e086ce5 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ To build the SDK on Linux, run the following commands from the project root: ```bash export VCPKG_ROOT=/path/to/vcpkg/installation -cmake --preset=linux # configuration step +cmake --preset=linux -DENABLE_TESTS=1 # configuration step with tests enabled cmake --build build/linux # compilation or build step ``` @@ -42,13 +42,4 @@ To run unit tests, use the following command: ```bash ctest --preset linux -``` - -### Build using Docker -1. Build docker image: - docker build -t nostr-ubuntu -f Dockerfile - -2. Run docker image - docker run -it --privileged -u slavehost --hostname slavehost nostr-ubuntu bash - - +``` \ No newline at end of file