https://bugzilla.redhat.com/show_bug.cgi?id=2189083
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(zebob.m@gmail.com | |) |
--- Comment #11 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Let's start from scratch.
First read the Golang guidelines: https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/
Then use go2rpm to do the basic template go2rpm -d --name juicefs github.com/juicedata/juicefs
Cleanup of the first draft, we'll need to add the licenses later becauseit is statically compiled:
# Generated by go2rpm 1.9.0 %bcond_without check
# https://github.com/juicedata/juicefs %global goipath github.com/juicedata/juicefs Version: 1.1.0
%gometa -f
%global goname juicefs
%global common_description %{expand: JuiceFS is a high-performance POSIX file system released under Apache License 2.0, particularly designed for the cloud-native environment. The data, stored via JuiceFS, will be persisted in object storage (e.g. Amazon S3), and the corresponding metadata can be persisted in various database engines such as Redis, MySQL, and TiKV based on the scenarios and requirements.
With JuiceFS, massive cloud storage can be directly connected to big data, machine learning, artificial intelligence, and various application platforms in production environments. Without modifying code, the massive cloud storage can be used as efficiently as local storage.
* Fully POSIX-compatible: Use as a local file system, seamlessly docking with existing applications without breaking business workflow. * Fully Hadoop-compatible: JuiceFS' Hadoop Java SDK is compatible with Hadoop 2.x and Hadoop 3.x as well as a variety of components in the Hadoop ecosystems. * S3-compatible: JuiceFS' S3 Gateway provides an S3-compatible interface. * Cloud Native: A Kubernetes CSI Driver is provided for easily using JuiceFS in Kubernetes. * Shareable: JuiceFS is a shared file storage that can be read and written by thousands of clients. * Strong Consistency: The confirmed modification will be immediately visible on all the servers mounted with the same file system. * Outstanding Performance: The latency can be as low as a few milliseconds, and the throughput can be expanded nearly unlimitedly (depending on the size of the object storage). * Data Encryption: Supports data encryption in transit and at rest. * Global File Locks: JuiceFS supports both BSD locks (flock) and POSIX record locks (fcntl). * Data Compression: JuiceFS supports LZ4 or Zstandard to compress all your data.}
%global golicenses LICENSE %global godocs docs ADOPTERS.md ADOPTERS_CN.md CODE_OF_CONDUCT.md\\ CONTRIBUTING.md README.md README_CN.md
Name: juicefs Release: %autorelease Summary: Distributed POSIX file system built on top of Redis and S3
License: Apache-2.0 URL: %{gourl} Source: %{gosource}
%description %{common_description}
%gopkg
%prep %goprep %autopatch -p1
%generate_buildrequires %go_generate_buildrequires
%build export LDFLAGS="-X github.com/juicedata/juicefs/pkg/version.revision=%{version} \ -X github.com/juicedata/juicefs/pkg/version.revisionDate=$(date +%%Y%%m%%d)" export BUILDTAGS="ceph,fdb,gluster" %gobuild -o %{gobuilddir}/bin/juicefs %{goipath}
%install %gopkginstall install -m 0755 -vd %{buildroot}%{_bindir} install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
%if %{with check} %check %gocheck %endif
%files %license LICENSE %doc docs ADOPTERS.md ADOPTERS_CN.md CODE_OF_CONDUCT.md %doc CONTRIBUTING.md README.md README_CN.md %{_bindir}/juicefs
%gopkgfiles
%changelog %autochangelog
Let's try to build it:
spectool -g *.spec; rpmbuild -bs *.spec Downloading: https://github.com/juicedata/juicefs/archive/v1.1.0/juicefs-1.1.0.tar.gz | 31.0 MiB Elapsed Time: 0:00:01 Downloaded: juicefs-1.1.0.tar.gz setting SOURCE_DATE_EPOCH=1698278400
fedpkg --release f40 mockbuild -N
No matching package to install: 'golang(github.com/Arvintian/scs-go-sdk/pkg/client)' No matching package to install: 'golang(github.com/Arvintian/scs-go-sdk/scs)' No matching package to install: 'golang(github.com/DataDog/zstd)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/aws)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/aws/awserr)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/aws/request)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/aws/session)' No matching package to install: 'golang(github.com/IBM/ibm-cos-sdk-go/service/s3)' No matching package to install: 'golang(github.com/agiledragon/gomonkey/v2)' No matching package to install: 'golang(github.com/baidubce/bce-sdk-go/bce)' No matching package to install: 'golang(github.com/baidubce/bce-sdk-go/services/bos)' No matching package to install: 'golang(github.com/baidubce/bce-sdk-go/services/bos/api)' No matching package to install: 'golang(github.com/dgraph-io/badger/v3)' No matching package to install: 'golang(github.com/erikdubbelboer/gspt)' No matching package to install: 'golang(github.com/huaweicloud/huaweicloud-sdk-go-obs/obs)' No matching package to install: 'golang(github.com/hungys/go-lz4)' No matching package to install: 'golang(github.com/jackc/pgx/v5/pgconn)' No matching package to install: 'golang(github.com/jackc/pgx/v5/stdlib)' No matching package to install: 'golang(github.com/juicedata/godaemon)' No matching package to install: 'golang(github.com/ks3sdklib/aws-sdk-go/aws)' No matching package to install: 'golang(github.com/ks3sdklib/aws-sdk-go/aws/awserr)' No matching package to install: 'golang(github.com/ks3sdklib/aws-sdk-go/aws/credentials)' No matching package to install: 'golang(github.com/ks3sdklib/aws-sdk-go/service/s3)' No matching package to install: 'golang(github.com/minio/cli)' No matching package to install: 'golang(github.com/minio/minio/cmd)' No matching package to install: 'golang(github.com/minio/minio/pkg/auth)' No matching package to install: 'golang(github.com/oliverisaac/shellescape)' No matching package to install: 'golang(github.com/pingcap/log)' No matching package to install: 'golang(github.com/pyroscope-io/client/pyroscope)' No matching package to install: 'golang(github.com/qingstor/qingstor-sdk-go/v4/config)' No matching package to install: 'golang(github.com/qingstor/qingstor-sdk-go/v4/request/errors)' No matching package to install: 'golang(github.com/qingstor/qingstor-sdk-go/v4/service)' No matching package to install: 'golang(github.com/qiniu/go-sdk/v7/auth)' No matching package to install: 'golang(github.com/qiniu/go-sdk/v7/storage)' No matching package to install: 'golang(github.com/redis/go-redis/v9)' No matching package to install: 'golang(github.com/studio-b12/gowebdav)' No matching package to install: 'golang(github.com/tencentyun/cos-go-sdk-v5)' No matching package to install: 'golang(github.com/tikv/client-go/v2/config)' No matching package to install: 'golang(github.com/tikv/client-go/v2/error)' No matching package to install: 'golang(github.com/tikv/client-go/v2/oracle)' No matching package to install: 'golang(github.com/tikv/client-go/v2/rawkv)' No matching package to install: 'golang(github.com/tikv/client-go/v2/tikv)' No matching package to install: 'golang(github.com/tikv/client-go/v2/txnkv)' No matching package to install: 'golang(github.com/tikv/client-go/v2/txnkv/txnutil)' No matching package to install: 'golang(github.com/upyun/go-sdk/v3/upyun)' No matching package to install: 'golang(github.com/vbauerster/mpb/v7)' No matching package to install: 'golang(github.com/vbauerster/mpb/v7/decor)' No matching package to install: 'golang(github.com/viki-org/dnscache)' No matching package to install: 'golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos)' No matching package to install: 'golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos/codes)' No matching package to install: 'golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum)' No matching package to install: 'golang(go.etcd.io/etcd/pkg/transport)' No matching package to install: 'golang(gopkg.in/kothar/go-backblaze.v0)
Mow we have the list of new dependencies to package.
So:
github.com/Arvintian/scs-go-sdk github.com/DataDog/zstd github.com/IBM/ibm-cos-sdk-go github.com/agiledragon/gomonkey/v2 github.com/baidubce/bce-sdk-go github.com/dgraph-io/badger/v3 github.com/erikdubbelboer/gspt github.com/huaweicloud/huaweicloud-sdk-go-obs github.com/hungys/go-lz4 github.com/jackc/pgx/v5 github.com/juicedata/godaemon github.com/ks3sdklib/aws-sdk-go github.com/minio/cli github.com/minio/minio github.com/oliverisaac/shellescape github.com/pingcap/log github.com/pyroscope-io/client github.com/qingstor/qingstor-sdk-go/v4 github.com/qiniu/go-sdk/v7 github.com/redis/go-redis/v9 github.com/studio-b12/gowebdav github.com/tencentyun/cos-go-sdk-v5 github.com/tikv/client-go/v2 github.com/upyun/go-sdk/v3 github.com/vbauerster/mpb/v7 github.com/viki-org/dnscache github.com/volcengine/ve-tos-golang-sdk/v2 gopkg.in/kothar/go-backblaze.v0
28 first level packages
I'll follow up later.