# build ids are not currently generated: # https://code.google.com/p/go/issues/detail?id=5238 # # also, debuginfo extraction currently fails with # "Failed to write file: invalid section alignment" %global debug_package %{nil} # we are shipping the full contents of src in the data subpackage, which # contains binary-like things (ELF data for tests, etc) %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)/.*$ # 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 %global __strip /bin/true # rpmbuild magic to keep from having meta dependency on libc.so.6 %define _use_internal_dependency_generator 0 %define __find_requires %{nil} %global debug_package %{nil} %global __spec_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot \ /usr/lib/rpm/brp-compress Name: golang Version: 1.2 Release: 6%{?dist} Summary: The Go Programming Language License: BSD URL: http://golang.org/ Source0: https://go.googlecode.com/files/go%{version}.src.tar.gz # this command moved places %if 0%{?fedora} >= 21 BuildRequires: /usr/bin/hostname Patch1: golang-f21-hostname.patch %else BuildRequires: /bin/hostname %endif Provides: go = %{version}-%{release} BuildRequires: emacs # xemacs on fedora only %if 0%{?fedora} 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 Patch2: golang-1.2-remove-ECC-p224.patch # disable flaky test for now # http://code.google.com/p/go/issues/detail?id=6522 Patch3: ./golang-1.2-skipCpuProfileTest.patch # Pull in new archive/tar upstream patch to support xattrs for # docker-0.8.1 # https://code.google.com/p/go/source/detail?r=a15f344a9efa Patch4: golang-1.2-archive_tar-xattr.patch # Having documentation separate was broken 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} Source100: golang-gdbinit Source101: golang-prelink.conf # Patch4 - pull in new archive/tar upstream patch, this file is part # of the upstream merge and is used for test cases. Source400: golang-19087:a15f344a9efa-xattrs.tar %description %{summary}. # Restore this package if RPM gets fixed (bug #975909) #%package data #Summary: Required architecture-independent files for Go #Requires: %{name} = %{version}-%{release} #BuildArch: noarch #Obsoletes: %{name}-docs < 1.1-4 # #%description data #%{summary}. %package vim Summary: Vim plugins for Go # xemacs on fedora only %if 0%{?fedora} Requires: vim-filesystem %endif BuildArch: noarch %description vim %{summary}. %package -n emacs-%{name} Summary: Emacs add-on package for Go Requires: emacs(bin) >= %{_emacs_version} BuildArch: noarch %description -n emacs-%{name} %{summary}. # xemacs on fedora only %if 0%{?fedora} %package -n xemacs-%{name} Summary: XEmacs add-on package for Go Requires: xemacs(bin) >= %{_xemacs_version} Requires: xemacs-packages-extra BuildArch: noarch %description -n xemacs-%{name} %{summary}. %endif # 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 if posix.stat(path, "type") == "link" then os.remove(path) posix.mkdir(path) end end %prep %setup -q -n go cp %SOURCE400 src/pkg/archive/tar/testdata/xattrs.tar # increase verbosity of build %patch0 -p1 # remove the P224 curve %patch2 -p1 # skip flaky test %patch3 -p1 # new archive/tar implementation from upstream %patch4 -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 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} # 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 .. # compile for emacs and xemacs cd misc mv emacs/go-mode-load.el emacs/%{name}-init.el # xemacs on fedora only %if 0%{?fedora} cp -av emacs xemacs %{_xemacs_bytecompile} xemacs/go-mode.el %endif %{_emacs_bytecompile} emacs/go-mode.el cd .. %check export GOROOT=$(pwd -P) 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 cd .. %install rm -rf $RPM_BUILD_ROOT # create the top level directories mkdir -p $RPM_BUILD_ROOT%{_bindir} mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name} # 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} # remove the unnecessary zoneinfo file (Go will always use the system one first) rm -rfv $RPM_BUILD_ROOT%{_libdir}/%{name}/lib/time # remove the doc Makefile rm -rfv $RPM_BUILD_ROOT%{_libdir}/%{name}/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 popd # misc/bash mkdir -p $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions cp -av misc/bash/go $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions for z in 8l 6l 5l 8g 6g 5g gofmt gccgo do ln -s go $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions/$z done # misc/emacs mkdir -p $RPM_BUILD_ROOT%{_emacs_sitelispdir}/%{name} mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir} cp -av misc/emacs/go-mode.* $RPM_BUILD_ROOT%{_emacs_sitelispdir}/%{name} cp -av misc/emacs/%{name}-init.el $RPM_BUILD_ROOT%{_emacs_sitestartdir} # xemacs on fedora only %if 0%{?fedora} # misc/xemacs mkdir -p $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/%{name} mkdir -p $RPM_BUILD_ROOT%{_xemacs_sitestartdir} cp -av misc/xemacs/go-mode.* $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/%{name} cp -av misc/xemacs/%{name}-init.el $RPM_BUILD_ROOT%{_xemacs_sitestartdir} %endif # misc/vim mkdir -p $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles cp -av misc/vim/* $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles rm $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles/readme.txt # misc/zsh mkdir -p $RPM_BUILD_ROOT%{_datadir}/zsh/site-functions cp -av misc/zsh/go $RPM_BUILD_ROOT%{_datadir}/zsh/site-functions # gdbinit mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d cp -av %{SOURCE100} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d/golang # prelink blacklist mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf %files %doc AUTHORS CONTRIBUTORS LICENSE PATENTS VERSION # go files %{_libdir}/%{name} # binary executables %{_bindir}/go %{_bindir}/gofmt # autocomplete %{_datadir}/bash-completion %{_datadir}/zsh # gdbinit (for gdb debugging) %{_sysconfdir}/gdbinit.d # prelink blacklist %{_sysconfdir}/prelink.conf.d %files vim %doc AUTHORS CONTRIBUTORS LICENSE PATENTS %{_datadir}/vim/vimfiles/* %files -n emacs-%{name} %doc AUTHORS CONTRIBUTORS LICENSE PATENTS %{_emacs_sitelispdir}/%{name} %{_emacs_sitestartdir}/*.el # xemacs on fedora only %if 0%{?fedora} %files -n xemacs-%{name} %doc AUTHORS CONTRIBUTORS LICENSE PATENTS %{_xemacs_sitelispdir}/%{name} %{_xemacs_sitestartdir}/*.el %endif %changelog * Wed Feb 19 2014 Adam Miller 1.2-6 - pull in upstream archive/tar implementation that supports xattr for docker 0.8.1 * Tue Feb 18 2014 Vincent Batts 1.2-5 - provide 'go', so users can yum install 'go' * Thu Jan 24 2014 Vincent Batts 1.2-4 - skip a flaky test that is sporadically failing on the build server * Thu Jan 16 2014 Vincent Batts 1.2-3 - remove golang-godoc dependency. cyclic dependency on compiling godoc * Wed Dec 18 2013 Vincent Batts - 1.2-2 - removing P224 ECC curve * Mon Dec 2 2013 Vincent Batts - 1.2-1 - Update to upstream 1.2 release - remove the pax tar patches * Tue Nov 26 2013 Vincent Batts - 1.1.2-8 - fix the rpmspec conditional for rhel and fedora * Thu Nov 21 2013 Vincent Batts - 1.1.2-7 - patch tests for testing on rawhide - let the same spec work for rhel and fedora * Wed Nov 20 2013 Vincent Batts - 1.1.2-6 - don't symlink /usr/bin out to ../lib..., move the file - seperate out godoc, to accomodate the go.tools godoc * Fri Sep 20 2013 Adam Miller - 1.1.2-5 - Pull upstream patches for BZ#1010271 - Add glibc requirement that got dropped because of meta dep fix * Thu Sep 19 2013 Adam Miller - 1.2.2-3 - fix the libc meta dependency (thanks to vbatts [at] redhat.com for the fix) * Fri Aug 16 2013 Adam Miller - 1.1.2-2 - vim-filesystem only required for Fedora , vim-common owns those files in RHEL * Fri Aug 16 2013 Adam Miller - 1.1.2-1 - Update to latest upstream * Fri Aug 16 2013 Adam Miller - 1.1.1-6 - Remove xemacs bits for RHEL build * Wed Jul 10 2013 Adam Goode - 1.1.1-5 - Blacklist testdata files from prelink - Again try to fix #973842 * Fri Jul 5 2013 Adam Goode - 1.1.1-4 - Move src to libdir for now (#973842) (upstream issue https://code.google.com/p/go/issues/detail?id=5830) - Eliminate noarch data package to work around RPM bug (#975909) - Try to add runtime-gdb.py to the gdb safe-path (#981356) * Wed Jun 19 2013 Adam Goode - 1.1.1-3 - Use lua for pretrans (http://fedoraproject.org/wiki/Packaging:Guidelines#The_.25pretrans_scriptlet) * Mon Jun 17 2013 Adam Goode - 1.1.1-2 - Hopefully really fix #973842 - Fix update from pre-1.1.1 (#974840) * Thu Jun 13 2013 Adam Goode - 1.1.1-1 - Update to 1.1.1 - Fix basically useless package (#973842) * Sat May 25 2013 Dan HorĂ¡k - 1.1-3 - set ExclusiveArch * Fri May 24 2013 Adam Goode - 1.1-2 - Fix noarch package discrepancies * Fri May 24 2013 Adam Goode - 1.1-1 - Initial Fedora release. - Update to 1.1 * Thu May 9 2013 Adam Goode - 1.1-0.3.rc3 - Update to rc3 * Thu Apr 11 2013 Adam Goode - 1.1-0.2.beta2 - Update to beta2 * Tue Apr 9 2013 Adam Goode - 1.1-0.1.beta1 - Initial packaging.