From 2c5b4157f8ba0ddcce82b4ee71f937a1e74c8879e65f98be185a65326a92aeb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Mon, 4 Feb 2019 19:38:51 +0000 Subject: [PATCH] Accepting request 671214 from home:StefanBruens:branches:graphics - Fix lookup of stdosl.h from oslc (bnc#1123254): Dropped OpenShadingLanguage-shaderinstalldir.patch Added 0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch - Cleaned up spec file (defattr) - Correct LLVM_MCJIT_LIBRARY value, add comment - Use current LLVM for building (bnc#1123252) - Split shaders in common-headers, MaterialX-shaders and example-shaders subpackages. stdosl.h in common-headers is required by oslc in the main package (bnc#1123254). - Correct clang-devel package name for Leap 42.3 OBS-URL: https://build.opensuse.org/request/show/671214 OBS-URL: https://build.opensuse.org/package/show/graphics/OpenShadingLanguage?expand=0&rev=6 --- ...p-of-stdosl.h-in-install-directory-a.patch | 146 ++++++++++++++++++ OpenShadingLanguage-shaderinstalldir.patch | 21 --- OpenShadingLanguage.changes | 14 ++ OpenShadingLanguage.spec | 97 +++++++++--- 4 files changed, 235 insertions(+), 43 deletions(-) create mode 100644 0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch delete mode 100644 OpenShadingLanguage-shaderinstalldir.patch diff --git a/0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch b/0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch new file mode 100644 index 0000000..9e306db --- /dev/null +++ b/0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch @@ -0,0 +1,146 @@ +From 2e80787bfadd3d02064d72f7d5374d07bc0225cc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Sun, 13 Jan 2019 01:50:59 +0100 +Subject: [PATCH] Generalize lookup of stdosl.h in install directory, allow + customization + +Currently, shaders are installed in /shaders, which does not +fit the needs of most Linux distributions, where is typically +/usr/, and architecture independent data like the shaders should be +installed in e.g. /usr/share/OpenShadingLanguage/shaders/. + +Typically, CMAKE_INSTALL_DATADIR is used for this case, but this would +break the current scheme. Introduce an OSL specific option instead, +OSL_INSTALL_SHADERDIR (default ""), which can be used to specify an +absolute or relative path for the shader installation. + +Usage (relative to CMAKE_INSTALL_PREFIX): +$> cmake -DCMAKE_INSTALL_PREFIX=/usr/ \ + -DOSL_INSTALL_SHADERDIR=share/OpenShadingLanguage + +Same effect, using absolute paths: +$> cmake -DCMAKE_INSTALL_PREFIX=/usr/ \ + -DOSL_INSTALL_SHADERDIR=/usr/share/OpenShadingLanguage + +The configured path is added to the stdosl.h path lookup, i.e. for +the example above "/usr/share/OpenShadingLanguage/shaders/stdosl.h". +--- + CMakeLists.txt | 9 +++++++++ + src/liboslcomp/CMakeLists.txt | 2 ++ + src/liboslcomp/oslcomp.cpp | 9 +++++++++ + src/liboslcomp/oslcomp_shaders_dir.h.in | 7 +++++++ + src/liboslexec/CMakeLists.txt | 1 + + src/shaders/CMakeLists.txt | 2 +- + src/shaders/MaterialX/CMakeLists.txt | 2 +- + 7 files changed, 30 insertions(+), 2 deletions(-) + create mode 100644 src/liboslcomp/oslcomp_shaders_dir.h.in + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 02feab53..05d5e959 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -53,6 +53,15 @@ if (CMAKE_USE_FOLDERS) + set_property (GLOBAL PROPERTY USE_FOLDERS ON) + endif () + ++option (OSL_INSTALL_SHADERDIR "Shader install directory, absolute or relative (to CMAKE_INSTALL_PREFIX)" "") ++mark_as_advanced (OSL_INSTALL_SHADERDIR) ++if (IS_ABSOLUTE ${OSL_INSTALL_SHADERDIR}) ++ set (INSTALL_FULL_SHADERDIR ${OSL_INSTALL_SHADERDIR}) ++else() ++ set (INSTALL_FULL_SHADERDIR "${CMAKE_INSTALL_PREFIX}/${OSL_INSTALL_SHADERDIR}") ++endif() ++message (STATUS "Shader install dir = ${INSTALL_FULL_SHADERDIR}") ++ + include (GNUInstallDirs) + + set (CMAKE_MODULE_PATH +diff --git a/src/liboslcomp/CMakeLists.txt b/src/liboslcomp/CMakeLists.txt +index 549aa549..15d9d026 100644 +--- a/src/liboslcomp/CMakeLists.txt ++++ b/src/liboslcomp/CMakeLists.txt +@@ -29,6 +29,8 @@ else () + + endif () + ++configure_file ( oslcomp_shaders_dir.h.in oslcomp_shaders_dir.h ) ++ + TARGET_LINK_LIBRARIES ( oslcomp ${OPENIMAGEIO_LIBRARIES} ${ILMBASE_LIBRARIES} + ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} + ${CLANG_LIBRARIES} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS} +diff --git a/src/liboslcomp/oslcomp.cpp b/src/liboslcomp/oslcomp.cpp +index a89212aa..d4deda70 100644 +--- a/src/liboslcomp/oslcomp.cpp ++++ b/src/liboslcomp/oslcomp.cpp +@@ -36,6 +36,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include + + #include "oslcomp_pvt.h" ++#include "oslcomp_shaders_dir.h" + + #include + #include +@@ -478,6 +479,14 @@ find_stdoslpath (const std::vector& includepaths) + } + } + ++ // Try the regular install directory ++ std::string install_path = OSL_SHADERS_INSTALL_DIR; ++ if (OIIO::Filesystem::is_directory (install_path)) { ++ install_path = install_path + "/stdosl.h"; ++ if (OIIO::Filesystem::exists (install_path)) ++ return ustring(install_path); ++ } ++ + // Try looking for "oslc" binary in the $PATH, and if so, look in + // ../../shaders/stdosl.h + std::vector exec_path_dirs; +diff --git a/src/liboslcomp/oslcomp_shaders_dir.h.in b/src/liboslcomp/oslcomp_shaders_dir.h.in +new file mode 100644 +index 00000000..0638252f +--- /dev/null ++++ b/src/liboslcomp/oslcomp_shaders_dir.h.in +@@ -0,0 +1,7 @@ ++#ifndef OSL_SHADERS_INSTALL_DIR ++ ++// Keep this in sync with the DESTINATION in shaders/CMakeLists.txt ++// and shaders/MaterialX/CMakeLists.txt ++#define OSL_SHADERS_INSTALL_DIR "@INSTALL_FULL_SHADERDIR@/shaders/" ++ ++#endif // OSL_SHADERS_INSTALL_DIR +diff --git a/src/liboslexec/CMakeLists.txt b/src/liboslexec/CMakeLists.txt +index eb8f0fa9..ff5595cc 100644 +--- a/src/liboslexec/CMakeLists.txt ++++ b/src/liboslexec/CMakeLists.txt +@@ -41,6 +41,7 @@ if (NOT BUILDSTATIC) + endif () + + include_directories ( "${CMAKE_SOURCE_DIR}/src/liboslcomp" ) ++include_directories ( "${CMAKE_BINARY_DIR}/src/liboslcomp" ) + + FILE ( GLOB exec_headers "*.h" ) + FILE ( GLOB compiler_headers "../liboslcomp/*.h" ) +diff --git a/src/shaders/CMakeLists.txt b/src/shaders/CMakeLists.txt +index 9b263ffa..594c09cb 100644 +--- a/src/shaders/CMakeLists.txt ++++ b/src/shaders/CMakeLists.txt +@@ -63,4 +63,4 @@ add_custom_target (shaders ALL + SOURCES ${shader_source} ${shader_headers}) + + install (FILES ${shader_headers} ${shader_source} ${shader_objs} +- DESTINATION shaders) ++ DESTINATION ${INSTALL_FULL_SHADERDIR}/shaders) +diff --git a/src/shaders/MaterialX/CMakeLists.txt b/src/shaders/MaterialX/CMakeLists.txt +index 98f54840..d134fcde 100644 +--- a/src/shaders/MaterialX/CMakeLists.txt ++++ b/src/shaders/MaterialX/CMakeLists.txt +@@ -196,5 +196,5 @@ add_custom_target (mxshaders ALL + SOURCES ${shader_source} ${mx_shader_headers}) + + install (FILES ${mx_shader_headers} ${mx_shader_objs} ${mx_shader_osls} +- DESTINATION shaders/MaterialX) ++ DESTINATION ${INSTALL_FULL_SHADERDIR}/shaders/MaterialX) + +-- +2.20.1 + diff --git a/OpenShadingLanguage-shaderinstalldir.patch b/OpenShadingLanguage-shaderinstalldir.patch deleted file mode 100644 index 0ace97f..0000000 --- a/OpenShadingLanguage-shaderinstalldir.patch +++ /dev/null @@ -1,21 +0,0 @@ -Index: src/shaders/CMakeLists.txt -=================================================================== ---- src/shaders/CMakeLists.txt.orig 2018-12-02 04:00:52.000000000 +0200 -+++ src/shaders/CMakeLists.txt 2019-01-02 12:32:36.665656281 +0200 -@@ -63,4 +63,4 @@ add_custom_target (shaders ALL - SOURCES ${shader_source} ${shader_headers}) - - install (FILES ${shader_headers} ${shader_source} ${shader_objs} -- DESTINATION shaders) -+ DESTINATION ${CMAKE_INSTALL_DATADIR}/shaders) -Index: src/shaders/MaterialX/CMakeLists.txt -=================================================================== ---- src/shaders/MaterialX/CMakeLists.txt.orig 2018-12-02 04:00:52.000000000 +0200 -+++ src/shaders/MaterialX/CMakeLists.txt 2019-01-02 12:50:34.020012017 +0200 -@@ -196,5 +196,5 @@ add_custom_target (mxshaders ALL - SOURCES ${shader_source} ${mx_shader_headers}) - - install (FILES ${mx_shader_headers} ${mx_shader_objs} ${mx_shader_osls} -- DESTINATION shaders/MaterialX) -+ DESTINATION ${CMAKE_INSTALL_DATADIR}/shaders/MaterialX) - diff --git a/OpenShadingLanguage.changes b/OpenShadingLanguage.changes index ee40271..3a187f8 100644 --- a/OpenShadingLanguage.changes +++ b/OpenShadingLanguage.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Sun Jan 13 02:21:24 UTC 2019 - Stefan BrĂ¼ns + +- Fix lookup of stdosl.h from oslc (bnc#1123254): + Dropped OpenShadingLanguage-shaderinstalldir.patch + Added 0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch +- Cleaned up spec file (defattr) +- Correct LLVM_MCJIT_LIBRARY value, add comment +- Use current LLVM for building (bnc#1123252) +- Split shaders in common-headers, MaterialX-shaders and example-shaders + subpackages. stdosl.h in common-headers is required by oslc in + the main package (bnc#1123254). +- Correct clang-devel package name for Leap 42.3 + ------------------------------------------------------------------- Tue Jan 8 16:39:15 UTC 2019 - Jan Engelhardt diff --git a/OpenShadingLanguage.spec b/OpenShadingLanguage.spec index 3188afe..ea20b81 100644 --- a/OpenShadingLanguage.spec +++ b/OpenShadingLanguage.spec @@ -1,7 +1,7 @@ # # spec file for package OpenShadingLanguage # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # # The library soname versions follow the package version major and minor numbers. @@ -32,31 +32,44 @@ Group: Productivity/Graphics/Other Url: https://github.com/imageworks/OpenShadingLanguage Source0: https://github.com/imageworks/OpenShadingLanguage/archive/Release-%{version}.tar.gz#/%{name}-Release-%{version}.tar.gz Source1: https://creativecommons.org/licenses/by/3.0/legalcode.txt -#PATCH-FIX-UPSTREAM OpenShadingLanguage-shaderinstalldir.patch - davejplater@gmail.com - shaders are installed directly under /usr +#PATCH-FIX-UPSTREAM 0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch #https://github.com/imageworks/OpenShadingLanguage/issues/955 -Patch0: OpenShadingLanguage-shaderinstalldir.patch +Patch0: 0001-Generalize-lookup-of-stdosl.h-in-install-directory-a.patch BuildRequires: bison BuildRequires: cmake BuildRequires: cmake(pugixml) -BuildRequires: clang5-devel +%if 0%{suse_version} >= 1500 +BuildRequires: clang-devel +%else +BuildRequires: llvm-clang-devel >= 3.8 +BuildRequires: ncurses-devel +%endif BuildRequires: flex BuildRequires: gcc-c++ -BuildRequires: libboost_atomic-devel +%if 0%{suse_version} >= 1500 BuildRequires: libboost_filesystem-devel -BuildRequires: libboost_locale-devel -BuildRequires: libboost_regex-devel +BuildRequires: libboost_system-devel BuildRequires: libboost_thread-devel BuildRequires: libboost_wave-devel +%else +# The default 1.54 is to old, 1.61 has unresolvable +# symbols in boost::wave (C++ ABI issue?) +BuildRequires: boost-devel >= 1.55.0 +BuildConflicts: boost-devel >= 1.61.0 +%endif BuildRequires: OpenImageIO-devel BuildRequires: OpenEXR-devel BuildRequires: python +Requires: %{name}-common-headers = %{version} Recommends: %{name}-doc = %{version} %description Open Shading Language (OSL) is a language for programmable shading in advanced renderers and other applications, ideal for describing materials, lights, displacement, and pattern generation. -This package contains binaries. + +This package contains the standalone oslc compiler and some +utilities. %package doc Summary: Documentation for OpenShadingLanguage @@ -70,16 +83,44 @@ in advanced renderers and other applications, ideal for describing materials, lights, displacement, and pattern generation. This package contains documentation. -%package shaders-devel -Summary: Headers for shading +%package MaterialX-shaders-source +Summary: MaterialX shader nodes Group: Development/Languages/Other Requires: %{name} = %{version} +Requires: %{name}-common-headers -%description shaders-devel +%description MaterialX-shaders-source Open Shading Language (OSL) is a language for programmable shading in advanced renderers and other applications, ideal for describing materials, lights, displacement, and pattern generation. -This package contains shaders and headers used by OSL. + +This package contains the code for the MaterialX shader nodes. + +%package example-shaders-source +Summary: OSL shader examples +Group: Development/Languages/Other +Requires: %{name} = %{version} +Requires: %{name}-common-headers + +%description example-shaders-source +Open Shading Language (OSL) is a language for programmable shading +in advanced renderers and other applications, ideal for describing +materials, lights, displacement, and pattern generation. + +This package contains some OSL example shaders. + +%package common-headers +Summary: OSL standard library and auxiliary headers +Group: Development/Languages/Other +Requires: %{name} = %{version} + +%description common-headers +Open Shading Language (OSL) is a language for programmable shading +in advanced renderers and other applications, ideal for describing +materials, lights, displacement, and pattern generation. + +This package contains the OSL standard library headers, as well +as some additional headers useful for writing shaders. %package -n liboslcomp%{sufx} Summary: OpenShadingLanguage's compiler component library @@ -152,14 +193,20 @@ developing applications that use %{name}. %prep %setup -q -n %{name}-Release-%{version} -# Shaders and includes for OSL are installed in $PREFIX/shaders -%patch0 +%patch0 -p1 %build +# We use a combined LLVM on 15.0/TW, so libLLVMMCJIT is neither available nor needed +# On 42.3., we have to collect the split libraries ourselfs, +# as the supplied FindLLVM.cmake is broken +%if 0%{suse_version} < 1500 +%define llvm_libs %(llvm-config --libfiles | tr ' ' ';') +%endif %cmake \ - -DLLVM_MCJIT_LIBRARY:FILEPATH=%{_libdir}/libLLVM.so \ + %{?llvm_libs:-DLLVM_LIBRARY="%{llvm_libs}"} \ + -DLLVM_MCJIT_LIBRARY="" \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name} \ - -DCMAKE_INSTALL_DATADIR:PATH=%{_datadir}/%{name} + -DOSL_INSTALL_SHADERDIR:PATH=%{_datadir}/%{name} make %{?_smp_mflags} @@ -191,16 +238,23 @@ find %{buildroot} -type f -name "*.la" -delete -print %files -%defattr(-,root,root) %{_bindir}/* %files doc %license legalcode.txt %doc %{_docdir}/%{name}/ -%files shaders-devel -%license LICENSE -%_datadir/%{name}/ +%files MaterialX-shaders-source +%_datadir/%{name}/shaders/MaterialX + +%files example-shaders-source +%_datadir/%{name}/shaders/*.osl +%_datadir/%{name}/shaders/*.oso + +%files common-headers +%dir %_datadir/%{name} +%dir %_datadir/%{name}/shaders +%_datadir/%{name}/shaders/*.h %files -n liboslcomp%{sufx} %license LICENSE @@ -227,7 +281,6 @@ find %{buildroot} -type f -name "*.la" -delete -print %{_libdir}/osl.imageio.so.%{sover}* %files devel -%defattr(-,root,root) %license LICENSE %{_includedir}/* %{_libdir}/*.so