diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dd4277c36a..ffb1f9b8cd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,9 +3,11 @@ on: push: branches: - master + - main pull_request: branches: - master + - main release: types: [published, created, edited] permissions: @@ -16,13 +18,13 @@ jobs: jobR: name: mlpack R tarball if: ${{ github.repository == 'mlpack/mlpack' }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: r_bindings: ${{ steps.mlpack_version.outputs.mlpack_r_package }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Extract mlpack version id: mlpack_version @@ -33,9 +35,11 @@ jobs: MLPACK_VERSION_VALUE=${MLPACK_VERSION_MAJOR}.${MLPACK_VERSION_MINOR}.${MLPACK_VERSION_PATCH} echo ::set-output name=mlpack_r_package::$(echo mlpack_"$MLPACK_VERSION_VALUE".tar.gz) - - uses: r-lib/actions/setup-r@master - with: - r-version: release + # Setup Pandoc + - uses: r-lib/actions/setup-pandoc@v2 + + # Setup R actions + - uses: r-lib/actions/setup-r@v2 - name: Query dependencies run: | @@ -44,7 +48,7 @@ jobs: - name: Cache R packages if: runner.os != 'Windows' && runner.os != 'macOS' - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ${{ env.R_LIBS_USER }} key: ${{ runner.os }}-r-release-${{ hashFiles('depends.Rds') }} @@ -76,7 +80,7 @@ jobs: cd build && CTEST_OUTPUT_ON_FAILURE=1 ctest -T Test . - name: Upload R packages - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: mlpack_r_tarball path: build/src/mlpack/bindings/R/${{ steps.mlpack_version.outputs.mlpack_r_package }} @@ -92,10 +96,9 @@ jobs: fail-fast: false matrix: config: - - {os: windows-latest, r: '4.0', name: 'Windows R'} - - {os: macos-10.15, r: 'release', name: 'macOS R'} - - {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest", name: 'Linux R'} - + - {os: windows-latest, r: 'release', name: 'Windows R'} + - {os: macOS-latest, r: 'release', name: 'macOS R'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release', name: 'Linux R'} env: MAKEFLAGS: "-j 2" @@ -103,20 +106,22 @@ jobs: R_CHECK_ARGS: "--no-build-vignettes" _R_CHECK_FORCE_SUGGESTS: 0 R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes steps: - uses: actions/download-artifact@v2 with: name: mlpack_r_tarball - - uses: r-lib/actions/setup-r@master + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - - - uses: r-lib/actions/setup-pandoc@master - + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + - name: Query dependencies run: Rscript -e "install.packages('remotes')" -e "saveRDS(remotes::dev_package_deps('${{ needs.jobR.outputs.r_bindings }}', dependencies = TRUE), 'depends.Rds')" @@ -146,7 +151,7 @@ jobs: - name: Upload check results if: failure() - uses: actions/upload-artifact@master + uses: actions/upload-artifact@v3 with: name: ${{ runner.os }}-r${{ matrix.config.r }}-results path: | diff --git a/README.md b/README.md index 72050f32e2..62a2c40043 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ src="https://cdn.rawgit.com/mlpack/mlpack.org/e7d36ed8/mlpack-black.svg" style="
Home | Documentation | - Doxygen | Community | Help | IRC Chat @@ -47,7 +46,7 @@ programs, Python bindings, Julia bindings, Go bindings and R bindings. - [mlpack homepage](https://www.mlpack.org/) - [mlpack documentation](https://www.mlpack.org/docs.html) - [Examples repository](https://github.com/mlpack/examples/) - - [Tutorials](https://www.mlpack.org/doc/mlpack-git/doxygen/tutorials.html) + - [Tutorials](doc/tutorials/README.md) - [Development Site (Github)](https://www.github.com/mlpack/mlpack/) [//]: # (numfocus-fiscal-sponsor-attribution) @@ -129,6 +128,14 @@ cmake ../ sudo make install ``` +Note: Since CMake v3.14.0 the `cmake` command can create the build folder itself. +The above commands can be rewritten as follows: + +```sh +cmake -S . -B build +sudo cmake --build build --target install +``` + You can add a few arguments to the `cmake` command to control the behavior of the configuration and build process. Simply add these to the `cmake` command. Some options are given below: diff --git a/src/mlpack/bindings/cli/third_party/CLI/CLI11.hpp b/src/mlpack/bindings/cli/third_party/CLI/CLI11.hpp index b7387acf79..739fd8bd5e 100644 --- a/src/mlpack/bindings/cli/third_party/CLI/CLI11.hpp +++ b/src/mlpack/bindings/cli/third_party/CLI/CLI11.hpp @@ -1,11 +1,11 @@ -// CLI11: Version 2.3.0 +// CLI11: Version 2.3.1 // Originally designed by Henry Schreiner // https://github.com/CLIUtils/CLI11 // // This is a standalone header file generated by MakeSingleHeader.py in CLI11/scripts -// from: v2.3.0 +// from: v2.3.1 // -// CLI11 2.3.0 Copyright (c) 2017-2022 University of Cincinnati, developed by Henry +// CLI11 2.3.1 Copyright (c) 2017-2022 University of Cincinnati, developed by Henry // Schreiner under NSF AWARD 1414736. All rights reserved. // // Redistribution and use in source and binary forms of CLI11, with or without @@ -34,34 +34,34 @@ #pragma once // Standard combined includes: -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include -#include -#include -#include +#include +#include #include -#include #include +#include +#include +#include +#include +#include +#include +#include #include -#include #include +#include +#include +#include +#include +#include +#include +#include #define CLI11_VERSION_MAJOR 2 #define CLI11_VERSION_MINOR 3 -#define CLI11_VERSION_PATCH 0 -#define CLI11_VERSION "2.3.0" +#define CLI11_VERSION_PATCH 1 +#define CLI11_VERSION "2.3.1" @@ -2671,7 +2671,7 @@ class Config { if(item.inputs.empty()) { return "{}"; } - throw ConversionError::TooManyInputsFlag(item.fullname()); + throw ConversionError::TooManyInputsFlag(item.fullname()); // LCOV_EXCL_LINE } /// Parse a config file, throw an error (ParseError:ConfigParseError or FileError) on failure @@ -3478,7 +3478,7 @@ class AsNumberWithUnit : public Validator { // transform function func_ = [mapping, opts](std::string &input) -> std::string { - Number num; + Number num{}; detail::rtrim(input); if(input.empty()) { @@ -3742,7 +3742,7 @@ CLI11_INLINE path_type check_path(const char *file) noexcept { return path_type::nonexistent; } switch(stat.type()) { - case std::filesystem::file_type::none: + case std::filesystem::file_type::none: // LCOV_EXCL_LINE case std::filesystem::file_type::not_found: return path_type::nonexistent; case std::filesystem::file_type::directory: @@ -3993,6 +3993,8 @@ class FormatterBase { FormatterBase() = default; FormatterBase(const FormatterBase &) = default; FormatterBase(FormatterBase &&) = default; + FormatterBase &operator=(const FormatterBase &) = default; + FormatterBase &operator=(FormatterBase &&) = default; /// Adding a destructor in this form to work around bug in GCC 4.7 virtual ~FormatterBase() noexcept {} // NOLINT(modernize-use-equals-default) @@ -4054,6 +4056,8 @@ class Formatter : public FormatterBase { Formatter() = default; Formatter(const Formatter &) = default; Formatter(Formatter &&) = default; + Formatter &operator=(const Formatter &) = default; + Formatter &operator=(Formatter &&) = default; /// @name Overridables ///@{ @@ -7307,6 +7311,15 @@ CLI11_NODISCARD CLI11_INLINE CLI::App_p App::get_subcommand_ptr(int index) const throw OptionNotFound(std::to_string(index)); } +CLI11_NODISCARD CLI11_INLINE CLI::App *App::get_option_group(std::string group_name) const { + for(const App_p &app : subcommands_) { + if(app->name_.empty() && app->group_ == group_name) { + return app.get(); + } + } + throw OptionNotFound(group_name); +} + CLI11_NODISCARD CLI11_INLINE std::size_t App::count_all() const { std::size_t cnt{0}; for(const auto &opt : options_) { @@ -9469,7 +9482,7 @@ CLI11_INLINE std::string Formatter::make_footer(const App *app) const { if(footer.empty()) { return std::string{}; } - return footer + "\n"; + return "\n" + footer + "\n"; } CLI11_INLINE std::string Formatter::make_help(const App *app, std::string name, AppFormatMode mode) const { @@ -9491,7 +9504,7 @@ CLI11_INLINE std::string Formatter::make_help(const App *app, std::string name, out << make_positionals(app); out << make_groups(app, mode); out << make_subcommands(app, mode); - out << '\n' << make_footer(app); + out << make_footer(app); return out.str(); }