This repository has been archived by the owner on Jun 28, 2021. It is now read-only.
/
base.rb
111 lines (98 loc) · 3.41 KB
/
base.rb
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
# not needed when building on the Raspberry Pi
unless rpi?
package :raspberrypi_tools do
if VAR['CROSS_COMPILE'] && File.exists?(File.dirname VAR['CROSS_COMPILE'])
puts "raspberrypi_tools: CROSS_COMPILE=#{VAR['CROSS_COMPILE']}"
else
github_tarball 'raspberrypi/tools', 'tools', 'RASPBERRYPI_TOOLS'
end
end
else
package :raspberrypi_tools
end
package :raspberrypi_firmware do |t|
github_tarball 'raspberrypi/firmware', 'firmware', 'RASPBERRYPI_FIRMWARE'
target :build do
src = workdir 'firmware'
dst = workdir 'out'
fl = Rake::FileList["#{src}/boot/*.bin", "#{src}/boot/*.dat", "#{src}/boot/*.elf",
"#{src}/boot/COPYING*", "#{src}/boot/LICENCE*"]
cp fl, "#{dst}/"
mkdir_p(dst + "/vc/sdk/opt/vc")
cp_r(src + "/opt/vc/include/", dst + "/vc/sdk/opt/vc/")
cp_r(src + "/opt/vc/src/", dst + "/vc/sdk/opt/vc/")
# delete due to size 30MB
rm_rf(dst + "/vc/sdk/opt/vc/src/hello_pi/hello_video/test.h264")
mkdir_p(dst + "/vc/softfp/opt/vc")
cp_r(src + "/opt/vc/LICENCE", dst + "/vc/softfp/opt/vc")
cp_r(src + "/opt/vc/bin/", dst + "/vc/softfp/opt/vc")
cp_r(src + "/opt/vc/lib/", dst + "/vc/softfp/opt/vc")
cp_r(src + "/opt/vc/sbin/", dst + "/vc/softfp/opt/vc")
mkdir_p(dst + "/vc/hardfp/opt/vc")
cp_r(src + "/hardfp/opt/vc/LICENCE", dst + "/vc/hardfp/opt/vc")
cp_r(src + "/hardfp/opt/vc/bin/", dst + "/vc/hardfp/opt/vc")
cp_r(src + "/hardfp/opt/vc/lib/", dst + "/vc/hardfp/opt/vc")
cp_r(src + "/hardfp/opt/vc/sbin/", dst + "/vc/hardfp/opt/vc")
end
end
def rpi_kernel7?
`grep 'CONFIG_LOCALVERSION="-v7"' #{workdir('linux/.config')}`
if $?.exitstatus == 0
true
else
false
end
end
# VideoCore bootloader
package :vcboot do
target :build do
VAR['KERNEL_IMG'] ||= 'kernel.img'
VAR['KERNEL7_IMG'] ||= 'kernel7.img'
if FileList[workdir('linux/arch/arm/boot/dts/*.dtb')].empty?
cp workdir('linux/arch/arm/boot/zImage'), workdir("out/#{VAR['KERNEL_IMG']}")
else
unless VAR['MKKNLIMG']
fn = workdir('linux/scripts/mkknlimg')
if File.exists? fn
VAR['MKKNLIMG'] = fn
else
VAR['MKKNLIMG'] = File.realpath '../../../mkimage/mkknlimg', File.dirname(cross_compile(nil))
end
end
if rpi_kernel7?
imgname = VAR['KERNEL7_IMG']
else
imgname = VAR['KERNEL_IMG']
end
sh "#{VAR['MKKNLIMG']} #{workdir('linux/arch/arm/boot/zImage')} #{workdir('out/')}#{imgname}"
sh "cp -v #{workdir('linux/arch/arm/boot/dts/*.dtb')} #{workdir('out')}"
if Dir.exist? workdir('linux/arch/arm/boot/dts/overlays/')
sh "mkdir -p #{workdir('out/overlays')}"
sh "cp -v #{workdir('linux/arch/arm/boot/dts/overlays/*.dtb*')} #{workdir('out/overlays')}"
sh "cp #{workdir('linux/arch/arm/boot/dts/overlays/README')} #{workdir('out/overlays')}"
end
end
end
end
package :dtc do
begin
res = `dtc -v`
rescue => e
info "
ERROR: is dtc (Device Tree compiler) installed?
Plugin (-@) support is required and might not be available in the Debian package.
This will give a working version:
wget -c https://raw.githubusercontent.com/RobertCNelson/tools/master/pkgs/dtc.sh
chmod +x dtc.sh
./dtc.sh
"
raise
end
res = `dtc -@ -h 2>&1`
if $?.exitstatus != 0
if res.include? 'unknown option'
raise "ERROR: dtc doesn't support -@ (#{`dtc -v 2>&1`.strip})"
end
raise "ERROR: failed to run dtc (#{$?.exitstatus})"
end
end