-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
165 lines (154 loc) · 7.72 KB
/
Copy pathTaskfile.yml
File metadata and controls
165 lines (154 loc) · 7.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# T3 Foundation Gemstone Project [t3gemstone.org]
# SPDX-License-Identifier: Apache-2.0
version: '3'
vars:
VERSION: '1.0.5'
TOOLCHAIN_ARCH: aarch64-none-linux-gnu
DISTRO_BASE: '{{ .DISTRO_BASE | default "ubuntu" }}'
DISTRO_SUITE: '{{ .DISTRO_SUITE | default "jammy" }}'
DISTRO_TYPE: '{{ .DISTRO_TYPE | default "minimal" }}'
DOWNLOAD_DIR: '{{ .ROOT_DIR }}/build/downloads'
BUILD_DIR: '{{ .ROOT_DIR }}/build/{{ .DISTRO_BASE }}-{{ .DISTRO_SUITE }}'
TOOLCHAIN_DIR: '{{ .BUILD_DIR }}/toolchain'
SYSROOT_REL_PATH:
sh: |
if [ -d "{{ .BUILD_DIR }}/sysroot" ]; then
echo "sysroot"
else
echo "toolchain/{{ .TOOLCHAIN_ARCH }}/libc"
fi
ENV_PATH: '{{ .BUILD_DIR }}/env'
DEBOS_DIR: '{{ .BUILD_DIR }}/debos'
SYMLINK_FIXER_PATH: '{{ .DOWNLOAD_DIR }}/symlink-fixer'
TARBALL_DIR: '{{ .ROOT_DIR }}/build/tarball/{{ .VERSION }}'
TARBALL_PATH: '{{ .TARBALL_DIR }}/t3gemstone-toolchains-{{ .DISTRO_BASE }}-{{ .DISTRO_SUITE }}.tar.gz'
URLS:
map: {
jammy: 'https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-{{.TOOLCHAIN_ARCH}}.tar.xz',
noble: 'https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-{{.TOOLCHAIN_ARCH}}.tar.xz',
bullseye: 'https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-{{.TOOLCHAIN_ARCH}}.tar.xz',
bookworm: 'https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-{{.TOOLCHAIN_ARCH}}.tar.xz',
symlinkfixer: 'https://raw.githubusercontent.com/abhiTronix/rpi_rootfs/master/scripts/sysroot-relativelinks.py',
}
includes:
distro: distro
tasks:
default:
silent: true
cmds:
- task --list-all --summary
- echo
- echo "Environment:"
- echo
- echo " DISTRO_BASE = '{{ .DISTRO_BASE }}'"
- echo " DISTRO_SUITE = '{{ .DISTRO_SUITE }}'"
- echo " DISTRO_TYPE = '{{ .DISTRO_TYPE }}'"
- echo " TOOLCHAIN_ARCH = '{{ .TOOLCHAIN_ARCH }}'"
- echo " TOOLCHAIN_URL = '{{ get .URLS .DISTRO_SUITE }}"
- echo " TOOLCHAIN_DIR = '{{ .TOOLCHAIN_DIR }}'"
- echo " SYSROOT_DIR = '{{ .BUILD_DIR }}/{{ .SYSROOT_REL_PATH }}'"
- echo " DEBOS_DIR = '{{ .DEBOS_DIR }}'"
- echo " DEBOS_VERSION = '{{ .DEBOS_VERSION }}'"
- echo " SYMLINK_FIXER_PATH = '{{ .SYMLINK_FIXER_PATH }}'"
- echo
destroy:
prompt: '{{ .TOOLCHAIN_DIR }} The toolchain in this path will be deleted. Do you want to continue?'
cmds:
- 'rm -rf {{ .TOOLCHAIN_DIR }}'
wget:
internal: true
cmds:
- mkdir -p $(dirname {{.PATH}})
- wget --no-clobber --continue --quiet --show-progress -O {{.PATH}} {{.URL}} || true
requires:
vars: [ URL, PATH ]
fetch:
silent: true
cmds:
- task: wget
vars:
URL: '{{ get .URLS .DISTRO_SUITE }}'
PATH: 'build/downloads/{{.TOOLCHAIN_ARCH}}.tar.xz'
- mkdir -p {{ .TOOLCHAIN_DIR }}
- tar xf build/downloads/{{.TOOLCHAIN_ARCH}}.tar.xz --skip-old-files --strip-components=1 --directory={{ .TOOLCHAIN_DIR }}
- task: wget
vars:
URL: '{{ get .URLS "symlinkfixer" }}'
PATH: '{{ .SYMLINK_FIXER_PATH }}'
- chmod +x '{{ .SYMLINK_FIXER_PATH }}'
- vcs import . < repos.yml
requires:
vars:
- name: DISTRO_BASE
enum: [ ubuntu, debian ]
- name: DISTRO_TYPE
enum: [ minimal, qt ]
- name: DISTRO_SUITE
enum:
- jammy # Ubuntu 22.04, GLIBC 2.35
- noble # Ubuntu 24.04, GLIBC 2.39
- bullseye # Debian 11, GLIBC 2.31
- bookworm # Debian 12, GLIBC 2.36
status:
- test "$({{ .TOOLCHAIN_DIR }}/bin/{{ .TOOLCHAIN_ARCH }}-gcc -dumpmachine)" == "{{ .TOOLCHAIN_ARCH }}"
- test -x "{{ .SYMLINK_FIXER_PATH }}"
- test -d src/debos
env:
silent: true
cmds:
- task: fetch
- rm -f {{ .ENV_PATH }}
- echo 'echo "======================"' | tee -a {{ .ENV_PATH }}
- echo 'echo "T3 Gemstone Toolchains"' | tee -a {{ .ENV_PATH }}
- echo 'echo "======================"' | tee -a {{ .ENV_PATH }}
- echo 'echo "Distro={{ .DISTRO_BASE }}-{{ .DISTRO_SUITE }}"' | tee -a {{ .ENV_PATH }}
- echo 'echo "Version={{ .VERSION }}"' | tee -a {{ .ENV_PATH }}
- echo 'echo "Timestamp={{ now.UTC.Format "2006-01-02 15:04:05Z" }}"' | tee -a {{ .ENV_PATH }}
- echo
- echo '[ -z "${BASH_SOURCE[0]}" ] && ENV_PATH="$(dirname "$(realpath "$0")")" || ENV_PATH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"' | tee -a {{ .ENV_PATH }}
- echo export PATH='"$ENV_PATH/toolchain/bin:$PATH"' | tee -a {{ .ENV_PATH }}
- echo export SDKTARGETSYSROOT='"$ENV_PATH/{{ .SYSROOT_REL_PATH }}"' | tee -a {{ .ENV_PATH }}
- echo export AR='{{ .TOOLCHAIN_ARCH }}-ar' | tee -a {{ .ENV_PATH }}
- echo export ARCH='arm64' | tee -a {{ .ENV_PATH }}
- echo export AS='{{ .TOOLCHAIN_ARCH }}-as' | tee -a {{ .ENV_PATH }}
- echo export CC='"{{ .TOOLCHAIN_ARCH }}-gcc --sysroot=$SDKTARGETSYSROOT"' | tee -a {{ .ENV_PATH }}
- echo export CFLAGS='" -O2 -g -pipe"' | tee -a {{ .ENV_PATH }}
- echo export CONFIGURE_FLAGS='"--target={{ .TOOLCHAIN_ARCH }} --host={{ .TOOLCHAIN_ARCH }} --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT"' | tee -a {{ .ENV_PATH }}
- echo export CPP='"{{ .TOOLCHAIN_ARCH }}-gcc -E --sysroot=$SDKTARGETSYSROOT"' | tee -a {{ .ENV_PATH }}
- echo export CPPFLAGS='""' | tee -a {{ .ENV_PATH }}
- echo export CROSS_COMPILE='{{ .TOOLCHAIN_ARCH }}-' | tee -a {{ .ENV_PATH }}
- echo export CXX='"{{ .TOOLCHAIN_ARCH }}-g++ --sysroot=$SDKTARGETSYSROOT"' | tee -a {{ .ENV_PATH }}
- echo export CXXFLAGS='" -O2 -g -pipe"' | tee -a {{ .ENV_PATH }}
- echo export GDB='{{ .TOOLCHAIN_ARCH }}-gdb' | tee -a {{ .ENV_PATH }}
- echo export KCFLAGS='--sysroot=$SDKTARGETSYSROOT' | tee -a {{ .ENV_PATH }}
- echo export LD='{{ .TOOLCHAIN_ARCH }}-ld' | tee -a {{ .ENV_PATH }}
- echo export LDFLAGS='"-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now -L$SDKTARGETSYSROOT/lib/aarch64-linux-gnu -L$SDKTARGETSYSROOT/usr/lib/aarch64-linux-gnu"' | tee -a {{ .ENV_PATH }}
- echo export NM='{{ .TOOLCHAIN_ARCH }}-nm' | tee -a {{ .ENV_PATH }}
- echo export OBJCOPY='{{ .TOOLCHAIN_ARCH }}-objcopy' | tee -a {{ .ENV_PATH }}
- echo export OBJDUMP='{{ .TOOLCHAIN_ARCH }}-objdump' | tee -a {{ .ENV_PATH }}
- echo export PKG_CONFIG_PATH='"$SDKTARGETSYSROOT/usr/lib/pkgconfig:$SDKTARGETSYSROOT/usr/share/pkgconfig"' | tee -a {{ .ENV_PATH }}
- echo export PKG_CONFIG_SYSROOT_DIR='$SDKTARGETSYSROOT' | tee -a {{ .ENV_PATH }}
- echo export RANLIB='{{ .TOOLCHAIN_ARCH }}-ranlib' | tee -a {{ .ENV_PATH }}
- echo export READELF='{{ .TOOLCHAIN_ARCH }}-readelf' | tee -a {{ .ENV_PATH }}
- echo export STRIP='{{ .TOOLCHAIN_ARCH }}-strip' | tee -a {{ .ENV_PATH }}
- echo export TARGET_PREFIX='{{ .TOOLCHAIN_ARCH }}-' | tee -a {{ .ENV_PATH }}
- echo
- echo '# Run <source {{ .ENV_PATH }}> to use the toolchain'
example:
cmds:
- task: fetch
- sudo rm -f {{ .DEBOS_DIR }}/root/usr/local/bin/hello
- |
task env > /dev/null
pushd {{ .BUILD_DIR }} && source "{{ .ENV_PATH }}" && popd
make -C example clean hello
sudo cp example/hello {{ .DEBOS_DIR }}/root/usr/local/bin
create:tarball:
summary: 'Pack all-in-one toolchain tarball'
cmds:
- task: fetch
- mkdir -p "{{ .TARBALL_DIR }}"
- task env > /dev/null
- tar caf "{{ .TARBALL_PATH }}" -C {{ .BUILD_DIR }} env sysroot toolchain
status:
- test -f "{{ .TARBALL_PATH }}"