Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
f60b3e5
Reduce build verbosity
howetuft May 5, 2025
27d26a2
Remove CIBuildWheel hack
howetuft May 5, 2025
4e459c9
Upgrade dependencies for 1.1
howetuft May 8, 2025
59012ef
Macos: use llvm@20
howetuft May 8, 2025
3d8239c
Revert "Macos: use llvm@20"
howetuft May 9, 2025
59074dc
Macos: remove llvm-openmp
howetuft May 9, 2025
df5bed5
Opensubdiv: back to conan center version
howetuft May 9, 2025
2aba8e3
Doxygen: fix compiler version
howetuft May 10, 2025
c11b688
OIIO: tweak accepted formats and activate tbb
howetuft May 10, 2025
2ecb711
spdlog: use std::fmt
howetuft May 10, 2025
e8f1829
MacOS 13: use (fake) llvm20 for spdlog
howetuft May 10, 2025
803de99
Remove specific version of fmt::fmt, rely on Conan's one
howetuft May 10, 2025
cfd4d80
MacOS: define CC, CXX etc. in Conan profile
howetuft May 11, 2025
4db865c
Revert "MacOS: define CC, CXX etc. in Conan profile"
howetuft May 11, 2025
611d773
Merge pull request #19 from howetuft/no-cibw
howetuft May 11, 2025
4ad74d2
Force fmt to high version - for compatibility with clang++20
howetuft May 13, 2025
2c2ee46
Downgrade nvrtc to 12.8 (12.9 is to recent at the moment, driver is n…
howetuft May 14, 2025
07709ff
Windows: align doxygen settings to conancenter ones
howetuft May 17, 2025
0db408f
Doxygen: tweak compiler version
howetuft May 18, 2025
3947948
Doxygen: do not force version
howetuft May 18, 2025
fce03c8
Modify doxygen settings to avoid recompilation
howetuft May 19, 2025
ddbf319
Fix rebuild-all
howetuft May 19, 2025
ef7ecf2
Don't specify iconv and xapian
howetuft May 20, 2025
5a7d52d
Doxygen: remove all additional compile directives (Windows)
howetuft May 21, 2025
95c3b5a
Set Doxygen cpp version to 17
howetuft May 21, 2025
0cf759b
Re-explicit iconv and xapian-core
howetuft May 21, 2025
36a1eaf
Tweak iconv and xapian-core versions
howetuft May 21, 2025
b264919
OpenEXR: set version to 3.3.5
howetuft Aug 10, 2025
60cd4bd
Update SPDLOG version to 1.15.3
howetuft Aug 10, 2025
adba566
Add conda ToS acceptation
howetuft Aug 10, 2025
498be05
Update README.md
howetuft Aug 11, 2025
4870288
Update README.md
howetuft Aug 11, 2025
3d6f83e
Install tool requirements before local recipes
howetuft Aug 18, 2025
2f7f1e0
Conan: show dependency graph before installing
howetuft Sep 25, 2025
6780ac1
Use libjpeg-turbo instead of plain libjpeg
howetuft Sep 25, 2025
8a8ff18
Rename install-conan.sh into run-conan.sh
howetuft Sep 26, 2025
b0e18ba
Fix 'Compatibility with CMake < 3.5 has been removed from CMake.' for…
howetuft Sep 26, 2025
3da4dc7
Revert "Fix 'Compatibility with CMake < 3.5 has been removed from CMa…
howetuft Sep 26, 2025
a4c091a
Remove remnants (CMakeLists.txt, pyproject.toml)
howetuft Sep 26, 2025
c3fd724
Create Monitor (scheduled) build action
howetuft Sep 26, 2025
9fd3ce6
Fix cron scheduling
howetuft Sep 26, 2025
c925627
Move to embree v4
howetuft Sep 26, 2025
d8ed27e
Add permissions to 'check' and 'monitor' workflows
howetuft Sep 27, 2025
7f5322f
Fix monitor workflow
howetuft Sep 27, 2025
a291d2e
Windows: set SIMD (AVX2) for embree
howetuft Sep 27, 2025
ec80437
Linux: Add Time::Piece to perl modules installed for build
howetuft Oct 6, 2025
5ce747c
Remove Blender dependency
howetuft Oct 6, 2025
91df124
Update deps versions
howetuft Oct 18, 2025
2daa192
Handle local-conan-recipes as a remote
howetuft Oct 18, 2025
1a10a92
macos-15
howetuft Oct 19, 2025
58a8edd
Add cxxflags for openimageio in Windows profile (utf-8)
howetuft Oct 20, 2025
808e86a
Merge pull request #21 from howetuft/macos-15-2
howetuft Oct 20, 2025
f917b6a
Disable xapian-core and libiconv dependencies
howetuft Oct 20, 2025
fc68c66
Macos: Set OSX deployment target to 11.0 for x86 and 14.2 for arm
howetuft Oct 21, 2025
4c2f58d
Specify Doxygen version
howetuft Oct 21, 2025
35a5b02
Do not specify libiconv and xapian-core versions
howetuft Oct 21, 2025
ee04eae
Rename local-conan-recipes into conan-local-recipes
howetuft Oct 21, 2025
a6c168a
Merge pull request #22 from howetuft/macos-15-2
howetuft Oct 21, 2025
41a9703
Force set CMAKE_OSX_DEPLOYMENT_TARGET and MACOS_VERSION_MIN
howetuft Oct 21, 2025
845b0a6
Force set CMAKE_OSX_DEPLOYMENT_TARGET and MACOS_VERSION_MIN
howetuft Oct 21, 2025
43cca4c
MacOS: use clang 20
howetuft Oct 21, 2025
2d9a08b
MacOS: use extended runner name, to avoid cache name collision
howetuft Oct 22, 2025
96415c4
MacOS: reset linker to apple ld
howetuft Oct 22, 2025
bdb411f
MacOS ARM - Embree - Unset AVX
howetuft Oct 24, 2025
52f96a8
run_conan: add debug utility
howetuft Oct 25, 2025
568fd03
MacOS: debug embree
howetuft Oct 25, 2025
7ebf9a2
Merge pull request #24 from howetuft/macos-15-2
howetuft Oct 25, 2025
731dc7f
MacOS: set linker options
howetuft Oct 25, 2025
96e06bb
MacOS: back to apple-clang
howetuft Oct 26, 2025
c4a58cf
Merge pull request #25 from howetuft/macos-15-2
howetuft Oct 26, 2025
c276840
MacOS: add openjph (needed by OIIO for MacOS x86_64)
howetuft Oct 28, 2025
6807cb2
Merge pull request #26 from howetuft/macos-15-2
howetuft Oct 28, 2025
2ce439d
MacOS: add openjph (needed by OIIO for MacOS x86_64)
howetuft Oct 28, 2025
ca08f3b
Merge branch 'for_v1.1' into macos-15-2
howetuft Oct 28, 2025
626b222
Merge pull request #27 from howetuft/macos-15-2
howetuft Oct 28, 2025
d24c8fd
MacOS: add openjph (needed by OIIO for MacOS x86_64)
howetuft Oct 28, 2025
29d0a92
Merge pull request #28 from howetuft/macos-15-2
howetuft Oct 29, 2025
21a6cf9
Clean code
howetuft Oct 30, 2025
8e86b3e
Add build information to Conan archive
howetuft Oct 30, 2025
26bc9c9
nvrtc: upgrade to 13.0.88
howetuft Oct 31, 2025
c96045f
Merge pull request #29 from howetuft/macos-15-2
howetuft Oct 31, 2025
975e3c6
Merge branch 'main' into for_v1.1
howetuft Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
325 changes: 209 additions & 116 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

name: LuxCore Dependency Checker

permissions: read-all

on:
workflow_dispatch:
push:
Expand All @@ -17,4 +19,5 @@ jobs:
call-build-deps:
uses: ./.github/workflows/build.yml
with:
# This must be kept in lower case (incorporated to Conan package name)
luxdeps-version: "check"
5 changes: 4 additions & 1 deletion .github/workflows/monitor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

name: LuxCore Dependency Monitoring

permissions: read-all

on:
schedule:
- cron: "0 0 * * 5"
Expand All @@ -20,4 +22,5 @@ jobs:
call-build-deps:
uses: ./.github/workflows/build.yml
with:
luxdeps-version: "Monitor"
# This must be kept in lower case (incorporated to Conan package name)
luxdeps-version: "monitor"
10 changes: 0 additions & 10 deletions CMakeLists.txt

This file was deleted.

10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ Once populated, the cache is bundled (`conan cache save`) and published
in a Github release.

### On consumer side (LuxCore)
In LuxCore, the provided cache is downloaded from the release and
restored locally (`conan cache restore`), thus making all the dependencies
In LuxCore, the provided cache is downloaded from the LuxCoreDeps release
and restored locally (`conan cache restore`), thus making all the dependencies
available for LuxCore build.
In LuxCore, cache download and restoration are wrapped in a convenient
In LuxCore, the download and restoration of the cache are wrapped in a convenient
`make deps` statement.

```mermaid
Expand Down Expand Up @@ -98,6 +98,7 @@ how to modify such a file.
### Where to start - LuxCoreDeps entry points
The main entry point is `.github/workflows/build.yml`.
Other interesting files may be:
- `run-conan.sh`: the bash script that invokes Conan
- `conanfile.py`: Conan script to build dependencies
- `conan-profiles`: folder with Conan profiles

Expand All @@ -107,7 +108,8 @@ LuxCoreDeps follows Semantic Versioning (https://semver.org).
### Compilation environment
For Python wheels to be built properly, it is essential that dependencies be built
by `CIBUILDWHEEL`, with the same environment (compiler version, manylinux container,
etc.) as the one intended for the wheels.
etc.) as the one intended for the wheels. This is especially true for Linux build, which
must occur in a manylinux container. See https://cibuildwheel.pypa.io/en/stable/ for more details.

### Local recipes
Most of Conan recipes used by LuxCoreDeps are to be found in Conan central repository (Conan center).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class ImguiFileDialogConan(ConanFile):
settings = "os", "arch", "compiler", "build_type"
homepage = "https://github.com/aiekick/ImGuiFileDialog"
license = "MIT"
version = "0.6.7"
options = {
"shared": [True, False],
"fPIC": [True, False],
Expand All @@ -28,7 +27,7 @@ class ImguiFileDialogConan(ConanFile):
"fPIC": True,
"use_std_filesystem": True,
}
requires = "imgui/1.91.8"
requires = "imgui/1.92.4"


def config_options(self):
Expand Down
3 changes: 3 additions & 0 deletions conan-local-recipes/recipes/imguifiledialog/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
"0.6.7":
folder: all
19 changes: 19 additions & 0 deletions conan-local-recipes/recipes/nvrtc/binary/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
sources:
"12.8.93":
Linux:
x86_64:
url: "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/linux-x86_64/cuda_nvrtc-linux-x86_64-12.8.93-archive.tar.xz"
sha256: "992f5e4d95cb499f41e442245efa877dbd60c711451afe680a26700d61eb3843"
Windows:
x86_64:
url: "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-12.8.93-archive.zip"
sha256: "a63302a077f0248a743a1a7caa7dbd80d0fac56c6cfa9c41fa05fac9b7e5eda5"
"13.0.88":
Linux:
x86_64:
url: "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/linux-x86_64/cuda_nvrtc-linux-x86_64-13.0.88-archive.tar.xz"
sha256: "00038aac08e1dba6f1933237dbfb217ac6452ae24fab970edcac808f103ca64b"
Windows:
x86_64:
url: "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-13.0.88-archive.zip"
sha256: "8c50a52467826167e0dbe99936140c52d62272bfc5849fe2d6587d050c8c5d29"
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

class nvrtcRecipe(ConanFile):
name = "nvrtc"
version = "12.8.61"
user = "luxcore"
channel = "luxcore"
package_type = "library"
Expand All @@ -28,19 +27,13 @@ def validate(self):
raise ConanInvalidConfiguration("MacOS not supported")

def build(self):
_os = str(self.settings.os)
quirks = {
"Linux": ("linux-x86_64", "tar.xz"),
"Windows": ("windows-x86_64", "zip"),
}

platform, extension = quirks[_os]

url = (
"https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/"
f"{platform}/cuda_nvrtc-{platform}-{self.version}-archive.{extension}"
arch = "x86_64"
get(
self,
**self.conan_data["sources"][self.version][str(self.settings.os)][arch],
destination=self.build_folder,
strip_root=True
)
get(self, url, destination=self.build_folder, strip_root=True)

def generate(self):
tc = CMakeToolchain(self)
Expand Down
5 changes: 5 additions & 0 deletions conan-local-recipes/recipes/nvrtc/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
versions:
"12.8.93":
folder: "binary"
"13.0.88":
folder: "binary"
4 changes: 4 additions & 0 deletions conan-local-recipes/recipes/oidn/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
sources:
"0.6.7":
url: "https://github.com/aiekick/ImGuiFileDialog/archive/refs/tags/v0.6.7.zip"
sha256: "939fa922162a490353f17b4bc15e59110fc9ea81c123acc29c6e5f3c8f1bbc7c"
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@
from conan.tools.scm import Git

# Gather here the various dependency versions, for convenience
TBB_VERSION = "2021.12.0"
TBB_VERSION = "2022.2.0"

class OidnConan(ConanFile):
name = "oidn"
version = "2.3.1"
user = "luxcore"
channel = "luxcore"
settings = "os", "arch", "compiler", "build_type"
Expand Down
3 changes: 3 additions & 0 deletions conan-local-recipes/recipes/oidn/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
"2.3.3":
folder: "all"
8 changes: 0 additions & 8 deletions conan-profiles/conan-profile-Linux-X64
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@ compiler.libcxx=libstdc++11

[options]
openvdb/*:simd=AVX
embree3/*:shared=False
embree3/*:with_tbb=False
embree3/*:sse2=True
embree3/*:sse42=True
embree3/*:avx=True
embree3/*:avx2=True
embree3/*:avx512=False
openimageio/*:with_libheif=False
gtk/system:version=3


Expand Down
16 changes: 7 additions & 9 deletions conan-profiles/conan-profile-Windows-X64
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,16 @@ compiler=msvc
compiler.version=194
compiler.cppstd={{ os.getenv("CXX_VERSION") }}
compiler.runtime=dynamic
doxygen/*:arch=x86_64
doxygen/*:build_type=Release
doxygen/*:compiler.cppstd=17
doxygen/*:compiler.runtime=dynamic
doxygen/*:compiler.runtime_type=Release
doxygen/*:compiler.version=193
xapian-core/*:compiler.cppstd=14

[conf]
tools.build:cxxflags=["/openmp", "/MP", "/DEBUG:NONE", "/O2", "/arch:AVX"]
tools.build:cflags=["/openmp", "/MP", "/DEBUG:NONE", "/O2", "/arch:AVX"]
embree3/*:tools.build:cxxflags=["/openmp", "/MP", "/DEBUG:NONE", "/O2"]
tools.build:cxxflags=["/openmp", "/MP", "/DEBUG:NONE", "/O2", "/arch:AVX2"]
tools.build:cflags=["/openmp", "/MP", "/DEBUG:NONE", "/O2", "/arch:AVX2"]
embree/*:tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/windows-vars-X64.cmake
embree/*:tools.build:cxxflags=["/DEBUG:NONE", "/O2" ]
embree/*:tools.build:cflags=["/DEBUG:NONE", "/O2" ]
openimageio/*:tools.build:cxxflags+=["/utf-8" ]

# Following deps are to be compiled with msys2/gcc: MSVC flags will not do
libiconv/*:tools.build:cxxflags=!
Expand All @@ -27,5 +25,5 @@ xapian-core/*:tools.build:cxxflags=!
xapian-core/*:tools.build:cflags=!

[options]
# MSVC does not support avx2 nor avx512
openvdb/*:simd=AVX
embree/*:shared=True
25 changes: 12 additions & 13 deletions conan-profiles/conan-profile-common
Original file line number Diff line number Diff line change
Expand Up @@ -15,34 +15,33 @@ winflexbison/*:build_type=Release
doxygen/*:build_type=Release

[conf]
tools.build:verbosity=verbose
tools.system.package_manager:mode=install
tools.deployer:symlinks=True
tools.build:skip_test=True

[platform_tool_requires]
cmake/*
meson/*
pkgconf/*
yasm/*
doxygen/*

[options]
oidn/*:shared=True
embree3/*:shared=True
embree3/*:with_tbb=True
embree3/*:sse2=True
embree3/*:sse42=True
embree3/*:avx=True
embree3/*:neon=True
opensubdiv/*:with_tbb=True
opensubdiv/*:with_omp=True
fmt/*:header_only=True
spdlog/*:header_only=True
spdlog/*:use_std_fmt=True
nvrtc/*:shared=True
libtiff/*:jpeg=libjpeg-turbo

openimageio/*:with_freetype=False
openimageio/*:with_hdf5=False
openimageio/*:with_ffmpeg=False
openimageio/*:with_libheif=False
nvrtc/*:shared=True
openimageio/*:with_ptex=False
openimageio/*:with_opencv=False
openimageio/*:with_libwebp=True
openimageio/*:with_tbb=True
openimageio/*:with_libjpeg=libjpeg-turbo

libultrahdr/*:with_jpeg=libjpeg-turbo

# boost/*:without_atomic=True
boost/*:without_charconv=True
Expand Down
21 changes: 16 additions & 5 deletions conan-profiles/conan-profile-macOS-ARM64
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ include(conan-profile-common)

[settings]
os=Macos
os.version=11.0
# 14.2 is required by opensubdiv for metal
os.version=14.2
arch=armv8
compiler=apple-clang
compiler.version=15
compiler.version=17
compiler.cppstd={{ os.getenv("CXX_VERSION") }}
compiler.libcxx=libc++

Expand All @@ -14,10 +15,20 @@ boost/*:without_stacktrace=True
boost/*:without_locale=True
minizip-ng/*:with_zlib=True
minizip-ng/*:with_libcomp=False
embree/*:shared=True
opensubdiv/*:with_metal=True

[buildenv]
CXX=clang++
CC=clang
PKG_ARCH=armv8
# 14.2 is required by opensubdiv for metal
# See also macos_var.cmake
MACOSX_DEPLOYMENT_TARGET=14.2
VERBOSE=1

[conf]
&:tools.build:cxxflags=["-O3"]
&:tools.build:cxxflags+=["-O3"]
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/macos-vars-ARM64.cmake

openvdb/*:tools.build:cxxflags+=["-Wno-error", "-Wno-missing-template-arg-list-after-template-kw"]

# vim: ft=conf
18 changes: 12 additions & 6 deletions conan-profiles/conan-profile-macOS-X64
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,28 @@ include(conan-profile-common)

[settings]
os=Macos
os.version=10.15
os.version=11.0
arch=x86_64
compiler=apple-clang
compiler.version=14.0
compiler.version=17
compiler.cppstd={{ os.getenv("CXX_VERSION") }}
compiler.libcxx=libc++

[options]
minizip-ng/*:with_zlib=True
minizip-ng/*:with_libcomp=False
openvdb/*:simd=AVX
opensubdiv/*:with_metal=False
embree/*:shared=True

[buildenv]
CXX=clang++
CC=clang
PKG_ARCH=x86_64
# See also macos_var.cmake
MACOSX_DEPLOYMENT_TARGET=11.0

[conf]
&:tools.build:cxxflags+=["-ftree-vectorize", "-march=x86-64-v3", "-O3", "-mno-avx2"]
# NB: Github MacOS X64 runner does not support avx2 nor avx512
&:tools.build:cxxflags+=["-ftree-vectorize", "-march=x86-64-v3", "-O3"]
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/macos-vars-X64.cmake
openvdb/*:tools.build:cxxflags+=["-Wno-error", "-Wno-missing-template-arg-list-after-template-kw"]

# vim: ft=conf
4 changes: 2 additions & 2 deletions conan-profiles/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ def export_sources(self):
print(self.recipe_folder)
print(os.listdir(self.recipe_folder))
copy(self,
"conan-profile-*",
"*",
src=self.recipe_folder,
dst=self.export_sources_folder
)


def package(self):
copy(self,
"conan-profile-*",
"*",
src=self.export_sources_folder,
dst=os.path.join(self.package_folder, "profiles")
)
15 changes: 15 additions & 0 deletions conan-profiles/macos-vars-ARM64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This file injects CMake variables in MacOS ARM build
# 14.2 is required by opensubdiv for metal
MESSAGE(STATUS "Injecting Conan CMake variables")
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.2")
set(MACOS_VERSION_MIN "14.2")

# Set tools
set(CMAKE_VERBOSE_MAKEFILE ON)


# Some checks
include(CMakePrintHelpers)
cmake_print_variables(
CMAKE_HOST_APPLE
)
18 changes: 18 additions & 0 deletions conan-profiles/macos-vars-X64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# This file injects CMake variables in MacOS build
MESSAGE(STATUS "Injecting Conan CMake variables")
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
set(MACOS_VERSION_MIN "11.0")

# Set tools
#set(CMAKE_AR "$ENV{AR}")
#set(CMAKE_RANLIB "$ENV{RANLIB}")
#set(LINKER_FLAGS
#"-Wl,-flat_namespace -Wl,-export_dynamic -Wl,-headerpad_max_install_names"
#)
#set (CMAKE_SHARED_LINKER_FLAGS ${LINKER_FLAGS})

# Some checks
include(CMakePrintHelpers)
cmake_print_variables(
CMAKE_HOST_APPLE
)
Loading
Loading