updated build system
All checks were successful
Blockstorage/repertory_msys2/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head This commit looks good

This commit is contained in:
2025-12-14 19:52:46 -06:00
parent 97d557a1a9
commit f0396fccd5
13 changed files with 74 additions and 42 deletions

View File

@@ -6,6 +6,7 @@
* \#21 [unit test] Complete WinFSP unit tests * \#21 [unit test] Complete WinFSP unit tests
* \#65 [bug] Mount state is not being removed after unmount on Windows * \#65 [bug] Mount state is not being removed after unmount on Windows
* \#66 [bug] UI fails to install plist if LaunchAgents directory does not exist
### Changes from v2.0.7-release ### Changes from v2.0.7-release

View File

@@ -139,8 +139,6 @@ if(PROJECT_BUILD)
find_package(ICU REQUIRED COMPONENTS data i18n io uc) find_package(ICU REQUIRED COMPONENTS data i18n io uc)
else() else()
message(STATUS "-=[CMake Settings]=-") message(STATUS "-=[CMake Settings]=-")
message(STATUS " C standard: ${CMAKE_C_STANDARD}")
message(STATUS " C++ standard: ${CMAKE_CXX_STANDARD}")
message(STATUS " CPU architecture: ${PROJECT_MARCH}") message(STATUS " CPU architecture: ${PROJECT_MARCH}")
if(PROJECT_ENABLE_FUSE) if(PROJECT_ENABLE_FUSE)
message(STATUS " FUSE version: ${PROJECT_FUSE}") message(STATUS " FUSE version: ${PROJECT_FUSE}")
@@ -157,6 +155,8 @@ endif()
DEPENDS ${PROJECT_DEPENDENCIES} DEPENDS ${PROJECT_DEPENDENCIES}
COMMAND cd build && cmake COMMAND cd build && cmake
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
-DCMAKE_C_STANDARD=${CMAKE_C_STANDARD}
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR} -DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR}

View File

@@ -94,29 +94,28 @@ if(PROJECT_ENABLE_BOOST)
set(BOOST_LINK "static,shared") set(BOOST_LINK "static,shared")
endif() endif()
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_CXX_STANDARD 20)
else()
set(BOOST_CXX_STANDARD ${CMAKE_CXX_STANDARD})
endif()
set(BOOST_BUILD_ARGS set(BOOST_BUILD_ARGS
--openssldir=$ENV{OPENSSL_ROOT_DIR} --openssldir=$ENV{OPENSSL_ROOT_DIR}
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT} --prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
address-model=64 address-model=64
architecture=${BOOST_ARCH} architecture=${BOOST_ARCH}
cxxstd=20
cxxstd-dialect=gnu cxxstd-dialect=gnu
cxxflags=-std=gnu++${CMAKE_CXX_STANDARD} cxxflags=-std=gnu++${BOOST_CXX_STANDARD}
cxxstd=${CMAKE_CXX_STANDARD} cxxstd=${BOOST_CXX_STANDARD}
define=BOOST_ASIO_HAS_STD_STRING_VIEW define=BOOST_ASIO_HAS_STD_STRING_VIEW
define=BOOST_SYSTEM_NO_DEPRECATED define=BOOST_SYSTEM_NO_DEPRECATED
link=${BOOST_LINK} link=${BOOST_LINK}
linkflags=-std=gnu++${CMAKE_CXX_STANDARD} linkflags=-std=gnu++${BOOST_CXX_STANDARD}
threading=multi threading=multi
variant=${BOOST_BUILD_TYPE_LOWER} variant=${BOOST_BUILD_TYPE_LOWER}
) )
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_URL_HASH SHA256=${BOOST2_HASH})
else()
set(BOOST_URL_HASH SHA256=${BOOST_HASH})
endif()
ExternalProject_Add(boost_project ExternalProject_Add(boost_project
PREFIX external PREFIX external
URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz

View File

@@ -21,7 +21,7 @@ if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
endif() endif()
else() else()
if (PROJECT_IS_DARWIN) if (PROJECT_IS_DARWIN)
find_library(OSXFUSE NO_CACHE NAMES OSXFUSE) find_library(OSXFUSE NO_CACHE NAMES MACFUSE OSXFUSE)
if (NOT OSXFUSE) if (NOT OSXFUSE)
message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)") message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)")
endif () endif ()

View File

@@ -4,7 +4,7 @@ set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

View File

@@ -1,11 +1,12 @@
#comment #comment
FROM arm64v8/alpine:3.22.2 FROM arm64v8/alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com> MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash CMD bash
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
@@ -80,5 +81,5 @@ RUN apk add \
zstd-static \ zstd-static \
xz-static xz-static
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16 RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16 RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16

View File

@@ -1,11 +1,12 @@
#comment #comment
FROM alpine:3.22.2 FROM alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com> MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash CMD bash
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
@@ -80,5 +81,5 @@ RUN apk add \
zstd-static \ zstd-static \
xz-static xz-static
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16 RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16 RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16

View File

@@ -1,3 +1,4 @@
#comment
FROM debian:latest FROM debian:latest
ARG UID=0 ARG UID=0

View File

@@ -1,16 +1,17 @@
#comment #comment
FROM alpine:3.22.2 FROM alpine:3.23
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
binutils \ binutils \
bison \ bison \
bzip2 \ bzip2 \
clang17-extra-tools \ clang21-extra-tools \
cmake \ cmake \
curl \ curl \
file \ file \
@@ -63,7 +64,10 @@ ENV MY_MINGW_PREFIX=${MINGW_PREFIX}
ARG NUM_JOBS=2 ARG NUM_JOBS=2
ENV MY_NUM_JOBS=${NUM_JOBS} ENV MY_NUM_JOBS=${NUM_JOBS}
ARG CXX_STANDARD=20 ARG C_STANDARD=11
ENV MY_C_STANDARD=${C_STANDARD}
ARG CXX_STANDARD=23
ENV MY_CXX_STANDARD=${CXX_STANDARD} ENV MY_CXX_STANDARD=${CXX_STANDARD}
ARG TOOLCHAIN_FILE_CMAKE=/cmake_toolchain.cmake ARG TOOLCHAIN_FILE_CMAKE=/cmake_toolchain.cmake
@@ -259,6 +263,7 @@ RUN cd /3rd_party/mingw64 && sha256sum -c ./pkg-config-${MY_PKG_CONFIG_VERSION}.
&& tar xvzf /3rd_party/mingw64/pkg-config-${MY_PKG_CONFIG_VERSION}.tar.gz \ && tar xvzf /3rd_party/mingw64/pkg-config-${MY_PKG_CONFIG_VERSION}.tar.gz \
&& cd pkg-config-${MY_PKG_CONFIG_VERSION} \ && cd pkg-config-${MY_PKG_CONFIG_VERSION} \
&& ./configure \ && ./configure \
CFLAGS='-std=gnu11' \
--disable-nls \ --disable-nls \
--disable-shared \ --disable-shared \
--prefix=/usr/local \ --prefix=/usr/local \
@@ -273,7 +278,7 @@ RUN python3 -m pip install --break-system-packages -U mako
RUN python3 -m pip install --break-system-packages -U meson RUN python3 -m pip install --break-system-packages -U meson
RUN python3 -m pip install --break-system-packages -U packaging RUN python3 -m pip install --break-system-packages -U packaging
ENV CXXFLAGS="-std=gnu++20" ENV CXXFLAGS="-std=gnu++${MY_CXX_STANDARD}"
ENV LDFLAGS="-L${MY_MINGW_DIR}/lib -L${MY_MINGW_DIR}/lib64" ENV LDFLAGS="-L${MY_MINGW_DIR}/lib -L${MY_MINGW_DIR}/lib64"
ENV PATH="${MY_MINGW_DIR}/bin:/usr/local/bin:${PATH}" ENV PATH="${MY_MINGW_DIR}/bin:/usr/local/bin:${PATH}"
ENV PKG_CONFIG_PATH="${MY_MINGW_DIR}/lib/pkgconfig:${MY_MINGW_DIR}/lib64/pkgconfig" ENV PKG_CONFIG_PATH="${MY_MINGW_DIR}/lib/pkgconfig:${MY_MINGW_DIR}/lib64/pkgconfig"
@@ -490,7 +495,7 @@ RUN if [ -f "/3rd_party/boost_${MY_BOOST2_MAJOR_VERSION}_${MY_BOOST2_MINOR_VERSI
&& ./bootstrap.sh \ && ./bootstrap.sh \
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread \ --with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread \
address-model=64 \ address-model=64 \
cxxstd=${MY_CXX_STANDARD} \ cxxstd=20 \
cxxstd-dialect=gnu \ cxxstd-dialect=gnu \
architecture=x86 \ architecture=x86 \
link=static,shared \ link=static,shared \
@@ -504,7 +509,7 @@ RUN if [ -f "/3rd_party/boost_${MY_BOOST2_MAJOR_VERSION}_${MY_BOOST2_MINOR_VERSI
--prefix=${MY_MINGW_DIR} \ --prefix=${MY_MINGW_DIR} \
-j${MY_NUM_JOBS} \ -j${MY_NUM_JOBS} \
address-model=64 \ address-model=64 \
cxxstd=${MY_CXX_STANDARD} \ cxxstd=20 \
cxxstd-dialect=gnu \ cxxstd-dialect=gnu \
architecture=x86 \ architecture=x86 \
link=static,shared \ link=static,shared \
@@ -837,6 +842,7 @@ RUN if [ -f "/3rd_party/libevent-${MY_LIBEVENT_VERSION}-stable.tar.gz" ]; then \
-DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \ -DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \
-DCMAKE_C_FLAGS="-include winsock2.h -include ws2tcpip.h -include iphlpapi.h" \ -DCMAKE_C_FLAGS="-include winsock2.h -include ws2tcpip.h -include iphlpapi.h" \
-DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \ -DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \ -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \
-DEVENT__DISABLE_OPENSSL=ON \ -DEVENT__DISABLE_OPENSSL=ON \
-DEVENT__DISABLE_SAMPLES=ON \ -DEVENT__DISABLE_SAMPLES=ON \

View File

@@ -25,6 +25,8 @@ cp -f ${PROJECT_SOURCE_DIR}/docker/${PROJECT_BUILD_ARCH}/${DOCKER_NAME} Dockerfi
if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ]; then if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ]; then
docker build ${APP_VERSION_BUILD_ARGS} \ docker build ${APP_VERSION_BUILD_ARGS} \
--platform linux/arm64 \ --platform linux/arm64 \
--build-arg C_STANDARD=${PROJECT_C_STANDARD} \
--build-arg CXX_STANDARD=${PROJECT_CXX_STANDARD} \
--build-arg NUM_JOBS=${NUM_JOBS} \ --build-arg NUM_JOBS=${NUM_JOBS} \
--build-arg UID=$(id -u) \ --build-arg UID=$(id -u) \
--build-arg GID=$(id -g) \ --build-arg GID=$(id -g) \
@@ -32,6 +34,8 @@ if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ]; then
-t ${DOCKER_TAG} . || exit 1 -t ${DOCKER_TAG} . || exit 1
else else
docker build ${APP_VERSION_BUILD_ARGS} \ docker build ${APP_VERSION_BUILD_ARGS} \
--build-arg C_STANDARD=${PROJECT_C_STANDARD} \
--build-arg CXX_STANDARD=${PROJECT_CXX_STANDARD} \
--build-arg NUM_JOBS=${NUM_JOBS} \ --build-arg NUM_JOBS=${NUM_JOBS} \
--build-arg UID=$(id -u) \ --build-arg UID=$(id -u) \
--build-arg GID=$(id -g) \ --build-arg GID=$(id -g) \

View File

@@ -7,6 +7,8 @@ PROJECT_IS_MINGW=$4
PROJECT_IS_MINGW_UNIX=$5 PROJECT_IS_MINGW_UNIX=$5
DISABLE_CREATE_DIRS=$6 DISABLE_CREATE_DIRS=$6
PROJECT_CXX_STANDARD=23
PROJECT_C_STANDARD=11
PROJECT_FLUTTER_BASE_HREF="/" PROJECT_FLUTTER_BASE_HREF="/"
if [ "${PROJECT_IS_MINGW}" != "1" ]; then if [ "${PROJECT_IS_MINGW}" != "1" ]; then
@@ -46,7 +48,7 @@ for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
done done
PROJECT_APP_LIST=() PROJECT_APP_LIST=()
PROJECT_CMAKE_OPTS="" PROJECT_CMAKE_OPTS="-DCMAKE_C_STANDARD=${PROJECT_C_STANDARD} -DCMAKE_CXX_STANDARD=${PROJECT_CXX_STANDARD}"
PROJECT_ENABLE_V2_ERRORS=OFF PROJECT_ENABLE_V2_ERRORS=OFF
PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF
PROJECT_IS_ALPINE=0 PROJECT_IS_ALPINE=0
@@ -340,6 +342,8 @@ export PROJECT_CMAKE_BUILD_TYPE_LOWER
export PROJECT_CMAKE_OPTS export PROJECT_CMAKE_OPTS
export PROJECT_COMPANY_NAME export PROJECT_COMPANY_NAME
export PROJECT_COPYRIGHT export PROJECT_COPYRIGHT
export PROJECT_CXX_STANDARD
export PROJECT_C_STANDARD
export PROJECT_DESC export PROJECT_DESC
export PROJECT_DIST_DIR export PROJECT_DIST_DIR
export PROJECT_ENABLE_V2_ERRORS export PROJECT_ENABLE_V2_ERRORS
@@ -391,6 +395,8 @@ echo " Build arch2: ${PROJECT_BUILD_ARCH2}"
echo " Build clean: ${PROJECT_BUILD_CLEAN}" echo " Build clean: ${PROJECT_BUILD_CLEAN}"
echo " Build dir: ${PROJECT_BUILD_DIR}" echo " Build dir: ${PROJECT_BUILD_DIR}"
echo " Build shared libraries: ${PROJECT_BUILD_SHARED_LIBS}" echo " Build shared libraries: ${PROJECT_BUILD_SHARED_LIBS}"
echo " C std: ${PROJECT_C_STANDARD}"
echo " CXX std: ${PROJECT_CXX_STANDARD}"
echo " CMake options: -G\"Unix Makefiles\" -DPROJECT_COMPANY_NAME=\"${PROJECT_COMPANY_NAME}\" -DPROJECT_COPYRIGHT=\"${PROJECT_COPYRIGHT}\" -DPROJECT_DESC=\"${PROJECT_DESC}\" -DPROJECT_URL=\"${PROJECT_URL}\" ${PROJECT_CMAKE_OPTS} " echo " CMake options: -G\"Unix Makefiles\" -DPROJECT_COMPANY_NAME=\"${PROJECT_COMPANY_NAME}\" -DPROJECT_COPYRIGHT=\"${PROJECT_COPYRIGHT}\" -DPROJECT_DESC=\"${PROJECT_DESC}\" -DPROJECT_URL=\"${PROJECT_URL}\" ${PROJECT_CMAKE_OPTS} "
echo " CMake toolchain file: ${PROJECT_TOOLCHAIN_FILE_CMAKE}" echo " CMake toolchain file: ${PROJECT_TOOLCHAIN_FILE_CMAKE}"
echo " Cmake Build type: ${PROJECT_CMAKE_BUILD_TYPE}" echo " Cmake Build type: ${PROJECT_CMAKE_BUILD_TYPE}"

View File

@@ -52,9 +52,8 @@ PROJECT_DOWNLOADS[EXPAT]="https://github.com/libexpat/libexpat/archive/refs/tags
PROJECT_DOWNLOADS[GCC]="https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-${PROJECT_VERSIONS[GCC]}/gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;3rd_party/mingw64" PROJECT_DOWNLOADS[GCC]="https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-${PROJECT_VERSIONS[GCC]}/gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;3rd_party/mingw64"
PROJECT_DOWNLOADS[GTEST]="https://github.com/google/googletest/archive/refs/tags/v${PROJECT_VERSIONS[GTEST]}.tar.gz;googletest-${PROJECT_VERSIONS[GTEST]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[GTEST]="https://github.com/google/googletest/archive/refs/tags/v${PROJECT_VERSIONS[GTEST]}.tar.gz;googletest-${PROJECT_VERSIONS[GTEST]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[ICU]="https://github.com/unicode-org/icu/archive/refs/tags/release-${PROJECT_VERSIONS[ICU]}.tar.gz;icu-release-${PROJECT_VERSIONS[ICU]}.tar.gz;3rd_party/mingw64" PROJECT_DOWNLOADS[ICU]="https://github.com/unicode-org/icu/archive/refs/tags/release-${PROJECT_VERSIONS[ICU]}.tar.gz;icu-release-${PROJECT_VERSIONS[ICU]}.tar.gz;3rd_party/mingw64"
PROJECT_DOWNLOADS[JSON]="https://github.com/nlohmann/json/archive/refs/tags/v${PROJECT_VERSIONS[JSON]}.tar.gz;json-${PROJECT_VERSIONS[JSON]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[INNOSETUP]="https://files.jrsoftware.org/is/6/innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;3rd_party/mingw64" PROJECT_DOWNLOADS[INNOSETUP]="https://files.jrsoftware.org/is/6/innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;3rd_party/mingw64"
PROJECT_DOWNLOADS[WINFSP]="https://github.com/winfsp/winfsp/releases/download/v${PROJECT_VERSIONS[WINFSP2]}/winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;3rd_party" PROJECT_DOWNLOADS[JSON]="https://github.com/nlohmann/json/archive/refs/tags/v${PROJECT_VERSIONS[JSON]}.tar.gz;json-${PROJECT_VERSIONS[JSON]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[LIBSODIUM]="https://github.com/jedisct1/libsodium/archive/refs/tags/${PROJECT_VERSIONS[LIBSODIUM]}-RELEASE.tar.gz;libsodium-${PROJECT_VERSIONS[LIBSODIUM]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[LIBSODIUM]="https://github.com/jedisct1/libsodium/archive/refs/tags/${PROJECT_VERSIONS[LIBSODIUM]}-RELEASE.tar.gz;libsodium-${PROJECT_VERSIONS[LIBSODIUM]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[MINGW]="https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;;mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;3rd_party/mingw64" PROJECT_DOWNLOADS[MINGW]="https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;;mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;3rd_party/mingw64"
PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party"
@@ -64,5 +63,8 @@ PROJECT_DOWNLOADS[ROCKSDB]="https://github.com/facebook/rocksdb/archive/refs/tag
PROJECT_DOWNLOADS[SPDLOG]="https://github.com/gabime/spdlog/archive/refs/tags/v${PROJECT_VERSIONS[SPDLOG]}.tar.gz;spdlog-${PROJECT_VERSIONS[SPDLOG]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[SPDLOG]="https://github.com/gabime/spdlog/archive/refs/tags/v${PROJECT_VERSIONS[SPDLOG]}.tar.gz;spdlog-${PROJECT_VERSIONS[SPDLOG]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[SQLITE]="https://www.sqlite.org/2025/sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;3rd_party" PROJECT_DOWNLOADS[SQLITE]="https://www.sqlite.org/2025/sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;3rd_party"
PROJECT_DOWNLOADS[STDUUID]="https://github.com/mariusbancila/stduuid/archive/refs/tags/v${PROJECT_VERSIONS[STDUUID]}.tar.gz;stduuid-${PROJECT_VERSIONS[STDUUID]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[STDUUID]="https://github.com/mariusbancila/stduuid/archive/refs/tags/v${PROJECT_VERSIONS[STDUUID]}.tar.gz;stduuid-${PROJECT_VERSIONS[STDUUID]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[WINFSP]="https://github.com/winfsp/winfsp/releases/download/v${PROJECT_VERSIONS[WINFSP2]}/winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;3rd_party"
PROJECT_DOWNLOADS[ZLIB]="https://github.com/madler/zlib/archive/refs/tags/v${PROJECT_VERSIONS[ZLIB]}.tar.gz;zlib-${PROJECT_VERSIONS[ZLIB]}.tar.gz;3rd_party/mingw64" PROJECT_DOWNLOADS[ZLIB]="https://github.com/madler/zlib/archive/refs/tags/v${PROJECT_VERSIONS[ZLIB]}.tar.gz;zlib-${PROJECT_VERSIONS[ZLIB]}.tar.gz;3rd_party/mingw64"
export PROJECT_DOWNLOADS export PROJECT_DOWNLOADS
export VLC_WIN64_DOWNLOAD

View File

@@ -311,11 +311,24 @@ auto use_getpwuid(uid_t uid, passwd_callback_t callback) -> result {
#if defined(PROJECT_ENABLE_PUGIXML) #if defined(PROJECT_ENABLE_PUGIXML)
auto generate_launchd_plist(const plist_cfg &cfg, bool overwrite_existing) auto generate_launchd_plist(const plist_cfg &cfg, bool overwrite_existing)
-> bool { -> bool {
REPERTORY_USES_FUNCTION_NAME();
auto file = utils::path::combine(cfg.plist_path, {cfg.label + ".plist"}); auto file = utils::path::combine(cfg.plist_path, {cfg.label + ".plist"});
if (utils::file::file{file}.exists() && not overwrite_existing) { if (utils::file::file{file}.exists() && not overwrite_existing) {
return true; return true;
} }
auto parent_directory = utils::path::get_parent_path(file);
if (not utils::file::directory{parent_directory}.create_directory()) {
utils::error::handle_error(function_name,
utils::error::create_error_message({
"failed to create plist parent directory",
parent_directory,
std::to_string(errno),
}));
return false;
}
pugi::xml_document doc; pugi::xml_document doc;
auto decl = doc.append_child(pugi::node_declaration); auto decl = doc.append_child(pugi::node_declaration);
decl.append_attribute("version") = "1.0"; decl.append_attribute("version") = "1.0";
@@ -370,26 +383,24 @@ auto generate_launchd_plist(const plist_cfg &cfg, bool overwrite_existing)
#if defined(PROJECT_ENABLE_SPDLOG) || defined(PROJECT_ENABLE_FMT) #if defined(PROJECT_ENABLE_SPDLOG) || defined(PROJECT_ENABLE_FMT)
auto launchctl_command(std::string_view label, launchctl_type type) -> int { auto launchctl_command(std::string_view label, launchctl_type type) -> int {
auto launch_agents_dir = utils::path::combine("~", {
"Library",
"LaunchAgents",
});
switch (type) { switch (type) {
case launchctl_type::bootout: case launchctl_type::bootout:
return system( return system(
fmt::format("launchctl bootout gui/{} '{}' 1>/dev/null 2>&1", getuid(), fmt::format("launchctl bootout gui/{} '{}' 1>/dev/null 2>&1", getuid(),
utils::path::combine("~", utils::path::combine(launch_agents_dir,
{ {fmt::format("{}.plist", label)}))
"/Library/LaunchAgents",
fmt::format("{}.plist", label),
}))
.c_str()); .c_str());
case launchctl_type::bootstrap: case launchctl_type::bootstrap:
return system( return system(
fmt::format("launchctl bootstrap gui/{} '{}' 1>/dev/null 2>&1", fmt::format("launchctl bootstrap gui/{} '{}' 1>/dev/null 2>&1",
getuid(), getuid(),
utils::path::combine("~", utils::path::combine(launch_agents_dir,
{ {fmt::format("{}.plist", label)}))
"/Library/LaunchAgents",
fmt::format("{}.plist", label),
}))
.c_str()); .c_str());
case launchctl_type::kickstart: case launchctl_type::kickstart: