update tizen version to tizen20231130
[tools/build.git] / build-vm-pvm
1 #PowerVM build functions
2
3 pvm_setup_bootloader(){
4    disk=$1
5    parted -s $disk mklabel msdos
6    parted -s $disk mkpart primary ext2 0 $bootloader_size
7    parted -s $disk set 1 boot on
8    parted -s $disk set 1 prep on
9    parted -s $disk mkpart primary ext3 8M 100%
10    bl_target=${disk}1
11 }
12
13 pvm_getdiskname(){
14      lv=$1
15      if [ -z "$SKIP" ];then
16          args=$(pvmctl scsi list -f ' ' -d VirtualDisk.udid ClientAdapter.loc_code --where VirtualDisk.name=$lv)
17          eval $args
18          host=$(ls-vscsi | grep $loc_code| awk -F " " '{print $1}')
19          udid=$(echo $udid | cut -c 3-)
20          devid="/dev/disk/by-id/scsi-SAIX_VDASD_$udid"
21          until test -L $devid;do
22              sleep 1;
23              echo "- - -" >  /sys/class/scsi_host/$host/scan
24          done
25          dev=$(readlink -f $devid)
26      fi
27      case $lv in
28          *root) test -z "$SKIP" && pvm_setup_bootloader "$dev";
29                 VM_IMAGE="${dev}2";;
30          *swap) VM_SWAP="${dev}";;
31      esac
32 }
33
34 pvm_execute(){
35     cmd=$@
36     pvmctl $cmd
37 }
38
39 pvm_is_created() {
40     dev=$1
41     $(pvmctl lv list -d LogicalVolume.name | grep -q $dev) && SKIP=1
42 }
43
44 pvm_createdev() {
45      name=$1
46      size=$2
47      target=$3
48      size_gb=`expr $size / 1024`
49      test -z $3 && target=$master_lpar
50      pvm_is_created $name
51      if [ -z "$SKIP" ];then
52          pvm_execute lv create --name $name --size $size_gb
53          target=$master_lpar
54      fi
55      pvm_execute scsi create --vg name=rootvg --type lv --lpar name=$target --stor-id $name
56      test -z "$SKIP" && pvm_getdiskname $name
57 }
58
59 pvm_lpar_is_running(){
60     state=$(pvmctl lpar list -d LogicalPartition.state --where LogicalPartition.name=$lpname |awk -F "=" '{print $2}')
61     CONSOLEPID=`pgrep -f "cat $hvcdev"`
62     if [ "$state" = "running" ];then
63        return 0
64     else
65        test -n $CONSOLEPID && kill -TERM $CONSOLEPID
66        return 1
67     fi
68 }
69
70 pvm_watch_build(){
71     while pvm_lpar_is_running $lpname;do
72         sleep 10
73     done
74 }
75
76 pvm_detachdev(){
77     lv=$1
78     lpar=$2
79     pvm_execute scsi delete --lpar name=$lpar --type lv --stor-id $lv
80 }
81
82 pvm_deletelv(){
83     viosvrcmd --id 1 -c "rmbdsp -bd $1"
84 }
85
86 pvm_nametoid(){
87     local id
88     name=$1
89     lparid=$(pvmctl lpar list -d LogicalPartition.id -i name=$name | awk -F "=" '{print $2}')
90 }
91
92
93 pvm_openconsole(){
94     id=$1
95     pvmutil -o create_vterm_dev --id $id
96     hvcsadmin -console $id
97     hvcdev=$(hvcsadmin -console $id|awk '{print $4}')
98 }
99
100 pvm_closeconsole(){
101     hvcdev=$(hvcsadmin -console $id|awk '{print $4}')
102     hvcsadmin -close $hvcdev
103     pvmutil -o delete_vterm_dev --id $1
104 }
105
106 vm_kill_pvm() {
107    pvm_execute lpar power-off --hard -i name="$VM_NAME"
108 }
109
110 vm_startup_pvm(){
111     cpus=$BUILD_JOBS
112     cores=`echo 0.05 \* $cpus| bc -l`
113     pvm_execute lpar create --name $lpname --mem $VM_MEMSIZE --proc-unit $cores --proc $cpus --proc-type shared --sharing-mode uncapped --type $lpartype
114     pvm_nametoid $lpname
115     vm_attach_root_pvm $lpname
116     vm_attach_swap_pvm $lpname
117     pvm_openconsole $lparid
118     pvm_execute lpar power-on -i name=$lpname
119     pvm_watch_build &
120     PID=$!
121     cat $hvcdev
122     vm_detach_root_pvm $lpname
123     vm_detach_swap_pvm $lpname
124 }
125
126 vm_verify_options_pvm(){
127     test -z "$VM_WORKER_NR" && VM_WORKER_NR=1
128     lpname="worker-$VM_WORKER_NR"
129     lpartype="AIX/Linux"
130     bootloader_size="8M"
131     rootlv="$lpname"-root
132     swaplv="$lpname"-swap
133     master_lpar=$(cat /proc/device-tree/ibm,partition-name)
134 }
135
136 vm_attach_root_pvm(){
137     target=$1
138     pvm_createdev $rootlv $VMDISK_ROOTSIZE $target
139 }
140
141 vm_attach_swap_pvm(){
142     pvm_createdev $swaplv $VMDISK_SWAPSIZE $target
143 }
144
145 vm_detach_swap_pvm(){
146     lpar=$1
147     test -z $lpar && lpar=$master_lpar
148     pvm_detachdev $swaplv $lpar
149 }
150
151 vm_detach_root_pvm(){
152     lpar=$1
153     test -z $lpar && lpar=$master_lpar
154     pvm_detachdev $rootlv $lpar
155 }
156
157 vm_cleanup_pvm(){
158     pvm_nametoid $lpname
159     pvm_closeconsole $lparid
160     vm_detach_root_pvm $lpname
161     vm_detach_root_pvm
162     vm_detach_swap_pvm $lpname
163     vm_detach_swap_pvm
164     pvm_execute lpar delete -i name=$lpname
165     pvm_deletelv $rootlv
166     pvm_deletelv $swaplv
167 }
168
169 vm_fixup_pvm(){
170     VM_SWAPDEV=/dev/sdb
171     GRUBDIR=`mktemp -d /tmp/grubinstall.XXXX`
172     modules="ext2 part_msdos linux disk elf"
173     grubcfg="$GRUBDIR/grub.cfg"
174     grubimg="$GRUBDIR/grub.img"
175     cat <<'EOF' >> $GRUBDIR/grub.cfg
176 insmod ext2
177 insmod part_msdos
178 insmod linux
179 insmod disk
180 insmod elf
181 set root='ieee1275//vdevice/v-scsi@30000002/disk@8100000000000000,msdos2'
182 linux /.build.kernel.kvm init=/.build/build console=hvc0 root=/dev/sda2 rw elevator=noop
183 initrd /.build.initrd.kvm
184 boot
185 EOF
186     grub2-mkimage -O powerpc-ieee1275 -o $grubimg -c $grubcfg $modules
187     dd if=$grubimg of=$bl_target
188     rm -rf $GRUBDIR
189 }