https://bugzilla.redhat.com/show_bug.cgi?id=2189083
--- Comment #8 from Herald yuhr123@gmail.com --- I basically understand what you mean. Referring to the golang packaging documentation you provided, I tried to add goipath and BuildRequires in the spec file, but still failed to compile due to missing dependencies. Juicefs has over 200 third-party package dependencies, and almost none of them are packaged as RPM. It is difficult to imagine the difficulty of individually handling and maintaining these dependencies build to RPM.
Currently, I haven't found a method to directly package the source code of these dependencies into the SRPM. Do you have any suggestions or advice? Is it allowed to directly package the binary of JuiceFS for this situation?
https://github.com/juicedata/juicefs/releases/tag/v1.1.0
---
# https://github.com/juicedata/juicefs %global goipath github.com/juicedata/juicefs Version: 1.1.0
%gometa
%global common_description %{expand: JuiceFS is a distributed POSIX file system built on top of Redis and S3.}
%global golicenses LICENSE %global godocs docs ADOPTERS.md CONTRIBUTING.md CODE_OF_CONDUCT.md\\ README_CN.md README.md ADOPTERS_CN.md\\ pkg/object/README.md
Name: juicefs Release: %autorelease Summary: JuiceFS is a distributed POSIX file system built on top of Redis and S3
License: Apache-2.0 URL: %{gourl} Source: %{gosource}
BuildRequires: golang(cloud.google.com/go/compute/metadata) BuildRequires: golang(cloud.google.com/go/storage) BuildRequires: golang(github.com/agiledragon/gomonkey/v2) BuildRequires: golang(github.com/aliyun/aliyun-oss-go-sdk/oss) BuildRequires: golang(github.com/Arvintian/scs-go-sdk/pkg/client) BuildRequires: golang(github.com/Arvintian/scs-go-sdk/scs) BuildRequires: golang(github.com/aws/aws-sdk-go/aws) BuildRequires: golang(github.com/aws/aws-sdk-go/aws/awserr) BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials) BuildRequires: golang(github.com/aws/aws-sdk-go/aws/request) BuildRequires: golang(github.com/aws/aws-sdk-go/aws/session) BuildRequires: golang(github.com/aws/aws-sdk-go/service/s3) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/azcore) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container) BuildRequires: golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas) BuildRequires: golang(github.com/baidubce/bce-sdk-go/bce) BuildRequires: golang(github.com/baidubce/bce-sdk-go/services/bos) BuildRequires: golang(github.com/baidubce/bce-sdk-go/services/bos/api) BuildRequires: golang(github.com/colinmarc/hdfs/v2) BuildRequires: golang(github.com/colinmarc/hdfs/v2/hadoopconf) BuildRequires: golang(github.com/DataDog/zstd) BuildRequires: golang(github.com/dgraph-io/badger/v3) BuildRequires: golang(github.com/dustin/go-humanize) BuildRequires: golang(github.com/erikdubbelboer/gspt) BuildRequires: golang(github.com/goccy/go-json) BuildRequires: golang(github.com/gofrs/flock) BuildRequires: golang(github.com/google/btree) BuildRequires: golang(github.com/google/uuid) BuildRequires: golang(github.com/go-sql-driver/mysql) BuildRequires: golang(github.com/hanwen/go-fuse/v2/fuse) BuildRequires: golang(github.com/hanwen/go-fuse/v2/posixtest) BuildRequires: golang(github.com/hashicorp/consul/api) BuildRequires: golang(github.com/hashicorp/go-hclog) BuildRequires: golang(github.com/huaweicloud/huaweicloud-sdk-go-obs/obs) BuildRequires: golang(github.com/hungys/go-lz4) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/aws) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/aws/awserr) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/aws/request) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/aws/session) BuildRequires: golang(github.com/IBM/ibm-cos-sdk-go/service/s3) BuildRequires: golang(github.com/jackc/pgx/v5/pgconn) BuildRequires: golang(github.com/jackc/pgx/v5/stdlib) BuildRequires: golang(github.com/jcmturner/gokrb5/v8/client) BuildRequires: golang(github.com/jcmturner/gokrb5/v8/config) BuildRequires: golang(github.com/jcmturner/gokrb5/v8/credentials) BuildRequires: golang(github.com/jcmturner/gokrb5/v8/keytab) BuildRequires: golang(github.com/juicedata/godaemon) BuildRequires: golang(github.com/juju/ratelimit) BuildRequires: golang(github.com/ks3sdklib/aws-sdk-go/aws) BuildRequires: golang(github.com/ks3sdklib/aws-sdk-go/aws/awserr) BuildRequires: golang(github.com/ks3sdklib/aws-sdk-go/aws/credentials) BuildRequires: golang(github.com/ks3sdklib/aws-sdk-go/service/s3) BuildRequires: golang(github.com/mattn/go-isatty) BuildRequires: golang(github.com/mattn/go-sqlite3) BuildRequires: golang(github.com/minio/cli) BuildRequires: golang(github.com/minio/minio/cmd) BuildRequires: golang(github.com/minio/minio-go/pkg/s3utils) BuildRequires: golang(github.com/minio/minio/pkg/auth) BuildRequires: golang(github.com/ncw/swift/v2) BuildRequires: golang(github.com/oliverisaac/shellescape) BuildRequires: golang(github.com/pingcap/log) BuildRequires: golang(github.com/pkg/errors) BuildRequires: golang(github.com/pkg/sftp) BuildRequires: golang(github.com/pkg/xattr) BuildRequires: golang(github.com/prometheus/client_golang/prometheus) BuildRequires: golang(github.com/prometheus/client_golang/prometheus/collectors) BuildRequires: golang(github.com/prometheus/client_golang/prometheus/promhttp) BuildRequires: golang(github.com/prometheus/client_golang/prometheus/push) BuildRequires: golang(github.com/prometheus/client_model/go) BuildRequires: golang(github.com/prometheus/common/expfmt) BuildRequires: golang(github.com/prometheus/common/model) BuildRequires: golang(github.com/pyroscope-io/client/pyroscope) BuildRequires: golang(github.com/qingstor/qingstor-sdk-go/v4/config) BuildRequires: golang(github.com/qingstor/qingstor-sdk-go/v4/request/errors) BuildRequires: golang(github.com/qingstor/qingstor-sdk-go/v4/service) BuildRequires: golang(github.com/qiniu/go-sdk/v7/auth) BuildRequires: golang(github.com/qiniu/go-sdk/v7/storage) BuildRequires: golang(github.com/redis/go-redis/v9) BuildRequires: golang(github.com/sirupsen/logrus) BuildRequires: golang(github.com/sirupsen/logrus/hooks/syslog) BuildRequires: golang(github.com/smartystreets/goconvey/convey) BuildRequires: golang(github.com/studio-b12/gowebdav) BuildRequires: golang(github.com/tencentyun/cos-go-sdk-v5) BuildRequires: golang(github.com/tikv/client-go/v2/config) BuildRequires: golang(github.com/tikv/client-go/v2/error) BuildRequires: golang(github.com/tikv/client-go/v2/oracle) BuildRequires: golang(github.com/tikv/client-go/v2/rawkv) BuildRequires: golang(github.com/tikv/client-go/v2/tikv) BuildRequires: golang(github.com/tikv/client-go/v2/txnkv) BuildRequires: golang(github.com/tikv/client-go/v2/txnkv/txnutil) BuildRequires: golang(github.com/upyun/go-sdk/v3/upyun) BuildRequires: golang(github.com/urfave/cli/v2) BuildRequires: golang(github.com/vbauerster/mpb/v7) BuildRequires: golang(github.com/vbauerster/mpb/v7/decor) BuildRequires: golang(github.com/viki-org/dnscache) BuildRequires: golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos) BuildRequires: golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos/codes) BuildRequires: golang(github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum) BuildRequires: golang(github.com/youmark/pkcs8) BuildRequires: golang(go.etcd.io/etcd/client/v3) BuildRequires: golang(go.etcd.io/etcd/pkg/transport) BuildRequires: golang(golang.org/x/crypto/chacha20poly1305) BuildRequires: golang(golang.org/x/crypto/ssh) BuildRequires: golang(golang.org/x/crypto/ssh/agent) BuildRequires: golang(golang.org/x/net/http/httpproxy) BuildRequires: golang(golang.org/x/net/webdav) BuildRequires: golang(golang.org/x/oauth2/google) BuildRequires: golang(golang.org/x/sync/errgroup) BuildRequires: golang(golang.org/x/sys/unix) BuildRequires: golang(golang.org/x/term) BuildRequires: golang(golang.org/x/text/encoding/simplifiedchinese) BuildRequires: golang(golang.org/x/text/transform) BuildRequires: golang(google.golang.org/api/iterator) BuildRequires: golang(google.golang.org/protobuf/proto) BuildRequires: golang(gopkg.in/kothar/go-backblaze.v0) BuildRequires: golang(go.uber.org/automaxprocs/maxprocs) BuildRequires: golang(go.uber.org/zap) BuildRequires: golang(xorm.io/xorm) BuildRequires: golang(xorm.io/xorm/log) BuildRequires: golang(xorm.io/xorm/names)
%description %{common_description}
%gopkg
%prep %goprep %autopatch -p1
%build for cmd in cmd/* ; do %gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd done
%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 CONTRIBUTING.md CODE_OF_CONDUCT.md README_CN.md README.md %doc ADOPTERS_CN.md pkg/object/README.md %{_bindir}/*
%gopkgfiles
%changelog %autochangelog ```