From ca35b839b1d7c7a4c9dd9339694e407b9c6db339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:32:49 -0400 Subject: [PATCH 01/27] add dev test --- .github/workflows/test_dev.yml | 51 +++++++++++ Project.toml | 4 +- src/CoolProp.jl | 14 ++- test/CoolPropDevLoader/Project.toml | 18 ++++ .../src/CoolPropDevLoader.jl | 90 +++++++++++++++++++ 5 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/test_dev.yml create mode 100644 test/CoolPropDevLoader/Project.toml create mode 100644 test/CoolPropDevLoader/src/CoolPropDevLoader.jl diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml new file mode 100644 index 0000000..559538b --- /dev/null +++ b/.github/workflows/test_dev.yml @@ -0,0 +1,51 @@ +name: Unit Tests + +on: + - cron: '0 0 * * *' + - workflow_dispatch: + +concurrency: + # Skip intermediate builds: all builds except for builds on the `master` branch + # Cancel intermediate builds: only pull request builds + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + test-coolprop-dev: + timeout-minutes: 40 + strategy: + matrix: + os: + - "ubuntu-latest" + julia_version: + - "nightly" + - "1" + - "1.10" + fail-fast: false + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v7 + + - uses: julia-actions/setup-julia@v3 + with: + arch: ${{ matrix.julia_arch }} + version: ${{ matrix.julia_version }} + - uses: julia-actions/cache@v3 + + - name: add CoolPropDevLoader + shell: julia --color=yes --project=. {0} + run: | + using Pkg + Pkg.develop(path="test/CoolPropDevLoader") + + - name: test dev + shell: julia --color=yes --project=test {0} + run: | + using Pkg + Pkg.develop(path="test/CoolPropDevLoader") + using CoolPropDevLoader + CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) + + - uses: julia-actions/julia-runtest@v1 \ No newline at end of file diff --git a/Project.toml b/Project.toml index 8d3eb71..5ed719e 100644 --- a/Project.toml +++ b/Project.toml @@ -5,12 +5,14 @@ version = "0.2.2" [deps] CoolProp_jll = "3351c21f-4feb-5f29-afb9-f4fcb0e27549" Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a" +Preferences = "21216c6a-2e73-6563-6e65-726566657250" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [compat] CoolProp_jll = "6.6, 7.1" julia = "1.3" -Unitful="1" +Preferences = "1" +Unitful = "1" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/src/CoolProp.jl b/src/CoolProp.jl index 9a7b964..d6c2d6d 100644 --- a/src/CoolProp.jl +++ b/src/CoolProp.jl @@ -1,8 +1,20 @@ #__precompile__() module CoolProp + + import Unitful -using CoolProp_jll +import CoolProp_jll + +@static if VERSION >= v"1.6" + using Preferences +end + +@static if VERSION >= v"1.6" + const libcoolprop = @load_preference("coolprop_library", CoolProp_jll.libcoolprop) +else + const libcoolprop = CoolProp_jll.libcoolprop +end #################################################################################################################### #################################################################################################################### diff --git a/test/CoolPropDevLoader/Project.toml b/test/CoolPropDevLoader/Project.toml new file mode 100644 index 0000000..86242d5 --- /dev/null +++ b/test/CoolPropDevLoader/Project.toml @@ -0,0 +1,18 @@ +name = "CoolPropDevLoader" +uuid = "e084ae63-2819-5025-826e-f8e611a84251" +version = "1.0.0" + +[deps] +Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +Preferences = "21216c6a-2e73-6563-6e65-726566657250" + +[compat] +Downloads = "1" +julia = "1.3" +Preferences = "1" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl new file mode 100644 index 0000000..52b5934 --- /dev/null +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -0,0 +1,90 @@ +module CoolPropDevLoader + +using Preferences +using Downloads + +const SOURCEFORGE_URL = https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip +const COOLPROP_UUID = "e084ae63-2819-5025-826e-f8e611a84251" + +#only available in linux +function compile_from_sourceforge() + # 1. Configuration + download_url = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" + build_dir = joinpath(@__DIR__, "coolprop_build") # Change as needed + source_zip = joinpath(build_dir, "CoolProp_sources.zip") + extract_dir = joinpath(build_dir, "CoolProp") + lib_name = "libCoolProp.so" + + # 2. Create build directory + mkpath(build_dir) + + # 3. Download the source zip + @info "Downloading CoolProp source from $download_url..." + # SourceForge redirects: we need to find the actual download link + # The nightly source is typically at: + # https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download + + Downloads.download(download_url, source_zip) + + # 4. Extract the zip + @info "Extracting source..." + run(`unzip -q $source_zip -d $build_dir`) + + # 5. Prepare for CMake build + cd(extract_dir) do + # Create build directory inside extracted source + build_subdir = joinpath(extract_dir, "build") + mkpath(build_subdir) + cd(build_subdir) do + # 6. Configure with CMake - build shared library + @info "Configuring with CMake..." + run(`cmake .. -DCOOLPROP_SHARED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release`) + + # 7. Build + @info "Compiling CoolProp (this may take a few minutes)..." + run(`cmake --build . --config Release --parallel $(Sys.CPU_THREADS)`) + end + end + + # 8. Locate the generated shared library + # The library is typically in build/ or build/Release/ + possible_paths = [ + joinpath(extract_dir, "build", lib_name), + joinpath(extract_dir, "build", "Release", lib_name), + joinpath(extract_dir, "build", "lib", lib_name), + ] + + lib_path = nothing + for p in possible_paths + if isfile(p) + lib_path = p + break + end + end + + if lib_path === nothing + error("Could not find compiled library. Looked in: $(join(possible_paths, ", "))") + end + + @info "CoolProp library built successfully at: $lib_path" + return lib_path +end + +struct CompileCoolPropFromSourceforge end + +function use_dev_library(::CompileCoolPropFromSourceforge) + lib_src = compile_from_sourceforge() + set_preferences!(COOLPROP_UUID,"coolprop_library" => lib_src, force = true) + @info "Preference set to $lib_src" +end + +function use_dev_library(lib_src::String) + set_preferences!(COOLPROP_UUID,"coolprop_library" => lib_src, force = true) + @info "Preference set to $lib_src" +end + +function use_default_library() + delete_preferences!(COOLPROP_UUID,"coolprop_library",force = true) +end + +end #module \ No newline at end of file From 0a6d65ea1b2c3bb113a5d12dc8a77465314cd49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:34:45 -0400 Subject: [PATCH 02/27] typo --- .github/workflows/test_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 559538b..363b8f5 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -2,7 +2,7 @@ name: Unit Tests on: - cron: '0 0 * * *' - - workflow_dispatch: + - workflow_dispatch concurrency: # Skip intermediate builds: all builds except for builds on the `master` branch From e762a5c7abd81773ec4fa335e22e1ba780f758ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:37:12 -0400 Subject: [PATCH 03/27] typo on yml --- .github/workflows/test_dev.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 363b8f5..343705f 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -1,8 +1,9 @@ -name: Unit Tests +name: Development Tests on: - - cron: '0 0 * * *' - - workflow_dispatch + schedule: + - cron: 0 0 * * * + workflow_dispatch: concurrency: # Skip intermediate builds: all builds except for builds on the `master` branch From 8ae40c206bbe852fba26e5729bf995bc8e26754f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:40:12 -0400 Subject: [PATCH 04/27] try to run this test when the yml is modified --- .github/workflows/test_dev.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 343705f..c24af36 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -4,6 +4,9 @@ on: schedule: - cron: 0 0 * * * workflow_dispatch: + push: + paths: + - '.github/**' concurrency: # Skip intermediate builds: all builds except for builds on the `master` branch From b4e7730778608396f0ca6d249c4b1c97cd83c19c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:41:24 -0400 Subject: [PATCH 05/27] add arch --- .github/workflows/test_dev.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index c24af36..c70cf9f 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -25,6 +25,8 @@ jobs: - "nightly" - "1" - "1.10" + arch: + - x64 fail-fast: false runs-on: ${{ matrix.os }} From 675b9c31bc9b6151580bf7ab618f764c0515f25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:44:20 -0400 Subject: [PATCH 06/27] add arch (2) --- .github/workflows/test_dev.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index c70cf9f..4915d60 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -19,14 +19,13 @@ jobs: timeout-minutes: 40 strategy: matrix: + version: + - 'lts' + - '1' os: - - "ubuntu-latest" - julia_version: - - "nightly" - - "1" - - "1.10" + - ubuntu-latest arch: - - x64 + - x64 fail-fast: false runs-on: ${{ matrix.os }} From 71510610535a007a1eddc6734eeb906c09b897a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:46:22 -0400 Subject: [PATCH 07/27] fix yml --- .github/workflows/test_dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 4915d60..2974d5a 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -19,12 +19,12 @@ jobs: timeout-minutes: 40 strategy: matrix: - version: + julia_version: - 'lts' - '1' os: - ubuntu-latest - arch: + julia_arch: - x64 fail-fast: false runs-on: ${{ matrix.os }} From 002c9d2310c5d45633eb73371190c8b6ba82c70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:48:09 -0400 Subject: [PATCH 08/27] update CoolPropDevLoader uuid --- test/CoolPropDevLoader/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CoolPropDevLoader/Project.toml b/test/CoolPropDevLoader/Project.toml index 86242d5..0e55c83 100644 --- a/test/CoolPropDevLoader/Project.toml +++ b/test/CoolPropDevLoader/Project.toml @@ -1,5 +1,5 @@ name = "CoolPropDevLoader" -uuid = "e084ae63-2819-5025-826e-f8e611a84251" +uuid = "1abf7821-c65a-4ba0-83a4-5660520f37c7" version = "1.0.0" [deps] From 07139a146c468030489461174f83ed65a484761a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:51:42 -0400 Subject: [PATCH 09/27] reduce to 20 min again --- .github/workflows/test_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 2974d5a..6b8f7cf 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -16,7 +16,7 @@ concurrency: jobs: test-coolprop-dev: - timeout-minutes: 40 + timeout-minutes: 20 strategy: matrix: julia_version: From 38dd7f2743f25b3e16d2d48a7aef41722b4e48db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:53:41 -0400 Subject: [PATCH 10/27] big typo --- .github/workflows/test_dev.yml | 1 + test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 6b8f7cf..a1c0ef4 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -7,6 +7,7 @@ on: push: paths: - '.github/**' + - 'test/CoolPropDevLoader/**' concurrency: # Skip intermediate builds: all builds except for builds on the `master` branch diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 52b5934..b7e05ce 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -3,13 +3,13 @@ module CoolPropDevLoader using Preferences using Downloads -const SOURCEFORGE_URL = https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip +const SOURCEFORGE_URL = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" const COOLPROP_UUID = "e084ae63-2819-5025-826e-f8e611a84251" #only available in linux function compile_from_sourceforge() # 1. Configuration - download_url = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" + download_url = SOURCEFORGE_URL build_dir = joinpath(@__DIR__, "coolprop_build") # Change as needed source_zip = joinpath(build_dir, "CoolProp_sources.zip") extract_dir = joinpath(build_dir, "CoolProp") From 966bb6ddcc8eab32e519d4cc40069684c3ae621c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:57:08 -0400 Subject: [PATCH 11/27] typo --- test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index b7e05ce..8ba619e 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -17,7 +17,8 @@ function compile_from_sourceforge() # 2. Create build directory mkpath(build_dir) - + mkpath(extract_dir) + # 3. Download the source zip @info "Downloading CoolProp source from $download_url..." # SourceForge redirects: we need to find the actual download link From 98b92ba3fc5d085f2c7a46d657c47803a30949d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 20:04:07 -0400 Subject: [PATCH 12/27] use changes suggested by llm --- .../src/CoolPropDevLoader.jl | 76 ++++++++++++------- 1 file changed, 50 insertions(+), 26 deletions(-) diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 8ba619e..11afebe 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -9,10 +9,10 @@ const COOLPROP_UUID = "e084ae63-2819-5025-826e-f8e611a84251" #only available in linux function compile_from_sourceforge() # 1. Configuration - download_url = SOURCEFORGE_URL + url = SOURCEFORGE_URL build_dir = joinpath(@__DIR__, "coolprop_build") # Change as needed source_zip = joinpath(build_dir, "CoolProp_sources.zip") - extract_dir = joinpath(build_dir, "CoolProp") + extract_dir = build_dir # We'll extract directly into build_dir, then locate source root lib_name = "libCoolProp.so" # 2. Create build directory @@ -20,39 +20,59 @@ function compile_from_sourceforge() mkpath(extract_dir) # 3. Download the source zip - @info "Downloading CoolProp source from $download_url..." - # SourceForge redirects: we need to find the actual download link - # The nightly source is typically at: - # https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download - + @info "Downloading CoolProp source from $url..." + download_url = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" Downloads.download(download_url, source_zip) - # 4. Extract the zip + # 4. Extract the zip into build_dir @info "Extracting source..." run(`unzip -q $source_zip -d $build_dir`) - # 5. Prepare for CMake build - cd(extract_dir) do - # Create build directory inside extracted source - build_subdir = joinpath(extract_dir, "build") - mkpath(build_subdir) - cd(build_subdir) do - # 6. Configure with CMake - build shared library - @info "Configuring with CMake..." - run(`cmake .. -DCOOLPROP_SHARED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release`) - - # 7. Build - @info "Compiling CoolProp (this may take a few minutes)..." - run(`cmake --build . --config Release --parallel $(Sys.CPU_THREADS)`) + # 5. Find the actual source root: a directory that contains CMakeLists.txt + @info "Locating source root..." + function find_cmakelists_root(dir) + # Check if dir itself contains CMakeLists.txt + if isfile(joinpath(dir, "CMakeLists.txt")) + return dir + end + # Otherwise, look for a subdirectory that contains it + for entry in readdir(dir) + path = joinpath(dir, entry) + if isdir(path) && isfile(joinpath(path, "CMakeLists.txt")) + return path + end end + # If not found, search recursively (but be careful with deep structures) + for (root, dirs, files) in walkdir(dir) + if "CMakeLists.txt" in files + return root + end + end + error("Could not find CMakeLists.txt anywhere in $dir") end - # 8. Locate the generated shared library - # The library is typically in build/ or build/Release/ + source_root = find_cmakelists_root(extract_dir) + @info "Source root found at: $source_root" + + # 6. Prepare for CMake build: create a build subdirectory inside source_root + build_subdir = joinpath(source_root, "build") + mkpath(build_subdir) + cd(build_subdir) do + # 7. Configure with CMake - build shared library + @info "Configuring with CMake..." + run(`cmake .. -DCOOLPROP_SHARED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release`) + + # 8. Build + @info "Compiling CoolProp (this may take a few minutes)..." + run(`cmake --build . --config Release --parallel $(Sys.CPU_THREADS)`) + end + + # 9. Locate the generated shared library + # The library is typically in build/ or build/Release/ or build/lib/ possible_paths = [ - joinpath(extract_dir, "build", lib_name), - joinpath(extract_dir, "build", "Release", lib_name), - joinpath(extract_dir, "build", "lib", lib_name), + joinpath(source_root, "build", lib_name), + joinpath(source_root, "build", "Release", lib_name), + joinpath(source_root, "build", "lib", lib_name), ] lib_path = nothing @@ -71,6 +91,10 @@ function compile_from_sourceforge() return lib_path end +# Usage +lib_path = build_coolprop() +@info "Library path: $lib_path" + struct CompileCoolPropFromSourceforge end function use_dev_library(::CompileCoolPropFromSourceforge) From 1536b15060c2a5d53d33b253c544c719e16031d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 20:05:43 -0400 Subject: [PATCH 13/27] typo --- test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 11afebe..54cd1e3 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -91,10 +91,6 @@ function compile_from_sourceforge() return lib_path end -# Usage -lib_path = build_coolprop() -@info "Library path: $lib_path" - struct CompileCoolPropFromSourceforge end function use_dev_library(::CompileCoolPropFromSourceforge) From c6820ee715b673ffa796b6e7e8a619618046c764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 20:18:21 -0400 Subject: [PATCH 14/27] fix test loader --- .github/workflows/test_dev.yml | 2 +- README.md | 9 +++++++++ test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index a1c0ef4..c4bb3d7 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -17,7 +17,7 @@ concurrency: jobs: test-coolprop-dev: - timeout-minutes: 20 + timeout-minutes: 30 strategy: matrix: julia_version: diff --git a/README.md b/README.md index 68a2f27..111e8b2 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,12 @@ using Unitful: °C, Pa HAPropsSI("H", "Tdb", 20°C, "RH", 0.5, "P", 101325Pa) 38622.83892391293 J kg⁻¹ ``` + +## Using development versions of CoolProp + +You can point CoolProp.jl to use tyour own version of CoolProp by using `Preferences.jl`: + +```julia +using CoolProp, Preferences +@set_reference!(CoolProp,"coolprop_library" = my_path_to_library) +``` \ No newline at end of file diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 54cd1e3..580471a 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -100,12 +100,12 @@ function use_dev_library(::CompileCoolPropFromSourceforge) end function use_dev_library(lib_src::String) - set_preferences!(COOLPROP_UUID,"coolprop_library" => lib_src, force = true) + set_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library" => lib_src, force = true,active_project_only = false) @info "Preference set to $lib_src" end function use_default_library() - delete_preferences!(COOLPROP_UUID,"coolprop_library",force = true) + delete_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library",force = true,active_project_only = false) end end #module \ No newline at end of file From 023c522d109e3bd80e88b3b5ced7c3b6482b2d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 20:55:23 -0400 Subject: [PATCH 15/27] try with export_prefs = true --- test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 580471a..9db429a 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -100,12 +100,12 @@ function use_dev_library(::CompileCoolPropFromSourceforge) end function use_dev_library(lib_src::String) - set_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library" => lib_src, force = true,active_project_only = false) + set_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library" => lib_src, force = true,active_project_only = false,export_prefs = true) @info "Preference set to $lib_src" end function use_default_library() - delete_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library",force = true,active_project_only = false) + delete_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library",force = true,active_project_only = false,export_prefs = true) end end #module \ No newline at end of file From 36f8d341204cf8ca999559353a6f8abb62562718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:06:15 -0400 Subject: [PATCH 16/27] let's try this --- .github/workflows/test_dev.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index c4bb3d7..d4ddf64 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -51,6 +51,7 @@ jobs: run: | using Pkg Pkg.develop(path="test/CoolPropDevLoader") + Pkg.develop() using CoolPropDevLoader CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) From 596da78417fd06fa5219e5a7d7a0149e7597c174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:11:51 -0400 Subject: [PATCH 17/27] try this (2) --- .github/workflows/test_dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index d4ddf64..7dc59c5 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -47,11 +47,11 @@ jobs: Pkg.develop(path="test/CoolPropDevLoader") - name: test dev - shell: julia --color=yes --project=test {0} + shell: julia --color=yes --compiled-modules=no --project=test {0} run: | using Pkg Pkg.develop(path="test/CoolPropDevLoader") - Pkg.develop() + Pkg.develop(path = "") using CoolPropDevLoader CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) From a0079f3962808d8bdefaf6ec76197b701b6948fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:22:22 -0400 Subject: [PATCH 18/27] try this (3) --- src/CoolProp.jl | 2 +- test/CoolPropDevLoader/Project.toml | 2 ++ test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 7 ++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/CoolProp.jl b/src/CoolProp.jl index d6c2d6d..abe5afb 100644 --- a/src/CoolProp.jl +++ b/src/CoolProp.jl @@ -11,7 +11,7 @@ import CoolProp_jll end @static if VERSION >= v"1.6" - const libcoolprop = @load_preference("coolprop_library", CoolProp_jll.libcoolprop) + const libcoolprop = load_preference(CoolProp_jll,"coolprop_library", CoolProp_jll.libcoolprop) else const libcoolprop = CoolProp_jll.libcoolprop end diff --git a/test/CoolPropDevLoader/Project.toml b/test/CoolPropDevLoader/Project.toml index 0e55c83..57c1b10 100644 --- a/test/CoolPropDevLoader/Project.toml +++ b/test/CoolPropDevLoader/Project.toml @@ -5,11 +5,13 @@ version = "1.0.0" [deps] Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" Preferences = "21216c6a-2e73-6563-6e65-726566657250" +CoolProp_jll = "3351c21f-4feb-5f29-afb9-f4fcb0e27549" [compat] Downloads = "1" julia = "1.3" Preferences = "1" +CoolProp_jll = ">= 0.1" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 9db429a..db9ed89 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -2,6 +2,7 @@ module CoolPropDevLoader using Preferences using Downloads +using CoolProp_jll const SOURCEFORGE_URL = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" const COOLPROP_UUID = "e084ae63-2819-5025-826e-f8e611a84251" @@ -95,17 +96,17 @@ struct CompileCoolPropFromSourceforge end function use_dev_library(::CompileCoolPropFromSourceforge) lib_src = compile_from_sourceforge() - set_preferences!(COOLPROP_UUID,"coolprop_library" => lib_src, force = true) + set_preferences!(CoolProp_jll,"coolprop_library" => lib_src, force = true) @info "Preference set to $lib_src" end function use_dev_library(lib_src::String) - set_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library" => lib_src, force = true,active_project_only = false,export_prefs = true) + set_preferences!(CoolProp_jll,"coolprop_library" => lib_src, force = true,active_project_only = false,export_prefs = true) @info "Preference set to $lib_src" end function use_default_library() - delete_preferences!((COOLPROP_UUID,"CoolProp"),"coolprop_library",force = true,active_project_only = false,export_prefs = true) + delete_preferences!(CoolProp_jll,"coolprop_library",force = true,export_prefs = true) end end #module \ No newline at end of file From 7c08371b62b2259e9ac240dc8ec91a70c50f39bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:25:03 -0400 Subject: [PATCH 19/27] remove unused pkg develop --- .github/workflows/test_dev.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 7dc59c5..d99a9e9 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -51,7 +51,6 @@ jobs: run: | using Pkg Pkg.develop(path="test/CoolPropDevLoader") - Pkg.develop(path = "") using CoolPropDevLoader CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) From 7a1ac1b7e0da3f73f26b2fef16199b9cd4cd09aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:36:29 -0400 Subject: [PATCH 20/27] load same CoolProp_jll pkg --- test/CoolProp.jl | 2 ++ test/CoolPropDevLoader/Project.toml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/CoolProp.jl b/test/CoolProp.jl index 46c7d51..0c36e6d 100644 --- a/test/CoolProp.jl +++ b/test/CoolProp.jl @@ -1,6 +1,8 @@ #__precompile__() module CoolProp +@info "CoolProp library path: $(CoolProp.libcoolprop)" + errcode = Ref{Clong}(0) const buffer_length = 20000 message_buffer = Array(UInt8, buffer_length) diff --git a/test/CoolPropDevLoader/Project.toml b/test/CoolPropDevLoader/Project.toml index 57c1b10..bc7edc3 100644 --- a/test/CoolPropDevLoader/Project.toml +++ b/test/CoolPropDevLoader/Project.toml @@ -11,7 +11,7 @@ CoolProp_jll = "3351c21f-4feb-5f29-afb9-f4fcb0e27549" Downloads = "1" julia = "1.3" Preferences = "1" -CoolProp_jll = ">= 0.1" +CoolProp_jll = "6.6, 7.1" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" From a35a7ce8eb843abce3fac1134206a60d85d8b931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:44:30 -0400 Subject: [PATCH 21/27] try again --- .github/workflows/test_dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index d99a9e9..60033de 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -21,8 +21,7 @@ jobs: strategy: matrix: julia_version: - - 'lts' - - '1' + - '1.12' os: - ubuntu-latest julia_arch: @@ -53,5 +52,6 @@ jobs: Pkg.develop(path="test/CoolPropDevLoader") using CoolPropDevLoader CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) + Pkg.add("Test") - uses: julia-actions/julia-runtest@v1 \ No newline at end of file From b588219927842c2d87e8f25d80fa4baac995f2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:52:49 -0400 Subject: [PATCH 22/27] remove inaccurate version --- README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/README.md b/README.md index 111e8b2..5d6d768 100644 --- a/README.md +++ b/README.md @@ -38,13 +38,4 @@ using Unitful: °C, Pa HAPropsSI("H", "Tdb", 20°C, "RH", 0.5, "P", 101325Pa) 38622.83892391293 J kg⁻¹ -``` - -## Using development versions of CoolProp - -You can point CoolProp.jl to use tyour own version of CoolProp by using `Preferences.jl`: - -```julia -using CoolProp, Preferences -@set_reference!(CoolProp,"coolprop_library" = my_path_to_library) ``` \ No newline at end of file From 022643b47129863311429f666016ea28ff27d919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:54:21 -0400 Subject: [PATCH 23/27] change name in gh --- .github/workflows/test_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 60033de..7a90232 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -45,7 +45,7 @@ jobs: using Pkg Pkg.develop(path="test/CoolPropDevLoader") - - name: test dev + - name: Compiling CoolProp shell: julia --color=yes --compiled-modules=no --project=test {0} run: | using Pkg From 825557c89aa8fb54885e2f6a24b576c7a82b9f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:59:20 -0400 Subject: [PATCH 24/27] . --- .github/workflows/test_dev.yml | 115 +++++++++++++++++---------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index 7a90232..d10fdb1 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -1,57 +1,58 @@ -name: Development Tests - -on: - schedule: - - cron: 0 0 * * * - workflow_dispatch: - push: - paths: - - '.github/**' - - 'test/CoolPropDevLoader/**' - -concurrency: - # Skip intermediate builds: all builds except for builds on the `master` branch - # Cancel intermediate builds: only pull request builds - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }} - cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} - -jobs: - test-coolprop-dev: - timeout-minutes: 30 - strategy: - matrix: - julia_version: - - '1.12' - os: - - ubuntu-latest - julia_arch: - - x64 - fail-fast: false - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v7 - - - uses: julia-actions/setup-julia@v3 - with: - arch: ${{ matrix.julia_arch }} - version: ${{ matrix.julia_version }} - - uses: julia-actions/cache@v3 - - - name: add CoolPropDevLoader - shell: julia --color=yes --project=. {0} - run: | - using Pkg - Pkg.develop(path="test/CoolPropDevLoader") - - - name: Compiling CoolProp - shell: julia --color=yes --compiled-modules=no --project=test {0} - run: | - using Pkg - Pkg.develop(path="test/CoolPropDevLoader") - using CoolPropDevLoader - CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) - Pkg.add("Test") - - - uses: julia-actions/julia-runtest@v1 \ No newline at end of file +name: Development Tests + +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: + push: + paths: + - '.github/**' + - 'test/CoolPropDevLoader/**' + +concurrency: + # Skip intermediate builds: all builds except for builds on the `master` branch + # Cancel intermediate builds: only pull request builds + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + test-coolprop-dev: + timeout-minutes: 30 + strategy: + matrix: + julia_version: + - '1.12' + os: + - ubuntu-latest + julia_arch: + - x64 + fail-fast: false + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v7 + + - uses: julia-actions/setup-julia@v3 + with: + arch: ${{ matrix.julia_arch }} + version: ${{ matrix.julia_version }} + - uses: julia-actions/cache@v3 + + - name: add CoolPropDevLoader + shell: julia --color=yes --project=. {0} + run: | + using Pkg + Pkg.develop(path="test/CoolPropDevLoader") + + - name: Compiling CoolProp + shell: julia --color=yes --compiled-modules=no --project=test {0} + run: | + using Pkg + Pkg.develop(path="test/CoolPropDevLoader") + using CoolPropDevLoader + CoolPropDevLoader.use_dev_library(CoolPropDevLoader.CompileCoolPropFromSourceforge()) + Pkg.add("Test") + + - uses: julia-actions/julia-runtest@v1 + \ No newline at end of file From 2637c3d6842526826ae633679a8d9a00c1f63379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Wed, 8 Jul 2026 22:13:57 -0400 Subject: [PATCH 25/27] remove unused constant --- test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index db9ed89..3bc30d1 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -5,7 +5,6 @@ using Downloads using CoolProp_jll const SOURCEFORGE_URL = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" -const COOLPROP_UUID = "e084ae63-2819-5025-826e-f8e611a84251" #only available in linux function compile_from_sourceforge() @@ -22,8 +21,7 @@ function compile_from_sourceforge() # 3. Download the source zip @info "Downloading CoolProp source from $url..." - download_url = "https://sourceforge.net/projects/coolprop/files/CoolProp/nightly/source/CoolProp_sources.zip/download" - Downloads.download(download_url, source_zip) + Downloads.download(SOURCEFORGE_URL, source_zip) # 4. Extract the zip into build_dir @info "Extracting source..." From a7cded551d11d66481ed1c03281f6ba5dd36c32b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Thu, 9 Jul 2026 02:31:39 -0400 Subject: [PATCH 26/27] suggestions by coderabbit --- test/CoolPropDevLoader/Project.toml | 2 +- test/CoolPropDevLoader/src/CoolPropDevLoader.jl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/CoolPropDevLoader/Project.toml b/test/CoolPropDevLoader/Project.toml index bc7edc3..b2860ca 100644 --- a/test/CoolPropDevLoader/Project.toml +++ b/test/CoolPropDevLoader/Project.toml @@ -9,7 +9,7 @@ CoolProp_jll = "3351c21f-4feb-5f29-afb9-f4fcb0e27549" [compat] Downloads = "1" -julia = "1.3" +julia = "1.6" Preferences = "1" CoolProp_jll = "6.6, 7.1" diff --git a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl index 3bc30d1..0aa5750 100644 --- a/test/CoolPropDevLoader/src/CoolPropDevLoader.jl +++ b/test/CoolPropDevLoader/src/CoolPropDevLoader.jl @@ -25,7 +25,7 @@ function compile_from_sourceforge() # 4. Extract the zip into build_dir @info "Extracting source..." - run(`unzip -q $source_zip -d $build_dir`) + run(`unzip -qo $source_zip -d $build_dir`) # 5. Find the actual source root: a directory that contains CMakeLists.txt @info "Locating source root..." @@ -99,7 +99,7 @@ function use_dev_library(::CompileCoolPropFromSourceforge) end function use_dev_library(lib_src::String) - set_preferences!(CoolProp_jll,"coolprop_library" => lib_src, force = true,active_project_only = false,export_prefs = true) + set_preferences!(CoolProp_jll,"coolprop_library" => lib_src, force = true) @info "Preference set to $lib_src" end From 5fb76149225fea820241fe4af087c578331c0a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Riedemann?= <38795484+longemen3000@users.noreply.github.com> Date: Thu, 9 Jul 2026 02:59:11 -0400 Subject: [PATCH 27/27] restrict permissions --- .github/workflows/test_dev.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_dev.yml b/.github/workflows/test_dev.yml index d10fdb1..e649a09 100644 --- a/.github/workflows/test_dev.yml +++ b/.github/workflows/test_dev.yml @@ -9,7 +9,10 @@ on: - '.github/**' - 'test/CoolPropDevLoader/**' -concurrency: +permissions: + contents: read + + concurrency: # Skip intermediate builds: all builds except for builds on the `master` branch # Cancel intermediate builds: only pull request builds group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }}