From 74ec73bda10eae4502dac4b0474a61b2e69c5b84 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:07:06 +0200 Subject: [PATCH 01/66] updated build workflow --- .github/workflows/build_and_test.yml | 3 +++ tests/generate_test_data.py | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8c37e33..6bf819e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -66,6 +66,9 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + - name: Generate Test Data + run: python tests/generate_test_data.py + - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} diff --git a/tests/generate_test_data.py b/tests/generate_test_data.py index bbe183f..12b0fc9 100644 --- a/tests/generate_test_data.py +++ b/tests/generate_test_data.py @@ -2,12 +2,12 @@ # Data to be written dictionary = { -"dropoff_to_parking": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], -"parking_to_dropoff": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], -"parking_capacities": [3, 5, 9], -"dropoff_coords": [{"latitude": 11, "longitude": 12}, {"latitude": 14, "longitude": 15}, {"latitude": 16, "longitude": 17}], -"parking_coords": [{"latitude": 56, "longitude": 57}, {"latitude": 58, "longitude": 59}, {"latitude": 60, "longitude": 61}], -"smallest_round_trips": [2, 6, 10] + "dropoff_to_parking": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], + "parking_to_dropoff": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], + "parking_capacities": [3, 5, 9], + "dropoff_coords": [{"latitude": 11, "longitude": 12}, {"latitude": 14, "longitude": 15}, {"latitude": 16, "longitude": 17}], + "parking_coords": [{"latitude": 56, "longitude": 57}, {"latitude": 58, "longitude": 59}, {"latitude": 60, "longitude": 61}], + "smallest_round_trips": [2, 6, 10] } # Serializing json From 153863f999be7f323a29fb9877d692b9fdd417de Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:14:50 +0200 Subject: [PATCH 02/66] small change --- .github/workflows/build_and_test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 6bf819e..ab41354 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -68,8 +68,9 @@ jobs: - name: Generate Test Data run: python tests/generate_test_data.py + working-directory: ${{ github.workspace }} - - name: Test + - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} From 64c7147890d2a4b6874386f3f31a58eb231de65e Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:17:45 +0200 Subject: [PATCH 03/66] added debug job --- .github/workflows/build_and_test.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ab41354..1679f3e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -70,6 +70,14 @@ jobs: run: python tests/generate_test_data.py working-directory: ${{ github.workspace }} + - name: List directory after test data generation + shell: bash + run: | + echo "Build directory structure after test data generation:" + ls -la ${{ steps.strings.outputs.build-output-dir }} + echo "Tests directory structure:" + ls -la ${{ github.workspace }}/tests + - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} From 73c30fc21d81828701fd69a617ad2932c47373af Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:23:24 +0200 Subject: [PATCH 04/66] cmake fixes --- .github/workflows/build_and_test.yml | 2 ++ src/CMakeLists.txt | 4 +++- tests/CMakeLists.txt | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 1679f3e..ef246e1 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -53,6 +53,7 @@ jobs: cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DFORCE_TESTS=ON -S ${{ github.workspace }} - name: Configure CMake (Windows) @@ -60,6 +61,7 @@ jobs: run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DFORCE_TESTS=ON -G "Visual Studio 17 2022" -A x64 -S ${{ github.workspace }} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 172f5e4..58e3c19 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,4 +10,6 @@ if(LIB_SOURCES) target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) endif() -set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") +if(NOT WIN32) + set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") +endif() \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 17b17a5..6021c03 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,5 @@ # Catch2 +option(FORCE_TESTS "Force building tests regardless of build type" OFF) if(CMAKE_BUILD_TYPE STREQUAL "Debug") FetchContent_Declare( Catch2 From c422024eb20b52921dd949d2f69b5c60c33e69c0 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:29:30 +0200 Subject: [PATCH 05/66] test --- .github/workflows/build_and_test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ef246e1..96e9674 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,15 +13,12 @@ jobs: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - build_type: [Release] + build_type: [Debug] include: - os: windows-latest - build_type: Release - os: ubuntu-latest - build_type: Release cpp_compiler: g++ - os: macos-latest - build_type: Release cpp_compiler: g++ steps: From 9423f40150affa2193ae9980e0f7d12ce8133f67 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:41:50 +0200 Subject: [PATCH 06/66] update cmake --- .github/workflows/build_and_test.yml | 2 +- scripts/compile.sh | 6 +++--- tests/CMakeLists.txt | 10 +++++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 96e9674..48c94dd 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,7 +13,7 @@ jobs: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - build_type: [Debug] + build_type: [Release] include: - os: windows-latest - os: ubuntu-latest diff --git a/scripts/compile.sh b/scripts/compile.sh index 38e5837..d7e5381 100755 --- a/scripts/compile.sh +++ b/scripts/compile.sh @@ -22,15 +22,15 @@ cd build case "$1" in "release") - cmake .. -DCMAKE_BUILD_TYPE=Release + cmake -DCMAKE_BUILD_TYPE=Release .. echo "Release mode enabled" ;; "perf") - cmake .. -DCMAKE_BUILD_TYPE=Perf + cmake -DCMAKE_BUILD_TYPE=Perf .. echo "Performance profiling mode enabled" ;; *) - cmake .. -DCMAKE_BUILD_TYPE=Debug + cmake -DCMAKE_BUILD_TYPE=Debug .. echo "Debug mode enabled" ;; esac diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6021c03..2c72b82 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,14 @@ # Catch2 option(FORCE_TESTS "Force building tests regardless of build type" OFF) -if(CMAKE_BUILD_TYPE STREQUAL "Debug") + +if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR FORCE_TESTS) + set(BUILD_TESTS TRUE) +else() + set(BUILD_TESTS FALSE) +endif() + +message(STATUS "Build tests: ${BUILD_TESTS}") +if(BUILD_TESTS) FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git From 7defe076103aa036af228b349f23a40102e88faa Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:43:47 +0200 Subject: [PATCH 07/66] python test gen update --- tests/generate_test_data.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/generate_test_data.py b/tests/generate_test_data.py index 12b0fc9..a673553 100644 --- a/tests/generate_test_data.py +++ b/tests/generate_test_data.py @@ -1,4 +1,5 @@ import json +import os # Data to be written dictionary = { @@ -14,5 +15,10 @@ json_object = json.dumps(dictionary, indent=4) # Writing to sample.json -with open("test_data.json", "w") as outfile: - outfile.write(json_object) \ No newline at end of file +filename = "test_data.json" +with open(filename, "w") as outfile: + outfile.write(json_object) + +script_dir = os.getcwd() +output_path = os.path.join(script_dir, "test_data.json") +print(f"Data written to {output_path}") \ No newline at end of file From a64d339b8e928e1c89366a28546ff8b544157f6a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 12:50:48 +0200 Subject: [PATCH 08/66] path fix --- scripts/setup.sh | 2 +- tests/generate_test_data.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/setup.sh b/scripts/setup.sh index 38adfc9..297b2ae 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -174,7 +174,7 @@ echo "Generating environment file..." python3 generate_environment.py echo "Generating test data file..." -cd ../tests +cd .. python3 generate_test_data.py echo "Shutting down OSRM backend..." diff --git a/tests/generate_test_data.py b/tests/generate_test_data.py index a673553..87144b8 100644 --- a/tests/generate_test_data.py +++ b/tests/generate_test_data.py @@ -15,7 +15,10 @@ json_object = json.dumps(dictionary, indent=4) # Writing to sample.json -filename = "test_data.json" +if not os.path.exists("tests"): + os.makedirs("tests") + +filename = "tests/test_data.json" with open(filename, "w") as outfile: outfile.write(json_object) From 5c68c75ee4a9b90bc608c2e7dec277a6e1a6804c Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:01:39 +0200 Subject: [PATCH 09/66] cmake update --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec11f9e..606859c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set(BUILD_SHARED_LIBS OFF) # Static library by default # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") From d8344eddae386844ae7fda89cd55fb2eb88022c6 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:08:09 +0200 Subject: [PATCH 10/66] updates --- CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 606859c..401c331 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(BUILD_SHARED_LIBS OFF) # Static library by default +if(BUILD_SHARED_LIBS) + message(STATUS "Building shared library") +else() + message(STATUS "Building static library") +endif() + # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") @@ -31,12 +37,14 @@ else() set(CMAKE_CXX_FLAGS_PERF "${CMAKE_CXX_FLAGS_RELEASE} -g -fno-omit-frame-pointer") endif() -message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") -if(CMAKE_BUILD_TYPE) - string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE_UPPER) - message(STATUS "${CMAKE_BUILD_TYPE} CXX Flags: ${CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER}}") +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") endif() +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") +string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE_UPPER) +message(STATUS "${CMAKE_BUILD_TYPE} CXX Flags: ${CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER}}") + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(FetchContent) From 238f0fbfa06777e8d3056a671e5920a1900535f7 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:16:33 +0200 Subject: [PATCH 11/66] Test --- .github/workflows/build_and_test.yml | 54 ++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 48c94dd..4ce4887 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -64,29 +64,50 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - - name: Generate Test Data - run: python tests/generate_test_data.py - working-directory: ${{ github.workspace }} - - - name: List directory after test data generation + + - name: Copy OR-Tools libraries to lib directory (Linux) + if: matrix.os == 'ubuntu-latest' + run: | + mkdir -p ${{ github.workspace }}/lib + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.so* ${{ github.workspace }}/lib/ + echo "LD_LIBRARY_PATH=${{ github.workspace }}/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV + + - name: Copy OR-Tools libraries to lib directory (macOS) + if: matrix.os == 'macos-latest' + run: | + mkdir -p ${{ github.workspace }}/lib + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.dylib* ${{ github.workspace }}/lib/ + echo "DYLD_LIBRARY_PATH=${{ github.workspace }}/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + + - name: Copy OR-Tools libraries to lib directory (Windows) + if: matrix.os == 'windows-latest' shell: bash run: | - echo "Build directory structure after test data generation:" - ls -la ${{ steps.strings.outputs.build-output-dir }} - echo "Tests directory structure:" - ls -la ${{ github.workspace }}/tests + mkdir -p ${{ github.workspace }}/lib + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/lib/ || echo "DLL not found in bin" + cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/lib/ || echo "DLL not found in Release" + # Add lib to PATH for Windows + echo "${{ github.workspace }}/lib" >> $GITHUB_PATH + + - name: Generate Test Data + run: python ${{ github.workspace }}/tests/generate_test_data.py + working-directory: ${{ steps.strings.outputs.build-output-dir }} - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} + env: + LD_LIBRARY_PATH: ${{ env.LD_LIBRARY_PATH }} + DYLD_LIBRARY_PATH: ${{ env.DYLD_LIBRARY_PATH }} - name: Upload Linux if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: palloc-linux - path: build/palloc + path: | + build/palloc + lib/*.so* if-no-files-found: error - name: Upload Windows @@ -94,7 +115,9 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-win - path: build/Release/palloc.exe + path: | + build/Release/palloc.exe + lib/*.dll if-no-files-found: error - name: Upload macOS @@ -102,6 +125,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-macos - path: build/palloc - if-no-files-found: error - + path: | + build/palloc + lib/*.dylib + if-no-files-found: error \ No newline at end of file From 6167a22d6e56f6069a9ba2c0c2f9a3ff47b61fa5 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:21:56 +0200 Subject: [PATCH 12/66] artifact changes --- .github/workflows/build_and_test.yml | 80 +++++++++++++++++++--------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4ce4887..330431b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -65,49 +65,83 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - name: Copy OR-Tools libraries to lib directory (Linux) + - name: Prepare Linux Package if: matrix.os == 'ubuntu-latest' run: | - mkdir -p ${{ github.workspace }}/lib - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.so* ${{ github.workspace }}/lib/ - echo "LD_LIBRARY_PATH=${{ github.workspace }}/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV + # Create package directory + mkdir -p ${{ github.workspace }}/palloc-linux/lib - - name: Copy OR-Tools libraries to lib directory (macOS) + # Copy executable + cp ${{ steps.strings.outputs.build-output-dir }}/palloc ${{ github.workspace }}/palloc-linux/ + + # Copy libraries + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.so* ${{ github.workspace }}/palloc-linux/lib/ + + # Create a simple README or run script + echo '#!/bin/bash + export LD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$LD_LIBRARY_PATH" + "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/palloc" "$@"' > ${{ github.workspace }}/palloc-linux/run.sh + + chmod +x ${{ github.workspace }}/palloc-linux/run.sh + + - name: Prepare macOS Package if: matrix.os == 'macos-latest' run: | - mkdir -p ${{ github.workspace }}/lib - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.dylib* ${{ github.workspace }}/lib/ - echo "DYLD_LIBRARY_PATH=${{ github.workspace }}/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + # Create package directory + mkdir -p ${{ github.workspace }}/palloc-macos/lib + + # Copy executable + cp ${{ steps.strings.outputs.build-output-dir }}/palloc ${{ github.workspace }}/palloc-macos/ + + # Copy libraries + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.dylib* ${{ github.workspace }}/palloc-macos/lib/ + + # Create a simple README or run script + echo '#!/bin/bash + export DYLD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$DYLD_LIBRARY_PATH" + "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/palloc" "$@"' > ${{ github.workspace }}/palloc-macos/run.sh + + chmod +x ${{ github.workspace }}/palloc-macos/run.sh - - name: Copy OR-Tools libraries to lib directory (Windows) + - name: Prepare Windows Package if: matrix.os == 'windows-latest' shell: bash run: | - mkdir -p ${{ github.workspace }}/lib - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/lib/ || echo "DLL not found in bin" - cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/lib/ || echo "DLL not found in Release" - # Add lib to PATH for Windows - echo "${{ github.workspace }}/lib" >> $GITHUB_PATH + # Create package directory + mkdir -p ${{ github.workspace }}/palloc-win + + # Copy executable + cp ${{ steps.strings.outputs.build-output-dir }}/Release/palloc.exe ${{ github.workspace }}/palloc-win/ + + # Copy libraries + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in bin" + cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in Release" + + # Create a simple batch file to run the program + echo '@echo off + %~dp0palloc.exe %*' > ${{ github.workspace }}/palloc-win/run.bat - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH + DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} env: - LD_LIBRARY_PATH: ${{ env.LD_LIBRARY_PATH }} - DYLD_LIBRARY_PATH: ${{ env.DYLD_LIBRARY_PATH }} + LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH + DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH + PATH: ${{ github.workspace }}/palloc-win:$PATH - name: Upload Linux if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: palloc-linux - path: | - build/palloc - lib/*.so* + path: palloc-linux if-no-files-found: error - name: Upload Windows @@ -115,9 +149,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-win - path: | - build/Release/palloc.exe - lib/*.dll + path: palloc-win if-no-files-found: error - name: Upload macOS @@ -125,7 +157,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-macos - path: | - build/palloc - lib/*.dylib + path: palloc-macos if-no-files-found: error \ No newline at end of file From 4a1c118a3cdd04d59156f97932d96246382e4179 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:27:35 +0200 Subject: [PATCH 13/66] reorder --- .github/workflows/build_and_test.yml | 100 +++++++++++++-------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 330431b..8eb6daf 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -43,15 +43,6 @@ jobs: shell: bash run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - - - name: Configure CMake (Unix) - if: matrix.os != 'windows-latest' - run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DFORCE_TESTS=ON - -S ${{ github.workspace }} - name: Configure CMake (Windows) if: matrix.os == 'windows-latest' @@ -61,10 +52,52 @@ jobs: -DFORCE_TESTS=ON -G "Visual Studio 17 2022" -A x64 -S ${{ github.workspace }} + + - name: Configure CMake (Unix) + if: matrix.os != 'windows-latest' + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DFORCE_TESTS=ON + -S ${{ github.workspace }} - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - + + - name: Generate Test Data + run: python ${{ github.workspace }}/tests/generate_test_data.py + working-directory: ${{ steps.strings.outputs.build-output-dir }} + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH + DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH + + - name: Test + run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose + working-directory: ${{ steps.strings.outputs.build-output-dir }} + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH + DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH + PATH: ${{ github.workspace }}/palloc-win:$PATH + + - name: Prepare Windows Package + if: matrix.os == 'windows-latest' + shell: bash + run: | + # Create package directory + mkdir -p ${{ github.workspace }}/palloc-win + + # Copy executable + cp ${{ steps.strings.outputs.build-output-dir }}/Release/palloc.exe ${{ github.workspace }}/palloc-win/ + + # Copy libraries + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in bin" + cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in Release" + + # Create a simple batch file to run the program + echo '@echo off + %~dp0palloc.exe %*' > ${{ github.workspace }}/palloc-win/run.bat + - name: Prepare Linux Package if: matrix.os == 'ubuntu-latest' run: | @@ -102,39 +135,14 @@ jobs: "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/palloc" "$@"' > ${{ github.workspace }}/palloc-macos/run.sh chmod +x ${{ github.workspace }}/palloc-macos/run.sh - - - name: Prepare Windows Package - if: matrix.os == 'windows-latest' - shell: bash - run: | - # Create package directory - mkdir -p ${{ github.workspace }}/palloc-win - - # Copy executable - cp ${{ steps.strings.outputs.build-output-dir }}/Release/palloc.exe ${{ github.workspace }}/palloc-win/ - - # Copy libraries - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in bin" - cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in Release" - - # Create a simple batch file to run the program - echo '@echo off - %~dp0palloc.exe %*' > ${{ github.workspace }}/palloc-win/run.bat - - name: Generate Test Data - run: python ${{ github.workspace }}/tests/generate_test_data.py - working-directory: ${{ steps.strings.outputs.build-output-dir }} - env: - LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH - DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH - - - name: Test - run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose - working-directory: ${{ steps.strings.outputs.build-output-dir }} - env: - LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH - DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH - PATH: ${{ github.workspace }}/palloc-win:$PATH + - name: Upload Windows + if: matrix.os == 'windows-latest' + uses: actions/upload-artifact@v4 + with: + name: palloc-win + path: palloc-win + if-no-files-found: error - name: Upload Linux if: matrix.os == 'ubuntu-latest' @@ -143,14 +151,6 @@ jobs: name: palloc-linux path: palloc-linux if-no-files-found: error - - - name: Upload Windows - if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v4 - with: - name: palloc-win - path: palloc-win - if-no-files-found: error - name: Upload macOS if: matrix.os == 'macos-latest' From e519e2297047a90b96b8083a11895181eeac1d81 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 13:30:23 +0200 Subject: [PATCH 14/66] revert --- .github/workflows/build_and_test.yml | 63 ---------------------------- 1 file changed, 63 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8eb6daf..27a47c8 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -68,73 +68,10 @@ jobs: - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} - env: - LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH - DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} - env: - LD_LIBRARY_PATH: ${{ github.workspace }}/palloc-linux/lib:$LD_LIBRARY_PATH - DYLD_LIBRARY_PATH: ${{ github.workspace }}/palloc-macos/lib:$DYLD_LIBRARY_PATH - PATH: ${{ github.workspace }}/palloc-win:$PATH - - - name: Prepare Windows Package - if: matrix.os == 'windows-latest' - shell: bash - run: | - # Create package directory - mkdir -p ${{ github.workspace }}/palloc-win - - # Copy executable - cp ${{ steps.strings.outputs.build-output-dir }}/Release/palloc.exe ${{ github.workspace }}/palloc-win/ - - # Copy libraries - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/bin/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in bin" - cp -L ${{ steps.strings.outputs.build-output-dir }}/Release/ortools.dll ${{ github.workspace }}/palloc-win/ || echo "DLL not found in Release" - - # Create a simple batch file to run the program - echo '@echo off - %~dp0palloc.exe %*' > ${{ github.workspace }}/palloc-win/run.bat - - - name: Prepare Linux Package - if: matrix.os == 'ubuntu-latest' - run: | - # Create package directory - mkdir -p ${{ github.workspace }}/palloc-linux/lib - - # Copy executable - cp ${{ steps.strings.outputs.build-output-dir }}/palloc ${{ github.workspace }}/palloc-linux/ - - # Copy libraries - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.so* ${{ github.workspace }}/palloc-linux/lib/ - - # Create a simple README or run script - echo '#!/bin/bash - export LD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$LD_LIBRARY_PATH" - "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/palloc" "$@"' > ${{ github.workspace }}/palloc-linux/run.sh - - chmod +x ${{ github.workspace }}/palloc-linux/run.sh - - - name: Prepare macOS Package - if: matrix.os == 'macos-latest' - run: | - # Create package directory - mkdir -p ${{ github.workspace }}/palloc-macos/lib - - # Copy executable - cp ${{ steps.strings.outputs.build-output-dir }}/palloc ${{ github.workspace }}/palloc-macos/ - - # Copy libraries - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools.dylib* ${{ github.workspace }}/palloc-macos/lib/ - - # Create a simple README or run script - echo '#!/bin/bash - export DYLD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$DYLD_LIBRARY_PATH" - "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/palloc" "$@"' > ${{ github.workspace }}/palloc-macos/run.sh - - chmod +x ${{ github.workspace }}/palloc-macos/run.sh - name: Upload Windows if: matrix.os == 'windows-latest' From d2c8fe1f6e4450a69dd1116ff6dacb8243d6bcad Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:03:22 +0200 Subject: [PATCH 15/66] debug --- .github/workflows/build_and_test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 27a47c8..c70124f 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -69,6 +69,13 @@ jobs: run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} + - name: print files + run: > + echo "Files in ${{ steps.strings.outputs.build-output-dir }}:" + ls -R ${{ steps.strings.outputs.build-output-dir }} + echo "Files in ${{ steps.strings.outputs.build-output-dir }}/tests:" + ls -R ${{ steps.strings.outputs.build-output-dir }}/tests + - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} From 8fbe6bb9a30fa9ae40d1a1eed61e655e03650be8 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:07:45 +0200 Subject: [PATCH 16/66] test fixg --- .github/workflows/build_and_test.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c70124f..3363776 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -69,16 +69,9 @@ jobs: run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} - - name: print files - run: > - echo "Files in ${{ steps.strings.outputs.build-output-dir }}:" - ls -R ${{ steps.strings.outputs.build-output-dir }} - echo "Files in ${{ steps.strings.outputs.build-output-dir }}/tests:" - ls -R ${{ steps.strings.outputs.build-output-dir }}/tests - - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose - working-directory: ${{ steps.strings.outputs.build-output-dir }} + working-directory: ${{ github.workspace }} - name: Upload Windows if: matrix.os == 'windows-latest' From 55e89bfa0f1c1781c4261df98765af70b396e764 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:10:25 +0200 Subject: [PATCH 17/66] debug --- .github/workflows/build_and_test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3363776..2ef1417 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -65,13 +65,21 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + - name: print files + run: | + echo "Files in ${{ steps.strings.outputs.build-output-dir }}:" + ls -R ${{ steps.strings.outputs.build-output-dir }} + echo "Files in ${{ steps.strings.outputs.build-output-dir }}/tests:" + ls -R ${{ steps.strings.outputs.build-output-dir }}/tests || echo "tests directory not found" + - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} + - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose - working-directory: ${{ github.workspace }} + working-directory: ${{ steps.strings.outputs.build-output-dir }} - name: Upload Windows if: matrix.os == 'windows-latest' From 4bc0f8afd08308e6f52f0a82b1c0bfbd6a527952 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:14:24 +0200 Subject: [PATCH 18/66] rm --- .github/workflows/build_and_test.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2ef1417..27a47c8 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -65,18 +65,10 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - name: print files - run: | - echo "Files in ${{ steps.strings.outputs.build-output-dir }}:" - ls -R ${{ steps.strings.outputs.build-output-dir }} - echo "Files in ${{ steps.strings.outputs.build-output-dir }}/tests:" - ls -R ${{ steps.strings.outputs.build-output-dir }}/tests || echo "tests directory not found" - - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ steps.strings.outputs.build-output-dir }} - - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} From 3108cc0f23b28b2b68a3adb3bd2451a9fd7f94ac Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:19:26 +0200 Subject: [PATCH 19/66] test --- .github/workflows/build_and_test.yml | 2 +- tests/generate_test_data.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 27a47c8..d43d941 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -67,7 +67,7 @@ jobs: - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py - working-directory: ${{ steps.strings.outputs.build-output-dir }} + working-directory: ${{ github.workspace }} - name: Test run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose diff --git a/tests/generate_test_data.py b/tests/generate_test_data.py index 87144b8..d76821c 100644 --- a/tests/generate_test_data.py +++ b/tests/generate_test_data.py @@ -23,5 +23,5 @@ outfile.write(json_object) script_dir = os.getcwd() -output_path = os.path.join(script_dir, "test_data.json") +output_path = os.path.join(script_dir, filename) print(f"Data written to {output_path}") \ No newline at end of file From f488a7767787168240c04b283111fe4929b11994 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:25:28 +0200 Subject: [PATCH 20/66] prepare lin pack --- .github/workflows/build_and_test.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index d43d941..56b1d33 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -73,6 +73,19 @@ jobs: run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} + - name: Prepare Linux package + if: matrix.os == 'ubuntu-latest' + run: | + mkdir -p palloc-linux/bin palloc-linux/lib + cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ + # Copy OR-Tools libraries to lib directory + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools*.so* palloc-linux/lib/ + # Create a shell script to run the program + echo '#!/bin/bash + export LD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$LD_LIBRARY_PATH" + "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/bin/palloc" "$@"' > palloc-linux/palloc.sh + chmod +x palloc-linux/palloc.sh + - name: Upload Windows if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 @@ -95,4 +108,4 @@ jobs: with: name: palloc-macos path: palloc-macos - if-no-files-found: error \ No newline at end of file + if-no-files-found: error From 8d067abc07d08ea053592a44d2faed9c6d6854cb Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:34:37 +0200 Subject: [PATCH 21/66] test --- .github/workflows/build_and_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 56b1d33..32aeade 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -91,7 +91,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-win - path: palloc-win + path: palloc-win/ if-no-files-found: error - name: Upload Linux @@ -99,7 +99,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-linux - path: palloc-linux + path: palloc-linux/ if-no-files-found: error - name: Upload macOS @@ -107,5 +107,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-macos - path: palloc-macos + path: palloc-macos/ if-no-files-found: error From 080c6fccbeeffc98757e1e84d735660c9d2a821a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:37:42 +0200 Subject: [PATCH 22/66] test --- .github/workflows/build_and_test.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 32aeade..2e0ca97 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -80,11 +80,18 @@ jobs: cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ # Copy OR-Tools libraries to lib directory cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools*.so* palloc-linux/lib/ - # Create a shell script to run the program - echo '#!/bin/bash - export LD_LIBRARY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/lib:$LD_LIBRARY_PATH" - "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/bin/palloc" "$@"' > palloc-linux/palloc.sh - chmod +x palloc-linux/palloc.sh + + # Fix links in the copied libraries + for lib in palloc-linux/lib/libortools*.so*; do + if [ -L "$lib" ]; then + target=$(readlink "$lib") + target_dir=$(dirname "$target") + target_name=$(basename "$target") + new_target="../lib/$target_name" + ln -sf "$new_target" "$lib" + fi + done + - name: Upload Windows if: matrix.os == 'windows-latest' From 2c8bf4a9071f20f3b0fe906958bbc427b93e3847 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:44:09 +0200 Subject: [PATCH 23/66] test --- .github/workflows/build_and_test.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2e0ca97..cce1a38 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -79,19 +79,7 @@ jobs: mkdir -p palloc-linux/bin palloc-linux/lib cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ # Copy OR-Tools libraries to lib directory - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/libortools*.so* palloc-linux/lib/ - - # Fix links in the copied libraries - for lib in palloc-linux/lib/libortools*.so*; do - if [ -L "$lib" ]; then - target=$(readlink "$lib") - target_dir=$(dirname "$target") - target_name=$(basename "$target") - new_target="../lib/$target_name" - ln -sf "$new_target" "$lib" - fi - done - + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ - name: Upload Windows if: matrix.os == 'windows-latest' From 2263d81510f037956e0d92ddca443ef0d1c09d3e Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:51:34 +0200 Subject: [PATCH 24/66] test --- .github/workflows/build_and_test.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index cce1a38..4d417a1 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -81,6 +81,19 @@ jobs: # Copy OR-Tools libraries to lib directory cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ + cat > palloc-linux/bin/palloc.original << EOF + #!/bin/bash + export LD_LIBRARY_PATH="\$(dirname "\$(dirname "\${BASH_SOURCE[0]}")")/lib:\$LD_LIBRARY_PATH" + exec "\$(dirname "\${BASH_SOURCE[0]}")/palloc.real" "\$@" + EOF + + + chmod +x palloc-linux/bin/palloc.original + + + mv palloc-linux/bin/palloc palloc-linux/bin/palloc.real + mv palloc-linux/bin/palloc.original palloc-linux/bin/palloc + - name: Upload Windows if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 From 5052ad71fcc96966651d386d9d0b5e5582e0b9ea Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Fri, 11 Apr 2025 14:58:30 +0200 Subject: [PATCH 25/66] test --- .github/workflows/build_and_test.yml | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4d417a1..65eb6f4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -81,18 +81,14 @@ jobs: # Copy OR-Tools libraries to lib directory cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ - cat > palloc-linux/bin/palloc.original << EOF - #!/bin/bash - export LD_LIBRARY_PATH="\$(dirname "\$(dirname "\${BASH_SOURCE[0]}")")/lib:\$LD_LIBRARY_PATH" - exec "\$(dirname "\${BASH_SOURCE[0]}")/palloc.real" "\$@" - EOF - - - chmod +x palloc-linux/bin/palloc.original - - - mv palloc-linux/bin/palloc palloc-linux/bin/palloc.real - mv palloc-linux/bin/palloc.original palloc-linux/bin/palloc + cd palloc-linux/bin + for lib in ../lib/*.so*; do + ln -s $lib . + done + + echo "Testing library linking:" + cd ${{ github.workspace }}/palloc-linux/bin + ldd ./palloc | grep -v "not found" - name: Upload Windows if: matrix.os == 'windows-latest' From 76460686dc5127bcd552b4b8ca5bdb18c1112275 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 11:56:21 +0200 Subject: [PATCH 26/66] linux test --- .github/workflows/build_and_test.yml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 65eb6f4..e60918c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -73,22 +73,29 @@ jobs: run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} - - name: Prepare Linux package + - name: Prepare Windows Package + if: matrix.os == 'windows-latest' + run: | + mkdir -p palloc-win/bin palloc-win/lib + cp ${{ steps.strings.outputs.build-output-dir }}/*.exe palloc-win/bin/ + cp ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.dll palloc-win/lib/ + + - name: Prepare Linux Package if: matrix.os == 'ubuntu-latest' run: | mkdir -p palloc-linux/bin palloc-linux/lib cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ - # Copy OR-Tools libraries to lib directory cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ + sudo apt-get update && sudo apt-get install -y patchelf + patchelf --set-rpath '$ORIGIN/../lib' palloc-linux/bin/palloc + patchelf --print-rpath palloc-linux/bin/palloc - cd palloc-linux/bin - for lib in ../lib/*.so*; do - ln -s $lib . - done - - echo "Testing library linking:" - cd ${{ github.workspace }}/palloc-linux/bin - ldd ./palloc | grep -v "not found" + - name: Prepare macOS Package + if: matrix.os == 'macos-latest' + run: | + mkdir -p palloc-macos/bin palloc-macos/lib + cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-macos/bin/ + cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.dylib palloc-macos/lib/ - name: Upload Windows if: matrix.os == 'windows-latest' From 9c2498a18c904ff97fc24f9efa789833d368ddea Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 12:04:07 +0200 Subject: [PATCH 27/66] simplification test --- .github/workflows/build_and_test.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index e60918c..c256e8c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -86,9 +86,7 @@ jobs: mkdir -p palloc-linux/bin palloc-linux/lib cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ - sudo apt-get update && sudo apt-get install -y patchelf patchelf --set-rpath '$ORIGIN/../lib' palloc-linux/bin/palloc - patchelf --print-rpath palloc-linux/bin/palloc - name: Prepare macOS Package if: matrix.os == 'macos-latest' @@ -96,13 +94,14 @@ jobs: mkdir -p palloc-macos/bin palloc-macos/lib cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-macos/bin/ cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.dylib palloc-macos/lib/ + install_name_tool -change @rpath/libortools.dylib @loader_path/../lib/libortools.dylib palloc-macos/bin/palloc - name: Upload Windows if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: palloc-win - path: palloc-win/ + path: palloc-win if-no-files-found: error - name: Upload Linux @@ -110,7 +109,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-linux - path: palloc-linux/ + path: palloc-linux if-no-files-found: error - name: Upload macOS @@ -118,5 +117,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-macos - path: palloc-macos/ + path: palloc-macos if-no-files-found: error From cffc9f2c90fa32a149a786c518d853f2ed66abc7 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 12:17:38 +0200 Subject: [PATCH 28/66] macos test --- CMakeLists.txt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 401c331..53dde0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,17 +16,20 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -set(BUILD_SHARED_LIBS OFF) # Static library by default - -if(BUILD_SHARED_LIBS) - message(STATUS "Building shared library") -else() - message(STATUS "Building static library") -endif() # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") +if(UNIX) + if(APPLE) + set(CMAKE_INSTALL_RPATH "@loader_path/../lib") + else() + set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") + endif() + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +endif() + if(WIN32) set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Od /DEBUG") set(CMAKE_CXX_FLAGS_RELEASE "/O2") @@ -37,7 +40,7 @@ else() set(CMAKE_CXX_FLAGS_PERF "${CMAKE_CXX_FLAGS_RELEASE} -g -fno-omit-frame-pointer") endif() -if (NOT CMAKE_BUILD_TYPE) +if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() From 95c897182e9179bcf9c4d853ea35702cdd97985b Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 13:09:53 +0200 Subject: [PATCH 29/66] simplficiation --- .github/workflows/build_and_test.yml | 29 +++------------------------- CMakeLists.txt | 26 +++++++++++++------------ 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c256e8c..9c29830 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -73,35 +73,12 @@ jobs: run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} - - name: Prepare Windows Package - if: matrix.os == 'windows-latest' - run: | - mkdir -p palloc-win/bin palloc-win/lib - cp ${{ steps.strings.outputs.build-output-dir }}/*.exe palloc-win/bin/ - cp ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.dll palloc-win/lib/ - - - name: Prepare Linux Package - if: matrix.os == 'ubuntu-latest' - run: | - mkdir -p palloc-linux/bin palloc-linux/lib - cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-linux/bin/ - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.so* palloc-linux/lib/ - patchelf --set-rpath '$ORIGIN/../lib' palloc-linux/bin/palloc - - - name: Prepare macOS Package - if: matrix.os == 'macos-latest' - run: | - mkdir -p palloc-macos/bin palloc-macos/lib - cp ${{ steps.strings.outputs.build-output-dir }}/palloc palloc-macos/bin/ - cp -L ${{ steps.strings.outputs.build-output-dir }}/or-tools/lib/*.dylib palloc-macos/lib/ - install_name_tool -change @rpath/libortools.dylib @loader_path/../lib/libortools.dylib palloc-macos/bin/palloc - - name: Upload Windows if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: palloc-win - path: palloc-win + path: ${{ steps.strings.outputs.build-output-dir }}/palloc-win if-no-files-found: error - name: Upload Linux @@ -109,7 +86,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-linux - path: palloc-linux + path: ${{ steps.strings.outputs.build-output-dir }}/palloc-linux if-no-files-found: error - name: Upload macOS @@ -117,5 +94,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: palloc-macos - path: palloc-macos + path: ${{ steps.strings.outputs.build-output-dir }}/palloc-macos if-no-files-found: error diff --git a/CMakeLists.txt b/CMakeLists.txt index 53dde0c..4962e4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,21 +15,20 @@ set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +# Output directory +if(WIN32) + set(PLATFORM_DIR "${CMAKE_BINARY_DIR}/palloc-win") +elseif(LINUX) + set(PLATFORM_DIR "${CMAKE_BINARY_DIR}/palloc-linux") +elseif(APPLE) + set(PLATFORM_DIR "${CMAKE_BINARY_DIR}/palloc-macos") +endif() +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") + # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") -if(UNIX) - if(APPLE) - set(CMAKE_INSTALL_RPATH "@loader_path/../lib") - else() - set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") - endif() - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -endif() - if(WIN32) set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Od /DEBUG") set(CMAKE_CXX_FLAGS_RELEASE "/O2") @@ -89,8 +88,8 @@ endif() set(ORTOOLS_URL "https://github.com/google/or-tools/releases/download/v${ORTOOLS_VERSION}/${ORTOOLS_PACKAGE}.${ORTOOLS_ARCHIVE_EXT}") set(ORTOOLS_DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/or-tools-download") -set(ORTOOLS_EXTRACT_DIR "${CMAKE_CURRENT_BINARY_DIR}/or-tools") set(ORTOOLS_ARCHIVE "${ORTOOLS_DOWNLOAD_DIR}/or-tools.${ORTOOLS_ARCHIVE_EXT}") +set(ORTOOLS_EXTRACT_DIR "${PLATFORM_DIR}/lib/or-tools") if(NOT EXISTS "${ORTOOLS_EXTRACT_DIR}") file(DOWNLOAD "${ORTOOLS_URL}" "${ORTOOLS_ARCHIVE}" SHOW_PROGRESS) @@ -108,9 +107,12 @@ if(NOT EXISTS "${ORTOOLS_EXTRACT_DIR}") endif() list(APPEND CMAKE_PREFIX_PATH "${ORTOOLS_EXTRACT_DIR}") + find_package(ortools REQUIRED) add_subdirectory(src) +# Put test executable in a different directory +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") enable_testing() add_subdirectory(tests) From 2dc61f88b378cf415b745671a2b364155d554359 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 13:30:55 +0200 Subject: [PATCH 30/66] lin test --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 9c29830..c9e61e5 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -83,7 +83,7 @@ jobs: - name: Upload Linux if: matrix.os == 'ubuntu-latest' - uses: actions/upload-artifact@v4 + uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-linux path: ${{ steps.strings.outputs.build-output-dir }}/palloc-linux From d6caf666a5fe1a5c7d45c9040517c80e44a7b060 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 13:54:03 +0200 Subject: [PATCH 31/66] linux test --- src/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 58e3c19..e3f1cbb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,8 @@ file(GLOB_RECURSE LIB_SOURCES "${PROJECT_SOURCE_DIR}/src/*.cpp") list(FILTER LIB_SOURCES EXCLUDE REGEX ".*palloc\\.cpp$") +set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) + add_executable(${PROJECT_NAME} "${PROJECT_SOURCE_DIR}/src/palloc.cpp") if(LIB_SOURCES) add_library(libpalloc STATIC ${LIB_SOURCES}) From f2eac510bcc7454028af72c1cde0351156ee41c5 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:03:47 +0200 Subject: [PATCH 32/66] visibility test --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2c72b82..08b26b7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,7 +22,7 @@ if(BUILD_TESTS) if (TEST_SOURCES) message(STATUS "Found test sources: ${TEST_SOURCES}") add_executable(palloc_tests ${TEST_SOURCES}) - target_link_libraries(palloc_tests PRIVATE libpalloc Catch2::Catch2WithMain) + target_link_libraries(palloc_tests PUBLIC libpalloc Catch2::Catch2WithMain) include(CTest) include(Catch) From 154a6c7ffd78b589be9fdfdaa184541fe4f1865a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:18:53 +0200 Subject: [PATCH 33/66] added threads dependency --- CMakeLists.txt | 4 ++++ src/CMakeLists.txt | 12 +++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4962e4a..6fc8d2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,6 +110,10 @@ list(APPEND CMAKE_PREFIX_PATH "${ORTOOLS_EXTRACT_DIR}") find_package(ortools REQUIRED) +# Threads +find_package(Threads REQUIRED) +message(STATUS "Threads found: ${Threads_FOUND}") + add_subdirectory(src) # Put test executable in a different directory diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e3f1cbb..10b748b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,13 +4,11 @@ list(FILTER LIB_SOURCES EXCLUDE REGEX ".*palloc\\.cpp$") set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) add_executable(${PROJECT_NAME} "${PROJECT_SOURCE_DIR}/src/palloc.cpp") -if(LIB_SOURCES) - add_library(libpalloc STATIC ${LIB_SOURCES}) - target_include_directories(libpalloc PUBLIC ${CMAKE_SOURCE_DIR}/include) - target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze) - set_target_properties(libpalloc PROPERTIES PREFIX "") - target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) -endif() +add_library(libpalloc STATIC ${LIB_SOURCES}) +target_include_directories(libpalloc PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze Threads::Threads) +set_target_properties(libpalloc PROPERTIES PREFIX "") +target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) if(NOT WIN32) set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") From 0d7ff6ceac556170298b5f3e82eb60561e9ed10f Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:25:16 +0200 Subject: [PATCH 34/66] update --- .github/workflows/build_and_test.yml | 5 +++-- CMakeLists.txt | 4 ---- src/CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c9e61e5..c5b3ba4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -16,6 +16,7 @@ jobs: build_type: [Release] include: - os: windows-latest + cpp_compiler: g++ - os: ubuntu-latest cpp_compiler: g++ - os: macos-latest @@ -75,7 +76,7 @@ jobs: - name: Upload Windows if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v4 + uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-win path: ${{ steps.strings.outputs.build-output-dir }}/palloc-win @@ -91,7 +92,7 @@ jobs: - name: Upload macOS if: matrix.os == 'macos-latest' - uses: actions/upload-artifact@v4 + uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-macos path: ${{ steps.strings.outputs.build-output-dir }}/palloc-macos diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fc8d2b..4962e4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,10 +110,6 @@ list(APPEND CMAKE_PREFIX_PATH "${ORTOOLS_EXTRACT_DIR}") find_package(ortools REQUIRED) -# Threads -find_package(Threads REQUIRED) -message(STATUS "Threads found: ${Threads_FOUND}") - add_subdirectory(src) # Put test executable in a different directory diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 10b748b..545ddcb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,7 +6,7 @@ set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) add_executable(${PROJECT_NAME} "${PROJECT_SOURCE_DIR}/src/palloc.cpp") add_library(libpalloc STATIC ${LIB_SOURCES}) target_include_directories(libpalloc PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze Threads::Threads) +target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze) set_target_properties(libpalloc PROPERTIES PREFIX "") target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) From 94b3e54f37c144a4a5350781f090c91b342862e6 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:29:53 +0200 Subject: [PATCH 35/66] g++ on win test --- .github/workflows/build_and_test.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c5b3ba4..b33b44b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -35,9 +35,11 @@ jobs: restore-keys: | ${{ runner.os }}-build- - - name: Setup MSVC + - name: Setup MinGW on Windows if: matrix.os == 'windows-latest' - uses: ilammy/msvc-dev-cmd@v1.13.0 + uses: egor-tensin/setup-mingw@v2 + with: + platform: x64 - name: Set Build Output Directory id: strings @@ -48,12 +50,13 @@ jobs: - name: Configure CMake (Windows) if: matrix.os == 'windows-latest' run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DFORCE_TESTS=ON - -G "Visual Studio 17 2022" -A x64 - -S ${{ github.workspace }} - + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DFORCE_TESTS=ON + -G "MinGW Makefiles" + -S ${{ github.workspace }} + - name: Configure CMake (Unix) if: matrix.os != 'windows-latest' run: > From ef98725d61e481ae40109043deae9cb824f7ccec Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:36:52 +0200 Subject: [PATCH 36/66] static fix --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b33b44b..a28f4e5 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -40,6 +40,7 @@ jobs: uses: egor-tensin/setup-mingw@v2 with: platform: x64 + static: 0 - name: Set Build Output Directory id: strings From 2f6ae56116feed474298b651655cc6c05c449e1d Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:41:32 +0200 Subject: [PATCH 37/66] use mingw 14.2 --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a28f4e5..8df6cb6 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -41,6 +41,7 @@ jobs: with: platform: x64 static: 0 + version: 14.2 - name: Set Build Output Directory id: strings From bfbcf0f47e1ccb79038e7f673b3b49d99e378b40 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:48:59 +0200 Subject: [PATCH 38/66] win test --- .github/workflows/build_and_test.yml | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8df6cb6..c5879e1 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -35,13 +35,18 @@ jobs: restore-keys: | ${{ runner.os }}-build- - - name: Setup MinGW on Windows + - name: Setup MSYS2 with GCC 14.2 if: matrix.os == 'windows-latest' - uses: egor-tensin/setup-mingw@v2 + uses: msys2/setup-msys2@v2 with: - platform: x64 - static: 0 - version: 14.2 + msystem: UCRT64 + update: true + install: >- + git + mingw-w64-ucrt-x86_64-gcc + mingw-w64-ucrt-x86_64-cmake + mingw-w64-ucrt-x86_64-ninja + make - name: Set Build Output Directory id: strings @@ -51,13 +56,14 @@ jobs: - name: Configure CMake (Windows) if: matrix.os == 'windows-latest' - run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - -DFORCE_TESTS=ON - -G "MinGW Makefiles" - -S ${{ github.workspace }} + shell: msys2 {0} + run: | + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_COMPILER=g++ \ + -DFORCE_TESTS=ON \ + -G "Ninja" \ + -S ${{ github.workspace }} - name: Configure CMake (Unix) if: matrix.os != 'windows-latest' From 28eed6a82d8778c8d6154e8aadd0a157c342bd8e Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:51:29 +0200 Subject: [PATCH 39/66] revert to msvc --- .github/workflows/build_and_test.yml | 29 +++++++++------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c5879e1..c5b3ba4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -35,18 +35,9 @@ jobs: restore-keys: | ${{ runner.os }}-build- - - name: Setup MSYS2 with GCC 14.2 + - name: Setup MSVC if: matrix.os == 'windows-latest' - uses: msys2/setup-msys2@v2 - with: - msystem: UCRT64 - update: true - install: >- - git - mingw-w64-ucrt-x86_64-gcc - mingw-w64-ucrt-x86_64-cmake - mingw-w64-ucrt-x86_64-ninja - make + uses: ilammy/msvc-dev-cmd@v1.13.0 - name: Set Build Output Directory id: strings @@ -56,15 +47,13 @@ jobs: - name: Configure CMake (Windows) if: matrix.os == 'windows-latest' - shell: msys2 {0} - run: | - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_COMPILER=g++ \ - -DFORCE_TESTS=ON \ - -G "Ninja" \ - -S ${{ github.workspace }} - + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DFORCE_TESTS=ON + -G "Visual Studio 17 2022" -A x64 + -S ${{ github.workspace }} + - name: Configure CMake (Unix) if: matrix.os != 'windows-latest' run: > From 2e69a1e73d7c1a21c57dd74e357de00e1cabf86d Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 14:51:42 +0200 Subject: [PATCH 40/66] revert to msvc --- .github/workflows/build_and_test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c5b3ba4..ad2dfad 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -16,7 +16,6 @@ jobs: build_type: [Release] include: - os: windows-latest - cpp_compiler: g++ - os: ubuntu-latest cpp_compiler: g++ - os: macos-latest From 69deb0f7e96f27a83fa8e918d37e6781be5e6297 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:01:40 +0200 Subject: [PATCH 41/66] debug log to test output --- tests/scheduler_test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/scheduler_test.cpp b/tests/scheduler_test.cpp index 4398177..50c7c0d 100644 --- a/tests/scheduler_test.cpp +++ b/tests/scheduler_test.cpp @@ -1,5 +1,7 @@ #include "scheduler.hpp" +#include + #include "catch2/catch_test_macros.hpp" #include "environment.hpp" #include "request_generator.hpp" @@ -7,7 +9,11 @@ using namespace palloc; TEST_CASE("Base case - [Scheduler]", "[Scheduler]") { - Environment env(std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"); + std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; + std::print("Loading environment from: {}\n", testDataPath.string()); + std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); + + Environment env(testDataPath); SECTION("Request being simulated") { Requests requests; From d51ca53fb6dffa758cc58e94a2d12ab6f8093422 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:07:07 +0200 Subject: [PATCH 42/66] debug logs --- include/settings.hpp | 2 +- src/palloc.cpp | 2 +- src/simulator.cpp | 4 ++-- tests/scheduler_test.cpp | 8 +++++++- tests/simulator_test.cpp | 8 +++++++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/include/settings.hpp b/include/settings.hpp index a0de08f..4a01350 100644 --- a/include/settings.hpp +++ b/include/settings.hpp @@ -19,7 +19,7 @@ struct SimulatorSettings { }; struct OutputSettings { - std::filesystem::path path; + std::filesystem::path outputPath; uint32_t numberOfRunsToAggregate; bool prettify; }; diff --git a/src/palloc.cpp b/src/palloc.cpp index 44f4db3..c0fb0ae 100644 --- a/src/palloc.cpp +++ b/src/palloc.cpp @@ -95,7 +95,7 @@ int main(int argc, char **argv) { simSettings.seed = seedOpt.value_or(std::chrono::system_clock::now().time_since_epoch().count()); - outputSettings.path = outputPathStr; + outputSettings.outputPath = outputPathStr; GeneralSettings generalSettings{ .numberOfThreads = numberOfThreadsOpt.value_or(std::min( diff --git a/src/simulator.cpp b/src/simulator.cpp index 335da90..2929be7 100644 --- a/src/simulator.cpp +++ b/src/simulator.cpp @@ -108,8 +108,8 @@ void Simulator::simulate(Environment &env, const SimulatorSettings &simSettings, std::println("Average objective cost: {}", globalAvgCost); std::println("Total requests dropped: {}", result.getDroppedRequests()); - if (!outputSettings.path.empty()) { - result.saveToFile(outputSettings.path, outputSettings.prettify); + if (!outputSettings.outputPath.empty()) { + result.saveToFile(outputSettings.outputPath, outputSettings.prettify); } } diff --git a/tests/scheduler_test.cpp b/tests/scheduler_test.cpp index 50c7c0d..c15a457 100644 --- a/tests/scheduler_test.cpp +++ b/tests/scheduler_test.cpp @@ -9,6 +9,7 @@ using namespace palloc; TEST_CASE("Base case - [Scheduler]", "[Scheduler]") { + std::print("Scheduler test 1\n"); std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; std::print("Loading environment from: {}\n", testDataPath.string()); std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); @@ -53,7 +54,12 @@ TEST_CASE("Base case - [Scheduler]", "[Scheduler]") { } TEST_CASE("Multiple requests - [Scheduler]") { - Environment env(std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"); + std::print("Scheduler test 2\n"); + std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; + std::print("Loading environment from: {}\n", testDataPath.string()); + std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); + + Environment env(testDataPath); SECTION("Parking is filled") { Requests requests; diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index 122a204..abe79c1 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -5,13 +5,19 @@ using namespace palloc; TEST_CASE("Base case - [Simulator]") { + std::print("Simulator test 1\n"); const std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; const std::filesystem::path tempResultPath = std::filesystem::path(PROJECT_ROOT) / "tests/temp_result.json"; + std::print("Loading environment from: {}\n", testDataPath.string()); + std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); + std::print("Loading result from: {}\n", tempResultPath.string()); + std::print("File exists: {}\n", (std::filesystem::exists(tempResultPath) ? "yes" : "no")); + OutputSettings outputSettings{ - .path = tempResultPath, .numberOfRunsToAggregate = 1, .prettify = true}; + .outputPath = tempResultPath, .numberOfRunsToAggregate = 1, .prettify = true}; GeneralSettings generalSettings{.numberOfThreads = 1}; constexpr auto timesteps = 1000; From e53b94d0ae9a2bd3c31043dfbb694753d76a5d51 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:11:17 +0200 Subject: [PATCH 43/66] test only linux --- .github/workflows/build_and_test.yml | 14 +++++++++++--- tests/scheduler_test.cpp | 16 ++-------------- tests/simulator_test.cpp | 5 ----- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ad2dfad..d4f2fed 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -49,11 +49,10 @@ jobs: run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DFORCE_TESTS=ON -G "Visual Studio 17 2022" -A x64 -S ${{ github.workspace }} - - name: Configure CMake (Unix) + - name: Configure CMake (Linux) if: matrix.os != 'windows-latest' run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} @@ -61,6 +60,14 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DFORCE_TESTS=ON -S ${{ github.workspace }} + + - name: Configure CMake (macOS) + if: matrix.os == 'macos-latest' + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} @@ -69,7 +76,8 @@ jobs: run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ github.workspace }} - - name: Test + - name: Test (Linux only) + if: matrix.os == 'ubuntu-latest' run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} diff --git a/tests/scheduler_test.cpp b/tests/scheduler_test.cpp index c15a457..4398177 100644 --- a/tests/scheduler_test.cpp +++ b/tests/scheduler_test.cpp @@ -1,7 +1,5 @@ #include "scheduler.hpp" -#include - #include "catch2/catch_test_macros.hpp" #include "environment.hpp" #include "request_generator.hpp" @@ -9,12 +7,7 @@ using namespace palloc; TEST_CASE("Base case - [Scheduler]", "[Scheduler]") { - std::print("Scheduler test 1\n"); - std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; - std::print("Loading environment from: {}\n", testDataPath.string()); - std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); - - Environment env(testDataPath); + Environment env(std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"); SECTION("Request being simulated") { Requests requests; @@ -54,12 +47,7 @@ TEST_CASE("Base case - [Scheduler]", "[Scheduler]") { } TEST_CASE("Multiple requests - [Scheduler]") { - std::print("Scheduler test 2\n"); - std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; - std::print("Loading environment from: {}\n", testDataPath.string()); - std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); - - Environment env(testDataPath); + Environment env(std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"); SECTION("Parking is filled") { Requests requests; diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index abe79c1..6ad889b 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -11,11 +11,6 @@ TEST_CASE("Base case - [Simulator]") { const std::filesystem::path tempResultPath = std::filesystem::path(PROJECT_ROOT) / "tests/temp_result.json"; - std::print("Loading environment from: {}\n", testDataPath.string()); - std::print("File exists: {}\n", (std::filesystem::exists(testDataPath) ? "yes" : "no")); - std::print("Loading result from: {}\n", tempResultPath.string()); - std::print("File exists: {}\n", (std::filesystem::exists(tempResultPath) ? "yes" : "no")); - OutputSettings outputSettings{ .outputPath = tempResultPath, .numberOfRunsToAggregate = 1, .prettify = true}; GeneralSettings generalSettings{.numberOfThreads = 1}; From 617e40c291d4387cd6039b0daaeb1c3c4fc6382c Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:25:22 +0200 Subject: [PATCH 44/66] test --- .github/workflows/build_and_test.yml | 3 ++- CMakeLists.txt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index d4f2fed..dbff1fe 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -72,7 +72,8 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - name: Generate Test Data + - name: Generate Test Data (Linux only) + if: matrix.os == 'ubuntu-latest' run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ github.workspace }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 4962e4a..1d6bfc6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,8 +76,8 @@ set(ORTOOLS_VERSION "9.12") set(ORTOOLS_BUILD "4544") if(WIN32) - set(ORTOOLS_PACKAGE "or-tools_x64_VisualStudio2022_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") - set(ORTOOLS_ARCHIVE_EXT "zip") + set(ORTOOLS_PACKAGE "Google.OrTools.${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") + set(ORTOOLS_ARCHIVE_EXT "nupkg") elseif(APPLE) set(ORTOOLS_PACKAGE "or-tools_arm64_macOS-15.3.1_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") set(ORTOOLS_ARCHIVE_EXT "tar.gz") From ce82d9eb637e628eccd0cfde3a02a410a863c01a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:40:45 +0200 Subject: [PATCH 45/66] windows dll fix --- CMakeLists.txt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d6bfc6..796c439 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,8 +76,8 @@ set(ORTOOLS_VERSION "9.12") set(ORTOOLS_BUILD "4544") if(WIN32) - set(ORTOOLS_PACKAGE "Google.OrTools.${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") - set(ORTOOLS_ARCHIVE_EXT "nupkg") + set(ORTOOLS_PACKAGE "or-tools_x64_VisualStudio2022_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") + set(ORTOOLS_ARCHIVE_EXT "zip") elseif(APPLE) set(ORTOOLS_PACKAGE "or-tools_arm64_macOS-15.3.1_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") set(ORTOOLS_ARCHIVE_EXT "tar.gz") @@ -106,6 +106,13 @@ if(NOT EXISTS "${ORTOOLS_EXTRACT_DIR}") endif() endif() +if(WIN32) + file(GLOB DLLS "${ORTOOLS_EXTRACT_DIR}/bin/*.dll") + foreach(DLL ${DLLS}) + file(COPY "${DLL}" DESTINATION "${PLATFORM_DIR}/bin") + endforeach() +endif() + list(APPEND CMAKE_PREFIX_PATH "${ORTOOLS_EXTRACT_DIR}") find_package(ortools REQUIRED) @@ -116,3 +123,8 @@ add_subdirectory(src) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") enable_testing() add_subdirectory(tests) + +# Cleanup +if(WIN32) + file(REMOVE_RECURSE "${PLATFORM_DIR}/lib") +endif() \ No newline at end of file From 21f4dfcf9cc9c384d123498646269c3a758aca5f Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:42:17 +0200 Subject: [PATCH 46/66] windows dll fix --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 796c439..d409bb5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,5 +126,9 @@ add_subdirectory(tests) # Cleanup if(WIN32) - file(REMOVE_RECURSE "${PLATFORM_DIR}/lib") + add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E remove_directory "${PLATFORM_DIR}/lib" + ) endif() \ No newline at end of file From f6afa393b63375c335fd1847f89847cc06e6693e Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 15:44:45 +0200 Subject: [PATCH 47/66] windows cleanup --- CMakeLists.txt | 9 --------- src/CMakeLists.txt | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d409bb5..a3b8720 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,12 +123,3 @@ add_subdirectory(src) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") enable_testing() add_subdirectory(tests) - -# Cleanup -if(WIN32) - add_custom_command( - TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E remove_directory "${PLATFORM_DIR}/lib" - ) -endif() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 545ddcb..3cf65b5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,4 +12,13 @@ target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) if(NOT WIN32) set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") +endif() + +# Cleanup +if(WIN32) + add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E remove_directory "${PLATFORM_DIR}/lib" + ) endif() \ No newline at end of file From 2f7b5ffb41c0f87b1fbca3ba81ebb935552588cc Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 16:11:51 +0200 Subject: [PATCH 48/66] win updates --- .github/workflows/build_and_test.yml | 4 +++- CMakeLists.txt | 10 +++++++++- src/CMakeLists.txt | 9 --------- tests/simulator_test.cpp | 1 - 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index dbff1fe..cd74ce9 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -87,7 +87,9 @@ jobs: uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-win - path: ${{ steps.strings.outputs.build-output-dir }}/palloc-win + path: | + ${{ steps.strings.outputs.build-output-dir }}/palloc-win + !${{ steps.strings.outputs.build-output-dir }}/palloc-win/lib if-no-files-found: error - name: Upload Linux diff --git a/CMakeLists.txt b/CMakeLists.txt index a3b8720..ea3cb78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,15 @@ elseif(APPLE) endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") - + +# Fix for MSVC insisting on adding more folders +if(MSVC) + foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") + endforeach() +endif() + # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3cf65b5..722622b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,12 +13,3 @@ target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) if(NOT WIN32) set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") endif() - -# Cleanup -if(WIN32) - add_custom_command( - TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E remove_directory "${PLATFORM_DIR}/lib" - ) -endif() \ No newline at end of file diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index 6ad889b..a1e5168 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -5,7 +5,6 @@ using namespace palloc; TEST_CASE("Base case - [Simulator]") { - std::print("Simulator test 1\n"); const std::filesystem::path testDataPath = std::filesystem::path(PROJECT_ROOT) / "tests/test_data.json"; const std::filesystem::path tempResultPath = From e136b209dfea8dc07a06ce253fbf5f9c3946c203 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 16:24:00 +0200 Subject: [PATCH 49/66] win subdir test --- CMakeLists.txt | 17 ++++++----------- src/CMakeLists.txt | 9 +++++++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea3cb78..29946aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,20 +24,15 @@ elseif(APPLE) set(PLATFORM_DIR "${CMAKE_BINARY_DIR}/palloc-macos") endif() -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") - -# Fix for MSVC insisting on adding more folders -if(MSVC) - foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") - endforeach() -endif() +foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") +endforeach() # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") -if(WIN32) +if(MSVC) set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Od /DEBUG") set(CMAKE_CXX_FLAGS_RELEASE "/O2") set(CMAKE_CXX_FLAGS_PERF "${CMAKE_CXX_FLAGS_RELEASE}") @@ -83,7 +78,7 @@ FetchContent_MakeAvailable(glaze) set(ORTOOLS_VERSION "9.12") set(ORTOOLS_BUILD "4544") -if(WIN32) +if(MSVC) set(ORTOOLS_PACKAGE "or-tools_x64_VisualStudio2022_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}") set(ORTOOLS_ARCHIVE_EXT "zip") elseif(APPLE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 722622b..c317110 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,6 +10,11 @@ target_link_libraries(libpalloc PUBLIC ortools::ortools glaze::glaze) set_target_properties(libpalloc PROPERTIES PREFIX "") target_link_libraries(${PROJECT_NAME} PRIVATE libpalloc) -if(NOT WIN32) - set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") +# Stop MSVC from making subdirectories +if(MSVC) + set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") endif() + +if(NOT MSVC) + set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") +endif() \ No newline at end of file From 9f09b00d593f0fec72d70b0c2c332a279eecbcd8 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 16:44:59 +0200 Subject: [PATCH 50/66] enable test for win --- .github/workflows/build_and_test.yml | 20 ++++++++++++++------ src/CMakeLists.txt | 13 ++++++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index cd74ce9..ce1425d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -50,6 +50,7 @@ jobs: cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -G "Visual Studio 17 2022" -A x64 + -DFORCE_TESTS=ON -S ${{ github.workspace }} - name: Configure CMake (Linux) @@ -72,13 +73,12 @@ jobs: - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - name: Generate Test Data (Linux only) - if: matrix.os == 'ubuntu-latest' + - name: Generate Test Data run: python ${{ github.workspace }}/tests/generate_test_data.py working-directory: ${{ github.workspace }} - - name: Test (Linux only) - if: matrix.os == 'ubuntu-latest' + - name: Test + if: matrix.os != 'macos-latest' run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} @@ -97,7 +97,14 @@ jobs: uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-linux - path: ${{ steps.strings.outputs.build-output-dir }}/palloc-linux + path: | + ${{ steps.strings.outputs.build-output-dir }}/palloc-linux + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/examples + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/include + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/Makefile + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/README.md + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/lib/cmake + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/lib/pkgconfig if-no-files-found: error - name: Upload macOS @@ -105,5 +112,6 @@ jobs: uses: eXhumer/upload-artifact@0b7d5f5684d3f642f978d2faad9ade64f5b4dd57 with: name: palloc-macos - path: ${{ steps.strings.outputs.build-output-dir }}/palloc-macos + path: | + ${{ steps.strings.outputs.build-output-dir }}/palloc-macos if-no-files-found: error diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c317110..3a9b2ef 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,4 +17,15 @@ endif() if(NOT MSVC) set_source_files_properties(${PROJECT_NAME}.cpp PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers") -endif() \ No newline at end of file +endif() + +# Move or-tools license file to lib/or-tools +add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${PLATFORM_DIR}/licenses/or-tools" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PLATFORM_DIR}/lib/or-tools/share/doc/ortools/LICENSE" + "${PLATFORM_DIR}/licenses/or-tools/LICENSE" + COMMENT "Copying OR-Tools license to output directory" +) From b169fa92a8d1130db73d068f32f7d3bf3b0c55a7 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 16:52:10 +0200 Subject: [PATCH 51/66] test fix + exclusion --- .github/workflows/build_and_test.yml | 18 ++++++++++++------ tests/request_generator_test.cpp | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ce1425d..b396080 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -99,12 +99,12 @@ jobs: name: palloc-linux path: | ${{ steps.strings.outputs.build-output-dir }}/palloc-linux - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/examples - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/include - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/Makefile - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/README.md - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/lib/cmake - !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/ortools/lib/pkgconfig + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/examples + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/include + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/Makefile + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/README.md + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/cmake + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/pkgconfig if-no-files-found: error - name: Upload macOS @@ -114,4 +114,10 @@ jobs: name: palloc-macos path: | ${{ steps.strings.outputs.build-output-dir }}/palloc-macos + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/examples + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/include + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/Makefile + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/README.md + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/cmake + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/pkgconfig if-no-files-found: error diff --git a/tests/request_generator_test.cpp b/tests/request_generator_test.cpp index 4d5fd3e..9bb1612 100644 --- a/tests/request_generator_test.cpp +++ b/tests/request_generator_test.cpp @@ -18,7 +18,7 @@ TEST_CASE("Base case - [Request Generator]") { constexpr uint32_t testRequestAmount = 1000; constexpr auto minRate = std::min(requestRate, 100); - const size_t upperBound = minRate + 3 * std::sqrt(minRate); + const size_t upperBound = std::ceil(minRate + 3 * std::sqrt(minRate)); for (uint32_t i = 0; i < testRequestAmount; ++i) { const auto newRequests = generator.generate(i); From 921cedf64da6d71c9b76a2f53de14acc79d43f18 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:00:02 +0200 Subject: [PATCH 52/66] fix broken test --- .github/workflows/build_and_test.yml | 4 ++++ tests/request_generator_test.cpp | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b396080..04f7dc5 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -105,6 +105,8 @@ jobs: !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/README.md !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/cmake !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/pkgconfig + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/bin + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/share if-no-files-found: error - name: Upload macOS @@ -120,4 +122,6 @@ jobs: !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/README.md !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/cmake !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/lib/pkgconfig + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/bin + !${{ steps.strings.outputs.build-output-dir }}/palloc-linux/lib/or-tools/share if-no-files-found: error diff --git a/tests/request_generator_test.cpp b/tests/request_generator_test.cpp index 9bb1612..d79ae9c 100644 --- a/tests/request_generator_test.cpp +++ b/tests/request_generator_test.cpp @@ -5,7 +5,7 @@ using namespace palloc; TEST_CASE("Base case - [Request Generator]") { - constexpr int requestRate = 10; + constexpr double requestRate = 10; constexpr int maxTimeTillArrival = 5; constexpr int maxRequestDuration = 10; constexpr int dropoffNodes = 3; @@ -17,7 +17,7 @@ TEST_CASE("Base case - [Request Generator]") { .requestRate = requestRate}); constexpr uint32_t testRequestAmount = 1000; - constexpr auto minRate = std::min(requestRate, 100); + constexpr auto minRate = std::max(requestRate, 100); const size_t upperBound = std::ceil(minRate + 3 * std::sqrt(minRate)); for (uint32_t i = 0; i < testRequestAmount; ++i) { const auto newRequests = generator.generate(i); From d62c6c552f106edc290bcbc75d67ba18c4b3ff6a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:06:27 +0200 Subject: [PATCH 53/66] test fix on win & enable all tests --- .github/workflows/build_and_test.yml | 1 - tests/request_generator_test.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 04f7dc5..856d0bc 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -78,7 +78,6 @@ jobs: working-directory: ${{ github.workspace }} - name: Test - if: matrix.os != 'macos-latest' run: ctest --build-config ${{ matrix.build_type }} --output-on-failure --verbose working-directory: ${{ steps.strings.outputs.build-output-dir }} diff --git a/tests/request_generator_test.cpp b/tests/request_generator_test.cpp index d79ae9c..2dcfcfa 100644 --- a/tests/request_generator_test.cpp +++ b/tests/request_generator_test.cpp @@ -17,7 +17,7 @@ TEST_CASE("Base case - [Request Generator]") { .requestRate = requestRate}); constexpr uint32_t testRequestAmount = 1000; - constexpr auto minRate = std::max(requestRate, 100); + const double minRate = std::max(requestRate, 100.0); const size_t upperBound = std::ceil(minRate + 3 * std::sqrt(minRate)); for (uint32_t i = 0; i < testRequestAmount; ++i) { const auto newRequests = generator.generate(i); From d379844e354bd36ba8b3563a1fafa6640cd0be21 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:08:23 +0200 Subject: [PATCH 54/66] enable macos test --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 856d0bc..7dd904d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -68,6 +68,7 @@ jobs: cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DFORCE_TESTS=ON -S ${{ github.workspace }} - name: Build From 1fa36eed0ddf2e077b98d425eaa45dfa4d8868fd Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:09:30 +0200 Subject: [PATCH 55/66] macos config fix --- .github/workflows/build_and_test.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 7dd904d..4d99285 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -53,7 +53,7 @@ jobs: -DFORCE_TESTS=ON -S ${{ github.workspace }} - - name: Configure CMake (Linux) + - name: Configure CMake (Unix) if: matrix.os != 'windows-latest' run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} @@ -61,15 +61,6 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DFORCE_TESTS=ON -S ${{ github.workspace }} - - - name: Configure CMake (macOS) - if: matrix.os == 'macos-latest' - run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DFORCE_TESTS=ON - -S ${{ github.workspace }} - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} From c9a1fc7774473c4180b67ac2e7b4679ccfb69c5c Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:27:22 +0200 Subject: [PATCH 56/66] fix for linux --- .gitignore | 3 ++- CMakeLists.txt | 5 +---- scripts/bench.sh | 2 +- scripts/memcheck.sh | 2 +- scripts/run_experiment.sh | 6 +++--- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index b801dc5..fa94b41 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ FlameGraph summary.txt .progress .progress_lock -job_list.txt \ No newline at end of file +job_list.txt +*.supp \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 29946aa..7c73bde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,10 +24,7 @@ elseif(APPLE) set(PLATFORM_DIR "${CMAKE_BINARY_DIR}/palloc-macos") endif() -foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") -endforeach() +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") diff --git a/scripts/bench.sh b/scripts/bench.sh index 66772d2..e886710 100755 --- a/scripts/bench.sh +++ b/scripts/bench.sh @@ -26,7 +26,7 @@ mkdir -p perf "$PERF_EXE" record --call-graph dwarf,8192 \ -e cycles:u \ --strict-freq \ - ./build/palloc -e data.json + ./build/palloc-linux/bin/palloc -e data.json "$PERF_EXE" script -i perf.data | \ ${FLAMEGRAPH_DIR}/stackcollapse-perf.pl | \ diff --git a/scripts/memcheck.sh b/scripts/memcheck.sh index 4bf3819..7c752b3 100755 --- a/scripts/memcheck.sh +++ b/scripts/memcheck.sh @@ -54,7 +54,7 @@ valgrind --leak-check=full \ --errors-for-leak-kinds=definite \ --error-exitcode=1 \ --suppressions=./ortools.supp \ - ./build/palloc -e "$1" + ./build/palloc-linux/bin/palloc -e "$1" # Remove the temporary suppression file rm ortools.supp \ No newline at end of file diff --git a/scripts/run_experiment.sh b/scripts/run_experiment.sh index 3b4a6c9..9063bec 100755 --- a/scripts/run_experiment.sh +++ b/scripts/run_experiment.sh @@ -8,8 +8,8 @@ if [[ "$(pwd)" != "$PROJECT_ROOT" ]]; then cd "$PROJECT_ROOT" fi -if [ ! -f "build/palloc" ]; then - echo "Error: build/palloc executable not found." +if [ ! -f "./build/palloc-linux/bin/palloc" ]; then + echo "Error: palloc executable not found." echo "Compiling the project..." ./scripts/compile.sh release exit 1 @@ -374,7 +374,7 @@ while read job_info; do output=$(echo $job_info | cut -d'|' -f5) ( - ./build/palloc -e environment.json -o "$output" -d "$duration" -A "$arrival" -r "$rate" -s "$seed" -a "$AGGREGATIONS" -t "$TIMESTEPS" "$WEIGHTS" > /dev/null 2>&1 + ./build/palloc-linux/bin/palloc -e environment.json -o "$output" -d "$duration" -A "$arrival" -r "$rate" -s "$seed" -a "$AGGREGATIONS" -t "$TIMESTEPS" "$WEIGHTS" > /dev/null 2>&1 # Log the run echo "Duration: ${duration}, Arrival: ${arrival}, Rate: ${rate}, Seed: ${seed}" >> "${exp_dir}/summary.txt" From bcb0ae78f9a9d6a17e049738b4b66798b633336b Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:29:20 +0200 Subject: [PATCH 57/66] debug log --- tests/simulator_test.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index a1e5168..59eec1e 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -2,6 +2,8 @@ #include "catch2/catch_test_macros.hpp" +#include + using namespace palloc; TEST_CASE("Base case - [Simulator]") { @@ -27,18 +29,22 @@ TEST_CASE("Base case - [Simulator]") { .batchInterval = batchInterval, .seed = seed}; + std::cout << "got here 1" << std::endl; + Environment env(testDataPath); + std::cout << "got here 2" << std::endl; Simulator::simulate(env, simSettings, outputSettings, generalSettings); + std::cout << "got here 3" << std::endl; Result result(tempResultPath); - + std::cout << "got here 4" << std::endl; const auto traces = result.getTraceLists()[0]; REQUIRE(traces.size() == timesteps); Trace earlierTrace = traces.front(); std::vector> assignements; - + std::cout << "got here 5" << std::endl; const size_t parkingAmount = earlierTrace.getAvailableParkingSpots() + earlierTrace.getNumberOfOngoingSimulations(); size_t tempDropAmount = 0; From eff9841e5460f174259bcb338a861c5a31c68425 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:33:03 +0200 Subject: [PATCH 58/66] revert --- CMakeLists.txt | 5 +++++ tests/simulator_test.cpp | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c73bde..3cf2858 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,11 @@ endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") +foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") +endforeach() + # Project root macro add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}") diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index 59eec1e..d270b6f 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -2,7 +2,7 @@ #include "catch2/catch_test_macros.hpp" -#include +#include using namespace palloc; @@ -29,22 +29,18 @@ TEST_CASE("Base case - [Simulator]") { .batchInterval = batchInterval, .seed = seed}; - std::cout << "got here 1" << std::endl; - Environment env(testDataPath); - std::cout << "got here 2" << std::endl; Simulator::simulate(env, simSettings, outputSettings, generalSettings); - std::cout << "got here 3" << std::endl; Result result(tempResultPath); - std::cout << "got here 4" << std::endl; + const auto traces = result.getTraceLists()[0]; REQUIRE(traces.size() == timesteps); Trace earlierTrace = traces.front(); std::vector> assignements; - std::cout << "got here 5" << std::endl; + const size_t parkingAmount = earlierTrace.getAvailableParkingSpots() + earlierTrace.getNumberOfOngoingSimulations(); size_t tempDropAmount = 0; From 1ae885057972b9e14647b396cc3a7c8a45356ccb Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:34:10 +0200 Subject: [PATCH 59/66] disable mac for now --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4d99285..b78f84e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-latest] + os: [windows-latest, ubuntu-latest] build_type: [Release] include: - os: windows-latest From c52abd45172b867cb031776640613c3d6b54880d Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:37:59 +0200 Subject: [PATCH 60/66] rm macos from matrix --- .github/workflows/build_and_test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b78f84e..9695ae6 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -12,14 +12,11 @@ jobs: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest] build_type: [Release] include: - os: windows-latest - os: ubuntu-latest cpp_compiler: g++ - - os: macos-latest - cpp_compiler: g++ steps: - name: Checkout From c29a338b457d25eee7350a7bfabfd1570e9da47a Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:38:32 +0200 Subject: [PATCH 61/66] matrix fix --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 9695ae6..ff99d00 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -12,6 +12,7 @@ jobs: fail-fast: false matrix: + os: [windows-latest, ubuntu-latest] build_type: [Release] include: - os: windows-latest From 06c8407fea76694d443c9ea406814aa426580ef7 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:47:54 +0200 Subject: [PATCH 62/66] small fix for windows --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cf2858..459c72c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,6 @@ elseif(APPLE) endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PLATFORM_DIR}/bin") - foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${PLATFORM_DIR}/bin") @@ -126,5 +125,10 @@ add_subdirectory(src) # Put test executable in a different directory set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") +foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_BINARY_DIR}/tests") +endforeach() + enable_testing() add_subdirectory(tests) From a14f64eb02b943ab303e2bb82024149872d34420 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 17:59:44 +0200 Subject: [PATCH 63/66] small updates --- scripts/setup.sh | 2 +- src/palloc.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/setup.sh b/scripts/setup.sh index 297b2ae..1ed5ebd 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -175,7 +175,7 @@ python3 generate_environment.py echo "Generating test data file..." cd .. -python3 generate_test_data.py +python3 tests/generate_test_data.py echo "Shutting down OSRM backend..." sudo docker stop $CONTAINER_ID > /dev/null diff --git a/src/palloc.cpp b/src/palloc.cpp index c0fb0ae..00e0329 100644 --- a/src/palloc.cpp +++ b/src/palloc.cpp @@ -55,13 +55,13 @@ int main(int argc, char **argv) { "number of aggregates)"}}; argz::parse(about, opts, argc, argv); - if (environmentPathStr.empty() && !about.printed_help) { - std::println(stderr, "Error: Expected environment file"); - return EXIT_FAILURE; + if (about.printed_help || about.printed_version) { + return EXIT_SUCCESS; } if (environmentPathStr.empty()) { - return EXIT_SUCCESS; + std::println(stderr, "Error: Expected environment file"); + return EXIT_FAILURE; } if (simSettings.timesteps < 1) { From ef78f31f76bc13232f6711c2dd8e202a8e63b95b Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 18:05:36 +0200 Subject: [PATCH 64/66] removed unused import --- tests/simulator_test.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/simulator_test.cpp b/tests/simulator_test.cpp index d270b6f..a1e5168 100644 --- a/tests/simulator_test.cpp +++ b/tests/simulator_test.cpp @@ -2,8 +2,6 @@ #include "catch2/catch_test_macros.hpp" -#include - using namespace palloc; TEST_CASE("Base case - [Simulator]") { From 0ab24085361a6f167d9b8d6d2d68dadf6e83eff6 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 18:11:46 +0200 Subject: [PATCH 65/66] win fix --- .github/workflows/build_and_test.yml | 1 + CMakeLists.txt | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ff99d00..5343e5c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -79,6 +79,7 @@ jobs: path: | ${{ steps.strings.outputs.build-output-dir }}/palloc-win !${{ steps.strings.outputs.build-output-dir }}/palloc-win/lib + !${{ steps.strings.outputs.build-output-dir }}/palloc-win/bin/palloc_tests.exe if-no-files-found: error - name: Upload Linux diff --git a/CMakeLists.txt b/CMakeLists.txt index 459c72c..c87ee83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,12 +123,10 @@ find_package(ortools REQUIRED) add_subdirectory(src) -# Put test executable in a different directory -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") -foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_BINARY_DIR}/tests") -endforeach() +# Put test executable in a different directory for Unix +if(UNIX) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") +endif() enable_testing() add_subdirectory(tests) From e7bcc744b92a108f5568324f5a6decb5f66aad54 Mon Sep 17 00:00:00 2001 From: Mikkel Tygesen Date: Mon, 14 Apr 2025 18:12:38 +0200 Subject: [PATCH 66/66] just to be sure --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c87ee83..cca092e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,10 @@ add_subdirectory(src) # Put test executable in a different directory for Unix if(UNIX) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") + foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_BINARY_DIR}/tests") + endforeach() endif() enable_testing()