From 350c5ff8f81f93f42710fe88c15b80f55734930d Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 27 Nov 2020 13:36:02 -0800 Subject: [PATCH] fix: update RPM spec using rpmbuild (#10979) To test this PR > rpmbuild --undefine=_disable_source_fetch -ba minio.spec --- minio.spec | 93 ++++++++++++++++++++++-------------------------------- 1 file changed, 37 insertions(+), 56 deletions(-) diff --git a/minio.spec b/minio.spec index 4393d103a..ce1eb5513 100644 --- a/minio.spec +++ b/minio.spec @@ -1,83 +1,64 @@ -%define tag RELEASE.2017-04-25T01-27-49Z +%define tag RELEASE.2020-11-25T22-36-25Z %define subver %(echo %{tag} | sed -e 's/[^0-9]//g') -# git fetch https://github.com/minio/minio.git refs/tags/RELEASE.2017-02-16T01-47-30Z +# git fetch https://github.com/minio/minio.git refs/tags/RELEASE.2020-11-25T22-36-25Z # git rev-list -n 1 FETCH_HEAD -%define commitid 83abb310b4ce3a0dfc6d7faf78e33cb6f9132cfe -Summary: Cloud Storage Server. +%define commitid 91130e884b5df59d66a45a0aad4f48db88f5ca63 +Summary: High Performance, Kubernetes Native Object Storage. Name: minio Version: 0.0.%{subver} Release: 1 Vendor: MinIO, Inc. License: Apache v2.0 Group: Applications/File -Source0: https://github.com/minio/minio/archive/%{tag}.tar.gz +Source0: https://dl.minio.io/server/minio/release/linux-amd64/archive/minio.%{tag} +Source1: https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/distributed/minio.service URL: https://www.min.io/ -BuildRequires: golang >= 1.7 +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +Requires(postun): /usr/sbin/userdel BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) ## Disable debug packages. %define debug_package %{nil} -## Go related tags. -%define gobuild(o:) go build -ldflags "${LDFLAGS:-}" %{?**}; -%define gopath %{_libdir}/golang -%define import_path github.com/minio/minio - %description -MinIO is an object storage server released under Apache License v2.0. -It is compatible with Amazon S3 cloud storage service. It is best -suited for storing unstructured data such as photos, videos, log -files, backups and container / VM images. Size of an object can -range from a few KBs to a maximum of 5TiB. - -%prep -%setup -qc -mv %{name}-*/* . - -install -d src/$(dirname %{import_path}) -ln -s ../../.. src/%{import_path} - -%build -export GOPATH=$(pwd) +MinIO is a High Performance Object Storage released under Apache License v2.0. +It is API compatible with Amazon S3 cloud storage service. Use MinIO to build +high performance infrastructure for machine learning, analytics and application +data workloads. -# setup flags like 'go run buildscripts/gen-ldflags.go' would do -tag=%{tag} -version=${tag#RELEASE.} -commitid=%{commitid} -scommitid=$(echo $commitid | cut -c1-12) -prefix=%{import_path}/cmd +%pre +/usr/bin/getent group minio-user || /usr/sbin/groupadd -r minio-user +/usr/bin/getent passwd minio-user || /usr/sbin/useradd -r -d /etc/minio -s /sbin/nologin minio-user -LDFLAGS=" --X $prefix.Version=$version --X $prefix.ReleaseTag=$tag --X $prefix.CommitID=$commitid --X $prefix.ShortCommitID=$scommitid -" +%install +rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT/etc/minio/certs +install -d $RPM_BUILD_ROOT/etc/systemd/system +install -d $RPM_BUILD_ROOT/etc/default +install -d $RPM_BUILD_ROOT/usr/local/bin -%gobuild -o %{name} %{import_path} +cat <> $RPM_BUILD_ROOT/etc/default/minio +# Remote volumes to be used for MinIO server. +# Uncomment line before starting the server. +# MINIO_VOLUMES=http://node{1...6}/export{1...32} -# check that version set properly -./%{name} version | tee v +# Root credentials for the server. +# Uncomment both lines before starting the server. +# MINIO_ACCESS_KEY=Server-Access-Key +# MINIO_SECRET_KEY=Server-Secret-Key -#Version: 2016-09-11T17-42-18Z -#Release-Tag: RELEASE.2016-09-11T17-42-18Z -#Commit-ID: 85e2d886bcb005d49f3876d6849a2b5a55e03cd3 -v=$(awk '/Version:/{print $2}' v) -test "$v" = $version -v=$(awk '/Release-Tag:/{print $2}' v) -test "$v" = $tag -v=$(awk '/Commit-ID:/{print $2}' v) -test "$v" = $commitid +MINIO_OPTS="--certs-dir /etc/minio/certs" +EOF -%install -rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_sbindir} -install -p %{name} $RPM_BUILD_ROOT%{_sbindir} +install %{_sourcedir}/minio.service $RPM_BUILD_ROOT/etc/systemd/system/minio.service +install -p %{_sourcedir}/%{name}.%{tag} $RPM_BUILD_ROOT/usr/local/bin/minio %clean rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%doc README.md README_ZH.md -%attr(755,root,root) %{_sbindir}/minio +%attr(644,root,root) /etc/default/minio +%attr(644,root,root) /etc/systemd/system/minio.service +%attr(644,minio-user,minio-user) /etc/minio +%attr(755,minio-user,minio-user) /usr/local/bin/minio