From 2a2f4f6738c65021a74d133b7298341c4e108654 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 28 Apr 2023 00:40:50 +0300 Subject: [PATCH] Add Almalinux 9 build --- rpm/build-tarball.sh | 7 +- rpm/vitastor-el9.Dockerfile | 28 +++++++ rpm/vitastor-el9.spec | 158 ++++++++++++++++++++++++++++++++++++ 3 files changed, 189 insertions(+), 4 deletions(-) create mode 100644 rpm/vitastor-el9.Dockerfile create mode 100644 rpm/vitastor-el9.spec diff --git a/rpm/build-tarball.sh b/rpm/build-tarball.sh index 200082bd..1bb3ebee 100755 --- a/rpm/build-tarball.sh +++ b/rpm/build-tarball.sh @@ -7,13 +7,12 @@ set -e VITASTOR=$(dirname $0) VITASTOR=$(realpath "$VITASTOR/..") -if [ -d /opt/rh/gcc-toolset-9 ]; then +EL=$(rpm --eval '%dist') +if [ "$EL" = ".el8" ]; then # CentOS 8 - EL=8 . /opt/rh/gcc-toolset-9/enable -else +elif [ "$EL" = ".el7" ]; then # CentOS 7 - EL=7 . /opt/rh/devtoolset-9/enable fi cd ~/rpmbuild/SPECS diff --git a/rpm/vitastor-el9.Dockerfile b/rpm/vitastor-el9.Dockerfile new file mode 100644 index 00000000..a4e0e5c9 --- /dev/null +++ b/rpm/vitastor-el9.Dockerfile @@ -0,0 +1,28 @@ +# Build packages for AlmaLinux 9 inside a container +# cd ..; podman build -t vitastor-el9 -v `pwd`/packages:/root/packages -f rpm/vitastor-el9.Dockerfile . + +FROM almalinux:9 + +WORKDIR /root + +RUN sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/*.repo +RUN dnf -y install epel-release dnf-plugins-core +RUN dnf -y install https://vitastor.io/rpms/centos/9/vitastor-release-1.0-1.el9.noarch.rpm +RUN dnf -y install gcc-c++ gperftools-devel fio nodejs rpm-build jerasure-devel libisa-l-devel gf-complete-devel rdma-core-devel libarchive liburing-devel cmake +RUN dnf download --source fio +RUN rpm --nomd5 -i fio*.src.rpm +RUN cd ~/rpmbuild/SPECS && dnf builddep -y --spec fio.spec + +ADD . /root/vitastor + +RUN set -e; \ + cd /root/vitastor/rpm; \ + sh build-tarball.sh; \ + cp /root/vitastor-0.8.7.el9.tar.gz ~/rpmbuild/SOURCES; \ + cp vitastor-el9.spec ~/rpmbuild/SPECS/vitastor.spec; \ + cd ~/rpmbuild/SPECS/; \ + rpmbuild -ba vitastor.spec; \ + mkdir -p /root/packages/vitastor-el9; \ + rm -rf /root/packages/vitastor-el9/*; \ + cp ~/rpmbuild/RPMS/*/vitastor* /root/packages/vitastor-el9/; \ + cp ~/rpmbuild/SRPMS/vitastor* /root/packages/vitastor-el9/ diff --git a/rpm/vitastor-el9.spec b/rpm/vitastor-el9.spec new file mode 100644 index 00000000..b693eb62 --- /dev/null +++ b/rpm/vitastor-el9.spec @@ -0,0 +1,158 @@ +Name: vitastor +Version: 0.8.7 +Release: 1%{?dist} +Summary: Vitastor, a fast software-defined clustered block storage + +License: Vitastor Network Public License 1.1 +URL: https://vitastor.io/ +Source0: vitastor-0.8.7.el9.tar.gz + +BuildRequires: liburing-devel >= 0.6 +BuildRequires: gperftools-devel +BuildRequires: gcc-c++ +BuildRequires: nodejs >= 10 +BuildRequires: jerasure-devel +BuildRequires: libisa-l-devel +BuildRequires: gf-complete-devel +BuildRequires: rdma-core-devel +BuildRequires: cmake +Requires: vitastor-osd = %{version}-%{release} +Requires: vitastor-mon = %{version}-%{release} +Requires: vitastor-client = %{version}-%{release} +Requires: vitastor-client-devel = %{version}-%{release} +Requires: vitastor-fio = %{version}-%{release} + +%description +Vitastor is a small, simple and fast clustered block storage (storage for VM drives), +architecturally similar to Ceph which means strong consistency, primary-replication, +symmetric clustering and automatic data distribution over any number of drives of any +size with configurable redundancy (replication or erasure codes/XOR). + + +%package -n vitastor-osd +Summary: Vitastor - OSD +Requires: vitastor-client = %{version}-%{release} +Requires: util-linux +Requires: parted + + +%description -n vitastor-osd +Vitastor object storage daemon, i.e. server program that stores data. + + +%package -n vitastor-mon +Summary: Vitastor - monitor +Requires: nodejs >= 10 +Requires: lpsolve + + +%description -n vitastor-mon +Vitastor monitor, i.e. server program responsible for watching cluster state and +scheduling cluster-level operations. + + +%package -n vitastor-client +Summary: Vitastor - client + + +%description -n vitastor-client +Vitastor client library and command-line interface. + + +%package -n vitastor-client-devel +Summary: Vitastor - development files +Group: Development/Libraries +Requires: vitastor-client = %{version}-%{release} + + +%description -n vitastor-client-devel +Vitastor library headers for development. + + +%package -n vitastor-fio +Summary: Vitastor - fio drivers +Group: Development/Libraries +Requires: vitastor-client = %{version}-%{release} +Requires: fio = 3.27-7.el9 + + +%description -n vitastor-fio +Vitastor fio drivers for benchmarking. + + +%prep +%setup -q + + +%build +%cmake +%cmake_build + + +%install +rm -rf $RPM_BUILD_ROOT +%cmake_install +cd mon +npm install +cd .. +mkdir -p %buildroot/usr/lib/vitastor +cp -r mon %buildroot/usr/lib/vitastor +mkdir -p %buildroot/lib/systemd/system +cp mon/vitastor.target mon/vitastor-mon.service mon/vitastor-osd@.service %buildroot/lib/systemd/system +mkdir -p %buildroot/lib/udev/rules.d +cp mon/90-vitastor.rules %buildroot/lib/udev/rules.d + + +%files +%doc GPL-2.0.txt VNPL-1.1.txt README.md README-ru.md + + +%files -n vitastor-osd +%_bindir/vitastor-osd +%_bindir/vitastor-disk +%_bindir/vitastor-dump-journal +/lib/systemd/system/vitastor-osd@.service +/lib/systemd/system/vitastor.target +/lib/udev/rules.d/90-vitastor.rules + + +%pre -n vitastor-osd +groupadd -r -f vitastor 2>/dev/null ||: +useradd -r -g vitastor -s /sbin/nologin -c "Vitastor daemons" -M -d /nonexistent vitastor 2>/dev/null ||: +install -o vitastor -g vitastor -d /var/log/vitastor +mkdir -p /etc/vitastor + + +%files -n vitastor-mon +/usr/lib/vitastor/mon +/lib/systemd/system/vitastor-mon.service + + +%pre -n vitastor-mon +groupadd -r -f vitastor 2>/dev/null ||: +useradd -r -g vitastor -s /sbin/nologin -c "Vitastor daemons" -M -d /nonexistent vitastor 2>/dev/null ||: +mkdir -p /etc/vitastor + + +%files -n vitastor-client +%_bindir/vitastor-nbd +%_bindir/vitastor-nfs +%_bindir/vitastor-cli +%_bindir/vitastor-rm +%_bindir/vita +%_libdir/libvitastor_blk.so* +%_libdir/libvitastor_client.so* + + +%files -n vitastor-client-devel +%_includedir/vitastor_c.h +%_libdir/pkgconfig + + +%files -n vitastor-fio +%_libdir/libfio_vitastor.so +%_libdir/libfio_vitastor_blk.so +%_libdir/libfio_vitastor_sec.so + + +%changelog