Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:aevseev:devel
go
go.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File go.spec of Package go
%define realname go %define realver 1.22.0 %define extraver .src %define srcext tar.gz %define mainver %(awk -F. '{printf "%i.%i", $1, $2}' <<< %{realver}) %define alt_prio %(awk -F. '{printf "%i%i", $1, $2}' <<< %{realver}) %bcond_without go # turn off the generation of debuginfo rpm (RH9) ?? %global debug_package %{nil} # Don't strip binaries/libraries %global __strip /bin/true # Common info Name: %{realname}%{mainver} Version: %{realver} Release: %{?extraver:0.}1%{?dist} License: BSD-3-Clause Group: Development/Languages/Other URL: https://go.dev/ Summary: The Go Programming Language # Install-time parameters Provides: golang = %{version}-%{release} Provides: golang%{mainver} = %{version}-%{release} Provides: golang(API) = %{mainver} Obsoletes: golang < %{version}-%{release} %if 0%{?suse_version} Requires(post): alternatives %else Requires(post): chkconfig %endif # Build-time parameters BuildRequires: gcc-c++ BuildRequires: pkgconfig %if %{with go} BuildRequires: go %else BuildRequires: gcc-go >= 5.0 %endif %if 0%{?suse_version} BuildRequires: fdupes %endif # Tests # Static libc is required to test static binaries building %if 0%{?suse_version} BuildRequires: netcfg %endif %if 0%{?rhel} BuildRequires: setup %endif BuildRoot: %{_tmppath}/%{name}-root Source0: https://storage.googleapis.com/golang/%{realname}%{realver}%{?extraver}.%{srcext} %description Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. %package -n go Group: Development/Languages/Other Summary: The Go Programming Language Requires: %{name} = %{version}-%{release} Provides: golang = %{version}-%{release} Obsoletes: golang < %{version}-%{release} %description -n go Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. # Preparation step (unpackung and patching if necessary) %prep %setup -q -n %{realname} # Fix shebang %{__sed} -ri '1 s|^#!/usr/bin/env\s+(.+)$|#!/bin/\1|' src/*.bash %build export CGO_ENABLED=1 export CGO_CFLAGS='%{optflags}' export CGO_CXXFLAGS='%{optflags}' export CGO_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro' export GOFLAGS='-v -a -gcflags=-dwarf=false -ldflags=-w' export PKG_CONFIG=%{_bindir}/pkg-config export GOCACHE=$(pwd -P)/.gocache export GOTRACEBACK=crash export GOROOT_FINAL=%{_libdir}/go ( cd src; bash -xe ./make.bash -v ) # Prepare file with environment variables for just built Go GOROOT=$(pwd -P) bin/go env > go_env.sh source ./go_env.sh bin/go install -v -buildmode=shared -linkshared std %install export NO_BRP_AR=true export NO_BRP_STRIP_DEBUG=true source ./go_env.sh %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/rpm %{__install} -d -m0755 %{buildroot}%{_bindir} %{__install} -d -m0755 %{buildroot}%{_libdir}/go/%{mainver}/{bin,pkg,src} %{__install} -d -m0755 %{buildroot}%{_datadir}/go/%{mainver}/contrib/{bin,pkg,src} %{__install} -d -m0755 %{buildroot}%{_datadir}/go/%{mainver}/contrib/pkg/${GOOS}_${GOARCH} %{__install} -m0755 bin/* %{buildroot}%{_libdir}/go/%{mainver}/bin/ %{__install} -m0755 src/all.bash %{buildroot}%{_libdir}/go/%{mainver}/src/ # Install package contents excluding bootstrap find pkg -type f ! -path '*/bootstrap/*' -a ! -path '*/obj/*' | while read file; do %{__install} -D -m644 ${file} %{buildroot}%{_libdir}/go/%{mainver}/${file} done # Make tools executable chmod a+x %{buildroot}%{_libdir}/go/%{mainver}/pkg/tool/${GOOS}_${GOARCH}/* # Install module sources find src -mindepth 2 -type f ! -path '*/testdata*' | while read file; do %{__install} -D -m644 ${file} %{buildroot}%{_libdir}/go/%{mainver}/${file} done # Install go.env %{__install} -m0644 go.env %{buildroot}%{_libdir}/go/%{mainver}/ # (SUSE-specific) Remove file duplicates %if 0%{?suse_version} %fdupes %{buildroot}%{_libdir}/go/%{mainver}/ %endif # Create RPM macros file cat > %{buildroot}%{_sysconfdir}/rpm/macros.go <<EOF # Go specific macros %%go_ver %{version} %%go_build_ver %%(go version | awk '{print \$3}') %%go_arch ${GOARCH} %%go_os ${GOOS} %%go_root %%{_libdir}/go/%{mainver} %%go_path %%{_datadir}/go/%{mainver}/contrib %%go_dir %%{_libdir}/go/%{mainver} %%go_sitedir %%{_libdir}/go/%{mainver}/pkg %%go_sitearch %%{_libdir}/go/%{mainver}/pkg/%%{go_os}_%%{go_arch} %%go_contribdir %%{_libdir}/go/%{mainver}/contrib/pkg/%%{go_os}_%%{go_arch} %%go_contribsrcdir %%{_datadir}/go/%{mainver}/contrib/src/ %%go_tooldir %%{_datadir}/go/%{mainver}/pkg/tool/%%{go_os}_%%{go_arch} EOF # Prepare alternatives %{__install} -d -m755 %{buildroot}%{_sysconfdir}/alternatives/ touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt} %{__ln_s} -f %{_sysconfdir}/alternatives/{go,gofmt} %{buildroot}%{_bindir}/ # Cleanup find %{buildroot}%{_libdir}/go/%{mainver}/ -name .gitignore -delete %check source ./go_env.sh bin/go tool dist test --no-rebuild || : %clean [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} %files %defattr(-,root,root) %license LICENSE %doc PATENTS README.md %dir %{_libdir}/go %dir %{_datadir}/go %{_libdir}/go/%{mainver}/ %{_datadir}/go/%{mainver}/ %files -n go %defattr(-,root,root) %license LICENSE %doc PATENTS README.md %config %{_sysconfdir}/rpm/macros.go %{_bindir}/go* %ghost %{_sysconfdir}/alternatives/go* %post -n go if ! update-alternatives --list go | grep -q %{_libdir}/go/%{mainver}/bin/go; then update-alternatives \ --install /usr/bin/go go %{_libdir}/go/%{mainver}/bin/go %{alt_prio} \ --slave /usr/bin/gofmt gofmt %{_libdir}/go/%{mainver}/bin/gofmt fi %postun -n go if [ ! -x %{_libdir}/go/%{mainver}/bin/go ]; then update-alternatives --remove go %{_libdir}/go/%{mainver}/bin/go fi update-alternatives --auto go || : %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor