diff --git a/go19/go19.patch b/go19/go19.patch new file mode 100644 index 0000000000..4d68ae0994 --- /dev/null +++ b/go19/go19.patch @@ -0,0 +1,16 @@ +Index: src/crypto/x509/root_unix.go +--- src/crypto/x509/root_unix.go.orig 2017-09-01 11:28:19.812411000 +0200 ++++ src/crypto/x509/root_unix.go 2017-09-01 11:57:34.508298000 +0200 +@@ -14,11 +14,7 @@ + // Possible directories with certificate files; stop after successfully + // reading at least one file from a directory. + var certDirectories = []string{ +- "/etc/ssl/certs", // SLES10/SLES11, https://golang.org/issue/12139 +- "/system/etc/security/cacerts", // Android +- "/usr/local/share/certs", // FreeBSD +- "/etc/pki/tls/certs", // Fedora/RHEL +- "/etc/openssl/certs", // NetBSD ++ "@l_prefix@/etc/x509", + } + + const ( diff --git a/go19/go19.spec b/go19/go19.spec new file mode 100644 index 0000000000..38a345c7de --- /dev/null +++ b/go19/go19.spec @@ -0,0 +1,145 @@ +## +## go19.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2018 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: go19 +Summary: The Go Programming Language (version 1.9) +URL: http://golang.org/ +Vendor: Robert Griesemer, Rob Pike, Ken Thompson +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: PLUS +Group: Language +License: BSD +Version: 1.9.4 +Release: 20180218 + +# list of sources +Source0: http://golang.org/dl/go%{version}.src.tar.gz +Patch0: go19.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101, gcc, make, bison, flex +PreReq: OpenPKG, openpkg >= 20160101, gcc, x509 +BuildPreReq: go-cc +PreReq: go-cc + +%description + Go is a concurrent garbage-collected system programming language, + designed 2007 by Robert Griesemer, Rob Pike and Ken Thompson at + Google. Go is expressive, concise, clean, and efficient. Its + concurrency mechanisms make it easy to write programs that get + the most out of multicore and networked machines, while its novel + type system enables flexible and modular program construction. Go + compiles quickly to machine code yet has the convenience of garbage + collection and the power of run-time reflection. It's a fast, + statically typed, compiled language that feels like a dynamically + typed, interpreted language. + +%track + prog go = { + version = %{version} + url = http://golang.org/dl/ + regex = go(1.9(?:\.\d+)?)\.src\.tar\.gz + } + +%prep + %setup -q -n go + %patch -p0 + +%build + # patch the patch + %{l_shtool} subst %{l_value -s -a} \ + src/crypto/x509/root_unix.go + + # configure package + export GOROOT="`pwd`" + export GOBIN="`pwd`/bin" + export GOROOT_FINAL="%{l_prefix}/lib/go19" + if [ -x %{l_prefix}/lib/go/bin/go ]; then + export GOROOT_BOOTSTRAP="%{l_prefix}/lib/go" + elif [ -x %{l_prefix}/lib/go-bootstrap/bin/go ]; then + export GOROOT_BOOTSTRAP="%{l_prefix}/lib/go-bootstrap" + else + ( echo "ATTENTION! Because Go version 1.5 and higher is written in Go itself" + echo "you either need an already (older) installed \"go\" package or you have" + echo "to install at least once the \"go-bootstap\" package for bootstrapping." + ) | %{l_rpmtool} msg -b -t error + exit 1 + fi + export GOOS="" + export GOARCH="" + case "%{l_platform -t}" in + *-freebsd* ) GOOS="freebsd" ;; + *-linux* ) GOOS="linux" ;; + *-macosx* ) GOOS="darwin" ;; + esac + case "%{l_platform -t}" in + ix86-* ) GOARCH="386" ;; + amd64-* ) GOARCH="amd64" ;; + esac + if [ ".$GOOS" = . -o ".$GOARCH" = . ]; then + echo "ERROR: platform not supported" 1>&2 + exit 1 + fi + + # provide the dedicated C/C++ compiler wrappers + # (which is also available later for Go to compile) + export CC="%{l_prefix}/bin/go-cc" + export CXX="%{l_prefix}/bin/go-c++" + + # build program + %{l_shtool} mkdir -f -p -m 755 $GOBIN + cd src + %{l_bash} make.bash + +%install + # cleanup source tree + rm -rf bin-tmp + rm -f favicon.ico + rm -rf [A-R]* doc misc test + + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/bin \ + $RPM_BUILD_ROOT%{l_prefix}/lib/go19 + + # install program + cp -rp * $RPM_BUILD_ROOT%{l_prefix}/lib/go19/ + + # install wrapper executables + for prg in go gofmt; do + ( echo "#!/bin/sh" + echo "exec %{l_prefix}/lib/go19/bin/$prg \${1+\"\$@\"}" + ) >$prg + %{l_shtool} install -c -m 755 \ + $prg $RPM_BUILD_ROOT%{l_prefix}/bin/${prg}19 + done + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean +