33%define local_n_release 1
44%define local_srcui_release 1
55
6- %define srcdir cassandra-%{name }-%{version }
7- %define bower_components reaper-bower-components-%{version }-%{local_srcui_release }.tar.gz
8- %define srcui_node_modules reaper-srcui-node-modules-%{version }-%{local_srcui_release }.tar.gz
9- %define bower_cache reaper-bower-cache-%{version }.tar.gz
10- %define maven_cache reaper-m2-cache-%{version }.tar.gz
11- %define npm_cache reaper-npm-cache-%{version }.tar.gz
12- %define local_lib_node_modules reaper-local -lib-node-modules-%{version }.tar.gz
13- %define local_n reaper-local -n-%{version }-%{local_n_release }.tar.gz
14-
156Summary: Reaper for cassandra is a tool for running Apache Cassandra repairs against single or multi-site clusters.
167Name: reaper
178Version: 3.1.1
18- Release: 9 %{?dist }
9+ Release: 10 %{?dist }
1910License: ASL 2.0
2011Vendor: Microsoft Corporation
2112Distribution: Mariner
2213Group: Applications/System
2314URL: https://cassandra-reaper.io/
2415Source0: https://github.com/thelastpickle/cassandra-reaper/archive/refs/tags/%{version }.tar.gz#/cassandra-reaper-%{version}.tar.gz
25- # Building reaper from sources downloads artifacts related to maven/node/etc. These artifacts need to be downloaded as caches in order to build reaper using maven in offline mode.
16+ # Building reaper from sources downloads artifacts related to maven/node/etc.
17+ # These artifacts need to be downloaded as caches in order to build reaper using maven in offline mode.
2618# Below is the list of cached sources.
2719# bower-components downloaded under src/ui
2820# NOTE: USE "reaper_build_caches.sh" TO RE-GENERATE BUILD CACHES.
29- Source1: %{ bower_components }
21+ Source1: reaper-bower-components-%{ version }-%{ local_srcui_release }.tar.gz
3022# node_modules downloaded under src/ui
31- Source2: %{srcui_node_modules }
32- # bower cache
33- Source3: %{bower_cache }
23+ Source2: reaper-srcui-node-modules-%{version }-%{local_srcui_release }.tar.gz
3424# m2 cache
35- Source4: %{maven_cache }
36- # npm cache
37- Source5: %{npm_cache }
25+ Source4: reaper-m2-cache-%{version }.tar.gz
3826# node_modules downloaded to /usr/local/lib
39- Source6: %{ local_lib_node_modules }
27+ Source6: reaper- local -lib-node-modules-%{ version }.tar.gz
4028# v14.18.0 node binary under /usr/local
41- Source7: %{local_n }
29+ Source7: reaper-local -n-%{version }-%{local_n_release }.tar.gz
30+ # Patches the src/ui/node_modules/ws/lib/websocket-server.js file, which comes
31+ # from the "reaper-srcui-node-modules*" tarball.
32+ # The src/ui/node_modules/ws/package.json file suggest we're on the
33+ # 6.x version of "ws". Patch for this version taken from here:
34+ # https://github.com/websockets/ws/commit/eeb76d313e2a00dd5247ca3597bba7877d064a63
35+ Patch0: CVE-2024-37890.patch
36+ Patch1: CVE-2023-42282.patch
37+ Patch2: CVE-2017-18214.patch
4238BuildRequires: git
4339BuildRequires: javapackages-tools
4440BuildRequires: maven
4541BuildRequires: msopenjdk-11
4642BuildRequires: nodejs
4743BuildRequires: python3
44+ BuildRequires: rsync
4845BuildRequires: systemd-rpm-macros
4946BuildRequires: openssl-devel
5047Requires: msopenjdk-11
@@ -58,22 +55,15 @@ ExclusiveArch: x86_64
5855Cassandra reaper is an open source tool that aims to schedule and orchestrate repairs of Apache Cassandra clusters.
5956
6057%prep
61- %setup -q -n %{srcdir }
62-
63- %build
64- export JAVA_HOME=" %{_libdir}/jvm/msopenjdk-11"
65- export LD_LIBRARY_PATH=" %{_libdir}/jvm/msopenjdk-11/lib/jli"
66-
67- pushd "$HOME"
68- echo "Installing bower cache."
69- tar xf %{SOURCE3 }
58+ %autosetup -N -n cassandra-%{name }-%{version }
7059
71- echo "Installing m2 cache."
72- tar xf %{SOURCE4 }
60+ echo "Installing bower_components and npm_modules caches."
61+ for source in "%{SOURCE1 }" "%{SOURCE2 }"; do
62+ tar -C src/ui -xf "$source"
63+ done
7364
74- echo "Installing npm cache"
75- tar xf %{SOURCE5 }
76- popd
65+ echo "Installing the m2 cache."
66+ tar -C "$HOME" -xf "%{SOURCE4 }"
7767
7868# Reaper build fails when trying to install node-sass@4.9.0/node-gyp@3.8.0 and build node native addons using mariner default node@16.14.2/npm@8.5.0.
7969# ERROR:
8272# There is no way to remove node-sass dependency from builds, hence we need to install local node/npm and caches to be able to build reaper.
8373# NOTE: This issue was also faced on Fedora Fc37 when trying to build reaper.
8474# NOTE: node-sass seems to be deprecated, the spec and build process will be modified once reaper removes its dependencies as well.
85- pushd %{_prefix }/local
75+
76+ # Extracting to intermediate folder to apply patch.
77+ tmp_local_dir= tmp_local
78+ mkdir -p $tmp_local_dir/{bin,lib}
79+ pushd $tmp_local_dir
8680echo "Installing node_modules"
87- tar xf %{ SOURCE6 } -C ./lib/
81+ tar -C ./lib/ -xf %{ SOURCE6 }
8882
8983echo "Installing n version 14.18.0"
90- tar xf %{SOURCE7 }
84+ tar - xf %{SOURCE7 }
9185
9286echo "Creating symlinks under local /bin"
93- cd ./bin
94- ln -sf ../lib/node_modules/bower/bin/bower bower
95- ln -sf ../lib/node_modules/npm/bin/npm-cli.js npm
96- ln -sf ../lib/node_modules/npm/bin/npx-cli.js npx
87+ ln -sf ../lib/node_modules/bower/bin/bower bin/bower
88+ ln -sf ../lib/node_modules/npm/bin/npm-cli.js bin/npm
89+ ln -sf ../lib/node_modules/npm/bin/npx-cli.js bin/npx
9790
98- cp ../ n/versions/node/14.18.0/bin/node .
91+ cp n/versions/node/14.18.0/bin/node bin
9992
10093ls -al
10194popd
10295
103- cd %{_builddir }/%{srcdir }
104- echo "Installing src caches"
105- pushd ./src/ui
106- echo "Installing bower_components"
107- tar xf %{SOURCE1 }
96+ %autopatch -p1
10897
109- echo "Installing npm_modules"
110- tar fx %{SOURCE2 }
111- popd
98+ rsync -azvhr $tmp_local_dir/ "%{_prefix }/local "
99+ rm -rf $tmp_local_dir
100+
101+ %build
102+ export JAVA_HOME=" %{_libdir}/jvm/msopenjdk-11"
103+ export LD_LIBRARY_PATH=" %{_libdir}/jvm/msopenjdk-11/lib/jli"
112104
113105# Building using maven in offline mode.
114106mvn -DskipTests package -o
@@ -122,7 +114,8 @@ mkdir -p %{buildroot}%{_sysconfdir}/cassandra-%{name}/configs
122114mkdir -p %{buildroot }%{_sysconfdir }/bash_completion.d
123115mkdir -p %{buildroot }%{_unitdir }
124116mkdir -p %{buildroot }%{_datadir }/licenses/%{name }
125- cd %{_builddir }/%{srcdir }/src/packaging
117+
118+ pushd src/packaging
126119
127120cp resource/cassandra-reaper.yaml %{buildroot }%{_sysconfdir }/cassandra-%{name }/
128121cp resource/cassandra-reaper*.yaml %{buildroot }%{_sysconfdir }/cassandra-%{name }/configs
@@ -139,7 +132,7 @@ cp debian/cassandra-%{name}.new.service %{buildroot}/%{_unitdir}/cassandra-%{nam
139132chmod 0644 %{buildroot }/%{_unitdir }/cassandra-%{name }.service
140133chmod 7555 %{buildroot }%{_sysconfdir }/init.d/cassandra-%{name }
141134
142- cp %{ _builddir }/%{ srcdir }/LICENSE.txt %{ buildroot }%{ _datadir }/licenses/%{ name }
135+ popd
143136
144137%pre
145138getent group reaper > /dev/null || groupadd -r reaper
178171%{_unitdir }/cassandra-%{name }.service
179172
180173%changelog
174+ * Tue Jul 09 2024 Pawel Winogrodzki <pawelwi@microsoft.com> - 3.1.1-10
175+ - Patching CVE-2024-37890, CVE-2023-42282, and CVE-2017-18214.
176+
181177* Thu May 23 2024 Archana Choudhary <archana1@microsoft.com> - 3.1.1-9
182178- Repackage and update src/ui node modules and bower components to 3.1.1-1
183179- Address CVE-2024-4068 by upgrading the version of the npm module "braces" to 3.0.3
0 commit comments