1f7af9f842
fixed build for armv6. the problem is with the opensuse build system, not go itself. it seems that under qemu on armv6 the number of unix signals isn't 64 but 63. thus there is an off-by-one error while building and testing. this doesn't happen on my raspberry pi, so it might be a bug in qemu, but i can't be sure. my fix now reduces the constant defining the number of signals by 1, but that of course means signal handling won't be 100% correct. OBS-URL: https://build.opensuse.org/request/show/257933 OBS-URL: https://build.opensuse.org/package/show/devel:languages:go/go?expand=0&rev=199
243 lines
8.0 KiB
RPMSpec
243 lines
8.0 KiB
RPMSpec
#
|
|
# spec file for package go
|
|
#
|
|
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
# Copyright (c) 2011, Sascha Peilicke <saschpe@gmx.de>
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: go
|
|
Version: 1.3.1
|
|
Release: 0
|
|
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/go%{version}.src.tar.gz
|
|
Source1: go-rpmlintrc
|
|
Source2: go.sh
|
|
Source3: macros.go
|
|
Source4: go-wiki-gadget.xml
|
|
Source5: README-openSUSE
|
|
# PATCH-FIX-OPENSUSE add -s flag to 'go install' (don't rebuild/install std libs)
|
|
Patch1: go-build-dont-reinstall-stdlibs.patch
|
|
# PATCH-FIX-OPENSUSE re-enable build binary only packages (we are binary distro)
|
|
# see http://code.google.com/p/go/issues/detail?id=2775 & also issue 3268
|
|
Patch2: allow-binary-only-packages.patch
|
|
#PATCH-FIX-OPENSUSE use -x verbose build output for qemu-arm builders
|
|
Patch3: verbose-build.patch
|
|
# PATCH-FIX-OPENSUSE BNC#776058
|
|
Patch4: go-install-dont-reinstall-stdlibs.patch
|
|
# PATCH-FIX-OPENSUSE enable writing tools outside $GOROOT/pkg/tool for packaging
|
|
Patch5: tools-packaging.patch
|
|
# armv6l needs this patch for our build system
|
|
# see https://groups.google.com/forum/#!topic/golang-nuts/MqKTX_XIOKE
|
|
Patch6: armv6l.patch
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
BuildRequires: rpm
|
|
%if 0%{?suse_version} >= 1210
|
|
BuildRequires: mercurial
|
|
BuildRequires: systemd
|
|
%endif
|
|
%if 0%{?suse_version} >= 1100
|
|
BuildRequires: fdupes
|
|
Recommends: go-doc
|
|
#BNC#818502 debug edit tool of rpm fails on i586 builds
|
|
%if 0%{?suse_version} > 1230
|
|
BuildRequires: rpm >= 4.11.1
|
|
%endif
|
|
%endif
|
|
Requires: gcc
|
|
Provides: go-devel = %{name}%{version}
|
|
Provides: go-devel-static = %{name}%{version}
|
|
Obsoletes: go-devel < %{name}%{version}
|
|
ExclusiveArch: %ix86 x86_64 %arm
|
|
|
|
%description
|
|
Go is an expressive, concurrent, garbage collected systems programming language
|
|
that is type safe and memory safe. It has pointers but no pointer arithmetic.
|
|
Go has fast builds, clean syntax, garbage collection, methods for any type, and
|
|
run-time reflection. It feels like a dynamic language but has the speed and
|
|
safety of a static language.
|
|
|
|
%package doc
|
|
Summary: Go documentation
|
|
Group: Documentation/Other
|
|
Requires: %{name} = %{version}
|
|
|
|
%description doc
|
|
Go examples and documentation.
|
|
|
|
%package vim
|
|
Summary: Go syntax files for Vim
|
|
Group: Productivity/Text/Editors
|
|
Requires: %{name} = %{version}
|
|
|
|
%description vim
|
|
Vim syntax highlighting scheme for the Go programming language.
|
|
|
|
%package emacs
|
|
Summary: Go language syntax files for Emacs
|
|
Group: Productivity/Text/Editors
|
|
Requires: %{name} = %{version}
|
|
|
|
%description emacs
|
|
Emacs syntax highlighting scheme for the Go programming language.
|
|
|
|
%prep
|
|
%setup -q -n %{name}
|
|
%patch1 -p1
|
|
%patch2 -p1
|
|
%patch3 -p1
|
|
%patch4 -p1
|
|
%patch5 -p1
|
|
%ifarch armv6hl
|
|
%patch6 -p1
|
|
%endif
|
|
cp %{SOURCE5} .
|
|
|
|
# setup go_arch (BSD-like scheme)
|
|
cp %{SOURCE3} go.macros
|
|
%ifarch %ix86
|
|
sed -i 's|GOARCH|386|' go.macros
|
|
%define go_arch 386
|
|
%endif
|
|
%ifarch x86_64
|
|
sed -i 's|GOARCH|amd64|' go.macros
|
|
%define go_arch amd64
|
|
%endif
|
|
%ifarch %arm
|
|
sed -i 's|GOARCH|arm|' go.macros
|
|
%define go_arch arm
|
|
%endif
|
|
|
|
%build
|
|
export GOROOT="`pwd`"
|
|
export GOROOT_FINAL=%{_libdir}/go
|
|
export GOBIN="$GOROOT/bin"
|
|
mkdir -p "$GOBIN"
|
|
cd src
|
|
HOST_EXTRA_CFLAGS="%{optflags} -Wno-error" ./make.bash
|
|
|
|
%ifarch x86_64
|
|
# Install race detection version of std libraries (amd64 only)
|
|
cd ../
|
|
bin/go install -race std
|
|
%endif
|
|
%ifarch %ix86
|
|
strip $GOBIN/go # bnc#818502
|
|
%endif
|
|
|
|
%install
|
|
export GOROOT="%{buildroot}%{_libdir}/%{name}"
|
|
# bash completion seems broken
|
|
#install -Dm644 misc/bash/go %%{buildroot}%%{_sysconfdir}/bash_completion.d/go.sh
|
|
install -Dm644 %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d/go.sh
|
|
install -Dm644 misc/emacs/go-mode-load.el %{buildroot}%{_datadir}/emacs/site-lisp/go-mode-load.el
|
|
install -Dm644 misc/emacs/go-mode.el %{buildroot}%{_datadir}/emacs/site-lisp/go-mode.el
|
|
install -Dm644 misc/vim/autoload/go/complete.vim %{buildroot}%{_datadir}/vim/site/autoload/go/complete.vim
|
|
install -d %{buildroot}%{_datadir}/vim/site/ftplugin/go
|
|
install -Dm644 misc/vim/ftplugin/go/{fmt,import}.vim %{buildroot}%{_datadir}/vim/site/ftplugin/go/
|
|
install -Dm644 misc/vim/indent/go.vim %{buildroot}%{_datadir}/vim/site/indent/go.vim
|
|
install -Dm644 misc/vim/plugin/godoc.vim %{buildroot}%{_datadir}/vim/site/plugin/godoc.vim
|
|
install -Dm644 misc/vim/syntax/godoc.vim %{buildroot}%{_datadir}/vim/site/syntax/godoc.vim
|
|
install -Dm644 misc/vim/syntax/go.vim %{buildroot}%{_datadir}/vim/site/syntax/go.vim
|
|
install -Dm644 misc/vim/ftdetect/gofiletype.vim %{buildroot}%{_datadir}/vim/site/ftdetect/gofiletype.vim
|
|
|
|
# locations for third party libraries, see README-openSUSE for info about locations.
|
|
install -d %{buildroot}%{_datadir}/go/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
|
|
install -Dm644 README-openSUSE $GOROOT/contrib/
|
|
ln -s %{_libdir}/go/contrib/README-openSUSE %{buildroot}%{_datadir}/go/contrib/README-openSUSE
|
|
|
|
# source files for go install, godoc, etc
|
|
install -d %{buildroot}%{_datadir}/go
|
|
for ext in *.{go,c,h,s,S,py}; do
|
|
find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/\{\} \;
|
|
done
|
|
mkdir -p $GOROOT/src
|
|
ln -s /usr/share/go/src/pkg $GOROOT/src/pkg
|
|
ln -s /usr/share/go/src/cmd $GOROOT/src/cmd
|
|
|
|
# copy document templates, packages, obj libs and command utilities
|
|
mkdir -p %{buildroot}%{_bindir}
|
|
mkdir -p $GOROOT/lib
|
|
mv pkg $GOROOT
|
|
mv bin/* %{buildroot}%{_bindir}
|
|
rm -f %{buildroot}%{_bindir}/{hgpatch,quietgcc}
|
|
|
|
# documentation and examples
|
|
# fix documetation permissions (rpmlint warning)
|
|
find doc/ misc/ -type f -exec chmod 0644 '{}' \;
|
|
# remove unwanted arch-dependant binaries (rpmlint warning)
|
|
rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8}
|
|
rm -f misc/dashboard/builder/{gobuilder,*6,*.8}
|
|
rm -f misc/goplay/{goplay,*.6,*.8}
|
|
rm -rf misc/windows
|
|
rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8}
|
|
# remove kate syntax file, it is shipped with libktexteditor already
|
|
rm -f misc/kate/go.xml
|
|
|
|
# install RPM macros ($GOARCH prepared in %%prep section)
|
|
install -Dm644 go.macros %{buildroot}%{_sysconfdir}/rpm/macros.go
|
|
|
|
# break hard links
|
|
rm %{buildroot}%{_libdir}/go/pkg/linux_%{go_arch}/{cgocall,runtime}.h
|
|
ln -s %{_datadir}/go/src/pkg/runtime/{cgocall,runtime}.h %{buildroot}%{_libdir}/go/pkg/linux_%{go_arch}/
|
|
|
|
# Disable brp-strip-static-archive breaks build
|
|
%define __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib/rpm/[^/]*/?brp-strip-static-archive %{__strip}!!g')
|
|
|
|
%if 0%{?suse_version} >= 1100
|
|
%fdupes %{buildroot}%{_prefix}
|
|
%endif
|
|
|
|
%files
|
|
%defattr(-,root,root,-)
|
|
%doc AUTHORS CONTRIBUTORS LICENSE PATENTS README README-openSUSE
|
|
%ifarch %ix86
|
|
%{_libdir}/go/pkg/tool/linux_%{go_arch}/8*
|
|
%endif
|
|
%ifarch x86_64
|
|
%{_libdir}/go/pkg/tool/linux_%{go_arch}/6*
|
|
%endif
|
|
%ifarch %arm
|
|
%{_libdir}/go/pkg/tool/linux_%{go_arch}/5*
|
|
%endif
|
|
%{_datadir}/go/
|
|
%{_bindir}/go*
|
|
%{_libdir}/go/
|
|
# bash completion seems broken
|
|
#%%config %{_sysconfdir}/bash_completion.d/go.sh
|
|
%config %{_sysconfdir}/profile.d/go.sh
|
|
%config %{_sysconfdir}/rpm/macros.go
|
|
|
|
%files doc
|
|
%defattr(-,root,root,-)
|
|
%doc doc
|
|
|
|
%files vim
|
|
%defattr(-,root,root,-)
|
|
%dir %{_datadir}/vim
|
|
%{_datadir}/vim/*
|
|
|
|
%files emacs
|
|
%defattr(-,root,root,-)
|
|
%{_datadir}/emacs/site-lisp/go-mode*
|
|
|
|
%changelog
|