Accepting request 966741 from home:jfkw:branches:devel:languages:go

- Add %define go_label as a configurable Go toolchain directory
  * go_label can be used to package multiple Go toolchains with
    the same go_api
  * go_label should be defined as go_api with an optional suffix
    e.g. %{go_api} or %{go_api}-foo
  * Default go_label = go_api makes no changes to package layout

OBS-URL: https://build.opensuse.org/request/show/966741
OBS-URL: https://build.opensuse.org/package/show/devel:languages:go/go1.17?expand=0&rev=17
This commit is contained in:
Jeff Kowalczyk 2022-04-04 06:22:21 +00:00 committed by Git OBS Bridge
parent 791b4ef6d1
commit 80eed26745
3 changed files with 56 additions and 36 deletions

View File

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

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Mar 11 23:37:41 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Add %define go_label as a configurable Go toolchain directory
* go_label can be used to package multiple Go toolchains with
the same go_api
* go_label should be defined as go_api with an optional suffix
e.g. %{go_api} or %{go_api}-foo
* Default go_label = go_api makes no changes to package layout
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Mar 9 17:03:28 UTC 2022 - Dirk Müller <dmueller@suse.com> Wed Mar 9 17:03:28 UTC 2022 - Dirk Müller <dmueller@suse.com>

View File

@ -89,8 +89,18 @@
# more details. # more details.
%define tsan_commit 89f7ccea6f6488c443655880229c54db1f180153 %define tsan_commit 89f7ccea6f6488c443655880229c54db1f180153
# go_api is the major version of Go.
# Used by go1.x packages and go metapackage for:
# RPM Provides: golang(API), RPM Requires: and rpm_vercmp
# as well as derived variables such as go_label.
%define go_api 1.17 %define go_api 1.17
# go_label is the configurable Go toolchain directory name.
# Used for packaging multiple Go toolchains with the same go_api.
# go_label should be defined as go_api with optional suffix, e.g.
# go_api or go_api-foo
%define go_label %{go_api}
# shared library support # shared library support
%if "%{rpm_vercmp %{go_api} 1.5}" > "0" %if "%{rpm_vercmp %{go_api} 1.5}" > "0"
%if %{with gccgo} %if %{with gccgo}
@ -265,7 +275,7 @@ export GOARCH=arm
export GOARM=7 export GOARM=7
%endif %endif
export GOROOT="`pwd`" export GOROOT="`pwd`"
export GOROOT_FINAL=%{_libdir}/go/%{go_api} export GOROOT_FINAL=%{_libdir}/go/%{go_label}
export GOBIN="$GOROOT/bin" export GOBIN="$GOROOT/bin"
mkdir -p "$GOBIN" mkdir -p "$GOBIN"
cd src cd src
@ -288,29 +298,29 @@ grep "^race_linux_%{go_arch}.syso built with LLVM %{tsan_commit}" src/runtime/ra
%endif %endif
%install %install
export GOROOT="%{buildroot}%{_libdir}/go/%{go_api}" export GOROOT="%{buildroot}%{_libdir}/go/%{go_label}"
# locations for third party libraries, see README-openSUSE for info about locations. # locations for third party libraries, see README-openSUSE for info about locations.
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib
install -d $GOROOT/contrib/pkg/linux_%{go_arch} install -d $GOROOT/contrib/pkg/linux_%{go_arch}
ln -s %{_libdir}/go/%{go_api}/contrib/pkg/ %{buildroot}%{_datadir}/go/%{go_api}/contrib/pkg ln -s %{_libdir}/go/%{go_label}/contrib/pkg/ %{buildroot}%{_datadir}/go/%{go_label}/contrib/pkg
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/cmd install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib/cmd
install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/src install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib/src
ln -s %{_datadir}/go/%{go_api}/contrib/src/ %{buildroot}%{_libdir}/go/%{go_api}/contrib/src ln -s %{_datadir}/go/%{go_label}/contrib/src/ %{buildroot}%{_libdir}/go/%{go_label}/contrib/src
install -Dm644 README.SUSE $GOROOT/contrib/ install -Dm644 README.SUSE $GOROOT/contrib/
ln -s %{_libdir}/go/%{go_api}/contrib/README.SUSE %{buildroot}%{_datadir}/go/%{go_api}/contrib/README.SUSE ln -s %{_libdir}/go/%{go_label}/contrib/README.SUSE %{buildroot}%{_datadir}/go/%{go_label}/contrib/README.SUSE
# source files for go install, godoc, etc # source files for go install, godoc, etc
install -d %{buildroot}%{_datadir}/go/%{go_api} install -d %{buildroot}%{_datadir}/go/%{go_label}
for ext in *.{go,c,h,s,S,py,syso,bin}; do for ext in *.{go,c,h,s,S,py,syso,bin}; do
find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/%{go_api}/\{\} \; find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \;
done done
# executable bash scripts called by go tool, etc # executable bash scripts called by go tool, etc
find src -name "*.bash" -exec install -Dm655 \{\} %{buildroot}%{_datadir}/go/%{go_api}/\{\} \; find src -name "*.bash" -exec install -Dm655 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \;
mkdir -p $GOROOT/src mkdir -p $GOROOT/src
for i in $(ls %{buildroot}/usr/share/go/%{go_api}/src);do for i in $(ls %{buildroot}/usr/share/go/%{go_label}/src);do
ln -s /usr/share/go/%{go_api}/src/$i $GOROOT/src/$i ln -s /usr/share/go/%{go_label}/src/$i $GOROOT/src/$i
done done
# add lib files that are needed (such as the timezone database). # add lib files that are needed (such as the timezone database).
install -d $GOROOT/lib install -d $GOROOT/lib
@ -333,7 +343,7 @@ rm -f %{buildroot}%{_bindir}/{hgpatch,quietgcc}
install -Dm644 %{SOURCE6} $GOROOT/bin/gdbinit.d/go.gdb install -Dm644 %{SOURCE6} $GOROOT/bin/gdbinit.d/go.gdb
%if "%{_lib}" == "lib64" %if "%{_lib}" == "lib64"
sed -i "s/lib/lib64/" $GOROOT/bin/gdbinit.d/go.gdb sed -i "s/lib/lib64/" $GOROOT/bin/gdbinit.d/go.gdb
sed -i "s/\$go_api/%{go_api}/" $GOROOT/bin/gdbinit.d/go.gdb sed -i "s/\$go_label/%{go_label}/" $GOROOT/bin/gdbinit.d/go.gdb
%endif %endif
# update-alternatives # update-alternatives
@ -352,62 +362,62 @@ find doc/ misc/ -type f -exec chmod 0644 '{}' +
# remove unwanted arch-dependant binaries (rpmlint warning) # remove unwanted arch-dependant binaries (rpmlint warning)
rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8} rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8}
# prepare go-doc # prepare go-doc
mkdir -p %{buildroot}%{_docdir}/go/%{go_api} mkdir -p %{buildroot}%{_docdir}/go/%{go_label}
cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_api} cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_label}
cp -r doc/* %{buildroot}%{_docdir}/go/%{go_api} cp -r doc/* %{buildroot}%{_docdir}/go/%{go_label}
%fdupes -s %{buildroot}%{_prefix} %fdupes -s %{buildroot}%{_prefix}
%post %post
update-alternatives \ update-alternatives \
--install %{_bindir}/go go %{_libdir}/go/%{go_api}/bin/go $((20+$(echo %{go_api} | cut -d. -f2))) \ --install %{_bindir}/go go %{_libdir}/go/%{go_label}/bin/go $((20+$(echo %{go_label} | cut -d. -f2))) \
--slave %{_bindir}/gofmt gofmt %{_libdir}/go/%{go_api}/bin/gofmt \ --slave %{_bindir}/gofmt gofmt %{_libdir}/go/%{go_label}/bin/gofmt \
--slave %{_sysconfdir}/gdbinit.d/go.gdb go.gdb %{_libdir}/go/%{go_api}/bin/gdbinit.d/go.gdb --slave %{_sysconfdir}/gdbinit.d/go.gdb go.gdb %{_libdir}/go/%{go_label}/bin/gdbinit.d/go.gdb
%postun %postun
if [ $1 -eq 0 ] ; then if [ $1 -eq 0 ] ; then
update-alternatives --remove go %{_libdir}/go/%{go_api}/bin/go update-alternatives --remove go %{_libdir}/go/%{go_label}/bin/go
fi fi
%files %files
%{_bindir}/go %{_bindir}/go
%{_bindir}/gofmt %{_bindir}/gofmt
%dir %{_libdir}/go %dir %{_libdir}/go
%{_libdir}/go/%{go_api} %{_libdir}/go/%{go_label}
%dir %{_datadir}/go %dir %{_datadir}/go
%{_datadir}/go/%{go_api} %{_datadir}/go/%{go_label}
%dir %{_sysconfdir}/gdbinit.d/ %dir %{_sysconfdir}/gdbinit.d/
%config %{_sysconfdir}/gdbinit.d/go.gdb %config %{_sysconfdir}/gdbinit.d/go.gdb
%ghost %{_sysconfdir}/alternatives/go %ghost %{_sysconfdir}/alternatives/go
%ghost %{_sysconfdir}/alternatives/gofmt %ghost %{_sysconfdir}/alternatives/gofmt
%ghost %{_sysconfdir}/alternatives/go.gdb %ghost %{_sysconfdir}/alternatives/go.gdb
%dir %{_docdir}/go %dir %{_docdir}/go
%dir %{_docdir}/go/%{go_api} %dir %{_docdir}/go/%{go_label}
%doc %{_docdir}/go/%{go_api}/AUTHORS %doc %{_docdir}/go/%{go_label}/AUTHORS
%doc %{_docdir}/go/%{go_api}/CONTRIBUTORS %doc %{_docdir}/go/%{go_label}/CONTRIBUTORS
%doc %{_docdir}/go/%{go_api}/CONTRIBUTING.md %doc %{_docdir}/go/%{go_label}/CONTRIBUTING.md
%doc %{_docdir}/go/%{go_api}/PATENTS %doc %{_docdir}/go/%{go_label}/PATENTS
%doc %{_docdir}/go/%{go_api}/README.md %doc %{_docdir}/go/%{go_label}/README.md
%doc %{_docdir}/go/%{go_api}/README.SUSE %doc %{_docdir}/go/%{go_label}/README.SUSE
%if 0%{?suse_version} < 1500 %if 0%{?suse_version} < 1500
%doc %{_docdir}/go/%{go_api}/LICENSE %doc %{_docdir}/go/%{go_label}/LICENSE
%else %else
%license %{_docdir}/go/%{go_api}/LICENSE %license %{_docdir}/go/%{go_label}/LICENSE
%endif %endif
# We don't include TSAN in the main Go package. # We don't include TSAN in the main Go package.
%ifarch %{tsan_arch} %ifarch %{tsan_arch}
%exclude %{_datadir}/go/%{go_api}/src/runtime/race/race_linux_%{go_arch}.syso %exclude %{_datadir}/go/%{go_label}/src/runtime/race/race_linux_%{go_arch}.syso
%endif %endif
%files doc %files doc
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc %{_docdir}/go/%{go_api}/*.html %doc %{_docdir}/go/%{go_label}/*.html
%ifarch %{tsan_arch} %ifarch %{tsan_arch}
%files race %files race
%{_datadir}/go/%{go_api}/src/runtime/race/race_linux_%{go_arch}.syso %{_datadir}/go/%{go_label}/src/runtime/race/race_linux_%{go_arch}.syso
%endif %endif
%changelog %changelog