1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
# ---------------------------------------------------------------------------
# Open3D 0.19.0 — packaged as "libopen3d-dev".
#
# The rpm name is dictated by the consumer that pulls it in: the ROS package
# open3d-conversions declares <depend>libopen3d-dev</depend> in package.xml and
# cmake `find_package(Open3D REQUIRED)`. The build-time requirement is spelled
# literally as "libopen3d-dev" in the generated ros spec, so this package keeps
# that name and ships the full development surface (headers, CMake package
# config, pkgconfig and the shared library) in a single binary package.
#
# The COPR project runs builds with networking disabled (enable_net=false), so
# every ExternalProject dependency of Open3D is pre-fetched into the bundled
# 3rdparty_downloads/ cache directory (inside the source tarball). CMake's
# ExternalProject skips the download when the archive is already present in
# DOWNLOAD_DIR and the hash matches. A handful of upstream URLs cannot be
# reached (gitlab.com archive endpoints are behind a Cloudflare challenge,
# github.com release assets and plain git clones need live network access), so
# those are repointed at the bundled archives in %prep.
# ---------------------------------------------------------------------------
%global debug_package %{nil}
Name: libopen3d-dev
Version: 0.19.0
Release: 1%{?dist}
Summary: Development files for Open3D, a modern 3D data processing library
License: MIT
URL: https://github.com/isl-org/Open3D
Source0: https://github.com/isl-org/Open3D/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Group: Development/Libraries
Packager: openEuler Builder <builder@openeuler.org>
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: make
BuildRequires: pkgconfig
BuildRequires: assimp-devel
BuildRequires: cppzmq-devel
BuildRequires: jsoncpp-devel
BuildRequires: lapack-devel
BuildRequires: libcurl-devel
BuildRequires: libjpeg-turbo-devel
BuildRequires: libpng-devel
BuildRequires: tbb-devel
BuildRequires: zeromq-devel
BuildRequires: zlib-devel
BuildRequires: mesa-libGL-devel
BuildRequires: libX11-devel
BuildRequires: libXcursor-devel
BuildRequires: libXext-devel
BuildRequires: libXi-devel
BuildRequires: libXinerama-devel
BuildRequires: libXrandr-devel
BuildRequires: libXxf86vm-devel
BuildRequires: xorg-x11-proto-devel
%description
Open3D is an open-source library that supports rapid development of software
that deals with 3D data. The Open3D frontend exposes a set of carefully
selected data structures and algorithms in both C++ and Python.
This package contains the shared library together with the C++ development
files: headers, the Open3D CMake package configuration and the pkgconfig file.
%prep
%autosetup -n %{name}-%{version}
# ---------------------------------------------------------------------------
# Repoint the third-party sources that cannot be fetched offline in the COPR
# build environment at the archives shipped in 3rdparty_downloads/.
# ---------------------------------------------------------------------------
# eigen: upstream pins a gitlab.com commit archive (unreachable here); use the
# equivalent 3.4.0 release tarball that is bundled instead.
sed -i \
-e 's#https://gitlab.com/libeigen/eigen/-/archive/da7909592376c893dabbc4b6453a8ffe46b1eb8e/eigen-da7909592376c893dabbc4b6453a8ffe46b1eb8e.tar.gz#"${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/eigen/eigen-3.4.0.tar.gz"#' \
-e 's#SHA256=37f71e1d7c408e2cc29ef90dcda265e2de0ad5ed6249d7552f6c33897eafd674#SHA256=8586084f71f9bde545ee7fa6d00288b264a2b7ac3607b974e54d13e7162c1c72#' \
3rdparty/eigen/eigen.cmake
# msgpack-c: upstream URL is a GitHub release asset (github.com is not
# reachable); the bundled archive is the tag archive of the same release.
sed -i \
-e 's#https://github.com/msgpack/msgpack-c/releases/download/cpp-3.3.0/msgpack-3.3.0.tar.gz#"${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/msgpack/msgpack-3.3.0.tar.gz"#' \
-e 's#SHA256=6e114d12a5ddb8cb11f669f83f32246e484a8addd0ce93f274996f1941c1f07b#SHA256=754c3ace499a63e45b77ef4bcab4ee602c2c414f58403bce826b76ffc2f77d0b#' \
3rdparty/msgpack/msgpack_build.cmake
# uvatlas: DirectX-Headers/DirectXMath are git clones, which ExternalProject
# cannot serve from DOWNLOAD_DIR. Use the equivalent bundled tag archives.
sed -i \
-e 's#GIT_REPOSITORY https://github.com/microsoft/DirectX-Headers.git#URL "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/uvatlas/DirectX-Headers.tar.gz"\n URL_HASH SHA256=bf0183981e505336e918609374907c934b99eb61c0826d75a5649f41568abc4b#' \
-e 's#GIT_REPOSITORY https://github.com/microsoft/DirectXMath.git#URL "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/uvatlas/DirectXMath.tar.gz"\n URL_HASH SHA256=b2c5b419ca2c567860f7c204c9c0890573e8a58c8d877473e4f3ba6b851ca4ce#' \
-e '/GIT_TAG v1\.606\.3/d' \
-e '/GIT_TAG may2022/d' \
-e '/GIT_SHALLOW TRUE/d' \
3rdparty/uvatlas/uvatlas.cmake
# glfw: only the X11 backend is used on openEuler; wayland support would pull
# in a further set of build requirements for no benefit.
sed -i 's#-DGLFW_BUILD_DOCS=OFF#-DGLFW_BUILD_DOCS=OFF\n -DGLFW_BUILD_WAYLAND=OFF#' \
3rdparty/glfw/glfw.cmake
%build
%cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DDEVELOPER_BUILD=OFF \
-DBUILD_CUDA_MODULE=OFF \
-DBUILD_SYCL_MODULE=OFF \
-DBUILD_ISPC_MODULE=OFF \
-DBUILD_GUI=OFF \
-DBUILD_PYTHON_MODULE=OFF \
-DBUILD_UNIT_TESTS=OFF \
-DBUILD_BENCHMARKS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_WEBRTC=OFF \
-DBUILD_JUPYTER_EXTENSION=OFF \
-DBUILD_LIBREALSENSE=OFF \
-DBUILD_AZURE_KINECT=OFF \
-DBUILD_TENSORFLOW_OPS=OFF \
-DBUILD_PYTORCH_OPS=OFF \
-DWITH_OPENMP=ON \
-DWITH_IPP=OFF \
-DENABLE_HEADLESS_RENDERING=OFF \
-DUSE_BLAS=ON \
-DUSE_SYSTEM_BLAS=ON \
-DLAPACKE_DIR=%{_prefix} \
-DUSE_SYSTEM_ASSIMP=ON \
-DUSE_SYSTEM_JSONCPP=ON \
-DUSE_SYSTEM_TBB=ON \
-DUSE_SYSTEM_ZEROMQ=ON \
-DUSE_SYSTEM_CURL=ON \
-DUSE_SYSTEM_PNG=ON \
-DUSE_SYSTEM_JPEG=ON \
-DUSE_SYSTEM_EIGEN3=OFF \
-DUSE_SYSTEM_FMT=OFF \
-DUSE_SYSTEM_MSGPACK=OFF \
-DUSE_SYSTEM_NANOFLANN=OFF \
-DUSE_SYSTEM_QHULLCPP=OFF \
-DUSE_SYSTEM_TINYGLTF=OFF \
-DUSE_SYSTEM_TINYOBJLOADER=OFF \
-DUSE_SYSTEM_LIBLZF=OFF \
-DUSE_SYSTEM_GLFW=OFF \
-DUSE_SYSTEM_GLEW=OFF \
-DUSE_SYSTEM_EMBREE=OFF \
-DUSE_SYSTEM_VTK=OFF \
-DBUILD_VTK_FROM_SOURCE=ON
# openEuler's cmake configure macro configures IN-SOURCE: it does not pass
# -S/-B, so the cache lands in the unpacked source directory
# (BUILD/libopen3d-dev-0.19.0). The cmake_build / cmake_install macros from
# the same macro set, however, always use the out-of-source vpath directory
# (the _vpath_builddir value, i.e. aarch64-openEuler-linux-gnu), which the
# configure step never created -- hence "is not a directory". Drive the
# already-configured in-source tree explicitly instead.
%{__cmake} --build . %{?_smp_mflags} --verbose
%install
DESTDIR=%{buildroot} %{__cmake} --install .
%files
%license LICENSE
%doc README.md
%{_libdir}/libOpen3D.so*
%{_includedir}/open3d/
%{_libdir}/cmake/Open3D/
%{_libdir}/pkgconfig/Open3D.pc
%changelog
* Tue Sep 22 2026 ai-importer <ai-importer@openeuler.org> - 0.19.0-1
- Initial import (ROS batch, dependency of open3d-conversions)
|