Blame tinygo.spec

421b6c4
# Generated by go2rpm 1
b34ba92
%bcond_without check
b34ba92
275cbe0
%global __brp_strip_lto %{nil}
b34ba92
%global __brp_strip_static_archive %{nil}
b34ba92
b34ba92
# https://github.com/tinygo-org/tinygo
b34ba92
%global goipath         github.com/tinygo-org/tinygo
03ea76d
Version:                0.13.1
b34ba92
b34ba92
%global CMSIS_commit        9fe411cef1cef5de58e5957b89760759de44e393
b34ba92
%global avr_commit          6624554c02b237b23dc17d53e992bf54033fc228
275cbe0
%if %{fedora} > 31
275cbe0
%global clang_version       10.0.0
275cbe0
%else
cc763e3
%global clang_version       9.0.1
275cbe0
%endif
f7d3f8d
%global clang_major_version %{lua: print(string.match(rpm.expand('%{clang_version}'), '^[^.]+'))}
f7d3f8d
%global cmsis_svd_commit    15b462f152af86f3d15b952e1a5cf1bb9e2693e8
1dad7a6
%global compiler_rt_version 9.0.0
b34ba92
%global nrfx_commit         3ab39a9d457bfe627473ed0e03a7f1161d9e4f27
f7d3f8d
%global picolibc_commit     80528c684b10aaee977397e7eb40c4784e6dc433
5e83ee0
%global wasi_libc_commit    a280fead2ae71b9a230d3b48c1f95867431888e4
b34ba92
dfd84e5
# No longer matching regular Go's /usr/share/gocode because it also provides
dfd84e5
# pre-compiled binaries, and symlinks to arch-specific clang headers.
dfd84e5
%global tinygoroot %{_libdir}/tinygo
b34ba92
b34ba92
%gometa
b34ba92
b34ba92
%global common_description %{expand:
b34ba92
Go compiler for small places. Microcontrollers, WebAssembly, and command-line
b34ba92
tools. Based on LLVM.}
b34ba92
b34ba92
#global godocs CHANGELOG.md BUILDING.md CONTRIBUTING.md README.md
b34ba92
#global golicenses LICENSE LICENSE.TXT
b34ba92
#global gosupfiles lib/CMSIS/CMSIS/Include/*.h lib/compiler-rt/lib/builtins/*/*.S lib/nrfx/mdk/*.{ld,S} src/examples/wasm/*/*.js targets/*.{js,json,ld,S}
b34ba92
b34ba92
Name:           tinygo
1a6d938
Release:        3%{?dist}
b34ba92
Summary:        Go compiler for small places
b34ba92
b34ba92
# Main files: BSD
b34ba92
# CMSIS: BSD (subsetted)
b34ba92
# avr-mcu: ASL 2.0 (packs) and MIT (Rust code, unused by this package)
b34ba92
# cmsis-svd: ASL 2.0 (subsetted)
b34ba92
# compiler-rt: NCSA or MIT
b34ba92
# nrfx: BSD and ASL 2.0
f7d3f8d
# picolibc: BSD and ISC and MIT and GPLv2 (testing code only, unused by this package)
5e83ee0
# wasi-libc: BSD and CC0 and ISC and MIT and Public Domain
5e83ee0
License:        BSD and ASL 2.0 and CC0 and ISC and MIT and (NCSA or MIT) and Public Domain
b34ba92
URL:            %{gourl}
b34ba92
Source0:        %{gosource}
b34ba92
Source1:        clean_tarballs.sh
b34ba92
Source2:        cmsis-%{CMSIS_commit}-clean.tar.xz
b34ba92
Source3:        https://github.com/avr-rust/avr-mcu/archive/%{avr_commit}/avr-%{avr_commit}.tar.gz
b34ba92
Source4:        cmsis_svd-%{cmsis_svd_commit}-clean.tar.xz
b34ba92
Source5:        https://releases.llvm.org/%{compiler_rt_version}/compiler-rt-%{compiler_rt_version}.src.tar.xz
b34ba92
Source6:        https://github.com/NordicSemiconductor/nrfx/archive/%{nrfx_commit}/nrfx-%{nrfx_commit}.tar.gz
f7d3f8d
Source7:        https://github.com/keith-packard/picolibc/archive/%{picolibc_commit}/picolibc-%{picolibc_commit}.tar.gz
f7d3f8d
Source8:        https://github.com/WebAssembly/wasi-libc/archive/%{wasi_libc_commit}/wasi-libc-%{wasi_libc_commit}.tar.gz
b34ba92
# Fedora-specific.
88a617a
Patch0001:      0001-Use-Fedora-command-names.patch
b34ba92
# We don't have ARM glibc to build these.
88a617a
Patch0002:      0002-Skip-ARM-Linux-tests.patch
b34ba92
# We can't include STM32 .svd files because of their weird license.
88a617a
Patch0003:      0003-Skip-STM32-tests.patch
9c53a3e
# https://github.com/tinygo-org/tinygo/pull/1276
9c53a3e
Patch0004:      0004-Allow-Go-1.15.patch
b34ba92
6e6ed23
# Not supported upstream yet.
dfd84e5
ExcludeArch:    armv7hl ppc64le s390x
6e6ed23
b34ba92
BuildRequires:  clang-devel = %{clang_version}
b34ba92
BuildRequires:  golang(github.com/blakesmith/ar)
1dad7a6
BuildRequires:  golang(github.com/google/shlex)
b34ba92
BuildRequires:  golang(github.com/marcinbor85/gohex)
3e3821d
BuildRequires:  golang(go.bug.st/serial)
b34ba92
BuildRequires:  golang(golang.org/x/tools/go/ast/astutil)
b34ba92
BuildRequires:  golang(golang.org/x/tools/go/ssa)
b34ba92
BuildRequires:  golang(tinygo.org/x/go-llvm)
b34ba92
8ef2c79
BuildRequires:  avr-gcc
8ef2c79
BuildRequires:  avr-libc
b34ba92
# We don't have glibc for arm, so skip these.
b34ba92
#BuildRequires:  gcc-arm-linux-gnu
b34ba92
#BuildRequires:  gcc-aarch64-linux-gnu
b34ba92
BuildRequires:  lld
b34ba92
BuildRequires:  nodejs
b34ba92
BuildRequires:  qemu-system-arm-core
b34ba92
b34ba92
Requires:       clang-libs%{?isa} = %{clang_version}
b34ba92
Requires:       golang
b34ba92
Requires:       lld
8ef2c79
Recommends:     avr-gcc
8ef2c79
Recommends:     avr-libc
b34ba92
Recommends:     clang
b34ba92
Recommends:     qemu-system-arm-core
b34ba92
b34ba92
%description
b34ba92
%{common_description}
b34ba92
b34ba92
#gopkg
b34ba92
b34ba92
b34ba92
%prep
b34ba92
%goprep
b34ba92
%patch0001 -p1
b34ba92
%patch0002 -p1
b34ba92
%patch0003 -p1
9c53a3e
%patch0004 -p1
b34ba92
b34ba92
tar -C lib -xf %{SOURCE2}
b34ba92
rmdir lib/CMSIS
b34ba92
mv lib/CMSIS-%{CMSIS_commit} lib/CMSIS
b34ba92
b34ba92
tar -C lib -xf %{SOURCE3}
b34ba92
rmdir lib/avr
b34ba92
mv lib/avr-mcu-%{avr_commit} lib/avr
b34ba92
b34ba92
tar -C lib -xf %{SOURCE4}
b34ba92
rmdir lib/cmsis-svd
b34ba92
mv lib/cmsis-svd-%{cmsis_svd_commit} lib/cmsis-svd
b34ba92
b34ba92
tar -C lib -xf %{SOURCE5}
b34ba92
rmdir lib/compiler-rt
b34ba92
mv lib/compiler-rt-%{compiler_rt_version}.src lib/compiler-rt
b34ba92
b34ba92
tar -C lib -xf %{SOURCE6}
b34ba92
rmdir lib/nrfx
b34ba92
mv lib/nrfx-%{nrfx_commit} lib/nrfx
b34ba92
rm lib/nrfx/.gitignore
b34ba92
chmod -x lib/nrfx/doc/generate_html_doc.sh
b34ba92
5e83ee0
tar -C lib -xf %{SOURCE7}
f7d3f8d
rmdir lib/picolibc
f7d3f8d
mv lib/picolibc-%{picolibc_commit} lib/picolibc
f7d3f8d
f7d3f8d
tar -C lib -xf %{SOURCE8}
5e83ee0
rmdir lib/wasi-libc
5e83ee0
mv lib/wasi-libc-%{wasi_libc_commit} lib/wasi-libc
5e83ee0
b34ba92
mkdir lib/clang
dfd84e5
ln -s %{_libdir}/clang/%{clang_version}/include lib/clang/include
b34ba92
b34ba92
b34ba92
%build
b719ef4
export LDFLAGS="-X github.com/tinygo-org/tinygo/goenv.TINYGOROOT=%{tinygoroot} "
b34ba92
%gobuild -o %{gobuilddir}/bin/tinygo %{goipath}
88a617a
GO111MODULE=off %make_build gen-device PYTHON=%{__python3}
b34ba92
for target in armv6m-none-eabi armv7m-none-eabi armv7em-none-eabi; do
f7d3f8d
    for libc in compiler-rt picolibc; do
f7d3f8d
        TINYGOROOT=$PWD \
f7d3f8d
            %{gobuilddir}/bin/tinygo \
f7d3f8d
                build-library -target=$target -o ${target}-${libc}.a ${libc}
f7d3f8d
    done
b34ba92
done
f7d3f8d
%make_build wasi-libc CLANG=clang-%{clang_major_version} LLVM_AR=llvm-ar LLVM_NM=llvm-nm
b34ba92
b34ba92
b34ba92
%install
b34ba92
#gopkginstall
b34ba92
install -vdm 0755                     %{buildroot}%{_bindir}
b34ba92
install -vpm 0755 %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
b34ba92
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/CMSIS
b34ba92
install -vpm 0644 lib/CMSIS/README.md %{buildroot}%{tinygoroot}/lib/CMSIS/
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/CMSIS/CMSIS/Include
b34ba92
install -vpm 0644 lib/CMSIS/CMSIS/Include/* %{buildroot}%{tinygoroot}/lib/CMSIS/CMSIS/Include/
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/clang
b34ba92
cp -pP lib/clang/include %{buildroot}%{tinygoroot}/lib/clang/
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/compiler-rt
b34ba92
install -vpm 0644 lib/compiler-rt/README.txt %{buildroot}%{tinygoroot}/lib/compiler-rt/
b34ba92
install -vpm 0644 lib/compiler-rt/LICENSE.TXT %{buildroot}%{tinygoroot}/lib/compiler-rt/
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/compiler-rt/lib
b34ba92
cp -rp lib/compiler-rt/lib/builtins %{buildroot}%{tinygoroot}/lib/compiler-rt/lib/
b34ba92
cp -rp lib/nrfx %{buildroot}%{tinygoroot}/lib/
5e83ee0
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/wasi-libc
5e83ee0
cp -rp lib/wasi-libc/sysroot %{buildroot}%{tinygoroot}/lib/wasi-libc/
f7d3f8d
install -vdm 0755 %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc/newlib/libc/ctype %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc/newlib/libc/include %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc/newlib/libc/locale %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc/newlib/libc/string %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc/newlib/libc/tinystdio %{buildroot}%{tinygoroot}/lib/picolibc/newlib/libc
f7d3f8d
cp -rp lib/picolibc-include %{buildroot}%{tinygoroot}/lib
b34ba92
install -vdm 0755 %{buildroot}%{tinygoroot}/pkg
b34ba92
for target in armv6m-none-eabi armv7m-none-eabi armv7em-none-eabi; do
f7d3f8d
    for libc in compiler-rt picolibc; do
f7d3f8d
        install -vdm 0755 %{buildroot}%{tinygoroot}/pkg/${target}
f7d3f8d
        install -vpm 0644 ${target}-${libc}.a %{buildroot}%{tinygoroot}/pkg/${target}/${libc}.a
f7d3f8d
    done
b34ba92
done
b34ba92
cp -rp src %{buildroot}%{tinygoroot}/
5986fe1
rm %{buildroot}%{tinygoroot}/src/examples/wasm/.gitignore
b34ba92
cp -rp targets %{buildroot}%{tinygoroot}/
b34ba92
b34ba92
b34ba92
%if %{with check}
b34ba92
%check
b34ba92
export TINYGOROOT=%{buildroot}%{tinygoroot}
b34ba92
export GOPATH=%{buildroot}%{tinygoroot}
8ef2c79
PATH=%{buildroot}%{_bindir}:$PATH make smoketest
421b6c4
%gocheck -v -d tests/tinygotest
b34ba92
%endif
b34ba92
b34ba92
b34ba92
%files
b34ba92
%doc README.md CHANGELOG.md CONTRIBUTING.md
b34ba92
%license LICENSE
b34ba92
%{_bindir}/tinygo
b34ba92
%{tinygoroot}
b34ba92
%doc %{tinygoroot}/lib/CMSIS/README.md
b34ba92
%license %{tinygoroot}/lib/compiler-rt/LICENSE.TXT
b34ba92
%doc %{tinygoroot}/lib/compiler-rt/README.txt
b34ba92
%license %{tinygoroot}/lib/nrfx/LICENSE
b34ba92
%doc %{tinygoroot}/lib/nrfx/README.md
b34ba92
b34ba92
#gopkgfiles
b34ba92
b34ba92
b34ba92
%changelog
9c53a3e
* Sun Aug 02 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.13.1-3
9c53a3e
- Patch to allow Go 1.15
9c53a3e
1a6d938
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-3
1a6d938
- Second attempt - Rebuilt for
1a6d938
  https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
1a6d938
08bd0d9
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-2
08bd0d9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
08bd0d9
03ea76d
* Thu Apr 30 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.13.1-1
03ea76d
- Update to latest version
03ea76d
03ea76d
* Mon Apr 20 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.13.0-1
03ea76d
- Update to latest version
03ea76d
5e83ee0
* Sun Apr 19 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.12.0-1
5e83ee0
- Update to latest version
5e83ee0
cc763e3
* Wed Mar 04 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.11.0-3
cc763e3
- Update required clang version
cc763e3
d0701ef
* Tue Feb 11 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.11.0-3
d0701ef
- Enable RISCV tests
8ef2c79
- Enable AVR tests
8ef2c79
- Add Recommends for AVR dependencies
d0701ef
b719ef4
* Mon Feb 10 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.11.0-2
b719ef4
- Fix setting of TINYGOROOT to point to packaged version
b719ef4
d33afff
* Mon Feb 10 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.11.0-1
d33afff
- Update to 0.11.0
d33afff
1dad7a6
* Mon Feb 10 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.10.0-1
1dad7a6
- Update to 0.10.0
1dad7a6
3e3821d
* Mon Feb 10 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.9.0-1
1dad7a6
- Update to 0.9.0
3e3821d
88a617a
* Tue Sep 24 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.8.0-1
88a617a
- Update to latest version
dfd84e5
- Enable x86 build
88a617a
f4d803a
* Sun Aug 04 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.7.1-1
f4d803a
- Update to latest version
f4d803a
6ab912b
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.0-2
6ab912b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
6ab912b
421b6c4
* Tue Jul 23 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.7.0-1
421b6c4
- Update to latest version
421b6c4
b34ba92
* Tue Jun 11 01:26:10 EDT 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.6.0-1
b34ba92
- Initial package