35 Commits

Author SHA1 Message Date
sgraves 8d1ae6ca6e Merge branch 'v2.1.0-rc.2-develop' of ssh://git.fifthgrid.com:3022/BlockStorage/repertory into v2.1.0-rc.2-develop
BlockStorage/repertory/pipeline/head This commit looks good
Blockstorage/repertory_msys2/pipeline/head There was a failure building this commit
2026-02-06 17:25:01 -06:00
sgraves d93c94d845 updated build system
BlockStorage/repertory/pipeline/head This commit looks good
2026-02-06 17:12:48 -06:00
sgraves 54447e4105 updated copyright 2026-02-06 17:11:38 -06:00
sgraves d11cfc0a5e Merge branch 'v2.1.0-rc.2-develop' of ssh://git.fifthgrid.com:3022/BlockStorage/repertory into v2.1.0-rc.2-develop 2026-01-08 21:16:34 -06:00
sgraves 28ef84a69b update 2026-01-08 21:12:41 -06:00
sgraves 70cc850f10 updated build system
Blockstorage/repertory_msys2/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head This commit looks good
2025-12-16 10:47:25 -06:00
sgraves f0396fccd5 updated build system
Blockstorage/repertory_msys2/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head This commit looks good
2025-12-14 19:52:46 -06:00
sgraves db80b958fd updated build system 2025-12-13 21:35:08 -06:00
sgraves ba37f06346 updated build system 2025-12-13 19:17:01 -06:00
sgraves 97d557a1a9 fix icon location
BlockStorage/repertory/pipeline/head This commit looks good
Blockstorage/repertory_msys2/pipeline/head This commit looks good
2025-10-21 14:21:46 -05:00
sgraves a021d8cbd4 [bug] Mount state is not being removed after unmount on Windows #65
BlockStorage/repertory/pipeline/head This commit looks good
2025-10-21 13:18:45 -05:00
sgraves 050f004716 [bug] Mount state is not being removed after unmount on Windows #65 2025-10-21 13:16:49 -05:00
sgraves ea9a25816d updated CHANGELOG.md 2025-10-21 12:35:19 -05:00
sgraves eaccfcb8fd [bug] Mount state is not being removed after unmount on Windows #65 2025-10-21 12:29:25 -05:00
sgraves 2af0ab4641 Merge branch 'v2.1.0-rc.2-develop' of ssh://git.fifthgrid.com:3022/BlockStorage/repertory into v2.1.0-rc.2-develop
Blockstorage/repertory_msys2/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head This commit looks good
BlockStorage/repertory_mac/pipeline/head This commit looks good
2025-10-19 13:53:35 -05:00
sgraves e5169445ae updated build system 2025-10-19 13:53:06 -05:00
sgraves 0471faab2b updated build system
BlockStorage/repertory_mac/pipeline/head This commit looks good
Blockstorage/repertory_msys2/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head This commit looks good
2025-10-18 22:36:51 -05:00
sgraves d632e46dc3 updated README.md
Blockstorage/repertory/pipeline/head This commit looks good
BlockStorage/repertory_mac/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2025-10-18 08:56:32 -05:00
sgraves bbef6d1898 updated README.md 2025-10-18 08:39:42 -05:00
sgraves 29c31f7f3e updated README.md 2025-10-18 08:19:49 -05:00
sgraves 3b139d0b55 updated README.md 2025-10-18 08:19:18 -05:00
sgraves 164abb843d updated README.md 2025-10-18 08:16:28 -05:00
sgraves 4de61970f6 updated README.md 2025-10-18 08:11:52 -05:00
sgraves 7d10621c0c updated README.md 2025-10-18 08:11:03 -05:00
sgraves 20e21c0a69 updated version 2025-10-16 17:29:47 -05:00
sgraves f198cd49ee v2.1.0-rc (#63)
Reviewed-on: #63
2025-10-16 17:23:36 -05:00
sgraves 5ab7301cbe v2.0.7-release (#56)
BlockStorage/repertory/pipeline/head This commit looks good
Reviewed-on: #56
2025-07-31 06:58:43 -05:00
sgraves 87d336141c v2.0.6-release (#50)
BlockStorage/repertory/pipeline/head This commit looks good
Reviewed-on: #50
2025-07-25 07:51:03 -05:00
sgraves 62555e6125 v2.0.5-rc (#41)
BlockStorage/repertory/pipeline/head This commit looks good
Reviewed-on: #41
2025-03-26 07:02:38 -05:00
sgraves 24418ba03d v2.0.4-rc (#37)
BlockStorage/repertory/pipeline/head This commit looks good
# Changelog

## v2.0.4-rc

### BREAKING CHANGES

* `renterd` v2.0.0+ is now required. Prior versions will fail to mount.

### Issues

* \#35 [bug] Low frequency check is set to '0' instead of 1 hour by default
* \#36 [bug] Max cache size bytes is set to '0' by default

### Changes from v2.0.3-rc

* Added Sia API version check prior to mounting
* Added back `-cv` (check version) CLI option
* Continue documentation updates
* Fixed setting `ApiAuth` via `set_value_by_name`
* Fixed setting `HostConfig.ApiUser` via `set_value_by_name`
* Fixed setting `HostConfig.Path` via `set_value_by_name`
* Fixed setting `HostConfig.Protocol` via `set_value_by_name`
* Improved ring buffer read-ahead
* Integrated `renterd` version 2.0.0
* Prefer using local cache file when opening files
* Refactored `app_config` unit tests
* Refactored polling to be more accurate on scheduling tasks

Reviewed-on: #37
2025-02-22 09:48:00 -06:00
sgraves fa439c634f v2.0.3-rc (#32)
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
# Changelog

## v2.0.3-rc

### Issues

* \#28 \[bug\] Address slow directory responses in S3 mounts for deeply nested directories
* \#29 \[bug\] S3 error responses are not being logged
* \#30 \[bug\] Sia provider error responses are not logged
* \#31 \[bug\] S3 provider should limit max key size to 1024

### Changes from v2.0.2-rc

* Always use direct for read-only providers
* Fixed externally removed files not being processed during cleanup
* Fixed http headers not being added for requests
* Fixed incorrect `stat` values for remote mounts
* Fixed invalid directory nullptr error on remote mounts
* Fixed memory leak in event system
* Refactored application shutdown
* Refactored event system
* Updated build system to Alpine 3.21.0
* Updated build system to MinGW-w64 12.0.0
* Updated copyright to 2018-2025

Reviewed-on: #32
2025-02-11 17:26:24 -06:00
sgraves 8dd46b8ad8 v2.0.2-rc (#27)
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
## v2.0.2-rc

### BREAKING CHANGES

* Refactored `config.json` - will need to verify configuration settings prior to mounting

### Issues

* \#12 \[Unit Test\] Complete all providers unit tests
* \#14 \[Unit Test\] SQLite mini-ORM unit tests and cleanup
* \#16 Add support for bucket name in Sia provider
* \#17 Update to common c++ build system
  * A single 64-bit Linux Jenkins server is used to build all Linux and Windows versions
  * All dependency sources are now included
  * MSVC is no longer supported
  * MSYS2 is required for building Windows binaries on Windows
  * OS X support is temporarily disabled
* \#19 \[bug\] Rename file is broken for files that are existing
* \#23 \[bug\] Incorrect file size displayed while upload is pending
* \#24 RocksDB implementations should be transactional
* \#25 Writes should block when maximum cache size is reached
* \#26 Complete ring buffer and direct download support

### Changes from v2.0.1-rc

* Ability to choose between RocksDB and SQLite databases
* Added direct reads and implemented download fallback
* Corrected file times on S3 and Sia providers
* Corrected handling of `chown()` and `chmod()`
* Fixed erroneous download of chunks after resize

Reviewed-on: #27
2024-12-28 15:56:40 -06:00
sgraves 1b8de3b097 v2.0.1-rc (#13)
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
Reviewed-on: #13
2023-12-10 18:11:20 +00:00
sgraves f43c41f88a 2.0.0-rc (#9)
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
### Issues

* \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception
* \#2 Require bucket name for S3 mounts
* \#3 \[bug\] File size is not being updated in S3 mount
* \#4 Upgrade to libfuse-3.x.x
* \#5 Switch to renterd for Sia support
* \#6 Switch to cpp-httplib to further reduce dependencies
* \#7 Remove global_data and calculate used disk space per provider
* \#8 Switch to libcurl for S3 mount support

### Changes from v1.x.x

* Added read-only encrypt provider
  * Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305`
* Added S3 encryption support via `XChaCha20-Poly1305`
* Added replay protection to remote mounts
* Added support base64 writes in remote FUSE
* Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc`
* Removed legacy Sia renter support
* Removed Skynet support
* Fixed multiple remote mount WinFSP API issues on \*NIX servers
* Implemented chunked read and write
  * Writes for non-cached files are performed in chunks of 8Mib
* Removed `repertory-ui` support
* Removed `FreeBSD` support
* Switched to `libsodium` over `CryptoPP`
* Switched to `XChaCha20-Poly1305` for remote mounts
* Updated `GoogleTest` to v1.14.0
* Updated `JSON for Modern C++` to v3.11.2
* Updated `OpenSSL` to v1.1.1w
* Updated `RocksDB` to v8.5.3
* Updated `WinFSP` to 2023
* Updated `boost` to v1.78.0
* Updated `cURL` to v8.3.0
* Updated `zlib` to v1.3
* Use `upload_manager` for all providers
  * Adds a delay to uploads to prevent excessive API calls
  * Supports re-upload after mount restart for incomplete uploads
  * NOTE: Uploads for all providers are full file (no resume support)
    * Multipart upload support is planned for S3

Reviewed-on: #9
2023-10-29 06:55:59 +00:00
sgraves 3ff46723b8 initial commit
BlockStorage/repertory_osx/pipeline/head There was a failure building this commit
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2022-03-05 00:30:50 -06:00
423 changed files with 1542 additions and 1403 deletions
+33
View File
@@ -1,5 +1,19 @@
# Changelog
## v2.1.0-rc.2
### Issues
* \#21 [unit test] Complete WinFSP unit tests
* \#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
* Fixed Windows setup icon location
---
## v2.1.0-rc
### BREAKING CHANGES
@@ -9,6 +23,7 @@
* Remote mounts must be upgraded to v2.1.0+ to support new authentication scheme
* Protocol handshake added for DoS protection
<!-- markdownlint-disable-next-line -->
### Issues
* \#12 [unit test] Complete all providers unit tests
@@ -37,6 +52,8 @@
* Enhanced remote mount client thread mapping
* Threads are now mapped 1-1 from client to server instead of being tied to a fixed-size thread pool
---
## v2.0.7-release
<!-- markdownlint-disable-next-line -->
@@ -45,6 +62,8 @@
* \#55 [bug] UI is unable to launch `repertory.exe` on Windows when absolute path contains spaces
* \#57 [bug] Directory entries . and .. are incorrectly being reported as files in Linux remote mounts
---
## v2.0.6-release
<!-- markdownlint-disable-next-line -->
@@ -69,6 +88,8 @@
* Migrated to v2 error handling
* Upgraded WinFSP to v2.1 (2025)
---
## v2.0.5-rc
<!-- markdownlint-disable-next-line -->
@@ -86,6 +107,8 @@
* Renamed setting `ApiAuth` to `ApiPassword`
* Require `--name,-na` option for encryption provider
---
## v2.0.4-rc
### BREAKING CHANGES
@@ -113,6 +136,8 @@
* Refactored `app_config` unit tests
* Refactored polling to be more accurate on scheduling tasks
---
## v2.0.3-rc
<!-- markdownlint-disable-next-line -->
@@ -137,6 +162,8 @@
* Updated build system to MinGW-w64 12.0.0
* Updated copyright to 2018-2025
---
## v2.0.2-rc
<!-- markdownlint-disable-next-line -->
@@ -169,6 +196,8 @@
* Corrected handling of `chown()` and `chmod()`
* Fixed erroneous download of chunks after resize
---
## v2.0.1-rc
<!-- markdownlint-disable-next-line -->
@@ -191,6 +220,8 @@
* Updated `curl` to v8.4.0
* Updated `libsodium` to v1.0.19
---
## v2.0.0-rc
<!-- markdownlint-disable-next-line -->
@@ -235,3 +266,5 @@
* Supports re-upload after mount restart for incomplete uploads
* NOTE: Uploads for all providers are full file (no resume support)
* Multipart upload support is planned for S3
---
+11 -3
View File
@@ -120,7 +120,7 @@ if(PROJECT_BUILD)
@ONLY
)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in")
if (PROJECT_IS_MINGW AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in
${PROJECT_DIST_DIR}/../${PROJECT_NAME}.iss
@@ -128,11 +128,17 @@ if(PROJECT_BUILD)
)
endif()
if (PROJECT_IS_DARWIN AND EXISTS "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist.in")
configure_file(
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist.in
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist
@ONLY
)
endif()
find_package(ICU REQUIRED COMPONENTS data i18n io uc)
else()
message(STATUS "-=[CMake Settings]=-")
message(STATUS " C standard: ${CMAKE_C_STANDARD}")
message(STATUS " C++ standard: ${CMAKE_CXX_STANDARD}")
message(STATUS " CPU architecture: ${PROJECT_MARCH}")
if(PROJECT_ENABLE_FUSE)
message(STATUS " FUSE version: ${PROJECT_FUSE}")
@@ -149,6 +155,8 @@ endif()
DEPENDS ${PROJECT_DEPENDENCIES}
COMMAND cd build && cmake
${CMAKE_CURRENT_SOURCE_DIR}
-DCMAKE_C_STANDARD=${CMAKE_C_STANDARD}
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR}
+818 -793
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -48,6 +48,10 @@ list(APPEND PROJECT_CXXFLAGS_LIST
-Wunused
)
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM AND PROJECT_IS_DARWIN)
list(APPEND PROJECT_CXXFLAGS_LIST -Wno-enum-constexpr-conversion)
endif()
if (NOT PROJECT_IS_DARWIN)
list(APPEND PROJECT_CXXFLAGS_LIST
-Wduplicated-branches
+36 -10
View File
@@ -1,3 +1,4 @@
# /usr/sbin/softwareupdate --install-rosetta --agree-to-license
if(PROJECT_ENABLE_BOOST)
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_MAJOR_VERSION ${BOOST2_MAJOR_VERSION})
@@ -94,27 +95,52 @@ if(PROJECT_ENABLE_BOOST)
set(BOOST_LINK "static,shared")
endif()
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_CXX_STANDARD 17)
if (PROJECT_IS_DARWIN)
if(PROJECT_IS_ARM64)
set(BOOST_CXX_FLAGS "-arch arm64 -Wno-enum-constexpr-conversion")
set(BOOST_C_FLAGS "-arch arm64")
set(BOOST_LINK_FLAGS "-arch arm64")
else()
set(BOOST_CXX_FLAGS "-arch x86_64 -Wno-enum-constexpr-conversion")
set(BOOST_C_FLAGS "-arch x86_64")
set(BOOST_LINK_FLAGS "-arch x86_64")
endif()
set(BOOST_OPTIONS ${BOOST_OPTIONS} toolset=clang define=BOOST_NO_CXX98_FUNCTION_BASE)
endif()
else()
set(BOOST_CXX_STANDARD ${CMAKE_CXX_STANDARD})
set(BOOST_OPTIONS define=BOOST_ASIO_HAS_STD_STRING_VIEW)
endif()
if (PROJECT_IS_DARWIN)
set(BOOST_CXX_STD_DIALECT iso)
set(BOOST_OPTIONS ${BOOST_OPTIONS} -sICU_PATH=${PROJECT_EXTERNAL_BUILD_ROOT})
else()
set(BOOST_CXX_STD_DIALECT gnu)
endif()
set(BOOST_BUILD_ARGS
--openssldir=$ENV{OPENSSL_ROOT_DIR}
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
address-model=64
architecture=${BOOST_ARCH}
cxxstd=20
cxxstd-dialect=gnu
cxxflags=-std=gnu++${CMAKE_CXX_STANDARD}
cxxstd=${CMAKE_CXX_STANDARD}
define=BOOST_ASIO_HAS_STD_STRING_VIEW
cxxstd=${BOOST_CXX_STANDARD}
define=BOOST_SYSTEM_NO_DEPRECATED
link=${BOOST_LINK}
linkflags=-std=gnu++${CMAKE_CXX_STANDARD}
threading=multi
variant=${BOOST_BUILD_TYPE_LOWER}
${BOOST_OPTIONS}
)
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_URL_HASH SHA256=${BOOST2_HASH})
else()
set(BOOST_URL_HASH SHA256=${BOOST_HASH})
if (BOOST_CXX_FLAGS)
set(BOOST_BUILD_ARGS
${BOOST_BUILD_ARGS}
cflags=${BOOST_C_FLAGS}
cxxflags=${BOOST_CXX_FLAGS}
linkflags=${BOOST_LINK_FLAGS}
)
endif()
ExternalProject_Add(boost_project
+1 -1
View File
@@ -21,7 +21,7 @@ if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
endif()
else()
if (PROJECT_IS_DARWIN)
find_library(OSXFUSE NO_CACHE NAMES OSXFUSE)
find_library(OSXFUSE NO_CACHE NAMES MACFUSE OSXFUSE)
if (NOT OSXFUSE)
message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)")
endif ()
+1 -1
View File
@@ -4,7 +4,7 @@ set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+7 -7
View File
@@ -1,15 +1,15 @@
set(BINUTILS_VERSION 2.44)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 89)
set(BOOST_PATCH_VERSION 0)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(CPP_HTTPLIB_VERSION 0.26.0)
set(CURL2_VERSION 8_16_0)
set(CURL_VERSION 8.16.0)
set(EXPAT2_VERSION 2_7_1)
set(CURL2_VERSION 8_16_0)
set(EXPAT_VERSION 2.7.1)
set(EXPAT2_VERSION 2_7_1)
set(GCC_VERSION 15.2.0)
set(GTEST_VERSION 1.17.0)
set(ICU_VERSION 76-1)
@@ -22,9 +22,9 @@ set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.15)
set(ROCKSDB_VERSION 10.5.1)
set(SPDLOG_VERSION 1.15.3)
set(SQLITE2_VERSION 3.50.4)
set(SQLITE_VERSION 3500400)
set(SQLITE2_VERSION 3.50.4)
set(STDUUID_VERSION 1.2.3)
set(WINFSP2_VERSION 2.1)
set(WINFSP_VERSION 2.1.25156)
set(WINFSP2_VERSION 2.1)
set(ZLIB_VERSION 1.3.1)
+1 -1
View File
@@ -15,7 +15,7 @@ PROJECT_MAJOR_VERSION=2
PROJECT_MINOR_VERSION=1
PROJECT_REVISION_VERSION=0
PROJECT_RELEASE_NUM=1
PROJECT_RELEASE_ITER=rc
PROJECT_RELEASE_ITER=rc.2
PROJECT_APP_LIST=(${PROJECT_NAME})
+4 -3
View File
@@ -1,11 +1,12 @@
#comment
FROM arm64v8/alpine:3.22.2
FROM arm64v8/alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash
RUN apk update
RUN apk upgrade
RUN apk add \
7zip \
autoconf \
automake \
bash \
@@ -80,5 +81,5 @@ RUN apk add \
zstd-static \
xz-static
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16
RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16
+4 -3
View File
@@ -1,11 +1,12 @@
#comment
FROM alpine:3.22.2
FROM --platform=linux/amd64 alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash
RUN apk update
RUN apk upgrade
RUN apk add \
7zip \
autoconf \
automake \
bash \
@@ -80,5 +81,5 @@ RUN apk add \
zstd-static \
xz-static
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16
RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16
+2 -1
View File
@@ -1,3 +1,4 @@
#comment
FROM debian:latest
ARG UID=0
@@ -10,7 +11,7 @@ RUN apt-get install -y \
fonts-droid-fallback \
gdb \
git \
lib32stdc++6 \
lib32stdc++6-x32-cross \
libglu1-mesa \
libstdc++6 \
python3 \
+14 -8
View File
@@ -1,16 +1,17 @@
#comment
FROM alpine:3.22.2
FROM --platform=linux/amd64 alpine:3.23
RUN apk update
RUN apk upgrade
RUN apk add \
7zip \
autoconf \
automake \
bash \
binutils \
bison \
bzip2 \
clang17-extra-tools \
clang21-extra-tools \
cmake \
curl \
file \
@@ -63,7 +64,10 @@ ENV MY_MINGW_PREFIX=${MINGW_PREFIX}
ARG NUM_JOBS=2
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}
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 \
&& cd pkg-config-${MY_PKG_CONFIG_VERSION} \
&& ./configure \
CFLAGS='-std=gnu11' \
--disable-nls \
--disable-shared \
--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 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 PATH="${MY_MINGW_DIR}/bin:/usr/local/bin:${PATH}"
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 \
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread \
address-model=64 \
cxxstd=${MY_CXX_STANDARD} \
cxxstd=20 \
cxxstd-dialect=gnu \
architecture=x86 \
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} \
-j${MY_NUM_JOBS} \
address-model=64 \
cxxstd=${MY_CXX_STANDARD} \
cxxstd=20 \
cxxstd-dialect=gnu \
architecture=x86 \
link=static,shared \
@@ -547,8 +552,8 @@ RUN if [ -f "/3rd_party/boost_${MY_BOOST_MAJOR_VERSION}_${MY_BOOST_MINOR_VERSION
-j${MY_NUM_JOBS} \
address-model=64 \
architecture=x86 \
cxxstd=${MY_CXX_STANDARD} \
cxxstd-dialect=gnu \
cxxstd=${MY_CXX_STANDARD} \
cxxstd-dialect=gnu \
link=static,shared \
target-os=windows \
threading=multi \
@@ -837,6 +842,7 @@ RUN if [ -f "/3rd_party/libevent-${MY_LIBEVENT_VERSION}-stable.tar.gz" ]; then \
-DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \
-DCMAKE_C_FLAGS="-include winsock2.h -include ws2tcpip.h -include iphlpapi.h" \
-DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \
-DEVENT__DISABLE_OPENSSL=ON \
-DEVENT__DISABLE_SAMPLES=ON \
+1 -9
View File
@@ -1,17 +1,9 @@
set(CMAKE_CXX_FLAGS "-include common.hpp ${CMAKE_CXX_FLAGS}")
if (PROJECT_IS_DARWIN)
configure_file(
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist.in
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist
@ONLY
)
endif()
add_project_library(lib${PROJECT_NAME} "" "" "${PROJECT_ADDITIONAL_SOURCES}")
add_project_executable(${PROJECT_NAME} lib${PROJECT_NAME} lib${PROJECT_NAME})
if (PROJECT_IS_DARWIN)
if (PROJECT_IS_DARWIN AND EXISTS "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist")
set_target_properties(${PROJECT_NAME} PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/Info.plist
)
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Copyright <2018-2026> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

Some files were not shown because too many files have changed in this diff Show More