diff --git a/CMakeLists.txt b/CMakeLists.txt index 17fa1bd..eb77d5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 3.16) cmake_policy(VERSION 3.16...3.27) -project(dtranslatebot VERSION 0.2.0 LANGUAGES CXX) +project(dtranslatebot VERSION 0.3.0 LANGUAGES CXX) include(GNUInstallDirs) # dtranslatebot Source files @@ -62,12 +62,6 @@ set(DTRANSLATEBOT_SOURCES # dtranslatebot Module Path list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -# curl Library -find_package(CURL REQUIRED) -list(APPEND DTRANSLATEBOT_LIBRARIES - CURL::libcurl -) - # Boost C++ Libraries option(WITH_BOOST "Build with Boost C++ Libraries" OFF) if (WITH_BOOST) @@ -80,6 +74,9 @@ if (WITH_BOOST) endif() endif() +# curl Library +find_package(CURL REQUIRED) + # D++ Discord API Library for Bots option(WITH_DPP_STATIC_BUNDLE "Build with DPP Static Bundle" OFF) if (WITH_DPP_STATIC_BUNDLE) @@ -133,7 +130,7 @@ target_compile_definitions(dtranslatebot PRIVATE if (MSVC AND MSVC_VERSION GREATER_EQUAL 1914) target_compile_options(dtranslatebot PRIVATE $<$:/Zc:__cplusplus>) endif() -target_link_libraries(dtranslatebot PRIVATE ${DTRANSLATEBOT_LIBRARIES} ${DPP_LIBRARIES} Threads::Threads) +target_link_libraries(dtranslatebot PRIVATE ${DTRANSLATEBOT_LIBRARIES} ${DPP_LIBRARIES} CURL::libcurl Threads::Threads) target_include_directories(dtranslatebot PRIVATE ${DPP_INCLUDE_DIR}) set_target_properties(dtranslatebot PROPERTIES CXX_STANDARD 17 diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..22ab628 --- /dev/null +++ b/Containerfile @@ -0,0 +1,62 @@ +# Build dtranslatebot +FROM alpine:3.23 AS build +RUN apk add --no-cache \ + clang \ + cmake \ + curl-dev \ + git \ + libc++-dev \ + llvm-libunwind-dev \ + ninja-build \ + openssl-dev \ + zlib-dev +WORKDIR /build +COPY CMakeLists.txt dtranslatebot/ +COPY cmake/ dtranslatebot/cmake/ +COPY src/ dtranslatebot/src/ +ENV CC=clang CXX=clang++ +ENV DPP_VERSION=10.1.4 +RUN git clone https://github.com/brainboxdotcc/DPP.git --branch "v$DPP_VERSION" --depth=1 +RUN cmake \ + -DAVX_TYPE=AVX0 \ + -DBUILD_VOICE_SUPPORT=OFF \ + -DDPP_NO_CORO=ON \ + -DDPP_NO_VCPKG=ON \ + -DRUN_LDCONFIG=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ + -DCMAKE_INSTALL_PREFIX=/opt/dtranslatebot \ + -DCMAKE_MAKE_PROGRAM=/usr/lib/ninja-build/bin/ninja \ + -G Ninja \ + -B DPP-build \ + DPP +RUN cmake --build DPP-build +RUN cmake --install DPP-build --strip +RUN cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ + -DCMAKE_INSTALL_PREFIX=/opt/dtranslatebot \ + -DCMAKE_INSTALL_RPATH=/opt/dtranslatebot/lib \ + -DCMAKE_MAKE_PROGRAM=/usr/lib/ninja-build/bin/ninja \ + -G Ninja \ + -B dtranslatebot-build \ + dtranslatebot +RUN cmake --build dtranslatebot-build +RUN cmake --install dtranslatebot-build --strip + +# Create the dtranslatebot Container +FROM alpine:3.23 +RUN apk add --no-cache \ + libc++ \ + libcrypto3 \ + libcurl \ + libssl3 \ + llvm-libunwind \ + zlib +COPY --from=build /opt/dtranslatebot/bin/dtranslatebot /opt/dtranslatebot/bin/ +COPY --from=build /opt/dtranslatebot/lib/*.so /opt/dtranslatebot/lib/ +COPY --from=build /opt/dtranslatebot/lib/*.so.* /opt/dtranslatebot/lib/ +RUN adduser --disabled-password dtranslatebot +WORKDIR /home/dtranslatebot +USER dtranslatebot +ENTRYPOINT ["/opt/dtranslatebot/bin/dtranslatebot", "--wait-for-translator", "/home/dtranslatebot/dtranslatebot.json"] diff --git a/rpmsrc/dtranslatebot.spec b/rpmsrc/dtranslatebot.spec index 91b971e..c9c5997 100644 --- a/rpmsrc/dtranslatebot.spec +++ b/rpmsrc/dtranslatebot.spec @@ -15,7 +15,7 @@ %endif Name: dtranslatebot -Version: 0.2.0 +Version: 0.3.0 Release: 1%{?dist} Summary: Discord Translation Bot License: BSD-2-Clause