eee0e33
#
eee0e33
# Currently debuginfo breaks the build.
eee0e33
#
eee0e33
# I get one of the following two failures following recommended debuginfo
eee0e33
# methods for golang:
eee0e33
#
eee0e33
#   *** ERROR: No build ID note found in /builddir/build/BUILDROOT/reg-0.4.1-1.x86_64/usr/bin/reg-server
eee0e33
#
eee0e33
# or:
eee0e33
#
eee0e33
#   /var/tmp/rpm-tmp.U9Lwrk: line 36: syntax error near unexpected token `)'
eee0e33
#
eee0e33
%global debug_package %{nil}
eee0e33
eee0e33
# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12
eee0e33
%global _dwz_low_mem_die_limit 0
eee0e33
eee0e33
# modifying the Go binaries breaks the DWARF debugging
eee0e33
%global __os_install_post %{_rpmconfigdir}/brp-compress
eee0e33
fc69222
%global provider_prefix github.com/genuinetools/reg
eee0e33
%global import_path     %{provider_prefix}
fc69222
#global commit          8d8ca405f7a8c8c4f72686ed239c767aba663f9b
fc69222
#global shortcommit     %%(c=%%{commit}; echo ${c:0:7})
eee0e33
eee0e33
Name:       reg
fc69222
Version:    0.15.5
ec723d6
Release:    3%{?dist}
eee0e33
Summary:    Docker registry v2 command line client
eee0e33
eee0e33
eee0e33
License:    MIT
eee0e33
URL:        https://%{import_path}/%{name}
eee0e33
fc69222
Source0:    https://github.com/genuinetools/reg/archive/v%{version}.tar.gz
bb73934
eee0e33
# Upstream advertises this as something that's meant to be run in a container
eee0e33
# and doesn't provide a systemd unit or sysV init script or sysconfig files
eee0e33
# so I'm providing them here.
eee0e33
Source1:    reg-server.service
eee0e33
Source2:    sysconfig.reg-server
eee0e33
eee0e33
BuildRequires: golang
eee0e33
BuildRequires: systemd
eee0e33
3b40a24
%if 0%{?epel}
3b40a24
# The version of golang is too old to understand the vendor manifest and can't
3b40a24
# find the appropriate path for the vendored version of this.
3b40a24
BuildRequires: golang-github-gorilla-context-devel
3b40a24
3b40a24
# For whatever reason golang-github-gorilla-context-devel isn't available in
3b40a24
# EPEL for any of the other arches.
6114104
#   BZ filed: https://bugzilla.redhat.com/show_bug.cgi?id=1466521
3b40a24
ExclusiveArch: x86_64
3b40a24
%endif # 0%{?epel}
3b40a24
fc69222
# The following section is populated by parsing the Gopkg.lock file
fc69222
# at the base dir of a git checkout of the source code.
eee0e33
#
eee0e33
#   $ git clone https://github.com/jessfraz/reg.git
eee0e33
#   $ cd reg
eee0e33
#
eee0e33
# Bundled Provides are defined as per Fedora Guidelines:
eee0e33
#   https://fedoraproject.org/wiki/Packaging:Guidelines#Bundling_and_Duplication_of_system_libraries
eee0e33
#
fc69222
Provides: bundled(golang(github.com/Azure/go-ansiterm)) = d6e3b3328b783f23731bc4d058875b0371ff8109
fc69222
Provides: bundled(golang(github.com/Microsoft/go-winio)) = 67921128fb397dd80339870d2193d6b1e6856fd4
eee0e33
Provides: bundled(golang(github.com/Nvveen/Gotty)) = cd527374f1e5bff4938207604a14f2e38a9cf512
fc69222
Provides: bundled(golang(github.com/beorn7/perks)) = 3a771d992973f24aa725d07868b467d1ddfceafb
fc69222
Provides: bundled(golang(github.com/containerd/continuity)) = 0377f7d767206f3a9e8881d0f02267b0d89c7a62
fc69222
Provides: bundled(golang(github.com/coreos/clair)) = 9a9b1f7a13fa1cb796fe6dfb45ed241f39ce9f01
fc69222
Provides: bundled(golang(github.com/docker/cli)) = b395d2d6f5eec2c047e6bba4a3fd941d5757d725
fc69222
Provides: bundled(golang(github.com/docker/distribution)) = 749f6afb4572201e3c37325d0ffedb6f32be8950
fc69222
Provides: bundled(golang(github.com/docker/docker)) = 492545e139e7461aac044149a931bb4b2dd48f75
fc69222
Provides: bundled(golang(github.com/docker/docker-ce)) = 2ec1cede27a3dc04c44f8ed2feb1efb00c724d63
fc69222
Provides: bundled(golang(github.com/docker/docker-credential-helpers)) = 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
fc69222
Provides: bundled(golang(github.com/docker/go-connections)) = 7395e3f8aa162843a74ed6d48e79627d9792ac55
fc69222
Provides: bundled(golang(github.com/docker/go-metrics)) = 399ea8c73916000c64c2c76e8da00ca82f8387ab
fc69222
Provides: bundled(golang(github.com/docker/go-units)) = 47565b4f722fb6ceae66b95f853feed578a4a51c
eee0e33
Provides: bundled(golang(github.com/docker/libtrust)) = aabc10ec26b754e797f9028f4589c5b7bd90dc20
fc69222
Provides: bundled(golang(github.com/genuinetools/pkg)) = 3654fc151753f8cd41b366e0c15b9fa070890ddf
fc69222
Provides: bundled(golang(github.com/gogo/protobuf)) = 7d68e886eac4f7e34d0d82241a6273d6c304c5cf
fc69222
Provides: bundled(golang(github.com/golang/protobuf)) = b4deda0973fb4c70b50d226b1af49f3da59f5265
fc69222
Provides: bundled(golang(github.com/google/go-cmp)) = 3af367b6b30c263d47e8895973edcca9a49cf029
eee0e33
Provides: bundled(golang(github.com/gorilla/context)) = 08b5f424b9271eedf6f9f0ce86cb9396ed337a42
fc69222
Provides: bundled(golang(github.com/gorilla/mux)) = e3702bed27f0d39777b0b37b664b6280e8ef8fbf
fc69222
Provides: bundled(golang(github.com/grpc-ecosystem/grpc-gateway)) = 92583770e3f01b09a0d3e9bdf64321d8bebd48f2
fc69222
Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = c12348ce28de40eed0136aa2b644d0ee0650e56c
eee0e33
Provides: bundled(golang(github.com/mitchellh/go-wordwrap)) = ad45545899c7b13c020ea92b2072220eefad42b8
fc69222
Provides: bundled(golang(github.com/opencontainers/go-digest)) = c9281466c8b2f606084ac71339773efd177436e7
fc69222
Provides: bundled(golang(github.com/opencontainers/image-spec)) = d60099175f88c47cd379c4738d158884749ed235
fc69222
Provides: bundled(golang(github.com/opencontainers/runc)) = baf6536d6259209c3edfa2b22237af82942d3dfa
fc69222
Provides: bundled(golang(github.com/peterhellberg/link)) = d1cebc7ea14a5fc0de7cb4a45acae773161642c6
fc69222
Provides: bundled(golang(github.com/pkg/errors)) = 645ef00459ed84a119197bfb8d8205042c6df63d
fc69222
Provides: bundled(golang(github.com/prometheus/client_golang)) = bcbbc08eb2ddff3af83bbf11e7ec13b4fd730b6e
fc69222
Provides: bundled(golang(github.com/prometheus/client_model)) = 5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f
fc69222
Provides: bundled(golang(github.com/prometheus/common)) = 7600349dcfe1abd18d72d3a1770870d9800a7801
fc69222
Provides: bundled(golang(github.com/prometheus/procfs)) = ae68e2d4c00fed4943b5f6698d504a5fe083da8a
fc69222
Provides: bundled(golang(github.com/sirupsen/logrus)) = c155da19408a8799da419ed3eeb0cb5db0ad5dbc
fc69222
Provides: bundled(golang(golang.org/x/crypto)) = a49355c7e3f8fe157a85be2f77e6e269a0f89602
fc69222
Provides: bundled(golang(golang.org/x/net)) = d0887baf81f4598189d4e12a37c6da86f0bba4d0
fc69222
Provides: bundled(golang(golang.org/x/sys)) = ac767d655b305d4e9612f5f6e33120b9176c4ad4
fc69222
Provides: bundled(golang(golang.org/x/text)) = f21a4dfb5e38f5895301dc265a8def02365cc3d0
fc69222
Provides: bundled(golang(google.golang.org/genproto)) = e92b116572682a5b432ddd840aeaba2a559eeff1
fc69222
Provides: bundled(golang(google.golang.org/grpc)) = 168a6198bcb0ef175f7dacec0b8691fc141dc9b8
fc69222
Obsoletes: reg-server < %{version}
eee0e33
eee0e33
%description
eee0e33
Docker registry v2 client.
eee0e33
eee0e33
%prep
fc69222
%setup -q -n %{name}-%{version}
549ed79
eee0e33
# Have to move things around because of how golang likes to search $GOPATH
eee0e33
cd ../
eee0e33
mv $OLDPWD hack
eee0e33
mkdir $OLDPWD
eee0e33
cd $OLDPWD
eee0e33
mkdir -p $(pwd)/go/src/%{import_path}
eee0e33
mv ../hack/* $(pwd)/go/src/%{import_path}/
eee0e33
3b40a24
# Have to mess with the pathing even more to make the older version of golang
3b40a24
# in el7 happy.
3b40a24
%if 0%{?epel}
3b40a24
for d in $(ls $(pwd)/go/src/%{import_path}/vendor/)
3b40a24
do
3b40a24
    if [[ -d "$(pwd)/go/src/%{import_path}/vendor/${d}" ]]; then
3b40a24
        printf "D VALUE: %s\n" "${d}"
3b40a24
        mkdir -p $(pwd)/go/src/${d}
3b40a24
        cp -r $(pwd)/go/src/%{import_path}/vendor/${d}/* $(pwd)/go/src/${d}/
3b40a24
    fi
3b40a24
done
3b40a24
%endif # 0%{?epel}
eee0e33
eee0e33
%build
eee0e33
export GOPATH="$(pwd)/go:%{buildroot}%{gopath}:%{gopath}"
eee0e33
eee0e33
cd $(pwd)/go/src/%{import_path}/
eee0e33
eee0e33
# Leave this here for when we can sort out the debuginfo fix
eee0e33
#   https://bugzilla.redhat.com/show_bug.cgi?id=1432214
eee0e33
#go build \
eee0e33
#    -ldflags '-B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d \' \\n\')' \
eee0e33
#    -o reg .
eee0e33
#
eee0e33
#go build \
eee0e33
#    -ldflags '-B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d \' \\n\')' \
eee0e33
#    -o reg-server ./server
eee0e33
eee0e33
go build -o reg .
eee0e33
eee0e33
%install
eee0e33
eee0e33
# Install the binaries
eee0e33
cd ./go/src/%{import_path}/
eee0e33
mkdir -p %{buildroot}%{_bindir}
eee0e33
install -p -m 0755 %{name} %{buildroot}%{_bindir}/%{name}
eee0e33
eee0e33
# Install templates and static content
eee0e33
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}-server
eee0e33
install -d server/templates/ %{buildroot}/%{_sharedstatedir}/%{name}-server/templates/
eee0e33
install -d server/static/ %{buildroot}%{_sharedstatedir}/%{name}-server/static/
eee0e33
cp -p -r server/templates/* %{buildroot}%{_sharedstatedir}/%{name}-server/templates/
eee0e33
cp -p -r server/static/* %{buildroot}%{_sharedstatedir}/%{name}-server/static/
eee0e33
eee0e33
# Install the systemd unit
eee0e33
mkdir -p %{buildroot}%{_unitdir}
eee0e33
install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}-server.service
eee0e33
eee0e33
# Install the sysconfig file
eee0e33
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
eee0e33
install -p -m 0640 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-server
eee0e33
eee0e33
eee0e33
mkdir -p %{buildroot}/%{name}-%{version}
eee0e33
eee0e33
# Setup doc files for doc macro
eee0e33
for i in README.md Dockerfile Makefile
eee0e33
do
fc69222
    cp -p ${i} %{_builddir}/%{name}-%{version}/
eee0e33
done
eee0e33
eee0e33
# Setup license file for license macro
fc69222
cp -p LICENSE %{_builddir}/%{name}-%{version}/
eee0e33
fc69222
%post
eee0e33
%systemd_post %{name}-server.service
eee0e33
fc69222
%preun
eee0e33
%systemd_preun %{name}-server.service
eee0e33
fc69222
%postun
eee0e33
%systemd_postun
eee0e33
eee0e33
%files
eee0e33
%doc README.md Dockerfile Makefile
eee0e33
%license LICENSE
eee0e33
%{_bindir}/%{name}
eee0e33
%{_unitdir}/%{name}-server.service
eee0e33
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}-server
eee0e33
%config(noreplace) %{_sharedstatedir}/%{name}-server/static/
eee0e33
%config(noreplace) %{_sharedstatedir}/%{name}-server/templates/
eee0e33
eee0e33
%changelog
ec723d6
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.15.5-3
ec723d6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
ec723d6
8efe93e
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.15.5-2
8efe93e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
8efe93e
fc69222
* Tue Oct 16 2018 Kevin Fenzi <kevin@scrye.com> - 0.15.5-1
fc69222
- Update to 0.15.5
fc69222
fc69222
* Thu Jul 26 2018 Kevin Fenzi <kevin@scrye.com> - 0.15.4-1
fc69222
- Update to 0.15.4.
fc69222
f099da7
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-9
f099da7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
f099da7
5a2ab72
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-8
5a2ab72
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
5a2ab72
8f25730
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-7
8f25730
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
8f25730
03b7787
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-6
03b7787
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
03b7787
549ed79
* Thu Jun 29 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-5
549ed79
- Actually apply the patch for single-run execution
549ed79
3b40a24
* Thu Jun 29 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-4
3b40a24
- Fix epel7 build
3b40a24
bb73934
* Tue Jun 27 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-3
bb73934
- Add patch to allow single-run execution of reg-server for static html
bb73934
  generation
bb73934
8cc907f
* Mon Jun 19 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-2
8cc907f
- Add ghost file entry for statically generated index.html
8cc907f
eee0e33
* Mon Jun 12 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-1
eee0e33
- Update to latest upstream
eee0e33
- Switch to using upstream versioning, they are tagging versions now.
eee0e33
eee0e33
* Tue Mar 21 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.2.0-2.git.0.94d0af5
eee0e33
- Move static/templates and systemd workingdir to /var/lib/reg-server
eee0e33
- Change Source0 to point to github archive url instead of local git-archive
eee0e33
- Fix tabs vs spaces in the spec file
eee0e33
eee0e33
* Tue Mar 14 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.2.0-1.git.0.94d0af5
eee0e33
- First package for Fedora