Blob Blame History Raw
#
# Currently debuginfo breaks the build.
#
# I get one of the following two failures following recommended debuginfo
# methods for golang:
#
#   *** ERROR: No build ID note found in /builddir/build/BUILDROOT/reg-0.4.1-1.x86_64/usr/bin/reg-server
#
# or:
#
#   /var/tmp/rpm-tmp.U9Lwrk: line 36: syntax error near unexpected token `)'
#
%global debug_package %{nil}

# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12
%global _dwz_low_mem_die_limit 0

# modifying the Go binaries breaks the DWARF debugging
%global __os_install_post %{_rpmconfigdir}/brp-compress

%global provider_prefix github.com/genuinetools/reg
%global import_path     %{provider_prefix}
#global commit          8d8ca405f7a8c8c4f72686ed239c767aba663f9b
#global shortcommit     %%(c=%%{commit}; echo ${c:0:7})

Name:       reg
Version:    0.15.5
Release:    1%{?dist}
Summary:    Docker registry v2 command line client


License:    MIT
URL:        https://%{import_path}/%{name}

Source0:    https://github.com/genuinetools/reg/archive/v%{version}.tar.gz

# Upstream advertises this as something that's meant to be run in a container
# and doesn't provide a systemd unit or sysV init script or sysconfig files
# so I'm providing them here.
Source1:    reg-server.service
Source2:    sysconfig.reg-server

BuildRequires: golang
BuildRequires: systemd

%if 0%{?epel}
# The version of golang is too old to understand the vendor manifest and can't
# find the appropriate path for the vendored version of this.
BuildRequires: golang-github-gorilla-context-devel

# For whatever reason golang-github-gorilla-context-devel isn't available in
# EPEL for any of the other arches.
#   BZ filed: https://bugzilla.redhat.com/show_bug.cgi?id=1466521
ExclusiveArch: x86_64
%endif # 0%{?epel}

# The following section is populated by parsing the Gopkg.lock file
# at the base dir of a git checkout of the source code.
#
#   $ git clone https://github.com/jessfraz/reg.git
#   $ cd reg
#
# Bundled Provides are defined as per Fedora Guidelines:
#   https://fedoraproject.org/wiki/Packaging:Guidelines#Bundling_and_Duplication_of_system_libraries
#
Provides: bundled(golang(github.com/Azure/go-ansiterm)) = d6e3b3328b783f23731bc4d058875b0371ff8109
Provides: bundled(golang(github.com/Microsoft/go-winio)) = 67921128fb397dd80339870d2193d6b1e6856fd4
Provides: bundled(golang(github.com/Nvveen/Gotty)) = cd527374f1e5bff4938207604a14f2e38a9cf512
Provides: bundled(golang(github.com/beorn7/perks)) = 3a771d992973f24aa725d07868b467d1ddfceafb
Provides: bundled(golang(github.com/containerd/continuity)) = 0377f7d767206f3a9e8881d0f02267b0d89c7a62
Provides: bundled(golang(github.com/coreos/clair)) = 9a9b1f7a13fa1cb796fe6dfb45ed241f39ce9f01
Provides: bundled(golang(github.com/docker/cli)) = b395d2d6f5eec2c047e6bba4a3fd941d5757d725
Provides: bundled(golang(github.com/docker/distribution)) = 749f6afb4572201e3c37325d0ffedb6f32be8950
Provides: bundled(golang(github.com/docker/docker)) = 492545e139e7461aac044149a931bb4b2dd48f75
Provides: bundled(golang(github.com/docker/docker-ce)) = 2ec1cede27a3dc04c44f8ed2feb1efb00c724d63
Provides: bundled(golang(github.com/docker/docker-credential-helpers)) = 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
Provides: bundled(golang(github.com/docker/go-connections)) = 7395e3f8aa162843a74ed6d48e79627d9792ac55
Provides: bundled(golang(github.com/docker/go-metrics)) = 399ea8c73916000c64c2c76e8da00ca82f8387ab
Provides: bundled(golang(github.com/docker/go-units)) = 47565b4f722fb6ceae66b95f853feed578a4a51c
Provides: bundled(golang(github.com/docker/libtrust)) = aabc10ec26b754e797f9028f4589c5b7bd90dc20
Provides: bundled(golang(github.com/genuinetools/pkg)) = 3654fc151753f8cd41b366e0c15b9fa070890ddf
Provides: bundled(golang(github.com/gogo/protobuf)) = 7d68e886eac4f7e34d0d82241a6273d6c304c5cf
Provides: bundled(golang(github.com/golang/protobuf)) = b4deda0973fb4c70b50d226b1af49f3da59f5265
Provides: bundled(golang(github.com/google/go-cmp)) = 3af367b6b30c263d47e8895973edcca9a49cf029
Provides: bundled(golang(github.com/gorilla/context)) = 08b5f424b9271eedf6f9f0ce86cb9396ed337a42
Provides: bundled(golang(github.com/gorilla/mux)) = e3702bed27f0d39777b0b37b664b6280e8ef8fbf
Provides: bundled(golang(github.com/grpc-ecosystem/grpc-gateway)) = 92583770e3f01b09a0d3e9bdf64321d8bebd48f2
Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = c12348ce28de40eed0136aa2b644d0ee0650e56c
Provides: bundled(golang(github.com/mitchellh/go-wordwrap)) = ad45545899c7b13c020ea92b2072220eefad42b8
Provides: bundled(golang(github.com/opencontainers/go-digest)) = c9281466c8b2f606084ac71339773efd177436e7
Provides: bundled(golang(github.com/opencontainers/image-spec)) = d60099175f88c47cd379c4738d158884749ed235
Provides: bundled(golang(github.com/opencontainers/runc)) = baf6536d6259209c3edfa2b22237af82942d3dfa
Provides: bundled(golang(github.com/peterhellberg/link)) = d1cebc7ea14a5fc0de7cb4a45acae773161642c6
Provides: bundled(golang(github.com/pkg/errors)) = 645ef00459ed84a119197bfb8d8205042c6df63d
Provides: bundled(golang(github.com/prometheus/client_golang)) = bcbbc08eb2ddff3af83bbf11e7ec13b4fd730b6e
Provides: bundled(golang(github.com/prometheus/client_model)) = 5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f
Provides: bundled(golang(github.com/prometheus/common)) = 7600349dcfe1abd18d72d3a1770870d9800a7801
Provides: bundled(golang(github.com/prometheus/procfs)) = ae68e2d4c00fed4943b5f6698d504a5fe083da8a
Provides: bundled(golang(github.com/sirupsen/logrus)) = c155da19408a8799da419ed3eeb0cb5db0ad5dbc
Provides: bundled(golang(golang.org/x/crypto)) = a49355c7e3f8fe157a85be2f77e6e269a0f89602
Provides: bundled(golang(golang.org/x/net)) = d0887baf81f4598189d4e12a37c6da86f0bba4d0
Provides: bundled(golang(golang.org/x/sys)) = ac767d655b305d4e9612f5f6e33120b9176c4ad4
Provides: bundled(golang(golang.org/x/text)) = f21a4dfb5e38f5895301dc265a8def02365cc3d0
Provides: bundled(golang(google.golang.org/genproto)) = e92b116572682a5b432ddd840aeaba2a559eeff1
Provides: bundled(golang(google.golang.org/grpc)) = 168a6198bcb0ef175f7dacec0b8691fc141dc9b8
Obsoletes: reg-server < %{version}

%description
Docker registry v2 client.

%prep
%setup -q -n %{name}-%{version}

# Have to move things around because of how golang likes to search $GOPATH
cd ../
mv $OLDPWD hack
mkdir $OLDPWD
cd $OLDPWD
mkdir -p $(pwd)/go/src/%{import_path}
mv ../hack/* $(pwd)/go/src/%{import_path}/

# Have to mess with the pathing even more to make the older version of golang
# in el7 happy.
%if 0%{?epel}
for d in $(ls $(pwd)/go/src/%{import_path}/vendor/)
do
    if [[ -d "$(pwd)/go/src/%{import_path}/vendor/${d}" ]]; then
        printf "D VALUE: %s\n" "${d}"
        mkdir -p $(pwd)/go/src/${d}
        cp -r $(pwd)/go/src/%{import_path}/vendor/${d}/* $(pwd)/go/src/${d}/
    fi
done
%endif # 0%{?epel}

%build
export GOPATH="$(pwd)/go:%{buildroot}%{gopath}:%{gopath}"

cd $(pwd)/go/src/%{import_path}/

# Leave this here for when we can sort out the debuginfo fix
#   https://bugzilla.redhat.com/show_bug.cgi?id=1432214
#go build \
#    -ldflags '-B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d \' \\n\')' \
#    -o reg .
#
#go build \
#    -ldflags '-B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d \' \\n\')' \
#    -o reg-server ./server

go build -o reg .

%install

# Install the binaries
cd ./go/src/%{import_path}/
mkdir -p %{buildroot}%{_bindir}
install -p -m 0755 %{name} %{buildroot}%{_bindir}/%{name}

# Install templates and static content
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}-server
install -d server/templates/ %{buildroot}/%{_sharedstatedir}/%{name}-server/templates/
install -d server/static/ %{buildroot}%{_sharedstatedir}/%{name}-server/static/
cp -p -r server/templates/* %{buildroot}%{_sharedstatedir}/%{name}-server/templates/
cp -p -r server/static/* %{buildroot}%{_sharedstatedir}/%{name}-server/static/

# Install the systemd unit
mkdir -p %{buildroot}%{_unitdir}
install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}-server.service

# Install the sysconfig file
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
install -p -m 0640 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-server


mkdir -p %{buildroot}/%{name}-%{version}

# Setup doc files for doc macro
for i in README.md Dockerfile Makefile
do
    cp -p ${i} %{_builddir}/%{name}-%{version}/
done

# Setup license file for license macro
cp -p LICENSE %{_builddir}/%{name}-%{version}/

%post
%systemd_post %{name}-server.service

%preun
%systemd_preun %{name}-server.service

%postun
%systemd_postun

%files
%doc README.md Dockerfile Makefile
%license LICENSE
%{_bindir}/%{name}
%{_unitdir}/%{name}-server.service
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}-server
%config(noreplace) %{_sharedstatedir}/%{name}-server/static/
%config(noreplace) %{_sharedstatedir}/%{name}-server/templates/

%changelog
* Tue Oct 16 2018 Kevin Fenzi <kevin@scrye.com> - 0.15.5-1
- Update to 0.15.5

* Thu Jul 26 2018 Kevin Fenzi <kevin@scrye.com> - 0.15.4-1
- Update to 0.15.4.

* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Thu Jun 29 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-5
- Actually apply the patch for single-run execution

* Thu Jun 29 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-4
- Fix epel7 build

* Tue Jun 27 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-3
- Add patch to allow single-run execution of reg-server for static html
  generation

* Mon Jun 19 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-2
- Add ghost file entry for statically generated index.html

* Mon Jun 12 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.4.1-1
- Update to latest upstream
- Switch to using upstream versioning, they are tagging versions now.

* Tue Mar 21 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.2.0-2.git.0.94d0af5
- Move static/templates and systemd workingdir to /var/lib/reg-server
- Change Source0 to point to github archive url instead of local git-archive
- Fix tabs vs spaces in the spec file

* Tue Mar 14 2017 Adam Miller <maxamillion@fedoraproject.org> - 0.2.0-1.git.0.94d0af5
- First package for Fedora