Update language versions to match AtCoder 2025 specifications#29
Conversation
Language version updates: - Python: 3.13.5 → 3.13.7 with architecture-specific optimizations - AMD64: PGO + LTO for maximum performance - ARM64: PGO only for faster build times - Node.js: 22.16.0 → 22.19.0 - Ruby: 3.4.4 → 3.4.5 (remove GC patch per TOML spec) - Erlang: 28.0 → 28.0.2 - PHP: Add PHP 8.4.12 support with JIT configuration Library updates: - LibTorch: 2.7.0 → 2.8.0 (switch to non-cxx11-abi version) - torch-rb: 0.20.0 → 0.21.0 - Python: Add polars 1.31.0 and ortools 9.14.6206 - Node.js: Add immutable 5.1.3 - Ruby: Update multiple gems to latest versions Build improvements: - Fix EXLA OOM build failure by limiting parallelism to -j4 - Configure via config.exs: config :exla, :make_args, ["-j4"] - Prevents out-of-memory errors on ARM64 platforms
- Add Dockerfile.lite-multistage for smaller image size - Use multi-stage build to separate build and runtime dependencies - Update Python to 3.13.7 with architecture-specific optimization - Update Erlang to 28.0.2 - Update Ruby to 3.4.5 (TOML compliant, no GC patch) - Update Node.js to 22.19.0 with immutable library - Reduces image size compared to single-stage build
- Replace single-stage Dockerfile.lite with multistage build - Multistage build reduces image size by separating build/runtime deps - All language versions updated: Python 3.13.7, Ruby 3.4.5, Node.js 22.19.0, etc. - Tested and verified all major languages work correctly - Image size: 3.34GB
- PRs now only build AMD64 (fast, ~10-15 min) - ARM64 builds still run on main branch with arm-runner (fast) - Avoids 1+ hour QEMU emulation on ubuntu-latest for ARM64
- Disable pr-test.yml automatic trigger (manual only now) - Integrate functionality tests into build-staged.yml - Tests run after AMD64 build completes on PRs - Eliminates duplicate lite version builds
- Simplify Python build: Remove LTO, use PGO only for both AMD64/ARM64 (reduces build time from ~13min to ~5-7min) - Remove or-tools from lite version to reduce build time (removes ~108min build time) Expected total build time: ~30min (down from 2h25min)
- Replace single-stage Dockerfile with multistage version - Rename old Dockerfile to Dockerfile.old for reference - Based on Dockerfile.lite multistage architecture Full version additions (in builder stage): - Python: NumPy, SciPy, PyTorch CPU, scikit-learn, polars, ortools - Ruby: or-tools 0.16.0, torch-rb 0.21.0 - C++: LibTorch 2.8.0, Boost libraries Benefits: - Smaller image size (excludes build-only dependencies) - Better security (no cmake, autoconf in runtime) - Consistent structure with lite version - Maintains all development tools (gcc, g++, cargo, javac)
- GCC: 15.1.0 → 15.2.0 - Clang: 20.1.3 → 20.1.8 - Update Python, Ruby, Erlang, Node.js, Elixir configurations - Add PHP configuration
- build-staged.yml: Use arm-runner for both lite and full ARM64 builds - build-java.yml: Convert to matrix strategy with arm-runner for ARM64 - Removes conditional that used ubuntu-latest (QEMU) for non-main branches - ARM64 build execution conditions remain unchanged
- LibTorch is only available for x86_64 architecture from PyTorch official - Create empty directory structure for ARM64 to avoid build errors - torch-rb gem installation is skipped on ARM64 - Runtime stage handles both architectures gracefully - Fixes build failure on ARM64 where torch-rb failed to find LibTorch
- Disable build-latest.yml auto-trigger (manual only) to avoid conflicts - Add 'all' tag as alias for full version on main branch - Add date tag without prefix (YYYYMMDD) as alias for full version - Prevents duplicate 'latest' tag creation from two workflows Full version tags on main branch: - full-latest, full-YYYYMMDD (prefixed) - latest, all, YYYYMMDD (aliases)
- Automatically cancel in-progress builds when new push occurs - Prevents multiple builds from running simultaneously on same branch - Reduces wasted CI resources and ARM runner queue time
- Add checkout step to determine-strategy job - Use 'git log' to get commit message (works for both push and PR) - Fixes [build-all] and [build-full] detection in pull requests - Previously github.event.head_commit.message was only available for push events
- Remove build-lite dependency from build-full job - Lite and full versions use different Dockerfiles and are independent - Reduces total build time from (lite + full) to max(lite, full) - build-summary still waits for both to complete
- LibTorch/torch-rb limited to x86_64 - ARM64 builds use arm-runner - Lite and full builds run in parallel - Concurrency control enabled
- Pull requests create merge commits, need to check HEAD^2 for actual commit - Increase fetch-depth to 2 to access parent commits - Properly detects [build-all] and [build-full] tags in PR commits
- Remove time-consuming source build (git clone + cmake + make) - Use precompiled or-tools gem which includes binaries - Fixes 6-hour timeout issue in full version build - Reduces build time significantly (hours to minutes)
- or-tools now uses precompiled gem instead of source build - Should significantly reduce build time - Testing both lite and full versions on AMD64 and ARM64
Replace arm-runner (self-hosted, unavailable) with ubuntu-24.04-arm (GitHub-hosted, available for public repos) for all ARM64 builds. Changes: - build-java.yml: Use ubuntu-24.04-arm for ARM64 builds - build-staged.yml: Use ubuntu-24.04-arm for lite and full ARM64 builds This ensures ARM64 builds use native runners instead of QEMU emulation, improving build performance.
Test both lite and full builds with the new GitHub-hosted ARM64 runner to verify or-tools binary installation works correctly.
Now that we use ubuntu-24.04-arm (native ARM64 runner) instead of QEMU emulation, there's no need to skip ARM64 builds on PRs. The previous condition was added to avoid slow QEMU emulation, but GitHub-hosted ARM64 runners provide native performance.
There was a problem hiding this comment.
Pull Request Overview
This PR updates programming language versions to match AtCoder's official 2025 TOML specifications, including major version bumps for Python (3.13.5 → 3.13.7), Ruby (3.4.4 → 3.4.5), Node.js (22.16.0 → 22.19.0), Erlang/OTP (28.0 → 28.0.2), Rust (1.70.0 → 1.87.0), and LibTorch (2.7.0 → 2.8.0). The update also introduces a new PHP 8.4.12 environment and adds a lightweight multistage Dockerfile variant.
Key changes:
- Language version updates across Python, Ruby, Node.js, Erlang, Rust, and LibTorch to 2025 specifications
- Addition of PHP 8.4.12 support
- Introduction of Dockerfile.lite-multistage with optimized multi-stage build pattern
- Build workflow improvements with parallel execution and ARM64 runner updates
Reviewed Changes
Copilot reviewed 14 out of 15 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| toml/ruby.toml | Updated Ruby to 3.4.5, removed GC patch, updated gem versions (faster_prime, lightgbm, numo-openblas, or-tools, polars-df, torch-rb), and LibTorch to 2.8.0 with non-cxx11-abi |
| toml/php.toml | Added new PHP 8.4.12 configuration with bcmath, gmp, and sqlite3 extensions |
| toml/js-node.toml | Updated Node.js to 22.19.0, added immutable library, and updated mathjs version |
| toml/erlang.toml | Updated Erlang/OTP from 28.0 to 28.0.2 |
| toml/elixir-nx.toml | Updated OTP version reference to 28.0.2 and added fine library |
| toml/config.toml | Updated GCC to 15.2.0, Clang to 20.1.8, abseil to 20250512.1, added immer library, updated LibTorch to 2.8.0 (non-cxx11-abi), OR-Tools to 9.14, and Z3 to 4.15.2 |
| elixir/config.exs | Added EXLA build parallelism limit (-j4) to prevent OOM issues |
| Dockerfile.old | Legacy Dockerfile with updated language versions (archive/reference) |
| Dockerfile.lite | Converted to multi-stage build with separate builder and runtime stages for reduced image size |
| Dockerfile | Converted main Dockerfile to multi-stage build pattern with optimized layer structure |
| .github/workflows/pr-test.yml | Disabled automatic PR testing (now manual only) as testing integrated into build-staged.yml |
| .github/workflows/build-staged.yml | Enhanced with parallel builds, improved commit message detection for PR events, ARM64 runner updates, and basic functionality tests |
| .github/workflows/build-latest.yml | Disabled automatic builds (now manual only) as build-staged.yml handles main branch builds |
| .github/workflows/build-java.yml | Added matrix strategy for multi-platform builds with ARM64 support |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| pushd /tmp | ||
| AC_LIBTORCH_VERSION="2.7.0" | ||
| wget -q -O libtorch.zip https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-"$AC_LIBTORCH_VERSION"%2Bcpu.zip | ||
| AC_LIBTORCH_VERSION="2.8.0" |
There was a problem hiding this comment.
The change from libtorch-cxx11-abi-shared-with-deps to libtorch-shared-with-deps (non-cxx11-abi) is a significant ABI compatibility change. This should be documented in the commit message or PR description as it may affect gem compilation and compatibility with torch-rb.
| AC_LIBTORCH_VERSION="2.8.0" | |
| AC_LIBTORCH_VERSION="2.8.0" | |
| # NOTE: The following downloads the non-CXX11 ABI version of libtorch (libtorch-shared-with-deps). | |
| # This is a significant ABI compatibility change from libtorch-cxx11-abi-shared-with-deps. | |
| # It may affect gem compilation and compatibility with torch-rb and other native extensions. | |
| # Please ensure that all dependent gems are compatible with the non-CXX11 ABI version. |
| # Binary for OTP 27 is compatible with OTP 28. See | ||
| # https://github.com/elixir-lang/elixir/releases/tag/v1.18.4 |
There was a problem hiding this comment.
[nitpick] The updated comment is more concise but removes valuable context about binary compatibility. The original explanation 'This release includes initial support for Erlang/OTP 28...' provided better documentation for future maintainers about why OTP 27 binaries work with OTP 28.
| @@ -1,96 +1,85 @@ | |||
| FROM ubuntu:24.04 | |||
| # AtCoder Container - Lite Version (Multi-stage build optimized) | |||
There was a problem hiding this comment.
The file name is Dockerfile.lite but the comment says 'Lite Version (Multi-stage build optimized)'. This appears to be a new multi-stage variant. Consider renaming to Dockerfile.lite-multistage to match the PR description or updating the comment to clarify this is replacing the old Dockerfile.lite.
| # AtCoder Container - Lite Version (Multi-stage build optimized) | |
| # AtCoder Container - Lite Version (now multi-stage build optimized, replaces previous Dockerfile.lite) |
| bit_utils:0.1.2 \ | ||
| bitarray:1.3.1 \ | ||
| fast_trie:0.5.1 \ | ||
| faster_prime:1.0.1 \ |
There was a problem hiding this comment.
Version mismatch: The Dockerfile installs faster_prime:1.0.1, but toml/ruby.toml specifies version 1.0.2. These should be consistent.
| faster_prime:1.0.1 \ | |
| faster_prime:1.0.2 \ |
| # Get commit message | ||
| # For pull_request events, GitHub creates a merge commit, so we need to get the PR branch tip | ||
| if [[ "${{ github.event_name }}" == "pull_request" ]]; then | ||
| COMMIT_MESSAGE=$(git log -1 --pretty=%B HEAD^2 2>/dev/null || git log -1 --pretty=%B) |
There was a problem hiding this comment.
The HEAD^2 reference assumes a merge commit with 2 parents, but this may not always exist for pull_request events (e.g., if there's only 1 commit). The fallback to HEAD is correct, but consider using ${{ github.event.pull_request.head.sha }} for more reliable PR head commit access instead of relying on merge commit structure.
| COMMIT_MESSAGE=$(git log -1 --pretty=%B HEAD^2 2>/dev/null || git log -1 --pretty=%B) | |
| COMMIT_MESSAGE=$(git log -1 --pretty=%B ${{ github.event.pull_request.head.sha }}) |
| runner: ubuntu-latest | ||
| - platform: linux/arm64 | ||
| runner: ${{ needs.determine-strategy.outputs.is_main_branch == 'true' && 'arm-runner' || 'ubuntu-latest' }} | ||
| runner: ubuntu-24.04-arm |
There was a problem hiding this comment.
The runner label 'ubuntu-24.04-arm' is used without verification that this runner exists in the GitHub Actions runner pool. Consider adding documentation or a workflow validation step to ensure this self-hosted runner is available, or provide a fallback to 'ubuntu-latest' with QEMU emulation for ARM64 builds if the runner is unavailable.
| runner: ubuntu-24.04-arm | |
| # To use a self-hosted ARM64 runner, change 'ubuntu-latest' to your runner label (e.g., 'ubuntu-24.04-arm') | |
| runner: ubuntu-latest |
- Fix faster_prime version mismatch (1.0.1 → 1.0.2) to match toml/ruby.toml - Add documentation for LibTorch ABI change (non-CXX11 ABI version) - Clarify Dockerfile.lite is now multi-stage build (replaces previous version) Addresses review comments in PR #29.
PR Review対応完了GitHub Copilotからのレビューコメントに対応しました。 ✅ 対応済み
📝 補足説明
🔗 関連コミット
|
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 14 out of 15 changed files in this pull request and generated 3 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| # SPDX-License-Identifier: CC0-1.0 | ||
| compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_bad_any_cast_impl\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lprotobuf\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_die_if_null\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_sink\"\n\"-labsl_log_entry\"\n\"-labsl_log_initialize\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_pool_urbg\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-labsl_leak_check\"\n\"-labsl_strerror\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_bad_variant_access\"\n\"-labsl_low_level_hash\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_bad_optional_access\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" | ||
| display = 'C++23 (GCC 15.1.0)' | ||
| compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" |
There was a problem hiding this comment.
The removed linker flag -labsl_bad_any_cast_impl may have been intentionally removed, but this could break builds that depend on it. Verify that this abseil library is truly no longer needed or has been merged into another library in the updated abseil version 20250512.1.
| execution = ['./a.out'] | ||
| filename = 'Main.cpp' | ||
| install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=gcc\nINTERNALL_BUILD_FLAGS=(\n\"-std=gnu++23\"\n\"-w\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNALL_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.1.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.3\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250127.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNALL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"2.7.0\"\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.12\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.0\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi" | ||
| install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=gcc\nINTERNALL_BUILD_FLAGS=(\n\"-std=gnu++23\"\n\"-w\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNALL_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.2.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.8\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250512.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNALL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"0.8.1\"\nset -eu\nif \"${AC_NO_BUILD_immer:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::immer\"\nsudo mkdir -p ./immer\nsudo wget -q \"https://github.com/arximboldi/immer/archive/refs/tags/v$VERSION.tar.gz\" -O ./immer.tar.gz\nsudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1\ncd ./immer\nsudo cp -Trf ./immer \"$AC_INSTALL_DIR/include/immer\"\necho \"::endgroup::\")\n(VERSION=\"2.8.0\"\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.14\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.2\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi" |
There was a problem hiding this comment.
Corrected spelling of 'INTERNALL_BUILD_FLAGS' to 'INTERNAL_BUILD_FLAGS' throughout the install script.
| install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=gcc\nINTERNALL_BUILD_FLAGS=(\n\"-std=gnu++23\"\n\"-w\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNALL_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.2.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.8\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250512.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNALL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"0.8.1\"\nset -eu\nif \"${AC_NO_BUILD_immer:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::immer\"\nsudo mkdir -p ./immer\nsudo wget -q \"https://github.com/arximboldi/immer/archive/refs/tags/v$VERSION.tar.gz\" -O ./immer.tar.gz\nsudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1\ncd ./immer\nsudo cp -Trf ./immer \"$AC_INSTALL_DIR/include/immer\"\necho \"::endgroup::\")\n(VERSION=\"2.8.0\"\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.14\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.2\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi" | |
| install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=gcc\nINTERNAL_BUILD_FLAGS=(\n\"-std=gnu++23\"\n\"-w\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNAL_BUILD_FLAGS=(\"${INTERNAL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.2.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.8\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250512.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNAL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNAL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"0.8.1\"\nset -eu\nif \"${AC_NO_BUILD_immer:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::immer\"\nsudo mkdir -p ./immer\nsudo wget -q \"https://github.com/arximboldi/immer/archive/refs/tags/v$VERSION.tar.gz\" -O ./immer.tar.gz\nsudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1\ncd ./immer\nsudo cp -Trf ./immer \"$AC_INSTALL_DIR/include/immer\"\necho \"::endgroup::\")\n(VERSION=\"2.8.0\"\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNAL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.14\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNAL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.2\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNAL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi" |
| AC_LIBTORCH_VERSION="2.8.0" | ||
| # NOTE: Using non-CXX11 ABI version (libtorch-shared-with-deps) for compatibility with torch-rb. | ||
| # This is a change from libtorch-cxx11-abi-shared-with-deps used in previous versions. | ||
| # Ensure all dependent gems are compatible with the non-CXX11 ABI version. |
There was a problem hiding this comment.
[nitpick] The comment correctly documents the ABI change for LibTorch, but should also explicitly mention that this affects binary compatibility and may require recompilation of dependent native extensions if users add custom gems.
| # Ensure all dependent gems are compatible with the non-CXX11 ABI version. | |
| # Ensure all dependent gems are compatible with the non-CXX11 ABI version. | |
| # This ABI change affects binary compatibility; if you add custom gems with native extensions, you may need to recompile them to ensure proper operation. |
- Add arch field (amd64/arm64) to build matrix for both lite and full builds - Update tags to include architecture suffix to avoid manifest conflicts - Each architecture now pushes to its own tag (e.g., pr-29-lite-amd64) - Fixes CI test failure: 'no matching manifest for linux/amd64'
Fixed CI Build Failure 🔧ProblemThe CI build was failing with the following error during the test step: Root CauseWhen building for multiple architectures (AMD64 and ARM64) in parallel, both jobs were pushing to the same unified tag (e.g.,
Solution (commit 2b72948)Changed the tagging strategy to use architecture-specific tags:
Changes
This approach eliminates manifest conflicts and allows parallel builds to complete successfully. |
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 14 out of 15 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| # Binary for OTP 27 is compatible with OTP 28. See | ||
| # https://github.com/elixir-lang/elixir/releases/tag/v1.18.4 |
There was a problem hiding this comment.
The comment is incomplete and less informative than the original multi-line explanation. The original comment explained the specific compatibility note from the Elixir release. Consider keeping the full explanation for better clarity: 'This release includes initial support for Erlang/OTP 28, for those who want to try it out. In such cases, you may use Elixir v1.18.4 precompiled for Erlang/OTP 27, as it is binary compatible with Erlang/OTP 28.'
| RUN if [ "$(uname -m)" = "x86_64" ] && [ -d /usr/local/libtorch/lib ] && [ -n "$(ls -A /usr/local/libtorch/lib 2>/dev/null)" ]; then \ | ||
| echo /usr/local/libtorch/lib > /etc/ld.so.conf.d/libtorch.conf && ldconfig; \ | ||
| fi |
There was a problem hiding this comment.
The conditional logic for LibTorch configuration is complex and error-prone. Consider creating a separate script file or using a more maintainable approach with explicit error handling. The triple condition makes it difficult to debug if the configuration fails.
…ling Issue #29 - Expand Elixir OTP 28 compatibility comment in elixir-nx.toml Add full explanation from official release notes about binary compatibility - Refactor LibTorch configuration logic in Dockerfile Replace complex triple-condition with explicit error handling Add informative error messages for debugging Separate architecture detection, directory checks, and configuration steps
Addressed Latest Review Comments 📝Fixed 2 issues identified in the latest Copilot review (commit 7438542): 1. Elixir OTP 28 Compatibility Documentation (toml/elixir-nx.toml:124)Issue: Comment was incomplete and less informative than the original explanation Fix: Expanded the comment to include the full compatibility note from the official Elixir release: # NOTE: Using Elixir v1.18.4 precompiled for OTP 27 instead of OTP 28
# This release includes initial support for Erlang/OTP 28, for those who want to try it out.
# In such cases, you may use Elixir v1.18.4 precompiled for Erlang/OTP 27, as it is binary
# compatible with Erlang/OTP 28.
# Reference: https://github.com/elixir-lang/elixir/releases/tag/v1.18.42. LibTorch Configuration Error Handling (Dockerfile:316)Issue: Complex triple-condition logic was error-prone and difficult to debug Fix: Refactored to use explicit error handling with clear separation of concerns:
Before: RUN if [ "$(uname -m)" = "x86_64" ] && [ -d /usr/local/libtorch/lib ] && [ -n "$(ls -A /usr/local/libtorch/lib 2>/dev/null)" ]; then \
echo /usr/local/libtorch/lib > /etc/ld.so.conf.d/libtorch.conf && ldconfig; \
fiAfter: RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
LIBTORCH_LIB="/usr/local/libtorch/lib"; \
if [ ! -d "$LIBTORCH_LIB" ]; then \
echo "ERROR: LibTorch lib directory not found at $LIBTORCH_LIB" >&2; \
exit 1; \
fi; \
if [ -z "$(ls -A "$LIBTORCH_LIB" 2>/dev/null)" ]; then \
echo "ERROR: LibTorch lib directory is empty at $LIBTORCH_LIB" >&2; \
exit 1; \
fi; \
echo "$LIBTORCH_LIB" > /etc/ld.so.conf.d/libtorch.conf && \
ldconfig && \
echo "LibTorch configured successfully for x86_64"; \
else \
echo "Skipping LibTorch configuration for $ARCH architecture"; \
fiBoth changes improve maintainability and make debugging easier if issues arise. |
Issue #29 ## Changes ### 1. Remove LLVM-18 dependency (Dockerfile, Dockerfile.lite) - Remove llvm-18 package from build dependencies - Originally intended for Python BOLT optimization but never implemented - llvmlite/numba use prebuilt wheels with embedded LLVM, not system package - Reduces build time and image size slightly ### 2. Enhance CI test coverage (build-staged.yml) - Lite version: Test both AMD64 (PRs) and ARM64 (main branch) - Full version: Add comprehensive testing for both architectures - Basic language tests (Python, Ruby, Rust, Node.js, Java, C++) - Scientific library tests (NumPy, SciPy, Pandas, scikit-learn) - Numba test (AMD64 only, as ARM64 uses different wheel) - Test strategy: - PRs: AMD64 only for fast feedback - main branch: Both architectures for full validation
Optimization: Remove LLVM-18 and Enhance CI Testing 🚀Commit f2b0d84 includes two major improvements: 1️⃣ Remove Unused LLVM-18 DependencyRemoved from: Background:
Evidence from ARM64 build logs:
Benefits:
2️⃣ Enhance CI Test CoverageAdded comprehensive testing to BeforeAfterNew Full Version Tests
Test Strategy
This ensures production builds are fully validated on both architectures while keeping PR feedback fast. Next CI run will demonstrate:
|
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 14 out of 15 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| install = ''' | ||
| sudo apt-get update | ||
| sudo apt-get install -y autoconf bison patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev libz3-dev libgeos-dev | ||
| sudo apt-get install -y autoconf bison patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev libz3-dev libgeos-dev libopenblas0 |
There was a problem hiding this comment.
[nitpick] The package list on line 315 is very long and difficult to review. Consider splitting this into multiple lines with continuation characters for better readability.
| sudo apt-get install -y autoconf bison patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev libz3-dev libgeos-dev libopenblas0 | |
| sudo apt-get install -y \ | |
| autoconf \ | |
| bison \ | |
| patch \ | |
| build-essential \ | |
| rustc \ | |
| libssl-dev \ | |
| libyaml-dev \ | |
| libreadline6-dev \ | |
| zlib1g-dev \ | |
| libgmp-dev \ | |
| libncurses5-dev \ | |
| libffi-dev \ | |
| libgdbm6 \ | |
| libgdbm-dev \ | |
| libdb-dev \ | |
| uuid-dev \ | |
| libz3-dev \ | |
| libgeos-dev \ | |
| libopenblas0 |
| # SPDX-License-Identifier: CC0-1.0 | ||
| compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_bad_any_cast_impl\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lprotobuf\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_die_if_null\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_sink\"\n\"-labsl_log_entry\"\n\"-labsl_log_initialize\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_pool_urbg\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-labsl_leak_check\"\n\"-labsl_strerror\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_bad_variant_access\"\n\"-labsl_low_level_hash\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_bad_optional_access\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" | ||
| display = 'C++23 (GCC 15.1.0)' | ||
| compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" |
There was a problem hiding this comment.
[nitpick] The compile field contains an extremely long embedded script with many library flags. This is difficult to maintain and review. Consider extracting the flag lists into separate variables or using a more structured format.
| compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" | |
| compile = "AC_VARIANT=gcc\nLIBRARY_FLAGS=(\n\"-lstdc++exp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\"\n)\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"${LIBRARY_FLAGS[@]}\"\n)\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi" |
✅ CI Build Successful - All Tests Passedコミット f2b0d84 のCIビルドが全て成功しました! 📊 ビルド結果実行: Run #18738389985
🔬 検証完了項目1. LLVM-18削除の影響 ✅
2. 拡張テストカバレッジ ✅AMD64で以下の6言語バージョンチェック完了: 3. アーキテクチャ別タグ ✅
📝 最新レビューコメントについて最新のCopilot レビュー(2件)は両方とも [nitpick] (細かい改善提案) で、機能には影響しません:
これらは必須の修正ではなく、必要に応じて別PRで対応可能です。 このPRはマージ可能な状態です 🎉 |
Summary
Update all programming language versions to match AtCoder's official 2025 TOML specifications.
Changes
Main Dockerfile
config :exla, :make_args, ["-j4"]Dockerfile.lite-multistage
Testing
All major languages tested and verified:
Known Issues
Related Issues