diff --git a/.github/workflows/archlinux.yml b/.github/workflows/archlinux.yml index 056c0b9e..3e5f9c85 100644 --- a/.github/workflows/archlinux.yml +++ b/.github/workflows/archlinux.yml @@ -73,6 +73,7 @@ jobs: -DCMAKE_CXX_STANDARD=23 \ -DJSON_Diagnostics=ON \ -DNUI_FETCH_TRAITS=OFF \ + -DNUI_SFTP_ENABLE_TESTING=ON \ - name: Build run: | @@ -80,6 +81,13 @@ jobs: "${{ env.BUILD_DIR }}" \ --config "${{ env.BUILD_TYPE }}" + - name: Run Tests + run: | + ctest \ + --test-dir "${{ env.BUILD_DIR }}" \ + --build-config "${{ env.BUILD_TYPE }}" \ + --output-on-failure + - name: Run Deploy run: | bash scripts/deploy.sh @@ -99,12 +107,23 @@ jobs: run: | cd "${{ env.BUILD_DIR }}" && tar -czf "nui-sftp-linux-frontend_${{ env.VERSION }}.tar.gz" frontend + - name: Build standalone licenses tarball + run: | + # The cmake build already produced licenses.json (and embedded it + # into the WASM binary). This step only repackages it as a release + # artifact for inspection outside the app. + python scripts/build_licenses_bundle.py \ + --out "${{ env.BUILD_DIR }}/licenses.json" \ + --tarball "${{ env.BUILD_DIR }}/nui-sftp-licenses_${{ env.VERSION }}.tar.gz" \ + --npm-licenses "${{ env.BUILD_DIR }}/generated/licenses/npm-licenses.json" + - name: Upload Artifact to Release if: startsWith(github.ref, 'refs/tags/v') env: GH_TOKEN: ${{ secrets.RELEASEUPLOADPAT }} run: | gh release upload "v${{ env.VERSION_CLEAN }}" "${{ env.BUILD_DIR }}/nui-sftp-linux-frontend_${{ env.VERSION }}.tar.gz" + gh release upload "v${{ env.VERSION_CLEAN }}" "${{ env.BUILD_DIR }}/nui-sftp-licenses_${{ env.VERSION }}.tar.gz" - name: Upload artifacts to MEGA S4 if: startsWith(github.ref, 'refs/tags/v') @@ -112,14 +131,16 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.MEGAS4ACCESS }} AWS_SECRET_ACCESS_KEY: ${{ secrets.MEGAS4KEY }} ENDPOINT: https://s3.eu-central-1.s4.mega.io - FILENAME: "nui-sftp-linux-frontend_${{ env.VERSION }}.tar.gz" - S3_PATH: "s3://nui-sftp-releases/linux-frontend/" run: | - # Check if the file exists on the remote - if aws s3 ls "${{ env.S3_PATH }}${{ env.FILENAME }}" --endpoint-url ${{ env.ENDPOINT }} > /dev/null 2>&1; then - echo "Error: File ${{ env.FILENAME }} already exists in S4. Exiting to prevent overwrite." - exit 0 - fi - - # If it doesnt exist, upload it - aws s3 cp "${{ env.BUILD_DIR }}/${{ env.FILENAME }}" "${{ env.S3_PATH }}" --endpoint-url ${{ env.ENDPOINT }} + upload_if_absent() { + local filename="$1" + local s3_path="$2" + if aws s3 ls "${s3_path}${filename}" --endpoint-url "${ENDPOINT}" > /dev/null 2>&1; then + echo "Skipping: ${filename} already exists in S4." + return 0 + fi + aws s3 cp "${{ env.BUILD_DIR }}/${filename}" "${s3_path}" --endpoint-url "${ENDPOINT}" + } + + upload_if_absent "nui-sftp-linux-frontend_${{ env.VERSION }}.tar.gz" "s3://nui-sftp-releases/linux-frontend/" + upload_if_absent "nui-sftp-licenses_${{ env.VERSION }}.tar.gz" "s3://nui-sftp-releases/licenses/" diff --git a/.gitignore b/.gitignore index 1527e4ee..2ce81ca2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ todo.txt .clangd install .claude -.mcp.json \ No newline at end of file +.mcp.json +licenses/npm-licenses.json \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f1986b6..69fbeb64 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,6 +69,23 @@ add_subdirectory("${CMAKE_SOURCE_DIR}/dependencies/Nui" EXCLUDE_FROM_ALL) add_executable(${PROJECT_NAME}) target_link_libraries(${PROJECT_NAME} PUBLIC core-target) +# Third-party license drift check: fails the build if a CMake-declared dep +# is missing from licenses/third_party.spdx.json (or vice versa) or any +# referenced license text file is empty / still a PLACEHOLDER. +find_package(Python3 COMPONENTS Interpreter QUIET) +if (Python3_Interpreter_FOUND) + add_custom_target(check_licenses + ALL + COMMAND ${Python3_EXECUTABLE} "${CMAKE_SOURCE_DIR}/scripts/check_licenses.py" + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + COMMENT "Checking third-party license manifest" + VERBATIM + ) + add_dependencies(${PROJECT_NAME} check_licenses) +else() + message(WARNING "Python3 interpreter not found; skipping license drift check.") +endif() + # Subdirectories & Dependencies add_library(roar-include-only INTERFACE) target_include_directories(roar-include-only INTERFACE "${CMAKE_CURRENT_LIST_DIR}/dependencies/roar/include") diff --git a/frontend/include/frontend/events/frontend_events.hpp b/frontend/include/frontend/events/frontend_events.hpp index 3193bf6e..5e176a82 100644 --- a/frontend/include/frontend/events/frontend_events.hpp +++ b/frontend/include/frontend/events/frontend_events.hpp @@ -16,6 +16,7 @@ struct FrontendEvents : public AppWideEvents Nui::Observed onNewSession{}; Nui::Observed onLayoutsChanged{false}; Nui::Observed settingsOpen{false}; + Nui::Observed licensesOpen{false}; /// Opens settings and scrolls to the rendered element whose DOM id equals /// this string. Settings walks up from the element to find its /// [data-settings-section] ancestor and activates that section first, so diff --git a/frontend/include/frontend/licenses.hpp b/frontend/include/frontend/licenses.hpp new file mode 100644 index 00000000..ef58a8df --- /dev/null +++ b/frontend/include/frontend/licenses.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +#include + +#include + +class Licenses +{ + public: + explicit Licenses(FrontendEvents* events); + ROAR_PIMPL_SPECIAL_FUNCTIONS(Licenses); + + Nui::ElementRenderer operator()(); + + private: + void loadIfNeeded(); + Nui::ElementRenderer header(); + Nui::ElementRenderer sidebar(); + Nui::ElementRenderer main(); + + struct Implementation; + std::unique_ptr impl_; +}; diff --git a/frontend/source/frontend/CMakeLists.txt b/frontend/source/frontend/CMakeLists.txt index 91aad185..8a865fea 100644 --- a/frontend/source/frontend/CMakeLists.txt +++ b/frontend/source/frontend/CMakeLists.txt @@ -7,6 +7,81 @@ add_npm_install( INSTALL_ARGS ${NUISCP_NPM_INSTALL_ARGS} ) +# ── Embedded license bundle ──────────────────────────────────────────────── +# Generates licenses_data.hpp at build time and embeds the merged C++ + npm +# license bundle as a std::string_view, so the WASM frontend can render the +# Licenses page without any runtime file lookup. + +set(NUI_SFTP_LICENSES_GEN_DIR "${CMAKE_BINARY_DIR}/generated/licenses") +set(NUI_SFTP_NPM_LICENSES_JSON "${NUI_SFTP_LICENSES_GEN_DIR}/npm-licenses.json") +set(NUI_SFTP_LICENSES_JSON "${NUI_SFTP_LICENSES_GEN_DIR}/licenses.json") +set(NUI_SFTP_LICENSES_HEADER "${NUI_SFTP_LICENSES_GEN_DIR}/licenses_data.hpp") + +find_package(Python3 COMPONENTS Interpreter REQUIRED) + +# Glob the per-package license texts so the header re-generates whenever any +# of them is edited. +file(GLOB NUI_SFTP_LICENSE_TEXT_FILES + CONFIGURE_DEPENDS + "${CMAKE_SOURCE_DIR}/licenses/texts/*" +) + +# Step 1: walk the build-tree node_modules and dump per-package license info. +add_custom_command( + OUTPUT "${NUI_SFTP_NPM_LICENSES_JSON}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${NUI_SFTP_LICENSES_GEN_DIR}" + COMMAND "${CMAKE_BINARY_DIR}/node_modules/.bin/license-checker-rseidelsohn" + --start "${CMAKE_BINARY_DIR}" + --production + --json + --out "${NUI_SFTP_NPM_LICENSES_JSON}" + DEPENDS ${PROJECT_NAME}-npm-install + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Collecting npm production licenses" + VERBATIM +) + +# Step 2: merge SPDX + npm output into the embedded C++ header. Re-runs when +# any source license input changes. +add_custom_command( + OUTPUT "${NUI_SFTP_LICENSES_HEADER}" "${NUI_SFTP_LICENSES_JSON}" + COMMAND ${Python3_EXECUTABLE} "${CMAKE_SOURCE_DIR}/scripts/build_licenses_bundle.py" + --out "${NUI_SFTP_LICENSES_JSON}" + --header "${NUI_SFTP_LICENSES_HEADER}" + --npm-licenses "${NUI_SFTP_NPM_LICENSES_JSON}" + --npm-host-root "${CMAKE_BINARY_DIR}" + DEPENDS + "${NUI_SFTP_NPM_LICENSES_JSON}" + "${CMAKE_SOURCE_DIR}/scripts/build_licenses_bundle.py" + "${CMAKE_SOURCE_DIR}/licenses/third_party.spdx.json" + ${NUI_SFTP_LICENSE_TEXT_FILES} + COMMENT "Generating embedded license header" + VERBATIM +) + +add_custom_target(nui-sftp-licenses-data + DEPENDS "${NUI_SFTP_LICENSES_HEADER}" +) + +# Ensure the embedded header exists at configure time, so source files that +# `#include ` resolve before the build-time custom command +# has run. Whatever is here will be overwritten on the first build with the +# full cpp+npm bundle once npm install has produced a node_modules. +if (NOT EXISTS "${NUI_SFTP_LICENSES_HEADER}") + file(MAKE_DIRECTORY "${NUI_SFTP_LICENSES_GEN_DIR}") + execute_process( + COMMAND ${Python3_EXECUTABLE} "${CMAKE_SOURCE_DIR}/scripts/build_licenses_bundle.py" + --out "${NUI_SFTP_LICENSES_JSON}" + --header "${NUI_SFTP_LICENSES_HEADER}" + --npm-licenses "${NUI_SFTP_NPM_LICENSES_JSON}" + --npm-host-root "${CMAKE_BINARY_DIR}" + RESULT_VARIABLE NUI_SFTP_LICENSES_BOOTSTRAP_RESULT + ) + if (NOT NUI_SFTP_LICENSES_BOOTSTRAP_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to bootstrap licenses_data.hpp at configure time") + endif() +endif() + target_sources( ${PROJECT_NAME} PRIVATE @@ -18,6 +93,7 @@ target_sources( session.cpp proto_session.cpp settings.cpp + licenses.cpp color.cpp icon_from_name.cpp theme_controller.cpp @@ -69,8 +145,17 @@ target_sources( file_explorer/remote_side_model.cpp file_explorer/local_side_model.cpp "${CMAKE_BINARY_DIR}/include/build_environment.hpp" + "${NUI_SFTP_LICENSES_HEADER}" ) +target_include_directories(${PROJECT_NAME} PRIVATE "${NUI_SFTP_LICENSES_GEN_DIR}") +add_dependencies(${PROJECT_NAME} nui-sftp-licenses-data) +# Nui's inline preprocessor compiles every .cpp into a .i before the WASM +# target builds, so it also needs the generated header to exist first. +if (TARGET nui-inline-${PROJECT_NAME}) + add_dependencies(nui-inline-${PROJECT_NAME} nui-sftp-licenses-data) +endif() + function(set_memory64_flags) cmake_parse_arguments( MEM64 @@ -161,6 +246,7 @@ nui_prepare_emscripten_target( "${CMAKE_SOURCE_DIR}/static/styles/session.css" "${CMAKE_SOURCE_DIR}/static/styles/settings_group.css" "${CMAKE_SOURCE_DIR}/static/styles/settings.css" + "${CMAKE_SOURCE_DIR}/static/styles/licenses.css" "${CMAKE_SOURCE_DIR}/static/styles/sync_dialog.css" "${CMAKE_SOURCE_DIR}/static/styles/sidebar.css" "${CMAKE_SOURCE_DIR}/static/styles/toolbar.css" diff --git a/frontend/source/frontend/licenses.cpp b/frontend/source/frontend/licenses.cpp new file mode 100644 index 00000000..db7333c8 --- /dev/null +++ b/frontend/source/frontend/licenses.cpp @@ -0,0 +1,306 @@ +#include + +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +namespace +{ + struct LicenseEntry + { + std::string name; + std::string version; + std::string license; + std::string homepage; + std::string copyright; + std::string role; /// "vendored", "fetched", "system", "self", "npm" + std::string text; + }; + + std::string toLower(std::string s) + { + std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { + return static_cast(std::tolower(c)); + }); + return s; + } + + std::string readString(nlohmann::json const& obj, char const* key) + { + const auto it = obj.find(key); + if (it == obj.end() || it->is_null()) + return {}; + return it->get(); + } + + std::vector parseSection(nlohmann::json const& arr, std::string const& defaultRole) + { + std::vector out; + if (!arr.is_array()) + return out; + out.reserve(arr.size()); + for (auto const& e : arr) + { + LicenseEntry entry{ + readString(e, "name"), + readString(e, "version"), + readString(e, "license"), + readString(e, "homepage"), + readString(e, "copyright"), + readString(e, "role"), + readString(e, "text"), + }; + if (entry.role.empty()) + entry.role = defaultRole; + if (entry.homepage.empty()) + entry.homepage = readString(e, "url"); + out.push_back(std::move(entry)); + } + return out; + } +} + +struct Licenses::Implementation +{ + FrontendEvents* events; + Nui::Observed loaded{false}; + Nui::Observed> entries{}; + Nui::Observed filter{}; + /// Index into `entries`, or -1 to show the "All" view. + Nui::Observed selectedIndex{-1}; + + explicit Implementation(FrontendEvents* events) + : events{events} + {} +}; + +Licenses::Licenses(FrontendEvents* events) + : impl_{std::make_unique(events)} +{} +ROAR_PIMPL_SPECIAL_FUNCTIONS_IMPL(Licenses); + +void Licenses::loadIfNeeded() +{ + if (impl_->loaded.value()) + return; + + try + { + const auto doc = nlohmann::json::parse(LicenseData::json); + std::vector merged; + if (auto it = doc.find("cpp"); it != doc.end()) + { + auto cpp = parseSection(*it, "cpp"); + merged.insert(merged.end(), + std::make_move_iterator(cpp.begin()), + std::make_move_iterator(cpp.end())); + } + if (auto it = doc.find("npm"); it != doc.end()) + { + auto npm = parseSection(*it, "npm"); + merged.insert(merged.end(), + std::make_move_iterator(npm.begin()), + std::make_move_iterator(npm.end())); + } + std::stable_sort(merged.begin(), merged.end(), + [](LicenseEntry const& a, LicenseEntry const& b) { + return toLower(a.name) < toLower(b.name); + }); + impl_->entries.value() = std::move(merged); + impl_->entries.modify(); + impl_->loaded = true; + } + catch (std::exception const& e) + { + Nui::WebApi::Console::error(std::string{"Failed to parse embedded licenses: "} + e.what()); + } +} + +Nui::ElementRenderer Licenses::header() +{ + using namespace Nui::Elements; + using namespace Nui::Attributes; + using Nui::Elements::div; + using Nui::Elements::span; + + return div{class_ = "licenses-page-header"}( + span{class_ = "licenses-page-title"}("Third-Party Licenses"), + button{ + class_ = "licenses-close-button", + onClick = [this](Nui::val) { + impl_->events->licensesOpen = false; + }, + }("Close") + ); +} + +Nui::ElementRenderer Licenses::sidebar() +{ + using namespace Nui::Elements; + using namespace Nui::Attributes; + using Nui::Elements::div; + using Nui::Elements::span; + + return div{class_ = "licenses-side"}( + input{ + type = "text", + placeHolder = "Filter packages...", + class_ = "licenses-filter-input", + value = impl_->filter, + onInput = [this](Nui::val event) { + impl_->filter = event["target"]["value"].as(); + }, + }(), + div{ + class_ = "licenses-side-row licenses-side-row-all", + style = Nui::observe(impl_->selectedIndex).generate([this]() { + return impl_->selectedIndex.value() < 0 + ? std::string{"background-color: var(--theme-color-accent, #2a2a2a);"} + : std::string{}; + }), + onClick = [this](Nui::val) { + impl_->selectedIndex = -1; + }, + }( + span{class_ = "licenses-side-name"}("All licenses"), + span{class_ = "licenses-side-pill licenses-side-pill-all"}( + Nui::observe(impl_->entries).generate([this]() { + return std::to_string(impl_->entries.value().size()); + }) + ) + ), + div{class_ = "licenses-side-list"}( + Nui::range(impl_->entries), + [this](long long index, LicenseEntry const& e) -> Nui::ElementRenderer { + return div{ + class_ = "licenses-side-row", + style = Nui::observe(impl_->filter, impl_->selectedIndex) + .generate([this, index, name = e.name]() { + const auto& f = impl_->filter.value(); + const bool matches = f.empty() || toLower(name).find(toLower(f)) != std::string::npos; + const bool active = impl_->selectedIndex.value() == index; + std::string s; + if (!matches) + s += "display: none;"; + if (active) + s += "background-color: var(--theme-color-accent, #2a2a2a);"; + return s; + }), + onClick = [this, index](Nui::val) { + impl_->selectedIndex = index; + }, + }( + span{class_ = "licenses-side-name"}(e.name), + span{ + class_ = "licenses-side-pill", + "data-license"_attr = e.license, + }(e.license) + ); + } + ) + ); +} + +Nui::ElementRenderer Licenses::main() +{ + using namespace Nui::Elements; + using namespace Nui::Attributes; + using Nui::Elements::div; + using Nui::Elements::span; + using Nui::Elements::a; + using Nui::Elements::pre; + + return div{class_ = "licenses-main"}( + Nui::observe(impl_->selectedIndex, impl_->entries), + [this]() -> Nui::ElementRenderer { + const auto& list = impl_->entries.value(); + const auto idx = impl_->selectedIndex.value(); + if (idx < 0) + { + std::string concatenated; + for (auto const& e : list) + { + concatenated += "==== "; + concatenated += e.name; + if (!e.version.empty()) + { + concatenated += " (" + e.version + ")"; + } + concatenated += " — " + e.license + " ====\n\n"; + concatenated += e.text; + concatenated += "\n\n"; + } + return pre{class_ = "licenses-text"}(concatenated); + } + if (idx >= static_cast(list.size())) + return div{}("No selection."); + auto const& e = list[static_cast(idx)]; + const Nui::ElementRenderer copyrightRow = e.copyright.empty() + ? Nui::nil() + : Nui::ElementRenderer{div{class_ = "licenses-detail-copyright"}(e.copyright)}; + const Nui::ElementRenderer homepageRow = e.homepage.empty() + ? Nui::nil() + : Nui::ElementRenderer{div{class_ = "licenses-detail-homepage"}( + a{ + href = e.homepage, + target = "_blank", + rel = "noopener", + }(e.homepage) + )}; + return div{class_ = "licenses-detail"}( + div{class_ = "licenses-detail-header"}( + span{class_ = "licenses-detail-name"}(e.name), + span{class_ = "licenses-detail-version"}(e.version), + span{class_ = "licenses-detail-license"}(e.license) + ), + copyrightRow, + homepageRow, + pre{class_ = "licenses-text"}(e.text.empty() ? std::string{"(no license text available)"} : e.text) + ); + } + ); +} + +Nui::ElementRenderer Licenses::operator()() +{ + using namespace Nui::Elements; + using namespace Nui::Attributes; + using Nui::Elements::div; + + Nui::listen(impl_->events->licensesOpen, [this](bool isOpen) { + if (isOpen) + loadIfNeeded(); + }); + + return div{ + class_ = "licenses-page-background-blocker", + style = Nui::observe(impl_->events->licensesOpen).generate([](bool isOpen) -> std::string { + return isOpen ? "display: flex;" : "display: none;"; + }), + onKeyDown = [this](Nui::val event) { + const auto key = event["key"].as(); + if (key == "Escape") + impl_->events->licensesOpen = false; + }, + tabIndex = "0", + }( + div{class_ = "licenses-page"}( + header(), + div{class_ = "licenses-page-content"}( + sidebar(), + main() + ) + ) + ); +} diff --git a/frontend/source/frontend/main_page.cpp b/frontend/source/frontend/main_page.cpp index 3c648ae7..3f8ec407 100644 --- a/frontend/source/frontend/main_page.cpp +++ b/frontend/source/frontend/main_page.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -32,6 +33,7 @@ struct MainPage::Implementation Toolbar toolbar; SessionArea sessionArea; Settings settings; + Licenses licenses; Nui::Observed darkMode; Nui::TimerHandle setupWait; @@ -51,6 +53,7 @@ struct MainPage::Implementation , settings{stateHolder, events, [this](){ return sessionArea.getActiveSessionLayout(); }, newItemAskDialog, confirmDialog, multiInputDialog} + , licenses{events} , darkMode{true} , setupWait{} { @@ -139,6 +142,7 @@ Nui::ElementRenderer MainPage::render() impl_->directConnectDialog(), impl_->multiInputDialog(), impl_->settings(), + impl_->licenses(), div{ class_ = "main-page", }( diff --git a/frontend/source/frontend/toolbar.cpp b/frontend/source/frontend/toolbar.cpp index 786090ef..a6201b11 100644 --- a/frontend/source/frontend/toolbar.cpp +++ b/frontend/source/frontend/toolbar.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -319,6 +320,14 @@ Nui::ElementRenderer Toolbar::operator()() }, }, }), + Snc::button({ + .icon = Ui5Icons::signature(), + .attributes = { + onClick = [this]() { + impl_->events->licensesOpen = true; + }, + }, + }), Snc::button({ .icon = GeneratedSvgs::settings(), .attributes = { diff --git a/licenses/README.md b/licenses/README.md new file mode 100644 index 00000000..43d18057 --- /dev/null +++ b/licenses/README.md @@ -0,0 +1,18 @@ +# Third-party licenses + +This directory is the **source of truth** for C++ third-party attribution. + +- `third_party.spdx.json` — SPDX 3.0.1 JSON-LD document. One `software_Package` per shipped C++ dep. Every package has an `extension_licenseTextFile` pointing at a sibling text file under `texts/`. +- `texts/` — the actual license bodies. One file per package. +- `npm-licenses.json` (build artifact, gitignored) — generated by `npm run licenses` from production npm dependencies. Merged into the runtime bundle by `scripts/build_licenses_bundle.py`. + +## Adding a new C++ dep + +1. Add the dep declaration in CMake (`_cmake/dependencies/`, root `CMakeLists.txt`, or a submodule under `dependencies/`). +2. Add a corresponding `software_Package` entry to `third_party.spdx.json`. +3. Add a `texts/-LICENSE.txt` file with the license body. +4. Run `python scripts/check_licenses.py` — it will fail if (1) and (2) don't agree. + +## Drift detection + +`scripts/check_licenses.py` greps the CMake source for `find_package`, `FetchContent_Declare`, and vendored `add_subdirectory(dependencies/...)` calls and diffs the extracted set against the names in `third_party.spdx.json`. CI fails on mismatch. diff --git a/licenses/texts/5cript-nui-components-LICENSE.txt b/licenses/texts/5cript-nui-components-LICENSE.txt new file mode 100644 index 00000000..36b7cd93 --- /dev/null +++ b/licenses/texts/5cript-nui-components-LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/licenses/texts/Nui-LICENSE.txt b/licenses/texts/Nui-LICENSE.txt new file mode 100644 index 00000000..36b7cd93 --- /dev/null +++ b/licenses/texts/Nui-LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/licenses/texts/boost-LICENSE.txt b/licenses/texts/boost-LICENSE.txt new file mode 100644 index 00000000..127a5bc3 --- /dev/null +++ b/licenses/texts/boost-LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/bzip2-LICENSE.txt b/licenses/texts/bzip2-LICENSE.txt new file mode 100644 index 00000000..83ce3b6f --- /dev/null +++ b/licenses/texts/bzip2-LICENSE.txt @@ -0,0 +1,41 @@ +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2010 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, jseward@acm.org +bzip2/libbzip2 version 1.1.0 of 6 September 2010 + +-------------------------------------------------------------------------- diff --git a/licenses/texts/cryptopp-LICENSE.txt b/licenses/texts/cryptopp-LICENSE.txt new file mode 100644 index 00000000..89f6ae6d --- /dev/null +++ b/licenses/texts/cryptopp-LICENSE.txt @@ -0,0 +1,84 @@ +Compilation Copyright (c) 1995-2019 by Wei Dai. All rights reserved. +This copyright applies only to this software distribution package +as a compilation, and does not imply a copyright on any particular +file in the package. + +All individual files in this compilation are placed in the public domain by +Wei Dai and other contributors. + +I would like to thank the following authors for placing their works into +the public domain: + +Joan Daemen - 3way.cpp +Leonard Janke - cast.cpp, seal.cpp +Steve Reid - cast.cpp +Phil Karn - des.cpp +Andrew M. Kuchling - md2.cpp, md4.cpp +Colin Plumb - md5.cpp +Seal Woods - rc6.cpp +Chris Morgan - rijndael.cpp +Paulo Baretto - rijndael.cpp, skipjack.cpp, square.cpp +Richard De Moliner - safer.cpp +Matthew Skala - twofish.cpp +Kevin Springle - camellia.cpp, shacal2.cpp, ttmac.cpp, whrlpool.cpp, ripemd.cpp +Ronny Van Keer - sha3.cpp +Aumasson, Neves, Wilcox-O'Hearn and Winnerlein - blake2.cpp, blake2b_simd.cpp, blake2s_simd.cpp +Aaram Yun - aria.cpp, aria_simd.cpp +Han Lulu, Markku-Juhani O. Saarinen - sm4.cpp sm4_simd.cpp +Daniel J. Bernstein, Jack Lloyd - chacha.cpp, chacha_simd.cpp, chacha_avx.cpp +Andrew Moon - ed25519, x25519, donna_32.cpp, donna_64.cpp, donna_sse.cpp + +The Crypto++ Library uses portions of Andy Polyakov's CRYPTOGAMS on Linux +for 32-bit ARM with files aes_armv4.S, sha1_armv4.S and sha256_armv4.S. +CRYPTOGAMS is dual licensed with a permissive BSD-style license. The +CRYPTOGAMS license is reproduced below. You can disable Cryptogams code by +undefining the relevant macros in config_asm.h. + +The Crypto++ Library uses portions of Jack Lloyd's Botan for ChaCha SSE2 and +AVX. Botan placed the code in public domain for Crypto++ to use. + +The Crypto++ Library (as a compilation) is currently licensed under the Boost +Software License 1.0 (http://www.boost.org/users/license.html). + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +CRYPTOGAMS License + +Copyright (c) 2006-2017, CRYPTOGAMS by +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain copyright notices, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of the CRYPTOGAMS nor the names of its copyright + holder and contributors may be used to endorse or promote products + derived from this software without specific prior written permission. \ No newline at end of file diff --git a/licenses/texts/curl-LICENSE.txt b/licenses/texts/curl-LICENSE.txt new file mode 100644 index 00000000..70264cfc --- /dev/null +++ b/licenses/texts/curl-LICENSE.txt @@ -0,0 +1,22 @@ +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1996 - 2026, Daniel Stenberg, , and many +contributors, see the THANKS file. + +All rights reserved. + +Permission to use, copy, modify, and distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright +notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. \ No newline at end of file diff --git a/licenses/texts/efsw-LICENSE.txt b/licenses/texts/efsw-LICENSE.txt new file mode 100644 index 00000000..74861912 --- /dev/null +++ b/licenses/texts/efsw-LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2020 Martín Lucas Golini + +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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +This software is a fork of the "simplefilewatcher" by James Wynn (james@jameswynn.com) +http://code.google.com/p/simplefilewatcher/ also MIT licensed. \ No newline at end of file diff --git a/licenses/texts/fmt-LICENSE.txt b/licenses/texts/fmt-LICENSE.txt new file mode 100644 index 00000000..795fdaec --- /dev/null +++ b/licenses/texts/fmt-LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors + +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 to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/licenses/texts/gimo-LICENSE.txt b/licenses/texts/gimo-LICENSE.txt new file mode 100644 index 00000000..127a5bc3 --- /dev/null +++ b/licenses/texts/gimo-LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/interval-tree-LICENSE.txt b/licenses/texts/interval-tree-LICENSE.txt new file mode 100644 index 00000000..1625c179 --- /dev/null +++ b/licenses/texts/interval-tree-LICENSE.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. \ No newline at end of file diff --git a/licenses/texts/liblzma-LICENSE.txt b/licenses/texts/liblzma-LICENSE.txt new file mode 100644 index 00000000..6a4a7987 --- /dev/null +++ b/licenses/texts/liblzma-LICENSE.txt @@ -0,0 +1,64 @@ + +XZ Utils Licensing +================== + + Different licenses apply to different files in this package. Here + is a rough summary of which licenses apply to which parts of this + package (but check the individual files to be sure!): + + - liblzma is in the public domain. + + - xz, xzdec, and lzmadec command line tools are in the public + domain unless GNU getopt_long had to be compiled and linked + in from the lib directory. The getopt_long code is under + GNU LGPLv2.1+. + + - The scripts to grep, diff, and view compressed files have been + adapted from gzip. These scripts and their documentation are + under GNU GPLv2+. + + - All the documentation in the doc directory and most of the + XZ Utils specific documentation files in other directories + are in the public domain. + + - Translated messages are in the public domain. + + - The build system contains public domain files, and files that + are under GNU GPLv2+ or GNU GPLv3+. None of these files end up + in the binaries being built. + + - Test files and test code in the tests directory, and debugging + utilities in the debug directory are in the public domain. + + - The extra directory may contain public domain files, and files + that are under various free software licenses. + + You can do whatever you want with the files that have been put into + the public domain. If you find public domain legally problematic, + take the previous sentence as a license grant. If you still find + the lack of copyright legally problematic, you have too many + lawyers. + + As usual, this software is provided "as is", without any warranty. + + If you copy significant amounts of public domain code from XZ Utils + into your project, acknowledging this somewhere in your software is + polite (especially if it is proprietary, non-free software), but + naturally it is not legally required. Here is an example of a good + notice to put into "about box" or into documentation: + + This software includes code from XZ Utils . + + The following license texts are included in the following files: + - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1 + - COPYING.GPLv2: GNU General Public License version 2 + - COPYING.GPLv3: GNU General Public License version 3 + + Note that the toolchain (compiler, linker etc.) may add some code + pieces that are copyrighted. Thus, it is possible that e.g. liblzma + binary wouldn't actually be in the public domain in its entirety + even though it contains no copyrighted code from the XZ Utils source + package. + + If you have questions, don't hesitate to ask the author(s) for more + information. diff --git a/licenses/texts/libssh-LICENSE.txt b/licenses/texts/libssh-LICENSE.txt new file mode 100644 index 00000000..6de54853 --- /dev/null +++ b/licenses/texts/libssh-LICENSE.txt @@ -0,0 +1,469 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + Linking with OpenSSL + + 17. In addition, as a special exception, we give permission to link the code +of its release of libssh with the OpenSSL project's "OpenSSL" library (or with +modified versions of it that use the same license as the "OpenSSL" library), +and distribute the linked executables. You must obey the GNU Lesser General +Public License in all respects for all of the code used other than "OpenSSL". +If you modify this file, you may extend this exception to your version of the +file, but you are not obligated to do so. If you do not wish to do so, delete +this exception statement from your version. + + END OF TERMS AND CONDITIONS diff --git a/licenses/texts/nlohmann_json-LICENSE.txt b/licenses/texts/nlohmann_json-LICENSE.txt new file mode 100644 index 00000000..f384b1e0 --- /dev/null +++ b/licenses/texts/nlohmann_json-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-2026 Niels Lohmann + +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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/openssl-LICENSE.txt b/licenses/texts/openssl-LICENSE.txt new file mode 100644 index 00000000..b8cc0444 --- /dev/null +++ b/licenses/texts/openssl-LICENSE.txt @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/licenses/texts/portable-file-dialogs-LICENSE.txt b/licenses/texts/portable-file-dialogs-LICENSE.txt new file mode 100644 index 00000000..8b014d64 --- /dev/null +++ b/licenses/texts/portable-file-dialogs-LICENSE.txt @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/licenses/texts/promise-cpp-LICENSE.txt b/licenses/texts/promise-cpp-LICENSE.txt new file mode 100644 index 00000000..626e5b60 --- /dev/null +++ b/licenses/texts/promise-cpp-LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 xhawk18 -at- gmail.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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/rapidfuzz-LICENSE.txt b/licenses/texts/rapidfuzz-LICENSE.txt new file mode 100644 index 00000000..a1313a3f --- /dev/null +++ b/licenses/texts/rapidfuzz-LICENSE.txt @@ -0,0 +1,21 @@ +Copyright © 2020-present Max Bachmann +Copyright © 2011 Adam Cohen + +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 to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/roar-LICENSE.txt b/licenses/texts/roar-LICENSE.txt new file mode 100644 index 00000000..36b7cd93 --- /dev/null +++ b/licenses/texts/roar-LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/licenses/texts/spdlog-LICENSE.txt b/licenses/texts/spdlog-LICENSE.txt new file mode 100644 index 00000000..04b968fc --- /dev/null +++ b/licenses/texts/spdlog-LICENSE.txt @@ -0,0 +1,25 @@ +The MIT License (MIT) + +Copyright (c) 2016 - present, Gabi Melman and spdlog contributors. + +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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-- NOTE: Third party dependency used by this software -- +This software depends on the fmt lib (MIT License), +and users must comply to its license: https://raw.githubusercontent.com/fmtlib/fmt/master/LICENSE \ No newline at end of file diff --git a/licenses/texts/traits-LICENSE.txt b/licenses/texts/traits-LICENSE.txt new file mode 100644 index 00000000..0e259d42 --- /dev/null +++ b/licenses/texts/traits-LICENSE.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/licenses/texts/ui5-sap-icons-LICENSE.txt b/licenses/texts/ui5-sap-icons-LICENSE.txt new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/licenses/texts/ui5-sap-icons-LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/texts/webkitgtk-LICENSE.txt b/licenses/texts/webkitgtk-LICENSE.txt new file mode 100644 index 00000000..738f55a6 --- /dev/null +++ b/licenses/texts/webkitgtk-LICENSE.txt @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/licenses/texts/webview-LICENSE.txt b/licenses/texts/webview-LICENSE.txt new file mode 100644 index 00000000..a05b21dc --- /dev/null +++ b/licenses/texts/webview-LICENSE.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017 Serge Zaitsev +Copyright (c) 2022 Steffen André Langnes + +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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/yaml-cpp-LICENSE.txt b/licenses/texts/yaml-cpp-LICENSE.txt new file mode 100644 index 00000000..d1a45507 --- /dev/null +++ b/licenses/texts/yaml-cpp-LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2008-2015 Jesse Beder. + +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 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/licenses/texts/zlib-LICENSE.txt b/licenses/texts/zlib-LICENSE.txt new file mode 100644 index 00000000..d31ee1e6 --- /dev/null +++ b/licenses/texts/zlib-LICENSE.txt @@ -0,0 +1,23 @@ +zlib.h -- interface of the 'zlib' general purpose compression library +version 1.3.2, February 17th, 2026 + +Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Jean-loup Gailly Mark Adler +jloup@gzip.org madler@alumni.caltech.edu \ No newline at end of file diff --git a/licenses/texts/zstd-LICENSE.txt b/licenses/texts/zstd-LICENSE.txt new file mode 100644 index 00000000..ca66d17a --- /dev/null +++ b/licenses/texts/zstd-LICENSE.txt @@ -0,0 +1,30 @@ +BSD License + +For Zstandard software + +Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook, nor Meta, nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/licenses/third_party.spdx.json b/licenses/third_party.spdx.json new file mode 100644 index 00000000..8cf36d00 --- /dev/null +++ b/licenses/third_party.spdx.json @@ -0,0 +1,374 @@ +{ + "@context": "https://spdx.org/rdf/3.0.1/spdx-context.jsonld", + "@graph": [ + { + "type": "CreationInfo", + "@id": "_:creationInfo", + "specVersion": "3.0.1", + "created": "2026-04-25T00:00:00Z", + "createdBy": ["http://spdx.org/spdxdocs/nui-sftp/Person/TimEbbeke"], + "createdUsing": [] + }, + { + "type": "Person", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Person/TimEbbeke", + "creationInfo": "_:creationInfo", + "name": "Tim Ebbeke" + }, + { + "type": "SpdxDocument", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp", + "creationInfo": "_:creationInfo", + "name": "nui-sftp-third-party", + "profileConformance": ["core", "software", "simpleLicensing"], + "rootElement": ["http://spdx.org/spdxdocs/nui-sftp/Package/nui-sftp"] + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/nui-sftp", + "creationInfo": "_:creationInfo", + "name": "nui-sftp", + "software_homePage": "https://github.com/5cript/nui-sftp", + "software_copyrightText": "Copyright (c) 2024 Tim Ebbeke", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "../LICENSE", + "extension_dependencyOf": null, + "extension_role": "self" + }, + + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/Nui", + "creationInfo": "_:creationInfo", + "name": "Nui", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/NuiCpp/Nui", + "software_homePage": "https://github.com/NuiCpp/Nui", + "software_copyrightText": "Copyright (c) Tim Ebbeke", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/Nui-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/gimo", + "creationInfo": "_:creationInfo", + "name": "gimo", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/5cript/gimo", + "software_homePage": "https://github.com/5cript/gimo", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/gimo-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/traits", + "creationInfo": "_:creationInfo", + "name": "traits", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/NuiCpp/traits", + "software_homePage": "https://github.com/NuiCpp/traits", + "simplelicensing_declaredLicense": "CC0-1.0", + "extension_licenseTextFile": "texts/traits-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/5cript-nui-components", + "creationInfo": "_:creationInfo", + "name": "5cript-nui-components", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/5cript/nui-components", + "software_homePage": "https://github.com/5cript/nui-components", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/5cript-nui-components-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/ui5-sap-icons", + "creationInfo": "_:creationInfo", + "name": "ui5-sap-icons", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/5cript/nui-components", + "software_homePage": "https://github.com/UI5/webcomponents", + "software_copyrightText": "Copyright (c) 2024 SAP SE or an SAP affiliate company and UI5 contributors", + "simplelicensing_declaredLicense": "Apache-2.0", + "extension_licenseTextFile": "texts/ui5-sap-icons-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/roar", + "creationInfo": "_:creationInfo", + "name": "roar", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/5cript/roar", + "software_homePage": "https://github.com/5cript/roar", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/roar-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/promise-cpp", + "creationInfo": "_:creationInfo", + "name": "promise-cpp", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/xhawk18/promise-cpp", + "software_homePage": "https://github.com/xhawk18/promise-cpp", + "software_copyrightText": "Copyright (c) 2018 xhawk18", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/promise-cpp-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/portable-file-dialogs", + "creationInfo": "_:creationInfo", + "name": "portable-file-dialogs", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/samhocevar/portable-file-dialogs", + "software_homePage": "https://github.com/samhocevar/portable-file-dialogs", + "simplelicensing_declaredLicense": "WTFPL", + "extension_licenseTextFile": "texts/portable-file-dialogs-LICENSE.txt", + "extension_role": "vendored" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/webview", + "creationInfo": "_:creationInfo", + "name": "webview", + "software_packageVersion": "submodule", + "software_downloadLocation": "https://github.com/webview/webview", + "software_homePage": "https://github.com/webview/webview", + "software_copyrightText": "Copyright (c) 2017 Serge Zaitsev", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/webview-LICENSE.txt", + "extension_role": "vendored" + }, + + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/interval-tree", + "creationInfo": "_:creationInfo", + "name": "interval-tree", + "software_packageVersion": "v2.3.2", + "software_downloadLocation": "https://github.com/5cript/interval-tree/archive/refs/tags/v2.3.2.tar.gz", + "software_homePage": "https://github.com/5cript/interval-tree", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/interval-tree-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/spdlog", + "creationInfo": "_:creationInfo", + "name": "spdlog", + "software_packageVersion": "v1.17.0", + "software_downloadLocation": "https://github.com/gabime/spdlog/archive/refs/tags/v1.17.0.tar.gz", + "software_homePage": "https://github.com/gabime/spdlog", + "software_copyrightText": "Copyright (c) 2016 Gabi Melman.", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/spdlog-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/yaml-cpp", + "creationInfo": "_:creationInfo", + "name": "yaml-cpp", + "software_packageVersion": "89ff142b991af432b5d7a7cee55282f082a7e629", + "software_downloadLocation": "https://github.com/jbeder/yaml-cpp/archive/89ff142b991af432b5d7a7cee55282f082a7e629.tar.gz", + "software_homePage": "https://github.com/jbeder/yaml-cpp", + "software_copyrightText": "Copyright (c) 2008-2015 Jesse Beder.", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/yaml-cpp-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/efsw", + "creationInfo": "_:creationInfo", + "name": "efsw", + "software_packageVersion": "87abe599995d5646f5d83cf2e3a225bd73148b3a", + "software_downloadLocation": "https://github.com/SpartanJ/efsw/archive/87abe599995d5646f5d83cf2e3a225bd73148b3a.tar.gz", + "software_homePage": "https://github.com/SpartanJ/efsw", + "software_copyrightText": "Copyright (c) 2020 Martin Lucas Golini", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/efsw-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/rapidfuzz", + "creationInfo": "_:creationInfo", + "name": "rapidfuzz", + "software_packageVersion": "b8ce411e91e01599d0697ad307933e05ddf3a723", + "software_downloadLocation": "https://github.com/rapidfuzz/rapidfuzz-cpp/archive/b8ce411e91e01599d0697ad307933e05ddf3a723.tar.gz", + "software_homePage": "https://github.com/rapidfuzz/rapidfuzz-cpp", + "software_copyrightText": "Copyright (c) 2020-present Max Bachmann", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/rapidfuzz-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/nlohmann_json", + "creationInfo": "_:creationInfo", + "name": "nlohmann_json", + "software_packageVersion": "v3.12.0", + "software_downloadLocation": "https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.tar.gz", + "software_homePage": "https://github.com/nlohmann/json", + "software_copyrightText": "Copyright (c) 2013-2025 Niels Lohmann", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/nlohmann_json-LICENSE.txt", + "extension_role": "fetched" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/fmt", + "creationInfo": "_:creationInfo", + "name": "fmt", + "software_packageVersion": "12.0.0", + "software_downloadLocation": "https://github.com/fmtlib/fmt/archive/refs/tags/12.0.0.tar.gz", + "software_homePage": "https://github.com/fmtlib/fmt", + "software_copyrightText": "Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors", + "simplelicensing_declaredLicense": "MIT", + "extension_licenseTextFile": "texts/fmt-LICENSE.txt", + "extension_role": "fetched" + }, + + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/openssl", + "creationInfo": "_:creationInfo", + "name": "OpenSSL", + "software_packageVersion": "system", + "software_downloadLocation": "https://www.openssl.org/source/", + "software_homePage": "https://www.openssl.org/", + "software_copyrightText": "Copyright (c) 1998-2024 The OpenSSL Project Authors. Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson.", + "simplelicensing_declaredLicense": "Apache-2.0", + "extension_licenseTextFile": "texts/openssl-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/libssh", + "creationInfo": "_:creationInfo", + "name": "libssh", + "software_packageVersion": "system", + "software_downloadLocation": "https://www.libssh.org/", + "software_homePage": "https://www.libssh.org/", + "software_copyrightText": "Copyright (c) Andreas Schneider, Aris Adamantiadis and contributors", + "simplelicensing_declaredLicense": "LGPL-2.1-only", + "extension_licenseTextFile": "texts/libssh-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/zlib", + "creationInfo": "_:creationInfo", + "name": "zlib", + "software_packageVersion": "system", + "software_downloadLocation": "https://zlib.net/", + "software_homePage": "https://zlib.net/", + "software_copyrightText": "Copyright (c) 1995-2024 Jean-loup Gailly and Mark Adler", + "simplelicensing_declaredLicense": "Zlib", + "extension_licenseTextFile": "texts/zlib-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/bzip2", + "creationInfo": "_:creationInfo", + "name": "bzip2", + "software_packageVersion": "system", + "software_downloadLocation": "https://sourceware.org/bzip2/", + "software_homePage": "https://sourceware.org/bzip2/", + "software_copyrightText": "Copyright (c) 1996-2010 Julian R Seward", + "simplelicensing_declaredLicense": "bzip2-1.0.6", + "extension_licenseTextFile": "texts/bzip2-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/zstd", + "creationInfo": "_:creationInfo", + "name": "zstd", + "software_packageVersion": "system", + "software_downloadLocation": "https://github.com/facebook/zstd", + "software_homePage": "https://facebook.github.io/zstd/", + "software_copyrightText": "Copyright (c) Meta Platforms, Inc. and affiliates.", + "simplelicensing_declaredLicense": "BSD-3-Clause", + "extension_licenseTextFile": "texts/zstd-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/liblzma", + "creationInfo": "_:creationInfo", + "name": "liblzma", + "software_packageVersion": "system", + "software_downloadLocation": "https://tukaani.org/xz/", + "software_homePage": "https://tukaani.org/xz/", + "software_copyrightText": "The XZ Utils Authors and contributors", + "simplelicensing_declaredLicense": "0BSD", + "extension_licenseTextFile": "texts/liblzma-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/cryptopp", + "creationInfo": "_:creationInfo", + "name": "Crypto++", + "software_packageVersion": "system", + "software_downloadLocation": "https://github.com/weidai11/cryptopp", + "software_homePage": "https://www.cryptopp.com/", + "software_copyrightText": "Crypto++ Library is copyrighted as a compilation by the contributors listed in CRYPTOPP_CREDITS", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/cryptopp-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/curl", + "creationInfo": "_:creationInfo", + "name": "curl", + "software_packageVersion": "system", + "software_downloadLocation": "https://curl.se/download.html", + "software_homePage": "https://curl.se/", + "software_copyrightText": "Copyright (c) 1996 - 2024, Daniel Stenberg, daniel@haxx.se, and many contributors.", + "simplelicensing_declaredLicense": "curl", + "extension_licenseTextFile": "texts/curl-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/boost", + "creationInfo": "_:creationInfo", + "name": "Boost", + "software_packageVersion": "system", + "software_downloadLocation": "https://www.boost.org/users/download/", + "software_homePage": "https://www.boost.org/", + "software_copyrightText": "Copyright (c) The Boost contributors", + "simplelicensing_declaredLicense": "BSL-1.0", + "extension_licenseTextFile": "texts/boost-LICENSE.txt", + "extension_role": "system" + }, + { + "type": "software_Package", + "spdxId": "http://spdx.org/spdxdocs/nui-sftp/Package/webkitgtk", + "creationInfo": "_:creationInfo", + "name": "WebKitGTK", + "software_packageVersion": "system", + "software_downloadLocation": "https://webkitgtk.org/", + "software_homePage": "https://webkitgtk.org/", + "software_copyrightText": "Copyright (c) Apple Inc., Igalia S.L., and the WebKit contributors", + "simplelicensing_declaredLicense": "LGPL-2.0-or-later AND BSD-2-Clause", + "extension_licenseTextFile": "texts/webkitgtk-LICENSE.txt", + "extension_role": "system" + } + ] +} diff --git a/package.json b/package.json index b433b62a..a0a9c82e 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,14 @@ "name": "nui-sftp", "version": "1.0.0", "scripts": { - "tailwatch": "cross-env NODE_ENV=development tailwindcss --config tailwind.config.js --watch=always --output build/clang_debug/bin/liveload/tailwind.css" + "tailwatch": "cross-env NODE_ENV=development tailwindcss --config tailwind.config.js --watch=always --output build/clang_debug/bin/liveload/tailwind.css", + "licenses": "license-checker-rseidelsohn --production --json --out licenses/npm-licenses.json" }, "devDependencies": { "cross-env": "^7.0.3", "dotenv": "^16.4.5", "less": "^4.2.2", + "license-checker-rseidelsohn": "^4.4.2", "parcel": "^2.13.0", "parcel-reporter-static-files-copy": "^1.5.0", "webpack": "^5.98.0", @@ -21,7 +23,6 @@ "@lumino/dragdrop": "^2.1.7", "@lumino/messaging": "^2.0.4", "@lumino/widgets": "^2.7.3", - "@viselect/vanilla": "^3.7.0", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-serialize": "^0.14.0", "@xterm/addon-webgl": "^0.19.0", diff --git a/scripts/build_licenses_bundle.py b/scripts/build_licenses_bundle.py new file mode 100644 index 00000000..2a08c6b3 --- /dev/null +++ b/scripts/build_licenses_bundle.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +""" +Merge the C++ SPDX manifest and the npm-checker output into a single +runtime-friendly licenses.json, optionally producing a release tarball +and/or a C++ header that embeds the bundle as a string literal for +compile-time inclusion into the WASM frontend. + +Usage: + python scripts/build_licenses_bundle.py --out path/to/licenses.json + python scripts/build_licenses_bundle.py --out ... --tarball path/to/tarball.tar.gz + python scripts/build_licenses_bundle.py --out ... --header path/to/licenses_data.hpp + python scripts/build_licenses_bundle.py --out ... --npm-licenses path/to/npm-licenses.json + +The runtime JSON has the shape expected by the Licenses frontend page: + + { + "cpp": [ + { "name", "version", "license", "homepage", + "downloadLocation", "copyright", "role", "text" }, ... + ], + "npm": [ + { "name", "version", "license", "publisher", "url", "text" }, ... + ] + } + +`text` is the full license body inlined as a string. The tarball, if +requested, contains the SPDX file, every license-text file, and the +generated licenses.json. + +The header, if requested, exposes the bundle as `LicenseData::json` +(a `std::string_view`) so the frontend can read it directly without a +runtime file lookup. +""" +from __future__ import annotations + +import argparse +import json +import sys +import tarfile +from pathlib import Path + +REPO = Path(__file__).resolve().parent.parent +SPDX_FILE = REPO / "licenses" / "third_party.spdx.json" +TEXTS_DIR = REPO / "licenses" / "texts" +DEFAULT_NPM_FILE = REPO / "licenses" / "npm-licenses.json" + +# Raw-string delimiter for the embedded C++ header. Must not appear as the +# closing sequence `)"` anywhere inside the JSON (extremely unlikely +# in practice, but checked at generation time). +HEADER_DELIM = "NUI_LIC_EMBED" + + +def build_cpp_section() -> list[dict]: + doc = json.loads(SPDX_FILE.read_text(encoding="utf-8")) + out: list[dict] = [] + for element in doc.get("@graph", []): + if element.get("type") != "software_Package": + continue + name = element.get("name", "") + text_ref = element.get("extension_licenseTextFile", "") + text = "" + if text_ref: + text_path = (SPDX_FILE.parent / text_ref).resolve() + if text_path.exists(): + text = text_path.read_text(encoding="utf-8", errors="replace") + out.append( + { + "name": name, + "version": element.get("software_packageVersion", ""), + "license": element.get("simplelicensing_declaredLicense", ""), + "homepage": element.get("software_homePage", ""), + "downloadLocation": element.get("software_downloadLocation", ""), + "copyright": element.get("software_copyrightText", ""), + "role": element.get("extension_role", ""), + "text": text, + } + ) + out.sort(key=lambda p: p["name"].lower()) + return out + + +def build_npm_section(npm_file: Path, host_root: Path | None) -> list[dict]: + if not npm_file.exists(): + return [] + raw = json.loads(npm_file.read_text(encoding="utf-8")) + # license-checker reports the host project itself as if it were a dep + # (with license=UNKNOWN since our package.json has no license field). + # Drop any entry whose path equals the directory license-checker was + # invoked against. + host_resolved = host_root.resolve() if host_root else None + out: list[dict] = [] + for key, info in raw.items(): + pkg_path = info.get("path") + if host_resolved and pkg_path and Path(pkg_path).resolve() == host_resolved: + continue + # license-checker keys look like "name@version". + if "@" in key.lstrip("@"): + head, _, version = key.rpartition("@") + name = head if head else key + else: + name, version = key, "" + text = "" + license_file = info.get("licenseFile") + if license_file: + p = Path(license_file) + if p.exists() and p.is_file(): + try: + text = p.read_text(encoding="utf-8", errors="replace") + except OSError: + text = "" + if not text: + pkg_path = info.get("path") + if pkg_path: + base = Path(pkg_path) + for candidate in ("LICENSE", "LICENSE.md", "LICENSE.txt", + "license", "license.md", "LICENCE", + "COPYING", "COPYING.txt"): + p = base / candidate + if p.exists() and p.is_file(): + try: + text = p.read_text(encoding="utf-8", errors="replace") + break + except OSError: + continue + out.append( + { + "name": name, + "version": version, + "license": info.get("licenses", ""), + "publisher": info.get("publisher", ""), + "url": info.get("repository", "") or info.get("url", ""), + "text": text, + } + ) + out.sort(key=lambda p: p["name"].lower()) + return out + + +def write_tarball(tarball_path: Path, runtime_json: Path, npm_file: Path) -> None: + tarball_path.parent.mkdir(parents=True, exist_ok=True) + with tarfile.open(tarball_path, "w:gz") as tar: + tar.add(SPDX_FILE, arcname="licenses/third_party.spdx.json") + tar.add(TEXTS_DIR, arcname="licenses/texts") + tar.add(runtime_json, arcname="licenses/licenses.json") + if npm_file.exists(): + tar.add(npm_file, arcname="licenses/npm-licenses.json") + + +def write_header(header_path: Path, json_text: str) -> None: + closing = f"){HEADER_DELIM}\"" + if closing in json_text: + raise SystemExit( + f"Generated JSON contains the raw-string delimiter {closing!r}. " + f"Pick a different HEADER_DELIM in build_licenses_bundle.py." + ) + header_path.parent.mkdir(parents=True, exist_ok=True) + header_path.write_text( + "// Generated by scripts/build_licenses_bundle.py — do not edit.\n" + "#pragma once\n" + "\n" + "#include \n" + "\n" + "namespace LicenseData\n" + "{\n" + f" inline constexpr std::string_view json = R\"{HEADER_DELIM}(\n" + f"{json_text}\n" + f"){HEADER_DELIM}\";\n" + "}\n", + encoding="utf-8", + ) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", required=True, type=Path, + help="Path to write the merged licenses.json") + parser.add_argument("--tarball", type=Path, default=None, + help="Optional path to write a release tarball") + parser.add_argument("--header", type=Path, default=None, + help="Optional path to write a C++ header embedding the bundle") + parser.add_argument("--npm-licenses", type=Path, default=DEFAULT_NPM_FILE, + dest="npm_licenses", + help="Path to the license-checker JSON output (defaults to " + f"{DEFAULT_NPM_FILE.relative_to(REPO)})") + parser.add_argument("--npm-host-root", type=Path, default=None, + dest="npm_host_root", + help="Directory license-checker was invoked against. The " + "package living there is the host project itself " + "and is excluded from the npm section.") + args = parser.parse_args() + + if not SPDX_FILE.exists(): + print(f"error: {SPDX_FILE} not found", file=sys.stderr) + return 2 + + bundle = { + "cpp": build_cpp_section(), + "npm": build_npm_section(args.npm_licenses, args.npm_host_root), + } + json_text = json.dumps(bundle, indent=2, ensure_ascii=False) + + args.out.parent.mkdir(parents=True, exist_ok=True) + args.out.write_text(json_text, encoding="utf-8") + print(f"wrote {args.out} ({len(bundle['cpp'])} cpp, {len(bundle['npm'])} npm)") + + if args.tarball: + write_tarball(args.tarball, args.out, args.npm_licenses) + print(f"wrote {args.tarball}") + + if args.header: + write_header(args.header, json_text) + print(f"wrote {args.header}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/check_licenses.py b/scripts/check_licenses.py new file mode 100644 index 00000000..852da1b9 --- /dev/null +++ b/scripts/check_licenses.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 +""" +Check that every C++ dependency declared in CMake has a matching entry in +licenses/third_party.spdx.json (and vice versa for non-system entries), and +that every SPDX entry points at a non-empty license text file that isn't +still a PLACEHOLDER. + +Run from the repo root: + python scripts/check_licenses.py + +Exits non-zero on any drift. + +Names are matched case-insensitively after stripping non-alphanumeric +characters: "OpenSSL" / "openssl" / "Open_SSL" all collapse to "openssl". +Use ALIASES for variants that don't normalise equal (e.g. "promise" vs +"promise-cpp"), and SKIP for build-tooling deps that don't ship in the +release binary. +""" +from __future__ import annotations + +import json +import re +import sys +from pathlib import Path + +REPO = Path(__file__).resolve().parent.parent +SPDX_FILE = REPO / "licenses" / "third_party.spdx.json" + +# CMake files to scan. Globs are evaluated relative to REPO. +SCAN_GLOBS = [ + "CMakeLists.txt", + "_cmake/dependencies/*.cmake", + "_cmake/offline_build.cmake", + "_cmake/dependencies.cmake", + "dependencies/Nui/cmake/dependencies/*.cmake", + "dependencies/roar/cmake/dependencies/*.cmake", +] + +# Build-tooling and test-only deps that don't ship in the release binary. +# Compared in normalised form (lowercase, alphanumeric only). +SKIP_NORM = { + "pkgconfig", + "doxygen", + "git", + "python3", + "gtest", + "googletest", + "emscripten", # build toolchain, not linked + "binaryenrelease", # build toolchain, not linked + # Boost sub-libraries — covered by a single 'boost' SPDX entry. + "boostdescribe", + "boostmp11", + "boostpreprocessor", +} + +# CMake declaration name -> canonical SPDX package name (raw, not normalised). +# Use this when the variant names don't collapse equal under normalisation. +ALIASES = { + "webview_raw": "webview", + "webview-binary-nui": "webview", + "promise": "promise-cpp", + "traits-library": "traits", + "CryptoPP": "Crypto++", +} + +# SPDX entries that legitimately have no CMake declaration (e.g. system +# packages pulled transitively from pacman, or ones detected via +# pkg_search_module which the regex doesn't catch). +NO_CMAKE_DECLARATION_NORM = { + "nuisftp", # the project itself + "boost", # transitively via roar / many headers + "webkitgtk", # detected via pkg_search_module, not find_package + "ui5sapicons", # vendored inside dependencies/5cript-nui-components +} + +FIND_PACKAGE_RE = re.compile(r"\bfind_package\s*\(\s*([A-Za-z0-9_\-]+)") +FETCH_CONTENT_RE = re.compile( + r"\bFetchContent_Declare\s*\(\s*([A-Za-z0-9_\-]+)", re.MULTILINE +) +ADD_SUBDIR_DEPS_RE = re.compile( + r'\badd_subdirectory\s*\(\s*"?\$\{[A-Z_]+\}/dependencies/([A-Za-z0-9_\-]+)' +) +NUI_FETCH_RE = re.compile( + r"\bnui_fetch_dependency\s*\([^)]*?LIBRARY_NAME\s+([A-Za-z0-9_\-]+)", + re.DOTALL, +) + + +def normalise(name: str) -> str: + return re.sub(r"[^a-z0-9]", "", name.lower()) + + +def extract_from_cmake() -> dict[str, list[str]]: + """Return {normalised_name: [source_locations...]} from CMake source. + + Aliases are resolved before normalisation; SKIP entries are dropped. + """ + found: dict[str, list[str]] = {} + + def record(raw: str, where: str) -> None: + canonical = ALIASES.get(raw, raw) + norm = normalise(canonical) + if norm in SKIP_NORM: + return + found.setdefault(norm, []).append(where) + + for glob in SCAN_GLOBS: + for path in sorted(REPO.glob(glob)): + try: + text = path.read_text(encoding="utf-8", errors="replace") + except OSError: + continue + rel = path.relative_to(REPO).as_posix() + for pattern in ( + FIND_PACKAGE_RE, + FETCH_CONTENT_RE, + ADD_SUBDIR_DEPS_RE, + NUI_FETCH_RE, + ): + for m in pattern.finditer(text): + line = text[: m.start()].count("\n") + 1 + record(m.group(1), f"{rel}:{line}") + return found + + +def load_spdx() -> dict[str, dict]: + """Return {normalised_name: full_element} for every software_Package.""" + doc = json.loads(SPDX_FILE.read_text(encoding="utf-8")) + packages: dict[str, dict] = {} + for element in doc.get("@graph", []): + if element.get("type") != "software_Package": + continue + name = element.get("name") + if not name: + continue + packages[normalise(name)] = element + return packages + + +def main() -> int: + if not SPDX_FILE.exists(): + print(f"error: {SPDX_FILE.relative_to(REPO)} not found", file=sys.stderr) + return 2 + + spdx_packages = load_spdx() + spdx_norm = set(spdx_packages.keys()) + + cmake_found = extract_from_cmake() + cmake_norm = set(cmake_found.keys()) + + errors: list[str] = [] + + missing_in_spdx = sorted(cmake_norm - spdx_norm) + for name in missing_in_spdx: + locs = ", ".join(cmake_found[name]) + errors.append( + f" - {name!r} declared in CMake at [{locs}] but missing from " + f"licenses/third_party.spdx.json. Add a software_Package entry." + ) + + stale_in_spdx = sorted((spdx_norm - cmake_norm) - NO_CMAKE_DECLARATION_NORM) + for name in stale_in_spdx: + display = spdx_packages[name].get("name", name) + errors.append( + f" - {display!r} listed in SPDX but no CMake declaration found. " + f"Either remove the SPDX entry, alias the CMake name in " + f"scripts/check_licenses.py, or add it to NO_CMAKE_DECLARATION_NORM." + ) + + for name, element in sorted(spdx_packages.items()): + display = element.get("name", name) + text_ref = element.get("extension_licenseTextFile") + if not text_ref: + errors.append(f" - {display!r} has no extension_licenseTextFile field.") + continue + text_path = (SPDX_FILE.parent / text_ref).resolve() + if not text_path.exists(): + errors.append( + f" - {display!r} references missing license text file " + f"{text_ref!r} (resolved: {text_path})." + ) + continue + body = text_path.read_text(encoding="utf-8", errors="replace").strip() + if not body: + errors.append(f" - {display!r}: license text file {text_ref!r} is empty.") + elif body.upper().startswith("PLACEHOLDER"): + errors.append( + f" - {display!r}: license text file {text_ref!r} is still a " + f"PLACEHOLDER. Paste the real license body." + ) + + if errors: + print("License manifest is out of sync:", file=sys.stderr) + for e in errors: + print(e, file=sys.stderr) + print( + f"\n{len(errors)} issue(s). See licenses/README.md for guidance.", + file=sys.stderr, + ) + return 1 + + print(f"OK: {len(spdx_norm)} packages, no drift.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/static/styles/licenses.css b/static/styles/licenses.css new file mode 100644 index 00000000..c019d385 --- /dev/null +++ b/static/styles/licenses.css @@ -0,0 +1,213 @@ +.licenses-page-background-blocker { + z-index: 9; + + background-color: rgba(0, 0, 0, 0.5); + -webkit-backdrop-filter: blur(5px); + backdrop-filter: blur(5px); + + position: absolute; + box-sizing: border-box; + top: 0; + left: 0; + right: 0; + bottom: 0; + + outline: none; +} + +.licenses-page { + font-size: 14px; + margin: 40px; + position: relative; + border-radius: 12px; + flex-grow: 1; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: auto 1fr; + + background-color: var(--background-color); + overflow: hidden; +} + +.licenses-page-header { + display: grid; + grid-template-columns: 1fr auto; + padding: 12px 16px; + align-items: center; + column-gap: 12px; + background-color: var(--darker-background); +} + +.licenses-page-title { + font-size: 1.5rem; + font-weight: 600; +} + +.licenses-close-button { + cursor: pointer; + padding: 4px 12px; + background-color: transparent; + border: 1px solid var(--foreground-border-color); + border-radius: 6px; + color: inherit; + font-size: inherit; +} + +.licenses-close-button:hover { + background-color: var(--darker-background); +} + +.licenses-page-content { + display: grid; + grid-template-columns: 360px 1fr; + grid-template-rows: 1fr; + overflow: hidden; + background-color: var(--background-color); + padding-top: 12px; +} + +.licenses-side { + border-right: 1px solid var(--foreground-border-color); + display: flex; + flex-direction: column; + overflow: hidden; + padding: 0 8px; + gap: 6px; +} + +.licenses-filter-input { + box-sizing: border-box; + padding: 6px 8px; + border-radius: 6px; + border: 1px solid var(--foreground-border-color); + background-color: var(--darker-background); + color: inherit; + outline: none; +} + +.licenses-filter-input:focus { + border-color: var(--theme-color); +} + +.licenses-side-list { + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 2px; + padding-right: 4px; + scrollbar-gutter: stable; +} + +.licenses-side-row { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + column-gap: 8px; + padding: 6px 10px; + margin: 1px 0; + border-radius: 6px; + cursor: pointer; + border: 1px solid transparent; +} + +.licenses-side-row:hover { + background-color: var(--darker-background); +} + +.licenses-side-row-all { + border-bottom: 1px solid var(--foreground-border-color); + border-radius: 0; + margin-bottom: 4px; + font-weight: 600; +} + +.licenses-side-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.licenses-side-pill { + font-size: 0.7rem; + padding: 1px 6px; + border-radius: 8px; + background-color: color-mix(in srgb, var(--theme-color) 18%, transparent 82%); + border: 1px solid color-mix(in srgb, var(--theme-color) 50%, transparent); +} + +.licenses-side-pill-all { + background-color: var(--darker-background); + border-color: var(--foreground-border-color); +} + +.licenses-main { + overflow: hidden; + display: flex; + flex-direction: column; + padding: 0 16px 16px 16px; +} + +.licenses-detail { + display: flex; + flex-direction: column; + gap: 8px; + overflow: hidden; + height: 100%; +} + +.licenses-detail-header { + display: flex; + align-items: baseline; + gap: 12px; + padding-bottom: 8px; + border-bottom: 1px solid var(--foreground-border-color); +} + +.licenses-detail-name { + font-size: 1.4rem; + font-weight: 700; +} + +.licenses-detail-version { + font-size: 0.95rem; + color: gray; + font-family: monospace; +} + +.licenses-detail-license { + margin-left: auto; + padding: 2px 10px; + border-radius: 10px; + background-color: color-mix(in srgb, var(--theme-color) 22%, transparent); + border: 1px solid var(--theme-color); + font-family: monospace; +} + +.licenses-detail-copyright { + color: gray; + font-size: 0.9rem; +} + +.licenses-detail-homepage > a { + color: var(--theme-color); + text-decoration: none; +} + +.licenses-detail-homepage > a:hover { + text-decoration: underline; +} + +.licenses-text { + flex-grow: 1; + overflow: auto; + margin: 0; + padding: 12px; + font-family: monospace; + font-size: 0.85rem; + line-height: 1.4; + background-color: var(--darker-background); + border: 1px solid var(--foreground-border-color); + border-radius: 6px; + white-space: pre-wrap; + word-break: break-word; +} diff --git a/static/styles/main.css b/static/styles/main.css index 466278f5..9d2781b5 100644 --- a/static/styles/main.css +++ b/static/styles/main.css @@ -8,6 +8,7 @@ @import "./operation_queue.css"; @import "./icon_panel.css"; @import "./settings.css"; +@import "./licenses.css"; @import "./file_tracking_panel.css"; @import "./local_shell_tab.css"; @import "./terminal_toolbar.css";