@@ -10,22 +10,66 @@ crossToolset=$2
10
10
archArg=${3:- }
11
11
lldb=${4:- }
12
12
13
- scriptsVolume=" scripts$( date +%s) "
14
13
dockerCrossDepsTag=" microsoft/dotnet-buildtools-prereqs:${os} -crossdeps"
15
14
16
- echo " Using $dockerCrossDepsTag to clone core-setup to fetch scripts used to build cross-toolset"
17
- docker run --rm -v $scriptsVolume :/scripts $dockerCrossDepsTag git clone https://github.com/dotnet/core-setup /scripts
18
-
19
- rm -rf $PWD /rootfs
20
- mkdir rootfs
15
+ rm -rf $PWD /rootfs.tar
21
16
22
17
# If argument three was set, use that as the only arch, otherwise use default list of arches : 'arm x86'
23
18
crossArchArray=(${archArg:- ' arm x86' } )
24
19
for arch in $crossArchArray
25
20
do
26
21
echo " Using $dockerCrossDepsTag to set up cross-toolset for $arch for $crossToolset "
27
- buildRootFSContainer=" rootfs-$arch -$crossToolset "
28
- docker run --privileged --rm --name $buildRootFSContainer -e ROOTFS_DIR=/rootfs/$arch \
29
- -v $PWD /rootfs:/rootfs -v $scriptsVolume :/scripts \
30
- $dockerCrossDepsTag /scripts/cross/build-rootfs.sh $arch $crossToolset $lldb --skipunmount
22
+ buildRootFSContainer=" rootfs-$arch -$crossToolset -$( date +%s) "
23
+
24
+ # Start a detached container running bash
25
+ docker run --privileged -itd --name $buildRootFSContainer $dockerCrossDepsTag \
26
+ bash
27
+
28
+ if [ $? -ne 0 ]; then
29
+ echo " Rootfs build failed: detached container failed to start"
30
+ exit 1
31
+ fi
32
+
33
+ echo " Using $dockerCrossDepsTag to clone core-setup to fetch scripts used to build cross-toolset"
34
+ docker exec $buildRootFSContainer \
35
+ git clone https://github.com/dotnet/core-setup /scripts
36
+
37
+ if [ $? -ne 0 ]; then
38
+ echo " Rootfs build failed: ` git clone https://github.com/dotnet/core-setup /scripts` returned error"
39
+ docker rm -f $buildRootFSContainer
40
+ exit 1
41
+ fi
42
+
43
+ echo " Running build-rootfs.sh"
44
+ docker exec -e ROOTFS_DIR=/rootfs/$arch $buildRootFSContainer \
45
+ /scripts/cross/build-rootfs.sh $arch $crossToolset $lldb --skipunmount
46
+
47
+ if [ $? -ne 0 ]; then
48
+ echo " Rootfs build failed: build-rootfs.sh returned error"
49
+ docker rm -f $buildRootFSContainer
50
+ exit 1
51
+ fi
52
+
53
+ echo " Checking existence of /rootfs/$arch /bin"
54
+ docker exec $buildRootFSContainer \
55
+ [ -d /rootfs/$arch /bin ]
56
+
57
+ if [ $? -ne 0 ]; then
58
+ echo " Rootfs build failed: rootfs/$arch /bin empty"
59
+ docker rm -f $buildRootFSContainer
60
+ exit 1
61
+ fi
62
+
63
+ echo " Tarring rootfs"
64
+ docker exec $buildRootFSContainer \
65
+ tar Ccf /rootfs - . >> $PWD /rootfs.tar
66
+
67
+ if [ $? -ne 0 ]; then
68
+ echo " Rootfs build failed: 'tar Ccf /rootfs - .' returned error"
69
+ docker rm -f $buildRootFSContainer
70
+ exit 1
71
+ fi
72
+
73
+ echo " Shutting down container"
74
+ docker rm -f $buildRootFSContainer
31
75
done
0 commit comments