summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2010-08-05 13:25:20 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-19 20:06:25 +0100
commit369920107edd8ae2487d71a324072fcfaba0731e (patch)
tree14aea71394438111dd1eda29db443ce9784aa314 /meta
parent29ca8936493b2044c6926becca0ffcf3747b2528 (diff)
downloadpoky-369920107edd8ae2487d71a324072fcfaba0731e.tar.gz
deploy.bbclass: use new style staging for deploy tasks
All tasks which implement a do_deploy should inherit this class to have the changes in the deploy task staged. Update recipes which include a do_deploy function to inherit this class and to use DEPLOYDIR rather than DEPLOY_DIR_IMAGE. Signed-off-by: Joshua Lock <josh@linux.intel.com>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/deploy.bbclass11
-rw-r--r--meta/classes/kernel.bbclass19
-rw-r--r--meta/packages/linux/linux-mx31.inc11
-rw-r--r--meta/packages/linux/linux-omap.inc11
-rw-r--r--meta/packages/linux/linux-simtec.inc11
-rw-r--r--meta/packages/linux/linux-zylonite.inc13
-rw-r--r--meta/packages/uboot/u-boot.inc10
-rw-r--r--meta/packages/x-load/x-load.inc14
-rw-r--r--meta/packages/zaurus-updater/zaurus-updater.bb7
9 files changed, 49 insertions, 58 deletions
diff --git a/meta/classes/deploy.bbclass b/meta/classes/deploy.bbclass
new file mode 100644
index 0000000000..f697e70aa4
--- /dev/null
+++ b/meta/classes/deploy.bbclass
@@ -0,0 +1,11 @@
1DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
2SSTATETASKS += "do_deploy"
3do_deploy[sstate-name] = "deploy-${PN}"
4do_deploy[sstate-inputdirs] = "${DEPLOYDIR}"
5do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
6
7python do_deploy_setscene () {
8 sstate_setscene(d)
9}
10addtask do_deploy_setscene
11do_deploy[dirs] = "${DEPLOYDIR} ${B}"
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index f6989bb872..10e5c2a571 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -16,7 +16,7 @@ python __anonymous () {
16 bb.data.setVar("DEPENDS", depends, d) 16 bb.data.setVar("DEPENDS", depends, d)
17} 17}
18 18
19inherit kernel-arch 19inherit kernel-arch deploy
20 20
21PACKAGES_DYNAMIC += "kernel-module-*" 21PACKAGES_DYNAMIC += "kernel-module-*"
22PACKAGES_DYNAMIC += "kernel-image-*" 22PACKAGES_DYNAMIC += "kernel-image-*"
@@ -475,34 +475,29 @@ KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME
475KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}" 475KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}"
476 476
477do_deploy() { 477do_deploy() {
478 install -d ${DEPLOY_DIR_IMAGE} 478 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
479 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
480 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
481 if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then 479 if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
482 tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${PR}-${MACHINE}.tgz -C ${D} lib 480 tar -cvzf ${DEPLOYDIR}/modules-${KERNEL_VERSION}-${PR}-${MACHINE}.tgz -C ${D} lib
483 fi 481 fi
484 482
485 if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then 483 if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
486 if test -e arch/${ARCH}/boot/compressed/vmlinux ; then 484 if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
487 ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin 485 ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
488 uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin 486 uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOYDIR}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
489 rm -f linux.bin 487 rm -f linux.bin
490 else 488 else
491 ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin 489 ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
492 rm -f linux.bin.gz 490 rm -f linux.bin.gz
493 gzip -9 linux.bin 491 gzip -9 linux.bin
494 uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin 492 uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOYDIR}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
495 rm -f linux.bin.gz 493 rm -f linux.bin.gz
496 fi 494 fi
497 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
498 fi 495 fi
499 496
500 cd ${DEPLOY_DIR_IMAGE} 497 cd ${DEPLOYDIR}
501 rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin 498 rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin
502 ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin 499 ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin
503 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}.bin
504} 500}
505 501do_deploy[dirs] = "${DEPLOYDIR} ${B}"
506do_deploy[dirs] = "${B}"
507 502
508addtask deploy before do_package after do_install 503addtask deploy before do_package after do_install
diff --git a/meta/packages/linux/linux-mx31.inc b/meta/packages/linux/linux-mx31.inc
index 0f83ac7a4c..520229cf7f 100644
--- a/meta/packages/linux/linux-mx31.inc
+++ b/meta/packages/linux/linux-mx31.inc
@@ -4,7 +4,7 @@ LICENSE = "GPL"
4 4
5KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}" 5KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
6 6
7inherit kernel 7inherit kernel deploy
8 8
9COMPATIBLE_MACHINE = "mx31litekit|mx31ads|mx31phy" 9COMPATIBLE_MACHINE = "mx31litekit|mx31ads|mx31phy"
10 10
@@ -29,13 +29,10 @@ do_configure_prepend() {
29} 29}
30 30
31do_deploy() { 31do_deploy() {
32 install -d ${DEPLOY_DIR_IMAGE} 32 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
33 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin 33 cd ${DEPLOYDIR}
34 cd ${DEPLOY_DIR_IMAGE}
35 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin 34 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin
36 tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib 35 tar -cvzf ${DEPLOYDIR}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
37} 36}
38 37
39do_deploy[dirs] = "${S}"
40
41addtask deploy before do_populate_sysroot after do_install 38addtask deploy before do_populate_sysroot after do_install
diff --git a/meta/packages/linux/linux-omap.inc b/meta/packages/linux/linux-omap.inc
index 6668deb154..e164bad592 100644
--- a/meta/packages/linux/linux-omap.inc
+++ b/meta/packages/linux/linux-omap.inc
@@ -4,7 +4,7 @@ LICENSE = "GPL"
4 4
5KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}" 5KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}"
6 6
7inherit kernel 7inherit kernel deploy
8 8
9COMPATIBLE_MACHINE = "omap-zoom" 9COMPATIBLE_MACHINE = "omap-zoom"
10 10
@@ -29,14 +29,11 @@ do_configure_prepend() {
29} 29}
30 30
31do_deploy() { 31do_deploy() {
32 install -d ${DEPLOY_DIR_IMAGE} 32 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
33 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin 33 cd ${DEPLOYDIR}
34 cd ${DEPLOY_DIR_IMAGE}
35 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin 34 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin
36 tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib 35 tar -cvzf ${DEPLOYDIR}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
37} 36}
38 37
39do_deploy[dirs] = "${S}"
40
41addtask deploy before do_populate_sysroot after do_install 38addtask deploy before do_populate_sysroot after do_install
42 39
diff --git a/meta/packages/linux/linux-simtec.inc b/meta/packages/linux/linux-simtec.inc
index b9a65cc26b..2b7a5cc07d 100644
--- a/meta/packages/linux/linux-simtec.inc
+++ b/meta/packages/linux/linux-simtec.inc
@@ -1,5 +1,7 @@
1require linux.inc 1require linux.inc
2 2
3inherit deploy
4
3do_prepdefconfig() { 5do_prepdefconfig() {
4 cp ${S}/arch/arm/configs/s3c24xx_simtec_defconfig ${WORKDIR}/defconfig 6 cp ${S}/arch/arm/configs/s3c24xx_simtec_defconfig ${WORKDIR}/defconfig
5 if test -e ${WORKDIR}/${MACHINE}-defconfig-append; then 7 if test -e ${WORKDIR}/${MACHINE}-defconfig-append; then
@@ -10,13 +12,10 @@ do_prepdefconfig() {
10addtask prepdefconfig before do_configure after do_patch 12addtask prepdefconfig before do_configure after do_patch
11 13
12do_deploy() { 14do_deploy() {
13 install -d ${DEPLOY_DIR_IMAGE} 15 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
14 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin 16 cd ${DEPLOYDIR}
15 cd ${DEPLOY_DIR_IMAGE}
16 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin 17 ln -sf ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${KERNEL_IMAGETYPE}-${MACHINE}.bin
17 tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib 18 tar -cvzf ${DEPLOYDIR}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
18} 19}
19 20
20do_deploy[dirs] = "${S}"
21
22addtask deploy before do_populate_sysroot after do_install 21addtask deploy before do_populate_sysroot after do_install
diff --git a/meta/packages/linux/linux-zylonite.inc b/meta/packages/linux/linux-zylonite.inc
index 81e80622b3..5cf23bf6d1 100644
--- a/meta/packages/linux/linux-zylonite.inc
+++ b/meta/packages/linux/linux-zylonite.inc
@@ -5,7 +5,7 @@ LICENSE = "GPL"
5KERNEL_IMAGETYPE = "zImage" 5KERNEL_IMAGETYPE = "zImage"
6KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}" 6KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}"
7 7
8inherit kernel 8inherit kernel deploy
9 9
10RPROVIDES_kernel-image = "hostap-modules" 10RPROVIDES_kernel-image = "hostap-modules"
11 11
@@ -33,13 +33,10 @@ do_configure_prepend() {
33} 33}
34 34
35do_deploy() { 35do_deploy() {
36 install -d ${DEPLOY_DIR_IMAGE} 36 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
37 install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin 37 rm -f ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
38 rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin 38 ln -s ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
39 ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin 39 #tar -cvzf ${DEPLOYDIR}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
40 #tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
41} 40}
42 41
43do_deploy[dirs] = "${S}"
44
45addtask deploy before do_build after do_install 42addtask deploy before do_build after do_install
diff --git a/meta/packages/uboot/u-boot.inc b/meta/packages/uboot/u-boot.inc
index 3e926a4ea6..889f6215ed 100644
--- a/meta/packages/uboot/u-boot.inc
+++ b/meta/packages/uboot/u-boot.inc
@@ -5,6 +5,8 @@ PRIORITY = "optional"
5LICENSE = "GPL" 5LICENSE = "GPL"
6PROVIDES = "virtual/bootloader" 6PROVIDES = "virtual/bootloader"
7 7
8inherit deploy
9
8PARALLEL_MAKE="" 10PARALLEL_MAKE=""
9 11
10EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" 12EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
@@ -22,16 +24,12 @@ do_compile () {
22} 24}
23 25
24do_deploy () { 26do_deploy () {
25 install -d ${DEPLOY_DIR_IMAGE} 27 install ${S}/u-boot.bin ${DEPLOYDIR}/${UBOOT_IMAGE}
26 install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
27 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
28 28
29 cd ${DEPLOY_DIR_IMAGE} 29 cd ${DEPLOYDIR}
30 rm -f ${UBOOT_SYMLINK} 30 rm -f ${UBOOT_SYMLINK}
31 ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK} 31 ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
32 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${UBOOT_SYMLINK}
33} 32}
34do_deploy[dirs] = "${S}"
35addtask deploy before do_build after do_compile 33addtask deploy before do_build after do_compile
36 34
37do_install() { 35do_install() {
diff --git a/meta/packages/x-load/x-load.inc b/meta/packages/x-load/x-load.inc
index 01db413b12..7073b13fe7 100644
--- a/meta/packages/x-load/x-load.inc
+++ b/meta/packages/x-load/x-load.inc
@@ -3,6 +3,8 @@ SECTION = "bootloaders"
3PRIORITY = "optional" 3PRIORITY = "optional"
4LICENSE = "GPL" 4LICENSE = "GPL"
5 5
6inherit deploy
7
6DEPENDS = "signgp-native" 8DEPENDS = "signgp-native"
7 9
8PARALLEL_MAKE="" 10PARALLEL_MAKE=""
@@ -27,20 +29,14 @@ do_compile () {
27 29
28do_deploy () { 30do_deploy () {
29 signGP ${S}/x-load.bin 31 signGP ${S}/x-load.bin
30 install -d ${DEPLOY_DIR_IMAGE} 32 install ${S}/x-load.bin.ift ${DEPLOYDIR}/${XLOAD_IMAGE}
31 install ${S}/x-load.bin.ift ${DEPLOY_DIR_IMAGE}/${XLOAD_IMAGE} 33 install ${S}/x-load.bin.ift ${DEPLOYDIR}/${MLO_IMAGE}
32 install ${S}/x-load.bin.ift ${DEPLOY_DIR_IMAGE}/${MLO_IMAGE}
33 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${XLOAD_IMAGE}
34 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${MLO_IMAGE}
35 34
36 cd ${DEPLOY_DIR_IMAGE} 35 cd ${DEPLOYDIR}
37 rm -f ${XLOAD_SYMLINK} 36 rm -f ${XLOAD_SYMLINK}
38 ln -sf ${XLOAD_IMAGE} ${XLOAD_SYMLINK} 37 ln -sf ${XLOAD_IMAGE} ${XLOAD_SYMLINK}
39 rm -f ${MLO_SYMLINK} 38 rm -f ${MLO_SYMLINK}
40 ln -sf ${MLO_IMAGE} ${MLO_SYMLINK} 39 ln -sf ${MLO_IMAGE} ${MLO_SYMLINK}
41 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${XLOAD_SYMLINK}
42 package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${MLO_SYMLINK}
43} 40}
44do_deploy[dirs] = "${S}"
45addtask deploy before do_build after do_compile 41addtask deploy before do_build after do_compile
46 42
diff --git a/meta/packages/zaurus-updater/zaurus-updater.bb b/meta/packages/zaurus-updater/zaurus-updater.bb
index 4ab6fc43c4..a621761d66 100644
--- a/meta/packages/zaurus-updater/zaurus-updater.bb
+++ b/meta/packages/zaurus-updater/zaurus-updater.bb
@@ -11,6 +11,8 @@ SRC_URI = "file://updater.sh \
11 file://gnu-tar.gz" 11 file://gnu-tar.gz"
12S = "${WORKDIR}" 12S = "${WORKDIR}"
13 13
14inherit deploy
15
14do_configure() { 16do_configure() {
15 sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh" 17 sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh"
16} 18}
@@ -20,12 +22,11 @@ do_compile() {
20} 22}
21 23
22do_deploy() { 24do_deploy() {
23 install -d ${DEPLOY_DIR_IMAGE} 25 install -m 0755 updater.sh ${DEPLOYDIR}/updater.sh.${MACHINE}
24 install -m 0755 updater.sh ${DEPLOY_DIR_IMAGE}/updater.sh.${MACHINE}
25 26
26 case ${MACHINE} in 27 case ${MACHINE} in
27 spitz ) 28 spitz )
28 install -m 0755 gnu-tar ${DEPLOY_DIR_IMAGE}/gnu-tar 29 install -m 0755 gnu-tar ${DEPLOYDIR}/gnu-tar
29 ;; 30 ;;
30 *) 31 *)
31 ;; 32 ;;