]> git.pld-linux.org Git - packages/golang.git/blob - golang.spec
up to 1.10.3
[packages/golang.git] / golang.spec
1 # TODO
2 # - allow disabling tests (currently bcond exists just for showing which are test deps)
3 # - add verbose build output (currently dummy bcond)
4 # - setup GOMAXPROCS=2 from _smp_mflags
5 # - fix CC containing spaces (ccache)
6 # - check if hg use at build time can be dropped
7 # - build all target archs, subpackage them: http://golang.org/doc/install/source#environment
8 #   or choose only useful crosscompilers?
9 # - subpackage -src files?
10
11 # Conditional build:
12 %bcond_without  verbose         # verbose build (V=1)
13 %bcond_without  tests           # build without tests [nop actually]
14 %bcond_without  shared          # Build golang shared objects for stdlib
15 %bcond_without  ext_linker      # Build golang using external/internal (close to cgo disabled) linking
16 %bcond_without  cgo             # cgo (importing C libraries) support
17 %bcond_with     bootstrap       # bootstrap build
18
19 %ifnarch %{ix86} %{x8664} %{arm} aarch64 mips64 mips64le ppc64le
20 %undefine       with_shared
21 %undefine       with_ext_linker
22 %undefine       with_cgo
23 %endif
24
25 Summary:        Go compiler and tools
26 Summary(pl.UTF-8):      Kompilator języka Go i narzędzia
27 Name:           golang
28 Version:        1.10.3
29 Release:        1
30 # source tree includes several copies of Mark.Twain-Tom.Sawyer.txt under Public Domain
31 License:        BSD and Public Domain
32 Group:          Development/Languages
33 # Source0Download: https://golang.org/dl/
34 Source0:        https://storage.googleapis.com/golang/go%{version}.src.tar.gz
35 # Source0-md5:  d15dfb264105c5e84fbe33f4a4aa5021
36 Patch0:         ca-certs.patch
37 Patch1:         0001-Don-t-use-the-bundled-tzdata-at-runtime-except-for-t.patch
38 URL:            http://golang.org/
39 BuildRequires:  bash
40 BuildRequires:  rpm-pythonprov
41 # The compiler is written in Go. Needs go(1.4+) compiler for build.
42 %if %{with bootstrap}
43 BuildRequires:  gcc-go >= 6:5
44 %else
45 BuildRequires:  golang >= 1.4
46 %endif
47 %if %{with tests}
48 BuildRequires:  glibc-static
49 BuildRequires:  hostname
50 BuildRequires:  pcre-devel
51 BuildRequires:  tzdata
52 %endif
53 Requires:       ca-certificates
54 Conflicts:      gcc-go
55 ExclusiveArch:  %{ix86} %{x8664} %{arm} aarch64 mips64 mips64le ppc64 ppc64le s390x
56 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
57
58 %define         no_install_post_strip   1
59 %define         no_install_post_chrpath 1
60 %define         _enable_debug_packages  0
61 %define         _noautoreqfiles         %{_libdir}/%{name}/src
62
63 %define goroot %{_libdir}/%{name}
64
65 %ifarch %{ix86}
66 %define GOARCH 386
67 %endif
68 %ifarch %{x8664}
69 %define GOARCH amd64
70 %endif
71 %ifarch %{arm}
72 %define GOARCH arm
73 %endif
74 %ifarch aarch64
75 %define GOARCH arm64
76 %endif
77 %ifarch mips64
78 %define GOARCH mips64x
79 %endif
80 %ifarch ppc64 ppc64le s390x
81 %define GOARCH %{_arch}
82 %endif
83
84 %description
85 Go is an open source programming environment that makes it easy to
86 build simple, reliable, and efficient software.
87
88 %description -l pl.UTF-8
89 Go to mające otwarte źródła środowisko do programowania, pozwalające
90 na łatwe tworzenie prostych, pewnych i wydajnych programów.
91
92 %package shared
93 Summary:        Golang shared object libraries
94 Summary(pl.UTF-8):      Biblioteki obiektów współdzielonych dla języka Go
95 Group:          Libraries
96 Requires:       %{name} = %{version}-%{release}
97
98 %description shared
99 Golang shared object libraries.
100
101 %description shared -l pl.UTF-8
102 Biblioteki obiektów współdzielonych dla języka Go.
103
104 %package doc
105 Summary:        Documentation for Go language
106 Summary(fr.UTF-8):      Documentation pour Go
107 Summary(it.UTF-8):      Documentazione di Go
108 Summary(pl.UTF-8):      Dokumentacja do języka Go
109 Group:          Documentation
110 %if "%{_rpmversion}" >= "5"
111 BuildArch:      noarch
112 %endif
113
114 %description doc
115 Documentation for Go language.
116
117 %description doc -l fr.UTF-8
118 Documentation pour Go.
119
120 %description doc -l it.UTF-8
121 Documentazione di Go.
122
123 %description doc -l pl.UTF-8
124 Dokumentacja do języka Go.
125
126 %prep
127 %setup -qc
128 %{__mv} go/* .
129 %patch0 -p1
130 %patch1 -p1
131
132 # clean patch backups
133 find . -name '*.orig' | xargs -r %{__rm}
134
135 cat > env.sh <<'EOF'
136 # bootstrap compiler GOROOT
137 %if %{with bootstrap}
138 export GOROOT_BOOTSTRAP=%{_prefix}
139 %else
140 export GOROOT_BOOTSTRAP=%{goroot}
141 %endif
142 export GOROOT_FINAL=%{goroot}
143
144 export GOHOSTOS=linux
145 export GOHOSTARCH=%{GOARCH}
146
147 export GOOS=linux
148 export GOARCH=%{GOARCH}
149 %if %{without external_linker}
150 export GO_LDFLAGS="-linkmode internal"
151 %endif
152 %if %{with cgo}
153 export CGO_ENABLED=1
154 %else
155 export CGO_ENABLED=0
156 %endif
157
158 # use our gcc options for this build, but store gcc as default for compiler
159 export CFLAGS="%{rpmcflags}"
160 export LDFLAGS="%{rpmldflags}"
161
162 CC="%{__cc}"
163 export CC="${CC#ccache }"
164 export CC_FOR_TARGET="$CC"
165 EOF
166
167 %if 0
168 # optflags for go tools build
169 nflags="\"$(echo '%{rpmcflags}' | sed -e 's/^[  ]*//;s/[        ]*$//;s/[       ]\+/ /g' -e 's/ /\",\"/g')\""
170 %{__sed} -i -e "s/\"-O2\"/$nflags/" src/cmd/dist/build.c
171 # NOTE: optflags used in gcc calls from go compiler are in src/cmd/go/build.go
172 %endif
173
174 %build
175 . ./env.sh
176 cd src
177 ./make.bash --no-clean
178 cd ..
179
180 # build shared std lib
181 %if %{with shared}
182 GOROOT=$(pwd) PATH=$(pwd)/bin:$PATH go install -buildmode=shared std
183 %endif
184
185 %install
186 rm -rf $RPM_BUILD_ROOT
187 GOROOT=$RPM_BUILD_ROOT%{goroot}
188
189 install -d $GOROOT/{misc,lib,src}
190 install -d $RPM_BUILD_ROOT%{_bindir}
191
192 cp -a pkg lib bin src VERSION $GOROOT
193 cp -a misc/cgo $GOROOT/misc
194
195 # kill Win32 and Plan9 scripts
196 find $GOROOT -name '*.bat' -o -name '*.rc' | xargs %{__rm}
197
198 # https://github.com/golang/go/issues/4749
199 find $GOROOT/src | xargs touch -r $GOROOT/VERSION
200 # and level out all the built archives
201 touch $GOROOT/pkg
202 find $GOROOT/pkg | xargs touch -r $GOROOT/pkg
203
204 ln -sf %{_libdir}/%{name}/bin/go $RPM_BUILD_ROOT%{_bindir}/go
205 ln -sf %{_libdir}/%{name}/bin/gofmt $RPM_BUILD_ROOT%{_bindir}/gofmt
206 ln -sf %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/cgo $RPM_BUILD_ROOT%{_bindir}/cgo
207
208 # FIXME: do we need whole sources, including build scripts?
209 # for now, remove only non-Linux stuff
210 %{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/src/androidtest.bash \
211         $RPM_BUILD_ROOT%{_libdir}/%{name}/src/syscall/{mksyscall_solaris,mksysctl_openbsd,mksysnum_{darwin,dragonfly,freebsd,netbsd,openbsd}}.pl
212 # ...and tests
213 %{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{name}/src/internal/trace \
214            $RPM_BUILD_ROOT%{_libdir}/%{name}/misc/cgo/{errors,fortran,test*}
215
216 # unenvize remaining scripts
217 %{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' $RPM_BUILD_ROOT%{_libdir}/%{name}/src/*.bash
218 %{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' $RPM_BUILD_ROOT%{_libdir}/%{name}/src/syscall/*.sh
219 %{__sed} -i -e '1s,/usr/bin/env perl,/usr/bin/perl,' $RPM_BUILD_ROOT%{_libdir}/%{name}/src/syscall/*.pl
220
221 %clean
222 rm -rf $RPM_BUILD_ROOT
223
224 %files
225 %defattr(644,root,root,755)
226 %doc AUTHORS CONTRIBUTORS LICENSE
227 %attr(755,root,root) %{_bindir}/cgo
228 %attr(755,root,root) %{_bindir}/go
229 %attr(755,root,root) %{_bindir}/gofmt
230 %dir %{_libdir}/%{name}
231 %{_libdir}/%{name}/VERSION
232 %dir %{_libdir}/%{name}/bin
233 %attr(755,root,root) %{_libdir}/%{name}/bin/go
234 %attr(755,root,root) %{_libdir}/%{name}/bin/gofmt
235
236 %{_libdir}/%{name}/lib
237 %{_libdir}/%{name}/misc
238 %{_libdir}/%{name}/src
239 %dir %{_libdir}/%{name}/pkg
240 %{_libdir}/%{name}/pkg/linux_%{GOARCH}
241 %{_libdir}/%{name}/pkg/obj
242 %dir %{_libdir}/%{name}/pkg/tool
243 %dir %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}
244 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/addr2line
245 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/api
246 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/asm
247 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/buildid
248 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/cgo
249 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/compile
250 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/cover
251 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/dist
252 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/doc
253 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/fix
254 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/link
255 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/nm
256 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/objdump
257 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/pack
258 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/pprof
259 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/test2json
260 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/trace
261 %attr(755,root,root) %{_libdir}/%{name}/pkg/tool/linux_%{GOARCH}/vet
262
263 %dir %{_libdir}/%{name}/pkg/bootstrap
264 %dir %{_libdir}/%{name}/pkg/bootstrap/bin
265 %attr(755,root,root) %{_libdir}/%{name}/pkg/bootstrap/bin/asm
266 %attr(755,root,root) %{_libdir}/%{name}/pkg/bootstrap/bin/cgo
267 %attr(755,root,root) %{_libdir}/%{name}/pkg/bootstrap/bin/compile
268 %attr(755,root,root) %{_libdir}/%{name}/pkg/bootstrap/bin/link
269 %{_libdir}/%{name}/pkg/bootstrap/pkg
270 %{_libdir}/%{name}/pkg/bootstrap/src
271 %{_libdir}/%{name}/pkg/include
272
273 %if %{with shared}
274 %files shared
275 %defattr(644,root,root,755)
276 %{_libdir}/%{name}/pkg/linux_%{GOARCH}_dynlink
277 %endif
278
279 %files doc
280 %defattr(644,root,root,755)
281 %doc doc/*
This page took 1.054996 seconds and 3 git commands to generate.