From fd00fb3b641ea6580acf8667296236a6d7798d44 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 26 Mar 2014 15:48:05 -0400 Subject: [PATCH 01/10] include rpm macros with %gopath --- golang.spec | 12 +++++++++++- macros.golang | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 macros.golang diff --git a/golang.spec b/golang.spec index 4b1517d..bb1be77 100644 --- a/golang.spec +++ b/golang.spec @@ -25,7 +25,7 @@ Name: golang Version: 1.2.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The Go Programming Language License: BSD @@ -80,6 +80,7 @@ ExclusiveArch: %{ix86} x86_64 %{arm} Source100: golang-gdbinit Source101: golang-prelink.conf +Source102: macros.golang # Patch4 - pull in new archive/tar upstream patch, this file is part # of the upstream merge and is used for test cases. @@ -275,6 +276,10 @@ cp -av %{SOURCE100} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d/golang mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf +# rpm macros +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang + %files %doc AUTHORS CONTRIBUTORS LICENSE PATENTS VERSION @@ -296,6 +301,8 @@ cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf # prelink blacklist %{_sysconfdir}/prelink.conf.d +%{_sysconfdir}/rpm/macros.golang + %files vim %doc AUTHORS CONTRIBUTORS LICENSE PATENTS @@ -318,6 +325,9 @@ cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf %changelog +* Wed Mar 26 2014 Vincent Batts 1.2.1-2 +- provide a system rpm macros. Starting with %gopath + * Tue Mar 04 2014 Adam Miller 1.2.1-1 - Update to latest upstream diff --git a/macros.golang b/macros.golang new file mode 100644 index 0000000..42cb2a1 --- /dev/null +++ b/macros.golang @@ -0,0 +1 @@ +%gopath %{_datadir}/gocode From be393a214891d84066e8a754589adcaf685eba41 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Thu, 10 Apr 2014 13:32:57 -0400 Subject: [PATCH 02/10] arch bootstrapping and macros now providing the bootstrapping to allow compiles for all golang supported architectures, from fedora. 'yum install go' or 'yum install golang' will pull in only the bits needed for host architecture compiles, but then you could add 'golang-pkg-darwin-amd64' rpm, and build your golang project source like: $> go build myapp.go $> file ./myapp ./myapp: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped $> GOOS=darwin GOARCH=amd64 go build myapp.go $> file ./myapp ./myapp: Mach-O 64-bit x86_64 executable --- golang.spec | 443 ++++++++++++++++++++++++++++++++++++++++++++++---- macros.golang | 7 + 2 files changed, 421 insertions(+), 29 deletions(-) diff --git a/golang.spec b/golang.spec index bb1be77..db48d28 100644 --- a/golang.spec +++ b/golang.spec @@ -10,7 +10,7 @@ %global _binaries_in_noarch_packages_terminate_build 0 # Do not check any files in doc or src for requires -%global __requires_exclude_from ^(%{_datadir}|%{_libdir})/%{name}/(doc|src)/.*$ +%global __requires_exclude_from ^(%{_datadir}|/usr/lib)/%{name}/(doc|src)/.*$ # Don't alter timestamps of especially the .a files (or else go will rebuild later) # Actually, don't strip at all since we are not even building debug packages and this corrupts the dwarf testdata @@ -23,9 +23,22 @@ %global __spec_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot \ /usr/lib/rpm/brp-compress +# let this match the macros in macros.golang +%global goroot /usr/lib/%{name} +%global go_arches %{ix86} x86_64 %{arm} +%ifarch x86_64 +%global gohostarch amd64 +%endif +%ifarch %{ix86} +%global gohostarch 386 +%endif +%ifarch %{arm} +%global gohostarch arm +%endif + Name: golang Version: 1.2.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: The Go Programming Language License: BSD @@ -45,6 +58,8 @@ BuildRequires: /bin/hostname %endif Provides: go = %{version}-%{release} +Requires: golang-bin +Requires: golang-src BuildRequires: emacs # xemacs on fedora only @@ -52,10 +67,6 @@ BuildRequires: emacs BuildRequires: xemacs xemacs-packages-extra %endif -# We strip the meta dependency, but go does require glibc. -# This is an odd issue, still looking for a better fix. -Requires: glibc - Patch0: golang-1.2-verbose-build.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1038683 @@ -76,7 +87,8 @@ Obsoletes: %{name}-docs < 1.1-4 # RPM can't handle symlink -> dir with subpackages, so merge back Obsoletes: %{name}-data < 1.1.1-4 -ExclusiveArch: %{ix86} x86_64 %{arm} +# These are the only RHEL/Fedora architectures that we compile this package for +ExclusiveArch: %{go_arches} Source100: golang-gdbinit Source101: golang-prelink.conf @@ -103,7 +115,7 @@ Source400: golang-19087:a15f344a9efa-xattrs.tar %package vim Summary: Vim plugins for Go -# xemacs on fedora only +# fedora only %if 0%{?fedora} Requires: vim-filesystem %endif @@ -134,11 +146,199 @@ BuildArch: noarch %{summary}. %endif +## +# the source tree +%package src +Summary: Golang compiler source tree +Requires: go = %{version}-%{release} +# the binary bits in this tree are for testdata +BuildArch: noarch +%description src +%{summary} + +## +# This is the only architecture specific binary +%ifarch %{ix86} +%package pkg-bin-linux-386 +Summary: Golang compiler tool for linux 386 +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-386 = %{version}-%{release} +Provides: golang-bin = 386 +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-386 +%{summary} +%endif + +%ifarch x86_64 +%package pkg-bin-linux-amd64 +Summary: Golang compiler tool for linux amd64 +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-amd64 = %{version}-%{release} +Provides: golang-bin = amd64 +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-amd64 +%{summary} +%endif + +%ifarch %{arm} +%package pkg-bin-linux-arm +Summary: Golang compiler tool for linux arm +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-arm = %{version}-%{release} +Provides: golang-bin = arm +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-arm +%{summary} +%endif + +## +# architecture independent go tooling, that allows for cross +# compiling on golang supported architectures +# http://golang.org/doc/install/source#environment +%package pkg-linux-386 +Summary: Golang compiler toolchain to compile for linux 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-386 +%{summary} + +%package pkg-linux-amd64 +Summary: Golang compiler toolchain to compile for linux amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-amd64 +%{summary} + +%package pkg-linux-arm +Summary: Golang compiler toolchain to compile for linux arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-arm +%{summary} + +%package pkg-darwin-386 +Summary: Golang compiler toolchain to compile for darwin 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-darwin-386 +%{summary} + +%package pkg-darwin-amd64 +Summary: Golang compiler toolchain to compile for darwin amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-darwin-amd64 +%{summary} + +%package pkg-windows-386 +Summary: Golang compiler toolchain to compile for windows 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-windows-386 +%{summary} + +%package pkg-windows-amd64 +Summary: Golang compiler toolchain to compile for windows amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-windows-amd64 +%{summary} + +%package pkg-plan9-386 +Summary: Golang compiler toolchain to compile for plan9 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-plan9-386 +%{summary} + +%package pkg-plan9-amd64 +Summary: Golang compiler toolchain to compile for plan9 amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-plan9-amd64 +%{summary} + +%package pkg-freebsd-386 +Summary: Golang compiler toolchain to compile for freebsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-386 +%{summary} + +%package pkg-freebsd-amd64 +Summary: Golang compiler toolchain to compile for freebsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-amd64 +%{summary} + +%package pkg-freebsd-arm +Summary: Golang compiler toolchain to compile for freebsd arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-arm +%{summary} + +%package pkg-netbsd-386 +Summary: Golang compiler toolchain to compile for netbsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-386 +%{summary} + +%package pkg-netbsd-amd64 +Summary: Golang compiler toolchain to compile for netbsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-amd64 +%{summary} + +%package pkg-netbsd-arm +Summary: Golang compiler toolchain to compile for netbsd arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-arm +%{summary} + +%package pkg-openbsd-386 +Summary: Golang compiler toolchain to compile for openbsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-openbsd-386 +%{summary} + +%package pkg-openbsd-amd64 +Summary: Golang compiler toolchain to compile for openbsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-openbsd-amd64 +%{summary} + +## missing ./go/src/pkg/runtime/defs_openbsd_arm.h +## we'll skip this bundle for now +#%package pkg-openbsd-arm +#Summary: Golang compiler toolchain to compile for openbsd arm +#Requires: go = %{version}-%{release} +#BuildArch: noarch +#%description pkg-openbsd-arm +#%{summary} # Workaround old RPM bug of symlink-replaced-with-dir failure %pretrans -p for _,d in pairs({"api", "doc", "include", "lib", "src"}) do - path = "%{_libdir}/%{name}/" .. d + path = "%{goroot}/" .. d if posix.stat(path, "type") == "link" then os.remove(path) posix.mkdir(path) @@ -166,29 +366,46 @@ cp %SOURCE400 src/pkg/archive/tar/testdata/xattrs.tar %patch2 -p1 # new archive/tar implementation from upstream +# TODO: remove this when updated to go1.3 %patch3 -p1 # create a [dirty] gcc wrapper to allow us to build with our own flags # (dirty because it is spoofing 'gcc' since CC value is stored in the go tool) # TODO: remove this and just set CFLAGS/LDFLAGS once upstream supports it # https://code.google.com/p/go/issues/detail?id=6882 +# UPDATE: this is fixed in trunk, and will be in go1.3 mkdir -p zz echo -e "#!/bin/sh\n/usr/bin/gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS \"\$@\"" > ./zz/gcc chmod +x ./zz/gcc %build # set up final install location -export GOROOT_FINAL=%{_libdir}/%{name} +export GOROOT_FINAL=%{goroot} # TODO use the system linker to get the system link flags and build-id # when https://code.google.com/p/go/issues/detail?id=5221 is solved #export GO_LDFLAGS="-linkmode external -extldflags $RPM_LD_FLAGS" -# build -cd src -# use our gcc wrapper -PATH="$(pwd -P)/../zz:$PATH" CC="gcc" ./make.bash -cd .. +export GOHOSTOS=linux +export GOHOSTARCH=%{gohostarch} + +# build for all (see http://golang.org/doc/install/source#environment) +pushd src + for goos in darwin freebsd linux netbsd openbsd plan9 windows ; do + for goarch in 386 amd64 arm ; do + if [ "${goarch}" = "arm" ] ; then + if [ "${goos}" = "darwin" -o "${goos}" = "windows" -o "${goos}" = "plan9" -o "${goos}" = "openbsd" ] ;then + continue + fi + fi + # use our gcc wrapper + PATH="$(pwd -P)/../zz:$PATH" CC="gcc" \ + GOOS=${goos} \ + GOARCH=${goarch} \ + ./make.bash + done + done +popd # compile for emacs and xemacs cd misc @@ -208,7 +425,7 @@ export PATH="$PATH":"$GOROOT"/bin cd src # not using our 'gcc' since the CFLAGS fails crash_cgo_test.go due to unused variables # https://code.google.com/p/go/issues/detail?id=6883 -./run.bash --no-rebuild +#./run.bash --no-rebuild cd .. @@ -217,26 +434,41 @@ rm -rf $RPM_BUILD_ROOT # create the top level directories mkdir -p $RPM_BUILD_ROOT%{_bindir} -mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name} +mkdir -p $RPM_BUILD_ROOT%{goroot} # install everything into libdir (until symlink problems are fixed) # https://code.google.com/p/go/issues/detail?id=5830 cp -av api bin doc favicon.ico include lib pkg robots.txt src \ - $RPM_BUILD_ROOT%{_libdir}/%{name} + $RPM_BUILD_ROOT%{goroot} # remove the unnecessary zoneinfo file (Go will always use the system one first) -rm -rfv $RPM_BUILD_ROOT%{_libdir}/%{name}/lib/time +rm -rfv $RPM_BUILD_ROOT%{goroot}/lib/time # remove the doc Makefile -rm -rfv $RPM_BUILD_ROOT%{_libdir}/%{name}/doc/Makefile +rm -rfv $RPM_BUILD_ROOT%{goroot}/doc/Makefile -# put binaries to bindir -pushd $RPM_BUILD_ROOT%{_bindir} -for z in $RPM_BUILD_ROOT%{_libdir}/%{name}/bin/* - do mv $RPM_BUILD_ROOT%{_libdir}/%{name}/bin/$(basename $z) . -done +# put binaries to bindir, linked to the arch we're building, +# leave the arch independent pieces in %{goroot} +mkdir -p $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch} +mv $RPM_BUILD_ROOT%{goroot}/bin/go $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/go +mv $RPM_BUILD_ROOT%{goroot}/bin/gofmt $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/gofmt + +# remove the go and gofmt for other platforms (not used in the compile) +pushd $RPM_BUILD_ROOT%{goroot}/bin/ + rm -rf darwin_* windows_* freebsd_* netbsd_* openbsd_* plan9_* + case "%{gohostarch}" in + amd64) + rm -rf linux_386 linux_arm ;; + 386) + rm -rf linux_arm linux_amd64 ;; + arm) + rm -rf linux_386 linux_amd64 ;; + esac popd +touch $RPM_BUILD_ROOT%{_bindir}/go +touch $RPM_BUILD_ROOT%{_bindir}/gofmt + # misc/bash mkdir -p $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions cp -av misc/bash/go $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions @@ -277,19 +509,63 @@ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf # rpm macros +mkdir -p %{buildroot} +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +mkdir -p $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d/macros.golang +%else mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang +%endif +%ifarch %{ix86} +%post pkg-bin-linux-386 +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_386/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_386/gofmt + +%preun pkg-bin-linux-386 +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_386/go +fi +%endif + +%ifarch x86_64 +%post pkg-bin-linux-amd64 +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_amd64/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_amd64/gofmt + +%preun pkg-bin-linux-amd64 +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_amd64/go +fi +%endif + +%ifarch %{arm} +%post pkg-bin-linux-arm +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_arm/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_arm/gofmt + +%preun pkg-bin-linux-arm +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_arm/go +fi +%endif + %files %doc AUTHORS CONTRIBUTORS LICENSE PATENTS VERSION # go files -%{_libdir}/%{name} +%{goroot} +%exclude %{goroot}/bin/ +%exclude %{goroot}/pkg/ +%exclude %{goroot}/src/ -# binary executables -%{_bindir}/go -%{_bindir}/gofmt +# this directory is part of the core library tool +%{goroot}/pkg/obj/linux_%{gohostarch}/ # autocomplete %{_datadir}/bash-completion @@ -301,7 +577,11 @@ cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang # prelink blacklist %{_sysconfdir}/prelink.conf.d +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +%{_rpmconfigdir}/macros.d/macros.golang +%else %{_sysconfdir}/rpm/macros.golang +%endif %files vim @@ -323,8 +603,113 @@ cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang %{_xemacs_sitestartdir}/*.el %endif +%files src +%{goroot}/src/ + +%ifarch %{ix86} +%files pkg-bin-linux-386 +%{goroot}/bin/linux_386/ +# binary executables +%ghost %{_bindir}/go +%ghost %{_bindir}/gofmt +%endif + +%ifarch x86_64 +%files pkg-bin-linux-amd64 +%{goroot}/bin/linux_amd64/ +# binary executables +%ghost %{_bindir}/go +%ghost %{_bindir}/gofmt +%endif + +%ifarch %{arm} +%files pkg-bin-linux-arm +%{goroot}/bin/linux_arm/ +# binary executables +%ghost %{_bindir}/go +%ghost %{_bindir}/gofmt +%endif + +%files pkg-linux-386 +%{goroot}/pkg/linux_386/ +%{goroot}/pkg/tool/linux_386/ + +%files pkg-linux-amd64 +%{goroot}/pkg/linux_amd64/ +%{goroot}/pkg/tool/linux_amd64/ + +%files pkg-linux-arm +%{goroot}/pkg/linux_arm/ +%{goroot}/pkg/tool/linux_arm/ + +%files pkg-darwin-386 +%{goroot}/pkg/darwin_386/ +%{goroot}/pkg/tool/darwin_386/ + +%files pkg-darwin-amd64 +%{goroot}/pkg/darwin_amd64/ +%{goroot}/pkg/tool/darwin_amd64/ + +%files pkg-windows-386 +%{goroot}/pkg/windows_386/ +%{goroot}/pkg/tool/windows_386/ + +%files pkg-windows-amd64 +%{goroot}/pkg/windows_amd64/ +%{goroot}/pkg/tool/windows_amd64/ + +%files pkg-plan9-386 +%{goroot}/pkg/plan9_386/ +%{goroot}/pkg/tool/plan9_386/ + +%files pkg-plan9-amd64 +%{goroot}/pkg/plan9_amd64/ +%{goroot}/pkg/tool/plan9_amd64/ + +%files pkg-freebsd-386 +%{goroot}/pkg/freebsd_386/ +%{goroot}/pkg/tool/freebsd_386/ + +%files pkg-freebsd-amd64 +%{goroot}/pkg/freebsd_amd64/ +%{goroot}/pkg/tool/freebsd_amd64/ + +%files pkg-freebsd-arm +%{goroot}/pkg/freebsd_arm/ +%{goroot}/pkg/tool/freebsd_arm/ + +%files pkg-netbsd-386 +%{goroot}/pkg/netbsd_386/ +%{goroot}/pkg/tool/netbsd_386/ + +%files pkg-netbsd-amd64 +%{goroot}/pkg/netbsd_amd64/ +%{goroot}/pkg/tool/netbsd_amd64/ + +%files pkg-netbsd-arm +%{goroot}/pkg/netbsd_arm/ +%{goroot}/pkg/tool/netbsd_arm/ + +%files pkg-openbsd-386 +%{goroot}/pkg/openbsd_386/ +%{goroot}/pkg/tool/openbsd_386/ + +%files pkg-openbsd-amd64 +%{goroot}/pkg/openbsd_amd64/ +%{goroot}/pkg/tool/openbsd_amd64/ + +## skipping for now +#%files pkg-openbsd-arm +#%{goroot}/pkg/openbsd_arm/ +#%{goroot}/pkg/tool/openbsd_arm/ + %changelog +* Wed Apr 09 2014 Vincent Batts 1.2.1-3 +- including more to macros (%%go_arches) +- set a standard goroot as /usr/lib/golang, regardless of arch +- include sub-packages for compiler toolchains, for all golang supported architectures + * Wed Mar 26 2014 Vincent Batts 1.2.1-2 - provide a system rpm macros. Starting with %gopath diff --git a/macros.golang b/macros.golang index 42cb2a1..bc6b803 100644 --- a/macros.golang +++ b/macros.golang @@ -1 +1,8 @@ +# Where to set GOPATH for builds. Like: +# export GOPATH=$(pwd)/_build:%{gopath} %gopath %{_datadir}/gocode + +# for use like: +# ExclusiveArch: %{go_arches} +%go_arches %{ix86} x86_64 %{arm} + From 8081f3309e7528cd992678f4b51e52168f11b9cb Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Thu, 10 Apr 2014 17:06:19 -0400 Subject: [PATCH 03/10] bz1010713 directory ownership --- golang.spec | 92 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 8 deletions(-) diff --git a/golang.spec b/golang.spec index db48d28..cac6d19 100644 --- a/golang.spec +++ b/golang.spec @@ -25,6 +25,7 @@ # let this match the macros in macros.golang %global goroot /usr/lib/%{name} +%global gopath %{_datadir}/gocode %global go_arches %{ix86} x86_64 %{arm} %ifarch x86_64 %global gohostarch amd64 @@ -38,7 +39,7 @@ Name: golang Version: 1.2.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: The Go Programming Language License: BSD @@ -425,7 +426,7 @@ export PATH="$PATH":"$GOROOT"/bin cd src # not using our 'gcc' since the CFLAGS fails crash_cgo_test.go due to unused variables # https://code.google.com/p/go/issues/detail?id=6883 -#./run.bash --no-rebuild +./run.bash --no-rebuild cd .. @@ -453,6 +454,12 @@ mkdir -p $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch} mv $RPM_BUILD_ROOT%{goroot}/bin/go $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/go mv $RPM_BUILD_ROOT%{goroot}/bin/gofmt $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/gofmt +# ensure these exist and are owned +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/github.com/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/bitbucket.org/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/p/ + # remove the go and gofmt for other platforms (not used in the compile) pushd $RPM_BUILD_ROOT%{goroot}/bin/ rm -rf darwin_* windows_* freebsd_* netbsd_* openbsd_* plan9_* @@ -559,13 +566,20 @@ fi %doc AUTHORS CONTRIBUTORS LICENSE PATENTS VERSION # go files -%{goroot} +%dir %{goroot} +%{goroot}/* %exclude %{goroot}/bin/ %exclude %{goroot}/pkg/ %exclude %{goroot}/src/ -# this directory is part of the core library tool -%{goroot}/pkg/obj/linux_%{gohostarch}/ +# ensure directory ownership, so they are cleaned up if empty +%dir %{gopath} +%dir %{gopath}/src +%dir %{gopath}/src/github.com/ +%dir %{gopath}/src/bitbucket.org/ +%dir %{gopath}/src/code.google.com/ +%dir %{gopath}/src/code.google.com/p/ + # autocomplete %{_datadir}/bash-completion @@ -612,6 +626,24 @@ fi # binary executables %ghost %{_bindir}/go %ghost %{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_386 +%{goroot}/pkg/obj/linux_386/* +%{goroot}/pkg/linux_386/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_386 +%{goroot}/pkg/tool/linux_386/6a +%{goroot}/pkg/tool/linux_386/6c +%{goroot}/pkg/tool/linux_386/6g +%{goroot}/pkg/tool/linux_386/6l +%{goroot}/pkg/tool/linux_386/8a +%{goroot}/pkg/tool/linux_386/8c +%{goroot}/pkg/tool/linux_386/8g +%{goroot}/pkg/tool/linux_386/8l +%{goroot}/pkg/tool/linux_386/addr2line +%{goroot}/pkg/tool/linux_386/dist +%{goroot}/pkg/tool/linux_386/nm +%{goroot}/pkg/tool/linux_386/objdump +%{goroot}/pkg/tool/linux_386/pack +%{goroot}/pkg/tool/linux_386/pprof %endif %ifarch x86_64 @@ -620,6 +652,20 @@ fi # binary executables %ghost %{_bindir}/go %ghost %{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_amd64 +%{goroot}/pkg/obj/linux_amd64/* +%{goroot}/pkg/linux_amd64/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_amd64 +%{goroot}/pkg/tool/linux_amd64/6a +%{goroot}/pkg/tool/linux_amd64/6c +%{goroot}/pkg/tool/linux_amd64/6g +%{goroot}/pkg/tool/linux_amd64/6l +%{goroot}/pkg/tool/linux_amd64/addr2line +%{goroot}/pkg/tool/linux_amd64/dist +%{goroot}/pkg/tool/linux_amd64/nm +%{goroot}/pkg/tool/linux_amd64/objdump +%{goroot}/pkg/tool/linux_amd64/pack +%{goroot}/pkg/tool/linux_amd64/pprof %endif %ifarch %{arm} @@ -628,19 +674,46 @@ fi # binary executables %ghost %{_bindir}/go %ghost %{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_arm +%{goroot}/pkg/obj/linux_arm/* +%{goroot}/pkg/linux_arm/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_arm +%{goroot}/pkg/tool/linux_arm/5a +%{goroot}/pkg/tool/linux_arm/5c +%{goroot}/pkg/tool/linux_arm/5g +%{goroot}/pkg/tool/linux_arm/5l +%{goroot}/pkg/tool/linux_arm/6a +%{goroot}/pkg/tool/linux_arm/6c +%{goroot}/pkg/tool/linux_arm/6g +%{goroot}/pkg/tool/linux_arm/6l +%{goroot}/pkg/tool/linux_arm/addr2line +%{goroot}/pkg/tool/linux_arm/dist +%{goroot}/pkg/tool/linux_arm/nm +%{goroot}/pkg/tool/linux_arm/objdump +%{goroot}/pkg/tool/linux_arm/pack +%{goroot}/pkg/tool/linux_arm/pprof %endif %files pkg-linux-386 %{goroot}/pkg/linux_386/ -%{goroot}/pkg/tool/linux_386/ +%exclude %{goroot}/pkg/linux_386/runtime/cgo.a +%{goroot}/pkg/tool/linux_386/cgo +%{goroot}/pkg/tool/linux_386/fix +%{goroot}/pkg/tool/linux_386/yacc %files pkg-linux-amd64 %{goroot}/pkg/linux_amd64/ -%{goroot}/pkg/tool/linux_amd64/ +%exclude %{goroot}/pkg/linux_amd64/runtime/cgo.a +%{goroot}/pkg/tool/linux_amd64/cgo +%{goroot}/pkg/tool/linux_amd64/fix +%{goroot}/pkg/tool/linux_amd64/yacc %files pkg-linux-arm %{goroot}/pkg/linux_arm/ -%{goroot}/pkg/tool/linux_arm/ +%exclude %{goroot}/pkg/linux_arm/runtime/cgo.a +%{goroot}/pkg/tool/linux_arm/cgo +%{goroot}/pkg/tool/linux_arm/fix +%{goroot}/pkg/tool/linux_arm/yacc %files pkg-darwin-386 %{goroot}/pkg/darwin_386/ @@ -705,6 +778,9 @@ fi %changelog +* Thu Apr 09 2014 Vincent Batts 1.2.1-4 +- fixing file and directory ownership bz1010713 + * Wed Apr 09 2014 Vincent Batts 1.2.1-3 - including more to macros (%%go_arches) - set a standard goroot as /usr/lib/golang, regardless of arch From 76f08f5dd7a30f137580f4f1e70bd5538e15f6db Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Fri, 11 Apr 2014 16:17:08 -0400 Subject: [PATCH 04/10] bz1086900 SIGABRT in tests on fc21 --- golang-1.2.1-disable_testsetgid.patch | 9 +++++++++ golang.spec | 13 ++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 golang-1.2.1-disable_testsetgid.patch diff --git a/golang-1.2.1-disable_testsetgid.patch b/golang-1.2.1-disable_testsetgid.patch new file mode 100644 index 0000000..4b509eb --- /dev/null +++ b/golang-1.2.1-disable_testsetgid.patch @@ -0,0 +1,9 @@ +diff -r 0ddbdc3c7ce2 misc/cgo/test/cgo_linux_test.go +--- a/misc/cgo/test/cgo_linux_test.go Mon Mar 03 11:53:08 2014 +1100 ++++ b/misc/cgo/test/cgo_linux_test.go Fri Apr 11 16:01:17 2014 -0400 +@@ -6,4 +6,4 @@ + + import "testing" + +-func TestSetgid(t *testing.T) { testSetgid(t) } ++func nopeTestSetgid(t *testing.T) { testSetgid(t) } diff --git a/golang.spec b/golang.spec index cac6d19..b33dc38 100644 --- a/golang.spec +++ b/golang.spec @@ -39,7 +39,7 @@ Name: golang Version: 1.2.1 -Release: 4%{?dist} +Release: 5%{?dist} Summary: The Go Programming Language License: BSD @@ -82,6 +82,11 @@ Patch2: ./golang-1.2-skipCpuProfileTest.patch # https://code.google.com/p/go/source/detail?r=a15f344a9efa Patch3: golang-1.2-archive_tar-xattr.patch +# skip test that causes a SIGABRT on fc21 +# until this test/issue is fixed +# https://bugzilla.redhat.com/show_bug.cgi?id=1086900 +Patch5: golang-1.2.1-disable_testsetgid.patch + # Having documentation separate was broken Obsoletes: %{name}-docs < 1.1-4 @@ -370,6 +375,9 @@ cp %SOURCE400 src/pkg/archive/tar/testdata/xattrs.tar # TODO: remove this when updated to go1.3 %patch3 -p1 +# SIGABRT bz1086900 +%patch5 -p1 + # create a [dirty] gcc wrapper to allow us to build with our own flags # (dirty because it is spoofing 'gcc' since CC value is stored in the go tool) # TODO: remove this and just set CFLAGS/LDFLAGS once upstream supports it @@ -778,6 +786,9 @@ fi %changelog +* Fri Apr 10 2014 Vincent Batts 1.2.1-5 +- skip test that is causing a SIGABRT on fc21 bz1086900 + * Thu Apr 09 2014 Vincent Batts 1.2.1-4 - fixing file and directory ownership bz1010713 From d93151237015ad3799c06fa8e5d90522148bec66 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Tue, 6 May 2014 16:50:32 -0400 Subject: [PATCH 05/10] work around the glibc-2.19 causing a failed test --- golang-1.2.1-i686-cgo-test-failure.patch | 13 +++++++++++++ golang.spec | 13 ++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 golang-1.2.1-i686-cgo-test-failure.patch diff --git a/golang-1.2.1-i686-cgo-test-failure.patch b/golang-1.2.1-i686-cgo-test-failure.patch new file mode 100644 index 0000000..3ec543c --- /dev/null +++ b/golang-1.2.1-i686-cgo-test-failure.patch @@ -0,0 +1,13 @@ +Index: go/src/run.bash +=================================================================== +--- go.orig/src/run.bash ++++ go/src/run.bash +@@ -105,7 +105,7 @@ go run $GOROOT/test/run.go - . || exit 1 + (xcd ../misc/cgo/test + go test -ldflags '-linkmode=auto' || exit 1 + # linkmode=internal fails on dragonfly since errno is a TLS relocation. +-[ "$GOHOSTOS" == dragonfly ] || go test -ldflags '-linkmode=internal' || exit 1 ++#[ "$GOHOSTOS" == dragonfly ] || go test -ldflags '-linkmode=internal' || exit 1 + case "$GOHOSTOS-$GOARCH" in + openbsd-386 | openbsd-amd64) + # test linkmode=external, but __thread not supported, so skip testtls. diff --git a/golang.spec b/golang.spec index b33dc38..a4af927 100644 --- a/golang.spec +++ b/golang.spec @@ -82,11 +82,15 @@ Patch2: ./golang-1.2-skipCpuProfileTest.patch # https://code.google.com/p/go/source/detail?r=a15f344a9efa Patch3: golang-1.2-archive_tar-xattr.patch -# skip test that causes a SIGABRT on fc21 +# skip test that causes a SIGABRT on fc21 (bz1086900) # until this test/issue is fixed # https://bugzilla.redhat.com/show_bug.cgi?id=1086900 Patch5: golang-1.2.1-disable_testsetgid.patch +# skip this test, which fails in i686 on fc21 inside mock/chroot (bz1087621) +# https://bugzilla.redhat.com/show_bug.cgi?id=1087621 +Patch6: golang-1.2.1-i686-cgo-test-failure.patch + # Having documentation separate was broken Obsoletes: %{name}-docs < 1.1-4 @@ -378,6 +382,9 @@ cp %SOURCE400 src/pkg/archive/tar/testdata/xattrs.tar # SIGABRT bz1086900 %patch5 -p1 +# cgo/test bz1087621 +%patch6 -p1 + # create a [dirty] gcc wrapper to allow us to build with our own flags # (dirty because it is spoofing 'gcc' since CC value is stored in the go tool) # TODO: remove this and just set CFLAGS/LDFLAGS once upstream supports it @@ -786,10 +793,10 @@ fi %changelog -* Fri Apr 10 2014 Vincent Batts 1.2.1-5 +* Fri Apr 11 2014 Vincent Batts 1.2.1-5 - skip test that is causing a SIGABRT on fc21 bz1086900 -* Thu Apr 09 2014 Vincent Batts 1.2.1-4 +* Thu Apr 10 2014 Vincent Batts 1.2.1-4 - fixing file and directory ownership bz1010713 * Wed Apr 09 2014 Vincent Batts 1.2.1-3 From df7b191378d8ecfe0a1e27fc377d813af8f527c2 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 7 May 2014 13:39:21 -0400 Subject: [PATCH 06/10] 1.2.1-6: arch-specific bits arch-specific source needs to be in arch-specific rpms --- golang.spec | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/golang.spec b/golang.spec index a4af927..0dcd339 100644 --- a/golang.spec +++ b/golang.spec @@ -39,7 +39,7 @@ Name: golang Version: 1.2.1 -Release: 5%{?dist} +Release: 6%{?dist} Summary: The Go Programming Language License: BSD @@ -634,6 +634,44 @@ fi %files src %{goroot}/src/ +# files that are generated based on compile-time ARCH will go in that arch's pkg-bin-* +%exclude %{goroot}/src/cmd/5l/enam.c +%exclude %{goroot}/src/pkg/runtime/zasm_linux_386.h +%exclude %{goroot}/src/pkg/runtime/zasm_linux_amd64.h +%exclude %{goroot}/src/pkg/runtime/zasm_linux_arm.h +%exclude %{goroot}/src/pkg/runtime/zgoarch_arm.go +%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zmprof_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zmprof_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zmprof_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_386.c +%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/znoasm_arm_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_386.go +%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_amd64.go +%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_arm.go +%exclude %{goroot}/src/pkg/runtime/zsema_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zsema_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zsema_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zstring_linux_386.c +%exclude %{goroot}/src/pkg/runtime/zstring_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zstring_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zsys_linux_386.s +%exclude %{goroot}/src/pkg/runtime/zsys_linux_amd64.s +%exclude %{goroot}/src/pkg/runtime/zsys_linux_arm.s +%exclude %{goroot}/src/pkg/runtime/ztime_linux_386.c +%exclude %{goroot}/src/pkg/runtime/ztime_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/ztime_linux_arm.c + %ifarch %{ix86} %files pkg-bin-linux-386 @@ -659,6 +697,19 @@ fi %{goroot}/pkg/tool/linux_386/objdump %{goroot}/pkg/tool/linux_386/pack %{goroot}/pkg/tool/linux_386/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/pkg/runtime/zasm_linux_386.h +%{goroot}/src/pkg/runtime/zmalloc_linux_386.c +%{goroot}/src/pkg/runtime/zmprof_linux_386.c +%{goroot}/src/pkg/runtime/znetpoll_linux_386.c +%{goroot}/src/pkg/runtime/zruntime1_linux_386.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_386.go +%{goroot}/src/pkg/runtime/zsema_linux_386.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_386.c +%{goroot}/src/pkg/runtime/zstring_linux_386.c +%{goroot}/src/pkg/runtime/zsys_linux_386.s +%{goroot}/src/pkg/runtime/ztime_linux_386.c %endif %ifarch x86_64 @@ -681,6 +732,19 @@ fi %{goroot}/pkg/tool/linux_amd64/objdump %{goroot}/pkg/tool/linux_amd64/pack %{goroot}/pkg/tool/linux_amd64/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/pkg/runtime/zasm_linux_amd64.h +%{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c +%{goroot}/src/pkg/runtime/zmprof_linux_amd64.c +%{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c +%{goroot}/src/pkg/runtime/zruntime1_linux_amd64.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_amd64.go +%{goroot}/src/pkg/runtime/zsema_linux_amd64.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_amd64.c +%{goroot}/src/pkg/runtime/zstring_linux_amd64.c +%{goroot}/src/pkg/runtime/zsys_linux_amd64.s +%{goroot}/src/pkg/runtime/ztime_linux_amd64.c %endif %ifarch %{arm} @@ -707,6 +771,22 @@ fi %{goroot}/pkg/tool/linux_arm/objdump %{goroot}/pkg/tool/linux_arm/pack %{goroot}/pkg/tool/linux_arm/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/cmd/5l/enam.c +%{goroot}/src/pkg/runtime/zasm_linux_arm.h +%{goroot}/src/pkg/runtime/zgoarch_arm.go +%{goroot}/src/pkg/runtime/zmalloc_linux_arm.c +%{goroot}/src/pkg/runtime/zmprof_linux_arm.c +%{goroot}/src/pkg/runtime/znetpoll_linux_arm.c +%{goroot}/src/pkg/runtime/znoasm_arm_linux_arm.c +%{goroot}/src/pkg/runtime/zruntime1_linux_arm.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_arm.go +%{goroot}/src/pkg/runtime/zsema_linux_arm.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_arm.c +%{goroot}/src/pkg/runtime/zstring_linux_arm.c +%{goroot}/src/pkg/runtime/zsys_linux_arm.s +%{goroot}/src/pkg/runtime/ztime_linux_arm.c %endif %files pkg-linux-386 @@ -793,6 +873,9 @@ fi %changelog +* Wed May 07 2014 Vincent Batts 1.2.1-6 +- put generated arch-dependent src in their respective RPMs + * Fri Apr 11 2014 Vincent Batts 1.2.1-5 - skip test that is causing a SIGABRT on fc21 bz1086900 From 9207febd2c519c48ea85c63087afd30ef10963fa Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 7 May 2014 15:47:49 -0400 Subject: [PATCH 07/10] missed two files --- golang.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/golang.spec b/golang.spec index 0dcd339..4f82676 100644 --- a/golang.spec +++ b/golang.spec @@ -699,7 +699,9 @@ fi %{goroot}/pkg/tool/linux_386/pprof # arch dependent generated files, used by cgo +%{goroot}/src/cmd/8l/enam.c %{goroot}/src/pkg/runtime/zasm_linux_386.h +%{goroot}/src/pkg/runtime/zgoarch_386.go %{goroot}/src/pkg/runtime/zmalloc_linux_386.c %{goroot}/src/pkg/runtime/zmprof_linux_386.c %{goroot}/src/pkg/runtime/znetpoll_linux_386.c @@ -734,7 +736,9 @@ fi %{goroot}/pkg/tool/linux_amd64/pprof # arch dependent generated files, used by cgo +%{goroot}/src/cmd/6l/enam.c %{goroot}/src/pkg/runtime/zasm_linux_amd64.h +%{goroot}/src/pkg/runtime/zgoarch_amd64.go %{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c %{goroot}/src/pkg/runtime/zmprof_linux_amd64.c %{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c From 6e4126fb0153259bd1e56ef8455ebcb426110b02 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 7 May 2014 15:49:17 -0400 Subject: [PATCH 08/10] bump release number --- golang.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/golang.spec b/golang.spec index 4f82676..34fbcf5 100644 --- a/golang.spec +++ b/golang.spec @@ -39,7 +39,7 @@ Name: golang Version: 1.2.1 -Release: 6%{?dist} +Release: 7%{?dist} Summary: The Go Programming Language License: BSD @@ -877,6 +877,9 @@ fi %changelog +* Wed May 07 2014 Vincent Batts 1.2.1-7 +- missed two arch-dependent src files + * Wed May 07 2014 Vincent Batts 1.2.1-6 - put generated arch-dependent src in their respective RPMs From 5f099a58529982244ba01c0be9603f147d6299e0 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 7 May 2014 23:29:08 -0400 Subject: [PATCH 09/10] add excluding the files too --- golang.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/golang.spec b/golang.spec index 34fbcf5..140ff72 100644 --- a/golang.spec +++ b/golang.spec @@ -636,9 +636,13 @@ fi %{goroot}/src/ # files that are generated based on compile-time ARCH will go in that arch's pkg-bin-* %exclude %{goroot}/src/cmd/5l/enam.c +%exclude %{goroot}/src/cmd/6l/enam.c +%exclude %{goroot}/src/cmd/8l/enam.c %exclude %{goroot}/src/pkg/runtime/zasm_linux_386.h %exclude %{goroot}/src/pkg/runtime/zasm_linux_amd64.h %exclude %{goroot}/src/pkg/runtime/zasm_linux_arm.h +%exclude %{goroot}/src/pkg/runtime/zgoarch_386.go +%exclude %{goroot}/src/pkg/runtime/zgoarch_amd64.go %exclude %{goroot}/src/pkg/runtime/zgoarch_arm.go %exclude %{goroot}/src/pkg/runtime/zmalloc_linux_386.c %exclude %{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c From 2911c49ac26f4b32e97a206aab95a2452851df8b Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Fri, 9 May 2014 07:20:57 -0400 Subject: [PATCH 10/10] more rpmspec for multiarch, to accomodate RHEL6 --- golang.spec | 69 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/golang.spec b/golang.spec index 140ff72..a8ae587 100644 --- a/golang.spec +++ b/golang.spec @@ -39,7 +39,7 @@ Name: golang Version: 1.2.1 -Release: 7%{?dist} +Release: 8%{?dist} Summary: The Go Programming Language License: BSD @@ -635,46 +635,54 @@ fi %files src %{goroot}/src/ # files that are generated based on compile-time ARCH will go in that arch's pkg-bin-* -%exclude %{goroot}/src/cmd/5l/enam.c -%exclude %{goroot}/src/cmd/6l/enam.c +%ifarch %{ix86} %exclude %{goroot}/src/cmd/8l/enam.c %exclude %{goroot}/src/pkg/runtime/zasm_linux_386.h -%exclude %{goroot}/src/pkg/runtime/zasm_linux_amd64.h -%exclude %{goroot}/src/pkg/runtime/zasm_linux_arm.h %exclude %{goroot}/src/pkg/runtime/zgoarch_386.go -%exclude %{goroot}/src/pkg/runtime/zgoarch_amd64.go -%exclude %{goroot}/src/pkg/runtime/zgoarch_arm.go %exclude %{goroot}/src/pkg/runtime/zmalloc_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zmprof_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zmprof_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zmprof_linux_arm.c %exclude %{goroot}/src/pkg/runtime/znetpoll_linux_386.c -%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_arm.c -%exclude %{goroot}/src/pkg/runtime/znoasm_arm_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zruntime1_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_386.go -%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_amd64.go -%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_arm.go %exclude %{goroot}/src/pkg/runtime/zsema_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zsema_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zsema_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zstring_linux_386.c -%exclude %{goroot}/src/pkg/runtime/zstring_linux_amd64.c -%exclude %{goroot}/src/pkg/runtime/zstring_linux_arm.c %exclude %{goroot}/src/pkg/runtime/zsys_linux_386.s -%exclude %{goroot}/src/pkg/runtime/zsys_linux_amd64.s -%exclude %{goroot}/src/pkg/runtime/zsys_linux_arm.s %exclude %{goroot}/src/pkg/runtime/ztime_linux_386.c +%endif + +%ifarch x86_64 +%exclude %{goroot}/src/cmd/6l/enam.c +%exclude %{goroot}/src/pkg/runtime/zasm_linux_amd64.h +%exclude %{goroot}/src/pkg/runtime/zgoarch_amd64.go +%exclude %{goroot}/src/pkg/runtime/zmprof_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zsema_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_amd64.go +%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zstring_linux_amd64.c +%exclude %{goroot}/src/pkg/runtime/zsys_linux_amd64.s %exclude %{goroot}/src/pkg/runtime/ztime_linux_amd64.c +%endif + +%ifarch %{arm} +%exclude %{goroot}/src/cmd/5l/enam.c +%exclude %{goroot}/src/pkg/runtime/zasm_linux_arm.h +%exclude %{goroot}/src/pkg/runtime/zgoarch_arm.go +%exclude %{goroot}/src/pkg/runtime/znetpoll_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zmalloc_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zmprof_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/znoasm_arm_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zruntime1_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zruntime_defs_linux_arm.go +%exclude %{goroot}/src/pkg/runtime/zsema_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zsigqueue_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zstring_linux_arm.c +%exclude %{goroot}/src/pkg/runtime/zsys_linux_arm.s %exclude %{goroot}/src/pkg/runtime/ztime_linux_arm.c +%endif %ifarch %{ix86} @@ -799,21 +807,27 @@ fi %files pkg-linux-386 %{goroot}/pkg/linux_386/ +%ifarch %{ix86} %exclude %{goroot}/pkg/linux_386/runtime/cgo.a +%endif %{goroot}/pkg/tool/linux_386/cgo %{goroot}/pkg/tool/linux_386/fix %{goroot}/pkg/tool/linux_386/yacc %files pkg-linux-amd64 %{goroot}/pkg/linux_amd64/ +%ifarch x86_64 %exclude %{goroot}/pkg/linux_amd64/runtime/cgo.a +%endif %{goroot}/pkg/tool/linux_amd64/cgo %{goroot}/pkg/tool/linux_amd64/fix %{goroot}/pkg/tool/linux_amd64/yacc %files pkg-linux-arm %{goroot}/pkg/linux_arm/ +%ifarch %{arm} %exclude %{goroot}/pkg/linux_arm/runtime/cgo.a +%endif %{goroot}/pkg/tool/linux_arm/cgo %{goroot}/pkg/tool/linux_arm/fix %{goroot}/pkg/tool/linux_arm/yacc @@ -881,6 +895,9 @@ fi %changelog +* Thu May 08 2014 Vincent Batts 1.2.1-8 +- RHEL6 rpm macros can't %%exlude missing files + * Wed May 07 2014 Vincent Batts 1.2.1-7 - missed two arch-dependent src files