Accepting request 497883 from home:jordimassaguerpla:branch:d:l:g:fix_update_alternatives

fix update-alternatives usage

OBS-URL: https://build.opensuse.org/request/show/497883
OBS-URL: https://build.opensuse.org/package/show/devel:languages:go/go?expand=0&rev=283
This commit is contained in:
Thomas Hipp 2017-05-24 11:06:00 +00:00 committed by Git OBS Bridge
parent 0a35006c8a
commit 7757a088fd
4 changed files with 85 additions and 66 deletions

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Wed May 3 18:14:48 UTC 2017 - jmassaguerpla@suse.com
- fix update-alternatives usage. This way, we can either use go1.7 or
go 1.8 without having to change the docker spec file or any other
package that requires go 1.7 but it will require go 1.8 in the
future.
-------------------------------------------------------------------
Thu Apr 27 14:16:00 UTC 2017 - thipp@suse.de

View File

@ -1 +1 @@
add-auto-load-safe-path /usr/lib/go/src/runtime/runtime-gdb.py
add-auto-load-safe-path /usr/lib/go/$go_api/src/runtime/runtime-gdb.py

6
go.sh
View File

@ -30,11 +30,11 @@ case "$(uname -m)" in
libdir=lib64
;;
esac
export GOROOT=/usr/$libdir/go
export GOROOT=/usr/$libdir/go/$go_api
export GOBIN=/usr/bin
export GOPATH=/usr/share/go/contrib
export GOPATH=/usr/share/go/$go_api/contrib
if [ `id -u` != 0 ]; then
export GOPATH=$HOME/go:/usr/share/go/contrib
export GOPATH=$HOME/go:/usr/share/go/$go_api/contrib
unset GOBIN
fi

135
go.spec
View File

@ -73,7 +73,7 @@ Summary: A compiled, garbage-collected, concurrent programming language
License: BSD-3-Clause
Group: Development/Languages/Other
Url: http://golang.org
Source0: http://golang.org/dl/go1.8.1.src.tar.gz
Source0: http://golang.org/dl/go%{version}.src.tar.gz
Source1: go-rpmlintrc
Source2: go.sh
Source4: README.SUSE
@ -116,7 +116,7 @@ BuildRequires: systemd
%endif
%if 0%{?suse_version} >= 1100
BuildRequires: fdupes
Recommends: go-doc
Recommends: go-doc = %{version}
#BNC#818502 debug edit tool of rpm fails on i586 builds
%if 0%{?suse_version} > 1230
BuildRequires: rpm >= 4.11.1
@ -130,10 +130,11 @@ Requires(postun): update-alternatives
Requires: gcc
# for golang-macros.rb
Requires: ruby
Provides: go-devel = %{name}%{version}
Provides: go-devel-static = %{name}%{version}
Provides: go = %{version}
Provides: go-devel = go%{version}
Provides: go-devel-static = go%{version}
Provides: golang(API) = %{go_api}
Obsoletes: go-devel < %{name}%{version}
Obsoletes: go-devel < go%{version}
# go-vim/emacs were separate projects starting from 1.4
Obsoletes: go-emacs <= 1.3.3
Obsoletes: go-vim <= 1.3.3
@ -149,13 +150,14 @@ safety of a static language.
%package doc
Summary: Go documentation
Group: Documentation/Other
Requires: %{name} = %{version}
Requires: go = %{version}
Provides: go-doc = %{version}
%description doc
Go examples and documentation.
%prep
%setup -q -n %{name}
%setup -q -n go
%patch1 -p1
%patch2 -p1
%patch3 -p1
@ -205,7 +207,7 @@ export GOROOT_BOOTSTRAP=%{_prefix}
export GOROOT_BOOTSTRAP=%{_libdir}/go1.4
%endif
export GOROOT="`pwd`"
export GOROOT_FINAL=%{_libdir}/go
export GOROOT_FINAL=%{_libdir}/go/%{go_api}
export GOBIN="$GOROOT/bin"
mkdir -p "$GOBIN"
cd src
@ -222,27 +224,28 @@ bin/go install -buildmode=shared -linkshared std
%endif
%install
export GOROOT="%{buildroot}%{_libdir}/%{name}"
export GOROOT="%{buildroot}%{_libdir}/go/%{go_api}"
install -Dm644 %{SOURCE2} $GOROOT/bin/profile.d/go.sh
sed -i "s/\$go_api/%{go_api}/" $GOROOT/bin/profile.d/go.sh
# locations for third party libraries, see README-openSUSE for info about locations.
install -d %{buildroot}%{_datadir}/go/contrib
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib
install -d $GOROOT/contrib/pkg/linux_%{go_arch}
ln -s %{_libdir}/%{name}/contrib/pkg/ %{buildroot}%{_datadir}/go/contrib/pkg
install -d %{buildroot}%{_datadir}/go/contrib/cmd
install -d %{buildroot}%{_datadir}/go/contrib/src
ln -s %{_datadir}/go/contrib/src/ %{buildroot}%{_libdir}/%{name}/contrib/src
ln -s %{_libdir}/go/%{go_api}/contrib/pkg/ %{buildroot}%{_datadir}/go/%{go_api}/contrib/pkg
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/cmd
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/src
ln -s %{_datadir}/go/%{go_api}/contrib/src/ %{buildroot}%{_libdir}/go/%{go_api}/contrib/src
install -Dm644 README.SUSE $GOROOT/contrib/
ln -s %{_libdir}/go/contrib/README.SUSE %{buildroot}%{_datadir}/go/contrib/README.SUSE
ln -s %{_libdir}/go/%{go_api}/contrib/README.SUSE %{buildroot}%{_datadir}/go/%{go_api}/contrib/README.SUSE
# source files for go install, godoc, etc
install -d %{buildroot}%{_datadir}/go
install -d %{buildroot}%{_datadir}/go/%{go_api}
for ext in *.{go,c,h,s,S,py}; do
find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/\{\} \;
find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/%{go_api}/\{\} \;
done
mkdir -p $GOROOT/src
for i in $(ls %{buildroot}/usr/share/go/src);do
ln -s /usr/share/go/src/$i $GOROOT/src/$i
for i in $(ls %{buildroot}/usr/share/go/%{go_api}/src);do
ln -s /usr/share/go/%{go_api}/src/$i $GOROOT/src/$i
done
# copy document templates, packages, obj libs and command utilities
@ -254,14 +257,23 @@ mv pkg $GOROOT
mv bin/* $GOROOT/bin
rm -f %{buildroot}%{_bindir}/{hgpatch,quietgcc}
# gdbinit
install -Dm644 %{SOURCE6} $GOROOT/bin/gdbinit.d/go.gdb
%if "%{_lib}" == "lib64"
sed -i "s/lib/lib64/" $GOROOT/bin/gdbinit.d/go.gdb
sed -i "s/\$go_api/%{go_api}/" $GOROOT/bin/gdbinit.d/go.gdb
%endif
# update-alternatives
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt,go.sh}
ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go
ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt
ln -sf %{_sysconfdir}/alternatives/go.sh %{buildroot}%{_sysconfdir}/profile.d/go.sh
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
mkdir -p %{buildroot}%{_sysconfdir}/gdbinit.d
touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt,go.sh,go.gdb}
ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go
ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt
ln -sf %{_sysconfdir}/alternatives/go.sh %{buildroot}%{_sysconfdir}/profile.d/go.sh
ln -sf %{_sysconfdir}/alternatives/go.gdb %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb
# documentation and examples
# fix documetation permissions (rpmlint warning)
@ -269,63 +281,62 @@ find doc/ misc/ -type f -exec chmod 0644 '{}' \;
# remove unwanted arch-dependant binaries (rpmlint warning)
rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8}
# prepare go-doc
mkdir -p %{buildroot}%{_docdir}/%{name}
cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/%{name}
cp -r doc/* %{buildroot}%{_docdir}/%{name}
# gdbinit
mkdir -p %{buildroot}%{_sysconfdir}/gdbinit.d
install -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb
%if "%{_lib}" == "lib64"
sed -i "s/lib/lib64/" %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb
%endif
mkdir -p %{buildroot}%{_docdir}/go/%{go_api}
cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_api}
cp -r doc/* %{buildroot}%{_docdir}/go/%{go_api}
%if 0%{?suse_version} >= 1100
%fdupes -s %{buildroot}%{_prefix}
%endif
%post
update-alternatives \
--install %{_bindir}/go go %{_libdir}/%{name}/bin/go 30 \
--slave %{_bindir}/gofmt gofmt %{_libdir}/%{name}/bin/gofmt \
--slave %{_sysconfdir}/profile.d/go.sh go.sh %{_libdir}/%{name}/bin/profile.d/go.sh
--install %{_bindir}/go go %{_libdir}/go/%{go_api}/bin/go 30 \
--slave %{_bindir}/gofmt gofmt %{_libdir}/go/%{go_api}/bin/gofmt \
--slave %{_sysconfdir}/gdbinit.d/go.gdb go.gdb %{_libdir}/go/%{go_api}/bin/gdbinit.d/go.gdb \
--slave %{_sysconfdir}/profile.d/go.sh go.sh %{_libdir}/go/%{go_api}/bin/profile.d/go.sh
%postun
if [ $1 -eq 0 ] ; then
update-alternatives --remove go %{_libdir}/%{name}/bin/go
update-alternatives --remove go %{_libdir}/go/%{go_api}/bin/go
fi
%files
%defattr(-,root,root,-)
%{_bindir}/go
%{_bindir}/gofmt
%{_libdir}/go/
%{_datadir}/go/
%{_libdir}/go
%{_libdir}/go/%{go_api}
%{_datadir}/go
%{_datadir}/go/%{go_api}
%ghost %{_sysconfdir}/profile.d/go.sh
%ghost %{_sysconfdir}/gdbinit.d/go.gdb
%ghost %{_sysconfdir}/alternatives/go
%ghost %{_sysconfdir}/alternatives/gofmt
%ghost %{_sysconfdir}/alternatives/go.sh
%config %{_sysconfdir}/profile.d/go.sh
%config %{_sysconfdir}/gdbinit.d/go.gdb
%dir %{_docdir}/%{name}/
%doc %{_docdir}/%{name}/AUTHORS
%doc %{_docdir}/%{name}/CONTRIBUTORS
%doc %{_docdir}/%{name}/CONTRIBUTING.md
%doc %{_docdir}/%{name}/LICENSE
%doc %{_docdir}/%{name}/PATENTS
%doc %{_docdir}/%{name}/README.md
%doc %{_docdir}/%{name}/README.SUSE
%doc %{_docdir}/%{name}/go1.8.txt
%ghost %{_sysconfdir}/alternatives/go.gdb
%dir %{_docdir}/go
%dir %{_docdir}/go/%{go_api}
%doc %{_docdir}/go/%{go_api}/AUTHORS
%doc %{_docdir}/go/%{go_api}/CONTRIBUTORS
%doc %{_docdir}/go/%{go_api}/CONTRIBUTING.md
%doc %{_docdir}/go/%{go_api}/LICENSE
%doc %{_docdir}/go/%{go_api}/PATENTS
%doc %{_docdir}/go/%{go_api}/README.md
%doc %{_docdir}/go/%{go_api}/README.SUSE
%doc %{_docdir}/go/%{go_api}/go%{go_api}.txt
%files doc
%defattr(-,root,root,-)
%doc %{_docdir}/%{name}/codewalk
%doc %{_docdir}/%{name}/articles
%doc %{_docdir}/%{name}/progs
%doc %{_docdir}/%{name}/play
%doc %{_docdir}/%{name}/gopher
%doc %{_docdir}/%{name}/devel
%doc %{_docdir}/%{name}/*.html
%doc %{_docdir}/%{name}/*.css
%doc %{_docdir}/%{name}/*.png
%doc %{_docdir}/go/%{go_api}/codewalk
%doc %{_docdir}/go/%{go_api}/articles
%doc %{_docdir}/go/%{go_api}/progs
%doc %{_docdir}/go/%{go_api}/play
%doc %{_docdir}/go/%{go_api}/gopher
%doc %{_docdir}/go/%{go_api}/devel
%doc %{_docdir}/go/%{go_api}/*.html
%doc %{_docdir}/go/%{go_api}/*.css
%doc %{_docdir}/go/%{go_api}/*.png
%changelog