SPECS/consul/consul.spec
a99752af
 Summary:        Consul is a tool for service discovery and configuration.
 Name:           consul
 Version:        1.1.0
 Release:        1%{?dist}
 License:        Mozilla Public License, version 2.0
 Group:          System Environment/Daemons
 Vendor:         VMware, Inc.
 Distribution:   Photon
 URL:		https://github.com/hashicorp/consul/archive/v%{version}.tar.gz
 Source0:	%{name}-%{version}.tar.gz
 %define sha1 %{name}-%{version}.tar.gz=e3a4f1047acb7c831bf772c3d26c4d5c0778df69
 Source1:        %{name}.service
 BuildRequires:  unzip
 BuildRequires:  systemd
 BuildRequires:  go
 Requires:       systemd
 
 %description
 Consul is a tool for service discovery and configuration. Consul is distributed, highly available, and extremely scalable.
 
 Consul provides several key features:
  - Service Discovery - Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. External services such as SaaS providers can be registered as well.
  - Health Checking - Health Checking enables Consul to quickly alert operators about any issues in a cluster. The integration with service discovery prevents routing traffic to unhealthy hosts and enables service level circuit breakers.
  - Key/Value Storage - A flexible key/value store enables storing dynamic configuration, feature flagging, coordination, leader election and more. The simple HTTP API makes it easy to use anywhere.
  - Multi-Datacenter - Consul is built to be datacenter aware, and can support any number of regions without complex configuration.
 
 %global debug_package %{nil}
 
 %prep
 %setup -q
 
 %build
 export LANG=en_US.UTF-8
 export LC_ALL=en_US.UTF-8
 export PKG=github.com/hashicorp/%{name}
 export GOPATH=/usr/share/gocode
 export GOROOT=/usr/lib/golang
 export GOHOSTOS=linux
 export CGO_ENABLED=0
 export GOOS=linux
 export VERSION=%{version}
 mkdir -p ${GOPATH}/src/${PKG}
 cp -r * ${GOPATH}/src/${PKG}/.
 pushd ${GOPATH}/src/${PKG}
 mkdir -p %{name}_bin
 CGO_ENABLED=0 GOOS=linux go build -v -o %{name}_bin/%{name} -ldflags "-X main.VERSION=%{version} -s -w" *.go
 
 %install
 export PKG=github.com/hashicorp/%{name}
 pushd ${GOPATH}/src/${PKG}
 install -vdm 755 %{buildroot}%{_bindir}
 install ${GOPATH}/src/${PKG}/%{name}_bin/%{name} %{buildroot}%{_bindir}
 install -vdm 755 %{buildroot}%{_sysconfdir}/%{name}.d
 install -vdm 755 %{buildroot}/usr/lib/systemd/system
 
 chown -R root:root %{buildroot}%{_bindir}
 
 install -vdm 755 %{buildroot}/usr/lib/systemd/system
 install -p -m 0644 %{SOURCE1} %{buildroot}/usr/lib/systemd/system/
 
 install -vdm 755 %{buildroot}/var/lib/%{name}
 
 %pre
 if ! getent group %{name} >/dev/null; then
     groupadd %{name}
 fi
 if ! getent passwd %{name} >/dev/null; then
     useradd -c "Consul Agent" -d /var/lib/%{name} -g %{name} -s /bin/false %{name}
 fi
 exit 0
 
 %post
 /sbin/ldconfig
 %systemd_post %{name}.service
 
 %postun
 if [ $1 -eq 0 ]; then
   # this is delete operation
   if getent passwd %{name} >/dev/null; then
       userdel %{name}
   fi
   if getent group %{name} >/dev/null; then
       groupdel %{name}
   fi
 fi
 /sbin/ldconfig
 %systemd_postun_with_restart %{name}.service
 
 %preun
 /sbin/ldconfig
 %systemd_preun %{name}.service
 
 %clean
 rm -rf %{buildroot}
 
 %files
 %defattr(-,%{name},%{name})
 %{_bindir}/%{name}
 /usr/lib/systemd/system/%{name}.service
 %dir /var/lib/%{name}
 %dir %{_sysconfdir}/%{name}.d
 
 %changelog
 *       Thu Jun 28 2018 Ankit Jain <ankitja@vmware.com> 1.1.0-1
 -       Initial build.  First version