Compare commits

...
Sign in to create a new pull request.

21 commits

Author SHA1 Message Date
Fedora Release Engineering
ff647cd65b Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 08:19:33 +00:00
Benjamin A. Beasley
b36ade077f Use the cmake declarative buildsystem 2026-05-20 06:52:32 +01:00
Benjamin A. Beasley
239794398e Include a freely licensed .obj file in the SRPM for testing 2026-05-20 06:48:43 +01:00
Benjamin A. Beasley
fb21d8fcc0 Use various long options 2026-05-20 06:48:43 +01:00
Benjamin A. Beasley
7c8a997a9f The ninja backend is the default now; don’t bother specifying it
https://fedoraproject.org/wiki/Changes/CMake_ninja_default
2026-03-15 08:56:14 +00:00
Benjamin A. Beasley
f680a90dce Reduce macro indirection in the spec file
[skip changelog]
2026-03-15 08:55:20 +00:00
Benjamin A. Beasley
84c32f27ac Improve a conditional in the spec file
[skip changelog]
2026-03-15 08:54:08 +00:00
Fedora Release Engineering
1441e1f67c Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 19:44:47 +00:00
Fedora Release Engineering
812035e1db Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 19:55:29 +00:00
Fedora Release Engineering
e2566f1df8 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 14:02:19 +00:00
Benjamin A. Beasley
570b62cfe0 Invoke %cmake in %conf rather than in %build 2024-11-03 06:59:03 -05:00
Benjamin A. Beasley
f8f831d419 Do not run tests in EPEL10 (due to lack of a suitable data file)
[skip changelog]
2024-08-12 15:41:11 -04:00
Fedora Release Engineering
cb9011f6a4 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 08:30:16 +00:00
Benjamin A. Beasley
d867f96bf3 Better preserve the timestamp information in the original source 2024-04-04 21:59:35 -04:00
Benjamin A. Beasley
8c56d584e0 Improve reproducibility of the filtered source archive 2024-04-04 19:29:00 -04:00
Benjamin A. Beasley
2fd5422711 Use zstd instead of xz for filtered source archive compression
This is based on the relative health of the upstream projects.
2024-04-04 13:52:43 -04:00
Benjamin A. Beasley
33d60136e9 Add an rpmlintrc file
[skip changelog]
2024-04-04 13:52:43 -04:00
Fedora Release Engineering
1b4788a982 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 07:24:09 +00:00
Fedora Release Engineering
92ccb6a4b0 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 17:21:21 +00:00
Benjamin A. Beasley
50539ad341 Use new (rpm 4.17.1+) bcond style 2023-06-18 12:03:34 -04:00
Benjamin A. Beasley
6d628f3d0a Remove explicit %set_build_flags, not needed since F36
https://www.fedoraproject.org/wiki/Changes/SetBuildFlagsBuildCheck
2023-06-03 12:55:00 -04:00
6 changed files with 66 additions and 42 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
/v-hacd-4.1.0-filtered.tar.xz
/v-hacd-4.1.0-filtered.tar.zst

18
cube.obj Normal file
View file

@ -0,0 +1,18 @@
# Blender v2.83.4 OBJ File: ''
# www.blender.org
o Cube_Cube.001
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
s off
f 1 2 3 4
f 4 3 5 6
f 6 5 7 8
f 8 7 2 1
f 4 6 8 1
f 5 3 2 7

View file

@ -10,7 +10,7 @@ print_help()
Usage: $1 VERSION
Generate a source archive for v-hacd with questionably-licensed test/sample
meshes removed. The result will be named v-hacd-\${VERSION}-filtered.tar.xz
meshes removed. The result will be named v-hacd-\${VERSION}-filtered.tar.zst
and will be written into the current working directory.
EOF
}
@ -30,7 +30,7 @@ VERSION="${1}"
SOURCE0="${FORGEURL}/archive/v${VERSION}/v-hacd-${VERSION}.tar.gz"
TARNAME="$(basename "${SOURCE0}")"
TARDIR="$(basename "${SOURCE0}" '.tar.gz')"
NEWTAR="${TARDIR}-filtered.tar.xz"
NEWTAR="${TARDIR}-filtered.tar.zst"
SAVEDIR="${PWD}"
XDIR="$(mktemp -d)"
@ -39,13 +39,27 @@ trap "rm -rvf '${XDIR}'" INT TERM EXIT
cd "${XDIR}"
curl -L -O "${SOURCE0}"
tar -xzvf "${TARNAME}"
MTIME="$(stat -c '%Y' "${TARDIR}")"
rm -rvf "${TARDIR}/app/meshes"
if [ "$(find . -type f -name '*.obj' | wc -l)" != '0' ]
then
echo 'ERROR: did not properly remove problematic content' 1>&2
exit 1
fi
tar -cv "${TARDIR}/" | xz -9e > "${NEWTAR}"
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html
# We reset all mtimes to that of the top-level extracted directory; since git
# archives dont have meaningful per-file mtimes, nothing useful is lost.
TZ=UTC LC_ALL=C tar \
--create --verbose \
--sort=name \
--format=posix \
--numeric-owner --owner=0 --group=0 \
--mode=go+u,go-w \
--pax-option='delete=atime,delete=ctime' \
--clamp-mtime --mtime="@${MTIME}" \
"${TARDIR}/" |
zstdmt --ultra -22 > "${NEWTAR}"
touch -d @"${MTIME}" "${NEWTAR}"
cd "${SAVEDIR}"
mv -v "${XDIR}/${NEWTAR}" .

View file

@ -1 +1 @@
SHA512 (v-hacd-4.1.0-filtered.tar.xz) = 9e85aeac1d3e6d3a973da6764452bd2444ee15fcf313f723e4127adb4c79e72a0f40663aee3de167b93ced8bd34c96ea1e9ec621a2704b0c58af9f31cbbee4aa
SHA512 (v-hacd-4.1.0-filtered.tar.zst) = 07ae9fcd3759c2f4038392be78faf2f24f0d03931b0e417f450d066dfe3c792b15dd2e5c929974eb93326d954be564a2dc5e3ace909656625e99421cad4e47e7

4
v-hacd.rpmlintrc Normal file
View file

@ -0,0 +1,4 @@
# This Source cannot be a URL because we must filter out certain files.
addFilter(r" invalid-url Source[0-9]+: v-hacd-.*-filtered\.tar\.zst")
# Bogus; it is a perfectly fine zstandard file.
addFilter(r" inconsistent-file-extension v-hacd-.*-filtered\.tar\.zst$")

View file

@ -1,5 +1,3 @@
%bcond_without tests
Name: v-hacd
Version: 4.1.0
Release: %autorelease
@ -8,7 +6,9 @@ Summary: Decomposes a 3D surface into a set of “near” convex parts
# The entire source is BSD-3-Clause, except:
# - app/wavefront.{h,cpp} are MIT
License: BSD-3-Clause AND MIT
URL: https://github.com/kmammou/%{name}
# We use an OBJ file from mcut, which is LGPL-3.0-only, for testing: Source3
SourceLicense: %{license} AND LGPL-3.0-only
URL: https://github.com/kmammou/v-hacd
# This has the app/meshes/ directory stripped out. The .obj files therein have
# unclear or unspecified licenses, which makes them unsuitable for Fedora.
#
@ -16,24 +16,21 @@ URL: https://github.com/kmammou/%{name}
# README.rst as a sanity check.
#
# Generated with ./get_source.sh %%{version}
Source0: %{name}-%{version}-filtered.tar.xz
Source0: v-hacd-%{version}-filtered.tar.zst
# Script to generate Source0; see comments above.
Source1: get_source.sh
# Man page hand-written for Fedora in groff_man(7) format based on help output
# and README.md contents.
Source2: TestVHACD.1
# Very trivial OBJ mesh file from mcut, which is LGPL-3.0-only
Source3: https://github.com/cutdigital/mcut/raw/refs/tags/v1.3.0/tutorials/BasicCmdLineApp/data/cube.obj
BuildSystem: cmake
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
BuildRequires: gcc-c++
BuildRequires: cmake
# Our choice; the make backend would work just fine.
BuildRequires: ninja-build
%if %{with tests}
BuildRequires: vtk-data
%endif
%global common_description %{expand:
The V-HACD library decomposes a 3D surface into a set of “near” convex parts.
@ -69,15 +66,14 @@ Summary: Development files for V-HACD
# The MIT-licensed app/wavefront.{h,cpp} do not contribute to this subpackage.
License: BSD-3-Clause
BuildArch: noarch
# https://docs.fedoraproject.org/en-US/packaging-guidelines/#_packaging_header_only_libraries
Provides: %{name}-static = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: v-hacd-static = %{?epoch:%{epoch}:}%{version}-%{release}
%description devel %{common_description}
The %{name}-devel package contains the header-only library for developing
The v-hacd-devel package contains the header-only library for developing
applications that use V-HACD.
@ -93,45 +89,36 @@ License: BSD-3-Clause AND MIT
%description tools %{common_description}
The %{name}-tools package contains command-line tools based on the V-HACD
The v-hacd-tools package contains command-line tools based on the V-HACD
library. Currently, this means TestVHACD; despite the name, this tool has
general utility beyond testing.
%prep
%autosetup -n %{name}-%{version}
%conf -p
cd app
%build
%set_build_flags
pushd app >/dev/null
%cmake -GNinja
%cmake_build
popd >/dev/null
%build -p
cd app
%install
pushd app >/dev/null
install -D --preserve-timestamps --mode=0644 \
--target='%{buildroot}%{_includedir}' 'include/VHACD.h'
install -D --preserve-timestamps --mode=0644 \
--target='%{buildroot}%{_mandir}/man1' '%{SOURCE2}'
cd app
# There are currently no install targets in app/CMakeLists.txt, so
# %%cmake_install will not work. We install the executable manually instead.
install -t '%{buildroot}%{_bindir}' -p -D '%{_vpath_builddir}/TestVHACD'
popd >/dev/null
install -t '%{buildroot}%{_includedir}' -m 0644 -p -D 'include/VHACD.h'
install -t '%{buildroot}%{_mandir}/man1' -m 0644 -p -D '%{SOURCE2}'
install -D --preserve-timestamps \
--target='%{buildroot}%{_bindir}' '%{_vpath_builddir}/TestVHACD'
%if %{with tests}
%check
# Use the example from README.md as a sanity check, but use an arbitrary mesh
# from vtk as input since we cannot ship upstreams sample meshes. Decrease the
# max recursion depth from 15 to the default (10) so this doesnt explode on
# 32-bit ARM in Fedora 36.
%{buildroot}%{_bindir}/TestVHACD \
%{_datadir}/vtkdata/Testing/Data/Viewpoint/cow.obj \
-e 0.01 -d 10 -r 10000000 -r 128
%endif
# as input since we cannot ship upstreams sample meshes.
%{buildroot}%{_bindir}/TestVHACD '%{SOURCE3}' -e 0.01 -d 15 -r 10000000 -r 128
%files devel