# 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 Name: golang Version: 1.1.1 Release: 7%{?dist} Summary: The Go Programming Language License: BSD URL: http://golang.org/ Source0: https://go.googlecode.com/files/go%{version}.src.tar.gz Source1: https://raw.github.com/davecheney/golang-crosscompile/master/crosscompile.bash BuildRequires: /bin/hostname BuildRequires: emacs xemacs xemacs-packages-extra Patch0: golang-1.1-verbose-build.patch # Having godoc and the documentation separate was broken Obsoletes: %{name}-godoc < 1.1-4 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 %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}. %ifnarch x86_64 %package cross-linux_amd64 Summary: Go cross-compile support for linux_amd64 Requires: golang ExclusiveArch: %{ix86} %{arm} %description cross-linux_amd64 %{summary}. %endif %ifnarch %{ix86} %package cross-linux_386 Summary: Go cross-compile support for linux_386 Requires: golang %description cross-linux_386 %{summary}. %endif %ifnarch %{arm} %package cross-linux_arm Summary: Go cross-compile support for linux_arm Requires: golang %description cross-linux_arm %{summary}. %endif %package cross-darwin_amd64 Summary: Go cross-compile support for darwin_amd64 Requires: golang %description cross-darwin_amd64 %{summary}. %package cross-darwin_386 Summary: Go cross-compile support for darwin_386 Requires: golang %description cross-darwin_386 %{summary}. %package cross-freebsd_amd64 Summary: Go cross-compile support for freebsd_amd64 Requires: golang %description cross-freebsd_amd64 %{summary}. %package cross-freebsd_386 Summary: Go cross-compile support for freebsd_386 Requires: golang %description cross-freebsd_386 %{summary}. %package cross-freebsd_arm Summary: Go cross-compile support for freebsd_arm Requires: golang %description cross-freebsd_arm %{summary}. %package cross-windows_amd64 Summary: Go cross-compile support for windows_amd64 Requires: golang %description cross-windows_amd64 %{summary}. %package cross-windows_386 Summary: Go cross-compile support for windows_386 Requires: golang %description cross-windows_386 %{summary}. %package vim Summary: Vim plugins for Go Requires: vim-filesystem 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}. %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}. # 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 # increase verbosity of build %patch0 -p1 %build # create a gcc wrapper to allow us to build with our own flags mkdir zz cd zz echo -e "#!/bin/sh\n/usr/bin/gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS \"\$@\"" > mygcc chmod +x mygcc export CC="$(pwd -P)/mygcc" cd .. # 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 ./make.bash --no-clean cd .. export GOROOT=$(pwd -P) cd src bash -c ". %{SOURCE1} ; go-crosscompile-build-all" cd .. # build static version of documentation export GOROOT=$(pwd -P) export PATH="$PATH":"$GOROOT"/bin cd doc make cd .. # compile for emacs and xemacs cd misc mv emacs/go-mode-load.el emacs/%{name}-init.el cp -av emacs xemacs %{_emacs_bytecompile} emacs/go-mode.el %{_xemacs_bytecompile} xemacs/go-mode.el cd .. %check export GOROOT=$(pwd -P) export PATH="$PATH":"$GOROOT"/bin cd src ./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 # add symlinks for binaries pushd $RPM_BUILD_ROOT%{_bindir} for z in $RPM_BUILD_ROOT%{_libdir}/%{name}/bin/go* do ln -s %{_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} # 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} # 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 %dir %{_libdir}/%{name} %{_libdir}/%{name}/api %{_libdir}/%{name}/bin/go %{_libdir}/%{name}/bin/godoc %{_libdir}/%{name}/bin/gofmt %{_libdir}/%{name}/doc %{_libdir}/%{name}/favicon.ico %{_libdir}/%{name}/include %{_libdir}/%{name}/lib %{_libdir}/%{name}/robots.txt %{_libdir}/%{name}/src %dir %{_libdir}/%{name}/pkg %dir %{_libdir}/%{name}/pkg/obj %dir %{_libdir}/%{name}/pkg/tool %ifarch x86_64 %dir %{_libdir}/%{name}/pkg/linux_amd64 %{_libdir}/%{name}/pkg/linux_amd64 %dir %{_libdir}/%{name}/pkg/obj/linux_amd64 %{_libdir}/%{name}/pkg/obj/linux_amd64 %dir %{_libdir}/%{name}/pkg/tool/linux_amd64 %{_libdir}/%{name}/pkg/tool/linux_amd64 %dir %{_libdir}/%{name}/pkg/obj/linux_amd64 %{_libdir}/%{name}/pkg/obj/linux_amd64 %endif %ifarch %{ix86} %dir %{_libdir}/%{name}/pkg/linux_386 %{_libdir}/%{name}/pkg/linux_386 %dir %{_libdir}/%{name}/obj/linux_386 %{_libdir}/%{name}/obj/linux_386 %dir %{_libdir}/%{name}/tool/linux_386 %{_libdir}/%{name}/tool/linux_386 %dir %{_libdir}/%{name}/pkg/obj/linux_386 %{_libdir}/%{name}/pkg/obj/linux_386 %endif %ifarch %{arm} %dir %{_libdir}/%{name}/pkg/linux_arm %{_libdir}/%{name}/pkg/linux_arm %dir %{_libdir}/%{name}/obj/linux_arm %{_libdir}/%{name}/obj/linux_arm %dir %{_libdir}/%{name}/tool/linux_arm %{_libdir}/%{name}/tool/linux_arm %dir %{_libdir}/%{name}/pkg/obj/linux_arm %{_libdir}/%{name}/pkg/obj/linux_arm %endif # bin symlinks %{_bindir}/go %{_bindir}/godoc %{_bindir}/gofmt # autocomplete %{_datadir}/bash-completion %{_datadir}/zsh # gdbinit (for gdb debugging) %{_sysconfdir}/gdbinit.d # prelink blacklist %{_sysconfdir}/prelink.conf.d %ifnarch x86_64 %files cross-linux_amd64 %dir %{_libdir}/%{name}/bin/linux_amd64 %{_libdir}/%{name}/bin/linux_amd64 %dir %{_libdir}/%{name}/pkg/linux_amd64 %{_libdir}/%{name}/pkg/linux_amd64 %dir %{_libdir}/%{name}/pkg/tool/linux_amd64 %{_libdir}/%{name}/pkg/tool/linux_amd64 %endif %ifnarch %{ix86} %files cross-linux_386 %dir %{_libdir}/%{name}/bin/linux_386 %{_libdir}/%{name}/bin/linux_386 %dir %{_libdir}/%{name}/pkg/linux_386 %{_libdir}/%{name}/pkg/linux_386 %dir %{_libdir}/%{name}/pkg/tool/linux_386 %{_libdir}/%{name}/pkg/tool/linux_386 %endif %ifnarch %{arm} %files cross-linux_arm %dir %{_libdir}/%{name}/bin/linux_arm %{_libdir}/%{name}/bin/linux_arm %dir %{_libdir}/%{name}/pkg/linux_arm %{_libdir}/%{name}/pkg/linux_arm %dir %{_libdir}/%{name}/pkg/tool/linux_arm %{_libdir}/%{name}/pkg/tool/linux_arm %endif %files cross-darwin_amd64 %dir %{_libdir}/%{name}/bin/darwin_amd64 %{_libdir}/%{name}/bin/darwin_amd64 %dir %{_libdir}/%{name}/pkg/darwin_amd64 %{_libdir}/%{name}/pkg/darwin_amd64 %dir %{_libdir}/%{name}/pkg/tool/darwin_amd64 %{_libdir}/%{name}/pkg/tool/darwin_amd64 %files cross-darwin_386 %dir %{_libdir}/%{name}/bin/darwin_386 %{_libdir}/%{name}/bin/darwin_386 %dir %{_libdir}/%{name}/pkg/darwin_386 %{_libdir}/%{name}/pkg/darwin_386 %dir %{_libdir}/%{name}/pkg/tool/darwin_386 %{_libdir}/%{name}/pkg/tool/darwin_386 %files cross-freebsd_amd64 %dir %{_libdir}/%{name}/bin/freebsd_amd64 %{_libdir}/%{name}/bin/freebsd_amd64 %dir %{_libdir}/%{name}/pkg/freebsd_amd64 %{_libdir}/%{name}/pkg/freebsd_amd64 %dir %{_libdir}/%{name}/pkg/tool/freebsd_amd64 %{_libdir}/%{name}/pkg/tool/freebsd_amd64 %files cross-freebsd_386 %dir %{_libdir}/%{name}/bin/freebsd_386 %{_libdir}/%{name}/bin/freebsd_386 %dir %{_libdir}/%{name}/pkg/freebsd_386 %{_libdir}/%{name}/pkg/freebsd_386 %dir %{_libdir}/%{name}/pkg/tool/freebsd_386 %{_libdir}/%{name}/pkg/tool/freebsd_386 %files cross-freebsd_arm %dir %{_libdir}/%{name}/bin/freebsd_arm %{_libdir}/%{name}/bin/freebsd_arm %dir %{_libdir}/%{name}/pkg/freebsd_arm %{_libdir}/%{name}/pkg/freebsd_arm %dir %{_libdir}/%{name}/pkg/tool/freebsd_arm %{_libdir}/%{name}/pkg/tool/freebsd_arm %files cross-windows_amd64 %dir %{_libdir}/%{name}/bin/windows_amd64 %{_libdir}/%{name}/bin/windows_amd64 %dir %{_libdir}/%{name}/pkg/windows_amd64 %{_libdir}/%{name}/pkg/windows_amd64 %dir %{_libdir}/%{name}/pkg/tool/windows_amd64 %{_libdir}/%{name}/pkg/tool/windows_amd64 %files cross-windows_386 %dir %{_libdir}/%{name}/bin/windows_386 %{_libdir}/%{name}/bin/windows_386 %dir %{_libdir}/%{name}/pkg/windows_386 %{_libdir}/%{name}/pkg/windows_386 %dir %{_libdir}/%{name}/pkg/tool/windows_386 %{_libdir}/%{name}/pkg/tool/windows_386 %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 %files -n xemacs-%{name} %doc AUTHORS CONTRIBUTORS LICENSE PATENTS %{_xemacs_sitelispdir}/%{name} %{_xemacs_sitestartdir}/*.el %changelog * Sun Aug 04 2013 Paul Komkoff - 1.1.1-7 - Enable cross-compilation support. Secondary architectures are built as separate packages. * Wed Jul 17 2013 Petr Pisar - 1.1.1-6 - Perl 5.18 rebuild * 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.