diff options
200 files changed, 3206 insertions, 1045 deletions
diff --git a/clusters/ci.morph b/clusters/ci.morph index f860a4ba..48e978bc 100644 --- a/clusters/ci.morph +++ b/clusters/ci.morph @@ -12,3 +12,38 @@ systems: type: rawdisk location: devel-system-x86_64-generic.img DISK_SIZE: 4G +- morph: systems/devel-system-x86_32-generic.morph + deploy: + devel-system-x86_32-generic: + type: rawdisk + location: devel-system-x86_32-generic.img + DISK_SIZE: 4G +- morph: systems/build-system-armv7lhf-jetson.morph + deploy: + devel-system-armv7lhf-jetson: + type: rawdisk + location: build-system-armv7lhf-jetson.img + DISK_SIZE: 2G + ROOT_DEVICE: "/dev/mmcblk0p1" + DTB_PATH: "boot/tegra124-jetson-tk1.dtb" + BOOTLOADER_CONFIG_FORMAT: "extlinux" + BOOTLOADER_INSTALL: "none" + KERNEL_ARGS: cma=256M console=tty0 console=ttyS0,115200n8 no_console_suspend=1 nouveau.pstate=1 +- morph: systems/weston-system-x86_64-generic.morph + deploy: + weston-system-x86_64-generic: + type: rawdisk + location: weston-system-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 +- morph: systems/weston-system-armv7lhf-jetson.morph + deploy: + weston-system-armv7lhf-jetson: + type: rawdisk + location: weston-system-armv7lhf-jetson.img + DISK_SIZE: 4G + ROOT_DEVICE: "/dev/mmcblk0p1" + DTB_PATH: "boot/tegra124-jetson-tk1.dtb" + BOOTLOADER_CONFIG_FORMAT: "extlinux" + BOOTLOADER_INSTALL: "none" + KERNEL_ARGS: cma=256M console=tty0 console=ttyS0,115200n8 no_console_suspend=1 nouveau.pstate=1 diff --git a/clusters/example-distbuild-cluster.morph b/clusters/example-distbuild-cluster.morph index 4c97d21f..513c16c5 100644 --- a/clusters/example-distbuild-cluster.morph +++ b/clusters/example-distbuild-cluster.morph @@ -10,7 +10,7 @@ description: | workers to authenticate with the Trove to give them read access to all source repositories. systems: -- morph: systems/distbuild-system-x86_64-generic.morph +- morph: systems/build-system-x86_64.morph deploy-defaults: CONTROLLERHOST: build-controller DISTBUILD_CONTROLLER: false diff --git a/clusters/installer-build-system-x86_64.morph b/clusters/installer-build-system-x86_64.morph new file mode 100644 index 00000000..b31caced --- /dev/null +++ b/clusters/installer-build-system-x86_64.morph @@ -0,0 +1,46 @@ +name: installer-build-system-x86_64 +kind: cluster +description: | + This is a cluster morphology that can be used to deploy + installer systems. This is done by adding the files needed + using a manifest file (installer/manifest) with the INSTALL_FILES + extension, and using the installer.configure extension to generate + the configuration needed in the system. + + This manifest, which is installing the installer script in + /usr/lib/installer/installer.py, in combination of adding + "init=/usr/lib/installer/installer.py" as KERNEL_ARGS in the system + makes the system run the installer.py script as init script. + + The installer.py script will read the information needed to + install the system (where is the root filesystem to install and + where to install it) from /etc/install.conf. + + This cluster also deploys a subsystem (a build-system in this case) + which is going to be the system that the installer system/script is + going to install. + +systems: +- morph: systems/installer-system-x86_64.morph + deploy: + installer: + type: rawdisk + location: installer-build-system-x86_64.img + KERNEL_ARGS: init=/usr/lib/baserock-installer/installer + DISK_SIZE: 6G + HOSTNAME: installer-x86_64 + INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda + INSTALLER_ROOTFS_TO_INSTALL: /rootfs + subsystems: + - morph: systems/build-system-x86_64.morph + deploy: + to-install: + type: sysroot + location: /rootfs + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz diff --git a/clusters/jetson-upgrade.morph b/clusters/jetson-upgrade.morph index f44e597a..a73507aa 100644 --- a/clusters/jetson-upgrade.morph +++ b/clusters/jetson-upgrade.morph @@ -6,12 +6,12 @@ systems: TROVE_HOST: TROVE_HOST TROVE_ID: TROVE_ID ROOT_DEVICE: "/dev/mmcblk0p1" - DTB_PATH: "boot/tegra124-pm375.dtb" + DTB_PATH: "boot/tegra124-jetson-tk1.dtb" BOOTLOADER_CONFIG_FORMAT: "extlinux" BOOTLOADER_INSTALL: "none" - KERNEL_ARGS: console=ttyS0,115200n8 no_console_suspend=1 lp0_vec=2064@0xf46ff000 video=tegrafb mem=1862M@2048M memtype=255 ddr_die=2048M@2048M section=256M pmuboard=0x0177:0x0000:0x02:0x43:0x00 vpr=151M@3945M tsec=32M@3913M otf_key=c75e5bb91eb3bd94560357b64422f85 usbcore.old_scheme_first=1 core_edp_mv=1150 core_edp_ma=4000 tegraid=40.1.1.0.0 debug_uartport=lsport,3 power_supply=Adapter audio_codec=rt5640 modem_id=0 android.kerneltype=normal usb_port_owner_info=0 fbcon=map:1 commchip_id=0 usb_port_owner_info=0 lane_owner_info=6 emc_max_dvfs=0 touch_id=0@0 tegra_fbmem=32899072@0xad012000 board_info=0x0177:0x0000:0x02:0x43:0x00 tegraboot=sdmmc gpt - FSTAB_SRC: LABEL=src /src auto defaults,rw,noatime 0 2 + KERNEL_ARGS: cma=256M console=tty0 console=ttyS0,115200n8 no_console_suspend=1 nouveau.pstate=1 + FSTAB_SRC: LABEL=src /src auto defaults,rw,noatime,nofail 0 2 deploy: self: type: ssh-rsync - location: root@localhost + location: root@127.0.0.1 diff --git a/clusters/mason-openstack.morph b/clusters/mason-openstack.morph new file mode 100644 index 00000000..6ef14888 --- /dev/null +++ b/clusters/mason-openstack.morph @@ -0,0 +1,39 @@ +name: openstack-mason +kind: cluster +description: | + This is a template cluster morphology that can be adapted to set up a + Mason. Masons are composed of a trove and a distbuild system. +systems: +- morph: systems/build-system-x86_64.morph + deploy-defaults: + ARTIFACT_CACHE_SERVER: example-cache-server + CONTROLLERHOST: controller-hostname + DISTBUILD_CONTROLLER: true + DISTBUILD_WORKER: true + INSTALL_FILES: distbuild/manifest + RAM_SIZE: 8G + TROVE_HOST: your-upstream-trove + TROVE_ID: your-upstream-trove-prefix + VCPUS: 2 + WORKER_SSH_KEY: ssh-keys/worker.key + deploy: + mason-openstack: + type: openstack + location: openstack-auth-url (eg example.com:5000/v2.0) + DISK_SIZE: 6G + DISTBUILD_CONTROLLER: true + HOSTNAME: controller-hostname + MASON_CLUSTER_MORPHOLOGY: clusters/ci.morph + MASON_DEFINITIONS_REF: master + MASON_DISTBUILD_ARCH: x86_64 + MASON_TEST_HOST: user@openstack-auth-url + WORKERS: controller-hostname + OPENSTACK_AUTH_URL: openstack-auth-url + OPENSTACK_USER: baserock + OPENSTACK_TENANT: baserock + OPENSTACK_TENANT_ID: 7d7ebfe23367490b973a10fa426c3aec + OPENSTACK_IMAGENAME: mason-openstack + OPENSTACK_NETWORK_ID: 71f5151a-b7c3-405d-a841-d1b07e5db099 + CLOUD_INIT: yes + KERNEL_ARGS: console=ttyS0 console=tty0 + TEST_INFRASTRUCTURE_TYPE: openstack diff --git a/clusters/mason.morph b/clusters/mason.morph index 8579f7e4..9717239d 100644 --- a/clusters/mason.morph +++ b/clusters/mason.morph @@ -30,7 +30,7 @@ systems: VCPUS: 2 VERSION_LABEL: 45 WORKER_SSH_PUBKEY: ssh_keys/worker.key.pub -- morph: systems/distbuild-system-x86_64.morph +- morph: systems/build-system-x86_64.morph deploy-defaults: ARTIFACT_CACHE_SERVER: red-box-v1-trove.example.com CONTROLLERHOST: red-box-v1-controller.example.com diff --git a/clusters/release.morph b/clusters/release.morph index 5beee3e2..f161d0df 100644 --- a/clusters/release.morph +++ b/clusters/release.morph @@ -7,36 +7,39 @@ description: | you can deploy the systems yourself, if you are making a Baserock release then the script should be used. systems: -- morph: systems/devel-system-x86_32-chroot.morph +- morph: systems/build-system-x86_32-chroot.morph deploy: - devel-system-x86_32-chroot: + build-system-x86_32-chroot: type: tar - location: devel-system-x86_32-chroot.tar -- morph: systems/devel-system-x86_32-generic.morph + location: build-system-x86_32-chroot.tar +- morph: systems/build-system-x86_32.morph deploy: - devel-system-x86_32-generic: + build-system-x86_32: type: rawdisk - location: devel-system-x86_32-generic.img - DISK_SIZE: 4G -- morph: systems/devel-system-x86_64-chroot.morph + location: build-system-x86_32.img + DISK_SIZE: 6G +- morph: systems/build-system-x86_64-chroot.morph deploy: - devel-system-x86_64-chroot: + build-system-x86_64-chroot: type: tar - location: devel-system-x86_64-chroot.tar -- morph: systems/devel-system-x86_64-generic.morph + location: build-system-x86_64-chroot.tar +- morph: systems/build-system-x86_64.morph deploy: - devel-system-x86_64-generic: + build-system-x86_64: type: rawdisk - location: devel-system-x86_64-generic.img - DISK_SIZE: 4G -- morph: systems/devel-system-armv7lhf-jetson.morph + location: build-system-x86_64.img + DISK_SIZE: 6G +- morph: systems/build-system-armv7lhf-jetson.morph deploy: - release: + devel-system-armv7lhf-jetson: type: rawdisk - location: devel-system-armv7lhf-jetson.img - DISK_SIZE: 4G + location: build-system-armv7lhf-jetson.img + DISK_SIZE: 2G ROOT_DEVICE: "/dev/mmcblk0p1" - KERNEL_ARGS: cma=256M console=ttyS0,115200n8 no_console_suspend=1 lp0_vec=2064@0xf46ff000 video=tegrafb mem=1862M@2048M memtype=255 ddr_die=2048M@2048M section=256M pmuboard=0x0177:0x0000:0x02:0x43:0x00 vpr=151M@3945M tsec=32M@3913M otf_key=c75e5bb91eb3bd94560357b64422f85 usbcore.old_scheme_first=1 core_edp_mv=1150 core_edp_ma=4000 tegraid=40.1.1.0.0 debug_uartport=lsport,3 power_supply=Adapter audio_codec=rt5640 modem_id=0 android.kerneltype=normal usb_port_owner_info=0 fbcon=map:1 commchip_id=0 usb_port_owner_info=0 lane_owner_info=6 emc_max_dvfs=0 touch_id=0@0 tegra_fbmem=32899072@0xad012000 board_info=0x0177:0x0000:0x02:0x43:0x00 tegraboot=sdmmc gpt + DTB_PATH: "boot/tegra124-jetson-tk1.dtb" + BOOTLOADER_CONFIG_FORMAT: "extlinux" + BOOTLOADER_INSTALL: "none" + KERNEL_ARGS: cma=256M console=tty0 console=ttyS0,115200n8 no_console_suspend=1 nouveau.pstate=1 - morph: systems/genivi-baseline-system-x86_64-generic.morph deploy: genivi-baseline-system-x86_64-generic: @@ -54,4 +57,4 @@ systems: DTB_PATH: "boot/tegra124-jetson-tk1.dtb" BOOTLOADER_CONFIG_FORMAT: "extlinux" BOOTLOADER_INSTALL: "none" - KERNEL_ARGS: cma=256M console=ttyS0,115200n8 no_console_suspend=1 lp0_vec=2064@0xf46ff000 video=tegrafb mem=1862M@2048M memtype=255 ddr_die=2048M@2048M section=256M pmuboard=0x0177:0x0000:0x02:0x43:0x00 vpr=151M@3945M tsec=32M@3913M otf_key=c75e5bb91eb3bd94560357b64422f85 usbcore.old_scheme_first=1 core_edp_mv=1150 core_edp_ma=4000 tegraid=40.1.1.0.0 debug_uartport=lsport,3 power_supply=Adapter audio_codec=rt5640 modem_id=0 android.kerneltype=normal usb_port_owner_info=0 fbcon=map:1 commchip_id=0 usb_port_owner_info=0 lane_owner_info=6 emc_max_dvfs=0 touch_id=0@0 tegra_fbmem=32899072@0xad012000 board_info=0x0177:0x0000:0x02:0x43:0x00 tegraboot=sdmmc gpt + KERNEL_ARGS: cma=256M console=tty0 console=ttyS0,115200n8 no_console_suspend=1 nouveau.pstate=1 diff --git a/clusters/upgrade-devel.morph b/clusters/upgrade-devel.morph index 3937521e..b7ce9bc0 100644 --- a/clusters/upgrade-devel.morph +++ b/clusters/upgrade-devel.morph @@ -36,4 +36,4 @@ systems: deploy: self: type: ssh-rsync - location: root@localhost + location: root@127.0.0.1 diff --git a/clusters/weston-system-x86_64-generic-deploy.morph b/clusters/weston-system-x86_64-generic-deploy.morph new file mode 100644 index 00000000..ac63a93a --- /dev/null +++ b/clusters/weston-system-x86_64-generic-deploy.morph @@ -0,0 +1,12 @@ +name: release +kind: cluster +description: | + Deploy a stock weston system. +systems: +- morph: systems/weston-system-x86_64-generic.morph + deploy: + weston-system-x86_64-generic: + type: rawdisk + location: /weston-system-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 diff --git a/distbuild.configure b/distbuild.configure index d9b9fb8a..062aaecc 100644 --- a/distbuild.configure +++ b/distbuild.configure @@ -45,20 +45,21 @@ if [ -n "$DISTBUILD_GENERIC" ]; then exit 0 fi +# Set default values for these two options if they are unset, so that if the +# user specifies no distbuild config at all the configure extension exits +# without doing anything but does not raise an error. +DISTBUILD_CONTROLLER=${DISTBUILD_CONTROLLER-False} +DISTBUILD_WORKER=${DISTBUILD_WORKER-False} + +if [ "$DISTBUILD_CONTROLLER" = False -a "$DISTBUILD_WORKER" = False ]; then + exit 0 +fi + set -u # Check that all the variables needed are present: error_vars=false -if [ "x$DISTBUILD_WORKER" = "x" ]; then - echo "ERROR: DISTBUILD_WORKER needs to be defined." - error_vars=true -fi - -if [ "x$DISTBUILD_CONTROLLER" = "x" ]; then - echo "ERROR: DISTBUILD_CONTROLLER needs to be defined." - error_vars=true -fi if [ "x$TROVE_HOST" = "x" ]; then echo "ERROR: TROVE_HOST needs to be defined." diff --git a/installer.configure b/installer.configure new file mode 100755 index 00000000..a77dc851 --- /dev/null +++ b/installer.configure @@ -0,0 +1,48 @@ +#!/usr/bin/python +# +# Copyright (C) 2014 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# This is a "morph deploy" configuration extension to configure an installer +# system. It will create the configuration needed in the installer system +# to perform an installation. It uses the following variables from the +# environment: +# +# * INSTALLER_TARGET_STORAGE_DEVICE +# * INSTALLER_ROOTFS_TO_INSTALL +# * INSTALLER_POST_INSTALL_COMMAND (optional, defaults to `reboot -f`) + +import os +import sys +import yaml + +install_config_file = os.path.join(sys.argv[1], 'etc', 'install.conf') + +try: + installer_configuration = { + 'INSTALLER_TARGET_STORAGE_DEVICE': os.environ['INSTALLER_TARGET_STORAGE_DEVICE'], + 'INSTALLER_ROOTFS_TO_INSTALL': os.environ['INSTALLER_ROOTFS_TO_INSTALL'], + } +except KeyError as e: + print "Not configuring as an installer system" + sys.exit(0) + +postinstkey = 'INSTALLER_POST_INSTALL_COMMAND' +installer_configuration[postinstkey] = os.environ.get(postinstkey, 'reboot -f') + +with open(install_config_file, 'w') as f: + f.write( yaml.dump(installer_configuration, default_flow_style=False) ) + +print "Configuration of the installer system in %s" % install_config_file diff --git a/mason.configure b/mason.configure index 4d11feb4..1198ebd0 100644 --- a/mason.configure +++ b/mason.configure @@ -24,23 +24,24 @@ # * MASON_DEFINITIONS_REF # * MASON_DISTBUILD_ARCH # * MASON_TEST_HOST +# * OPENSTACK_NETWORK_ID +# * TEST_INFRASTRUCTURE_TYPE # * TROVE_HOST # * TROVE_ID # * CONTROLLERHOST set -e -ROOT="$1" - - ########################################################################## # Copy Mason files into root filesystem ########################################################################## +ROOT="$1" mkdir -p "$ROOT"/usr/lib/mason cp mason/mason.sh "$ROOT"/usr/lib/mason/mason.sh cp mason/mason-report.sh "$ROOT"/usr/lib/mason/mason-report.sh +cp mason/os-init-script "$ROOT"/usr/lib/mason/os-init-script cp mason/mason.timer "$ROOT"/etc/systemd/system/mason.timer @@ -73,7 +74,6 @@ cp mason/mason-setup.service "$ROOT"/etc/systemd/system/mason-setup.service ln -s ../mason-setup.service "$ROOT"/etc/systemd/system/multi-user.target.wants/mason-setup.service - ########################################################################## # Check variables ########################################################################## @@ -83,12 +83,23 @@ if [ -n "$MASON_GENERIC" ]; then exit 0 fi -if [ "$ARTIFACT_CACHE_SERVER" = "" \ - -o "$MASON_CLUSTER_MORPHOLOGY" = "" \ - -o "$MASON_DEFINITIONS_REF" = "" \ - -o "$MASON_DISTBUILD_ARCH" = "" \ - -o "$MASON_TEST_HOST" = "" ]; then - echo Not configuring as Mason, some options not defined +if [ -z "$MASON_CLUSTER_MORPHOLOGY" -a \ + -z "$MASON_DEFINITIONS_REF" -a \ + -z "$MASON_DISTBUILD_ARCH" -a \ + -z "$MASON_TEST_HOST" ]; then + # No Mason options defined, do nothing. + exit 0 +fi + +if [ -z "$ARTIFACT_CACHE_SERVER" -o \ + -z "$CONTROLLERHOST" -o \ + -z "$MASON_CLUSTER_MORPHOLOGY" -o \ + -z "$MASON_DEFINITIONS_REF" -o \ + -z "$MASON_DISTBUILD_ARCH" -o \ + -z "$MASON_TEST_HOST" -o \ + -z "$TROVE_HOST" -o \ + -z "$TROVE_ID" ]; then + echo Some options required for Mason were defined, but not all. exit 1 fi @@ -108,6 +119,8 @@ mason_configuration={ 'MASON_DEFINITIONS_REF': os.environ['MASON_DEFINITIONS_REF'], 'MASON_DISTBUILD_ARCH': os.environ['MASON_DISTBUILD_ARCH'], 'MASON_TEST_HOST': os.environ['MASON_TEST_HOST'], + 'OPENSTACK_NETWORK_ID': os.environ['OPENSTACK_NETWORK_ID'], + 'TEST_INFRASTRUCTURE_TYPE': os.environ['TEST_INFRASTRUCTURE_TYPE'], 'TROVE_ID': os.environ['TROVE_ID'], 'TROVE_HOST': os.environ['TROVE_HOST'], 'CONTROLLERHOST': os.environ['CONTROLLERHOST'], @@ -116,11 +129,25 @@ mason_configuration={ yaml.dump(mason_configuration, sys.stdout, default_flow_style=False) EOF +if [ "$TEST_INFRASTRUCTURE_TYPE" = "openstack" ]; then + python <<'EOF' >>"$MASON_DATA/mason.conf" +import os, sys, yaml + +openstack_credentials={ + 'OS_USERNAME': os.environ['OPENSTACK_USER'], + 'OS_TENANT_NAME': os.environ['OPENSTACK_TENANT'], + 'OS_TENANT_ID': os.environ['OPENSTACK_TENANT_ID'], + 'OS_AUTH_URL': os.environ['OPENSTACK_AUTH_URL'], + 'OS_PASSWORD': os.environ['OPENSTACK_PASSWORD'], +} + +yaml.dump(openstack_credentials, sys.stdout, default_flow_style=False) +EOF +fi ########################################################################## # Enable services ########################################################################## ln -s ../mason.timer "$ROOT"/etc/systemd/system/multi-user.target.wants/mason.timer -ln -s ../mason.service "$ROOT"/etc/systemd/system/multi-user.target.wants/mason.service ln -s ../httpd.service "$ROOT"/etc/systemd/system/multi-user.target.wants/httpd.service diff --git a/mason/ansible/mason-setup.yml b/mason/ansible/mason-setup.yml index 70c77871..d1528dbb 100644 --- a/mason/ansible/mason-setup.yml +++ b/mason/ansible/mason-setup.yml @@ -29,11 +29,38 @@ - fail: msg='CONTROLLERHOST is mandatory' when: CONTROLLERHOST is not defined + - fail: msg='TEST_INFRASTRUCTURE_TYPE is mandatory' + when: TEST_INFRASTRUCTURE_TYPE is not defined + + - fail: msg='OPENSTACK_NETWORK_ID is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OPENSTACK_NETWORK_ID is not defined + + - fail: msg='OS_USERNAME is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OS_USERNAME is not defined + + - fail: msg='OS_PASSWORD is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OS_PASSWORD is not defined + + - fail: msg='OS_TENANT_ID is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OS_TENANT_ID is not defined + + - fail: msg='OS_TENANT_NAME is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OS_TENANT_NAME is not defined + + - fail: msg='OS_AUTH_URL is mandatory when TEST_INFRASTRUCTURE_TYPE=openstack' + when: TEST_INFRASTRUCTURE_TYPE == "openstack" and OS_AUTH_URL is not defined + - name: Create the Mason configuration file template: src=/usr/share/mason-setup/{{ item }} dest=/etc/{{ item }} with_items: - mason.conf + - name: Create the OpenStack credentials file + template: src=/usr/share/mason-setup/{{ item }} dest=/etc/{{ item }} + with_items: + - os.conf + when: TEST_INFRASTRUCTURE_TYPE == "openstack" + - name: Enable the mason service service: name=mason.service enabled=yes register: mason_service diff --git a/mason/mason-generator.sh b/mason/mason-generator.sh index 1a2eccac..187db72c 100755 --- a/mason/mason-generator.sh +++ b/mason/mason-generator.sh @@ -84,7 +84,7 @@ sed -i "s/\.example\.com/$(sedescape "$HOST_POSTFIX")/g" "mason-$HOST_PREFIX.mor ############################################################################## morph build systems/trove-system-x86_64.morph -morph build systems/distbuild-system-x86_64.morph +morph build systems/build-system-x86_64.morph ############################################################################## diff --git a/mason/mason.service b/mason/mason.service index ab2338c5..a864d610 100644 --- a/mason/mason.service +++ b/mason/mason.service @@ -1,5 +1,6 @@ [Unit] Description=Mason: Continuous Delivery Service +After=mason-setup.service [Service] User=root diff --git a/mason/mason.sh b/mason/mason.sh index 32aab032..dba99dfa 100755 --- a/mason/mason.sh +++ b/mason/mason.sh @@ -1,5 +1,10 @@ #!/bin/sh +# Load OpenStack credentials +if [ -f "/etc/os.conf" ]; then + . /etc/os.conf +fi + set -e set -x @@ -59,11 +64,20 @@ else echo INFO: Created "$releases_made" release images fi -"scripts/release-test" \ - --deployment-host "$DISTBUILD_ARCH":"$TEST_VM_HOST_SSH_URL" \ - --trove-host "$UPSTREAM_TROVE_ADDRESS" \ - --trove-id "$TROVE_ID" \ - "$BUILD_CLUSTER_MORPHOLOGY" +if [ "$TEST_INFRASTRUCTURE_TYPE" = "openstack" ]; then + "scripts/release-test-os" \ + --deployment-host "$DISTBUILD_ARCH":"$MASON_TEST_HOST" \ + --trove-host "$UPSTREAM_TROVE_ADDRESS" \ + --trove-id "$TROVE_ID" \ + --net-id "$OPENSTACK_NETWORK_ID" \ + "$BUILD_CLUSTER_MORPHOLOGY" +elif [ "$TEST_INFRASTRUCTURE_TYPE" = "kvmhost" ]; then + "scripts/release-test" \ + --deployment-host "$DISTBUILD_ARCH":"$MASON_TEST_HOST" \ + --trove-host "$UPSTREAM_TROVE_ADDRESS" \ + --trove-id "$TROVE_ID" \ + "$BUILD_CLUSTER_MORPHOLOGY" +fi "scripts/release-upload" --build-trove-host "$ARTIFACT_CACHE_SERVER" \ --arch "$DISTBUILD_ARCH" \ diff --git a/mason/os-init-script b/mason/os-init-script new file mode 100644 index 00000000..77afb926 --- /dev/null +++ b/mason/os-init-script @@ -0,0 +1,6 @@ +#!/bin/bash + +# This allows the test runner to know that cloud-init has completed the +# disc resizing, and there is enough free space to continue. +touch /root/cloud-init-finished + diff --git a/mason/share/mason.conf b/mason/share/mason.conf index b323896d..1295ce84 100644 --- a/mason/share/mason.conf +++ b/mason/share/mason.conf @@ -9,4 +9,6 @@ DISTBUILD_ARCH={{ MASON_DISTBUILD_ARCH|quote }} DISTBUILD_CONTROLLER_ADDRESS={{ CONTROLLERHOST|quote }} TROVE_ID={{ TROVE_ID|quote }} BUILD_CLUSTER_MORPHOLOGY={{ MASON_CLUSTER_MORPHOLOGY|quote }} -TEST_VM_HOST_SSH_URL={{ MASON_TEST_HOST|quote }} +MASON_TEST_HOST={{ MASON_TEST_HOST|quote }} +TEST_INFRASTRUCTURE_TYPE={{ TEST_INFRASTRUCTURE_TYPE|quote }} +{% if OPENSTACK_NETWORK_ID is defined %}OPENSTACK_NETWORK_ID={{ OPENSTACK_NETWORK_ID|quote }}{% endif %} diff --git a/mason/share/os.conf b/mason/share/os.conf new file mode 100644 index 00000000..21ef398c --- /dev/null +++ b/mason/share/os.conf @@ -0,0 +1,30 @@ +#!/bin/bash + +# A version of this file with the relevant information included can be +# obtained by navigating to 'Access & Security' -> 'API Access' -> +# 'Download OpenStack RC file' in The Horizon web interface of your +# OpenStack. However, the file obtained from there sets OS_PASSWORD +# such that it will ask the user for a password, so you will need to +# change that for Mason to work automatically. +# +# With the addition of Keystone, to use an openstack cloud you should +# authenticate against keystone, which returns a **Token** and **Service +# Catalog**. The catalog contains the endpoint for all services the +# user/tenant has access to - including nova, glance, keystone, swift. +# +# *NOTE*: Using the 2.0 *auth api* does not mean that compute api is 2.0. We +# will use the 1.1 *compute api* +export OS_AUTH_URL={{ OS_AUTH_URL|quote }} + +# With the addition of Keystone we have standardized on the term **tenant** +# as the entity that owns the resources. +export OS_TENANT_ID={{ OS_TENANT_ID|quote }} +export OS_TENANT_NAME={{ OS_TENANT_NAME|quote }} + +# In addition to the owning entity (tenant), openstack stores the entity +# performing the action as the **user**. +export OS_USERNAME={{ OS_USERNAME|quote }} + +# With Keystone you pass the keystone password. +export OS_PASSWORD={{ OS_PASSWORD|quote }} + diff --git a/nfsboot-server.configure b/nfsboot-server.configure index 9779c053..9fb48096 100755 --- a/nfsboot-server.configure +++ b/nfsboot-server.configure @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2013 Codethink Limited +# Copyright (C) 2013-2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,21 +24,35 @@ ROOT="$1" ########################################################################## -chroot "$ROOT" systemctl enable nfs-server.service +nfsboot_root=/srv/nfsboot +tftp_root="$nfsboot_root"/tftp +nfs_root="$nfsboot_root"/nfs +mkdir -p "$ROOT$tftp_root" "$ROOT$nfs_root" -mkdir -p "$ROOT/srv/nfsboot/tftp" "$ROOT/srv/nfsboot/nfs" - -cat >"$ROOT/usr/lib/systemd/system/nfsboot-tftp.service" <<EOF +install -D /dev/stdin "$ROOT/usr/lib/systemd/system/nfsboot-tftp.service" <<EOF [Unit] Description=tftp service for booting kernels After=network.target [Service] Type=simple -ExecStart=/usr/bin/udpsvd -E 0 69 /usr/sbin/tftpd /srv/nfsboot/tftp/ +ExecStart=/usr/bin/udpsvd -E 0 69 /usr/sbin/tftpd $tftp_root [Install] WantedBy=multi-user.target EOF -chroot "$ROOT" systemctl enable nfsboot-tftp.service +for prefix in / /usr; do + for unit in nfsboot-tftp.service nfs-server.service; do + unit_path="${prefix}/lib/systemd/system/$unit" + if [ -e "$ROOT/$unit_path" ]; then + ln -s "../../../../$unit_path" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$unit" + fi + done +done + +pxelinux_file="$ROOT/usr/share/syslinux/pxelinux.0" +if [ -e "$pxelinux_file" ]; then + cp "$pxelinux_file" "$ROOT$tftp_root/pxelinux.0" +fi diff --git a/pxeboot.check b/pxeboot.check new file mode 100755 index 00000000..d7eb9b5c --- /dev/null +++ b/pxeboot.check @@ -0,0 +1,69 @@ +#!/usr/bin/python + +import itertools +import os +import sys +flatten = itertools.chain.from_iterable + +def powerset(iterable): + "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" + s = list(iterable) + return flatten(itertools.combinations(s, r) for r in range(len(s)+1)) + +valid_option_sets = frozenset(( + ('spawn-novlan', frozenset(('PXEBOOT_DEPLOYER_INTERFACE',))), + ('spawn-vlan', frozenset(('PXEBOOT_DEPLOYER_INTERFACE', 'PXEBOOT_VLAN'))), + ('existing-dhcp', frozenset(('PXEBOOT_DEPLOYER_INTERFACE', + 'PXEBOOT_CONFIG_TFTP_ADDRESS'))), + ('existing-server', frozenset(('PXEBOOT_CONFIG_TFTP_ADDRESS', + 'PXEBOOT_ROOTFS_RSYNC_ADDRESS'))), +)) +valid_modes = frozenset(mode for (mode, opt_set in valid_option_sets)) + + +def compute_matches(env): + complete_matches = set() + for mode, opt_set in valid_option_sets: + if all(k in env for k in opt_set): + complete_matches.add(opt_set) + return complete_matches +complete_matches = compute_matches(os.environ) + +def word_separate_options(options): + assert options + s = options.pop(-1) + if options: + s = '%s and %s' % (', '.join(options), s) + return s + + +valid_options = frozenset(flatten(opt_set for (mode, opt_set) + in valid_option_sets)) +matched_options = frozenset(o for o in valid_options) + if o in os.environ) +if not complete_matches: + addable_sets = frozenset(frozenset(os) - matched_options for os in + valid_options + if frozenset(os) - matched_options) + print('Please provide %s' % ' or '.join( + word_separate_options(list(opt_set)) + for opt_set in addable_sets if opt_set)) + sys.exit(1) +elif len(complete_matches) > 1: + removable_sets = frozenset(matched_options - frozenset(os) for os in + powerset(matched_options) + if len(compute_matches(os)) == 1) + print('Please unset %s' % ' or '.join( + word_separate_options(list(opt_set)) + for opt_set in removable_sets if opt_set)) + sys.exit(1) + +if 'PXEBOOT_MODE' in os.environ: + mode = os.environ['PXEBOOT_MODE'] +else: + mode, = (mode for (mode, opt_set) in valid_option_sets + if all(o in os.environ for o in opt_set)) + +if mode not in valid_modes: + print('%s is not a valid PXEBOOT_MODE' % mode) + sys.exit(1) diff --git a/pxeboot.write b/pxeboot.write new file mode 100755 index 00000000..e33da527 --- /dev/null +++ b/pxeboot.write @@ -0,0 +1,679 @@ +#!/usr/bin/env python + + +import collections +import contextlib +import errno +import itertools +import logging +import os +import select +import signal +import shutil +import socket +import string +import StringIO +import subprocess +import sys +import tempfile +import textwrap +import urlparse + +import cliapp + +import morphlib + + +def _int_to_quad_dot(i): + return '.'.join(( + str(i >> 24 & 0xff), + str(i >> 16 & 0xff), + str(i >> 8 & 0xff), + str(i & 0xff))) + + +def _quad_dot_to_int(s): + i = 0 + for octet in s.split('.'): + i <<= 8 + i += int(octet, 10) + return i + + +def _netmask_to_prefixlen(mask): + bs = '{:032b}'.format(mask) + prefix = bs.rstrip('0') + if '0' in prefix: + raise ValueError('abnormal netmask: %s' % + _int_to_quad_dot(mask)) + return len(prefix) + + +def _get_routes(): + routes = [] + with open('/proc/net/route', 'r') as f: + for line in list(f)[1:]: + fields = line.split() + destination, flags, mask = fields[1], fields[3], fields[7] + flags = int(flags, 16) + if flags & 2: + # default route, ignore + continue + destination = socket.ntohl(int(destination, 16)) + mask = socket.ntohl(int(mask, 16)) + prefixlen = _netmask_to_prefixlen(mask) + routes.append((destination, prefixlen)) + return routes + + +class IPRange(object): + def __init__(self, prefix, prefixlen): + self.prefixlen = prefixlen + mask = (1 << prefixlen) - 1 + self.mask = mask << (32 - prefixlen) + self.prefix = prefix & self.mask + @property + def bitstring(self): + return ('{:08b}' * 4).format( + self.prefix >> 24 & 0xff, + self.prefix >> 16 & 0xff, + self.prefix >> 8 & 0xff, + self.prefix & 0xff + )[:self.prefixlen] + def startswith(self, other_range): + return self.bitstring.startswith(other_range.bitstring) + + +def find_subnet(valid_ranges, invalid_ranges): + for vr in valid_ranges: + known_subnets = set(ir for ir in invalid_ranges if ir.startswith(vr)) + prefixlens = set(r.prefixlen for r in known_subnets) + prefixlens.add(32 - 2) # need at least 4 addresses in subnet + prefixlen = min(prefixlens) + if prefixlen <= vr.prefixlen: + # valid subnet is full, move on to next + continue + subnetlen = prefixlen - vr.prefixlen + for prefix in (subnetid + vr.prefix + for subnetid in xrange(1 << subnetlen)): + if any(subnet.prefix == prefix for subnet in known_subnets): + continue + return prefix, prefixlen + + +def _normalise_macaddr(macaddr): + '''pxelinux.0 wants the mac address to be lowercase and - separated''' + digits = (c for c in macaddr.lower() if c in string.hexdigits) + nibble_pairs = grouper(digits, 2) + return '-'.join(''.join(byte) for byte in nibble_pairs) + + +@contextlib.contextmanager +def executor(target_pid): + 'Kills a process if its parent dies' + read_fd, write_fd = os.pipe() + helper_pid = os.fork() + if helper_pid == 0: + try: + os.close(write_fd) + while True: + rlist, _, _ = select.select([read_fd], [], []) + if read_fd in rlist: + d = os.read(read_fd, 1) + if not d: + os.kill(target_pid, signal.SIGKILL) + if d in ('', 'Q'): + os._exit(0) + else: + os._exit(1) + except BaseException as e: + import traceback + traceback.print_exc() + os._exit(1) + os.close(read_fd) + yield + os.write(write_fd, 'Q') + os.close(write_fd) + + +def grouper(iterable, n, fillvalue=None): + "Collect data into fixed-length chunks or blocks" + # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" + args = [iter(iterable)] * n + return itertools.izip_longest(*args, fillvalue=fillvalue) + + +class PXEBoot(morphlib.writeexts.WriteExtension): + @contextlib.contextmanager + def _vlan(self, interface, vlan): + viface = '%s.%s' % (interface, vlan) + self.status(msg='Creating vlan %(viface)s', viface=viface) + subprocess.check_call(['vconfig', 'add', interface, str(vlan)]) + try: + yield viface + finally: + self.status(msg='Destroying vlan %(viface)s', viface=viface) + subprocess.call(['vconfig', 'rem', viface]) + + @contextlib.contextmanager + def _static_ip(self, iface): + valid_ranges = set(( + IPRange(_quad_dot_to_int('192.168.0.0'), 16), + IPRange(_quad_dot_to_int('172.16.0.0'), 12), + IPRange(_quad_dot_to_int('10.0.0.0'), 8), + )) + invalid_ranges = set(IPRange(prefix, prefixlen) + for (prefix, prefixlen) in _get_routes()) + prefix, prefixlen = find_subnet(valid_ranges, invalid_ranges) + netaddr = prefix + dhcp_server_ip = netaddr + 1 + client_ip = netaddr + 2 + broadcast_ip = prefix | ((1 << (32 - prefixlen)) - 1) + self.status(msg='Assigning ip address %(ip)s/%(prefixlen)d to ' + 'iface %(iface)s', + ip=_int_to_quad_dot(dhcp_server_ip), prefixlen=prefixlen, + iface=iface) + subprocess.check_call(['ip', 'addr', 'add', + '{}/{}'.format(_int_to_quad_dot(dhcp_server_ip), + prefixlen), + 'broadcast', _int_to_quad_dot(broadcast_ip), + 'scope', 'global', + 'dev', iface]) + try: + yield (dhcp_server_ip, client_ip, broadcast_ip) + finally: + self.status(msg='Removing ip addresses from iface %(iface)s', + iface=iface) + subprocess.call(['ip', 'addr', 'flush', 'dev', iface]) + + @contextlib.contextmanager + def _up_interface(self, iface): + self.status(msg='Bringing interface %(iface)s up', iface=iface) + subprocess.check_call(['ip', 'link', 'set', iface, 'up']) + try: + yield + finally: + self.status(msg='Bringing interface %(iface)s down', iface=iface) + subprocess.call(['ip', 'link', 'set', iface, 'down']) + + @contextlib.contextmanager + def static_ip(self, interface): + with self._static_ip(iface=interface) as (host_ip, client_ip, + broadcast_ip), \ + self._up_interface(iface=interface): + yield (_int_to_quad_dot(host_ip), + _int_to_quad_dot(client_ip), + _int_to_quad_dot(broadcast_ip)) + + @contextlib.contextmanager + def vlan(self, interface, vlan): + with self._vlan(interface=interface, vlan=vlan) as viface, \ + self.static_ip(interface=viface) \ + as (host_ip, client_ip, broadcast_ip): + yield host_ip, client_ip, broadcast_ip + + @contextlib.contextmanager + def _tempdir(self): + td = tempfile.mkdtemp() + print 'Created tempdir:', td + try: + yield td + finally: + shutil.rmtree(td, ignore_errors=True) + + @contextlib.contextmanager + def _remote_tempdir(self, hostname, template): + td = cliapp.ssh_runcmd(hostname, ['mktemp', '-d', template]).strip() + try: + yield td + finally: + cliapp.ssh_runcmd(hostname, ['find', td, '-delete']) + + def _serve_tftpd(self, sock, host, port, interface, tftproot): + self.settings.progname = 'tftp server' + self._set_process_name() + while True: + logging.debug('tftpd waiting for connections') + # recvfrom with MSG_PEEK is how you accept UDP connections + _, peer = sock.recvfrom(0, socket.MSG_PEEK) + conn = sock + logging.debug('Connecting socket to peer: ' + repr(peer)) + conn.connect(peer) + # The existing socket is now only serving that peer, so we need to + # bind a new UDP socket to the wildcard address, which needs the + # port to be in REUSEADDR mode. + conn.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + logging.debug('Binding replacement socket to ' + repr((host, port))) + sock.bind((host, port)) + + logging.debug('tftpd server handing connection to tftpd') + tftpd_serve = ['tftpd', '-rl', tftproot] + ret = subprocess.call(args=tftpd_serve, stdin=conn, + stdout=conn, stderr=None, close_fds=True) + # It's handy to turn off REUSEADDR after the rebinding, + # so we can protect against future bind attempts on this port. + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 0) + logging.debug('tftpd exited %d' % ret) + os._exit(0) + + @contextlib.contextmanager + def _spawned_tftp_server(self, tftproot, host_ip, interface, tftp_port=0): + # inetd-style launchers tend to bind UDP ports with SO_REUSEADDR, + # because they need to have multiple ports bound, one for recieving + # all connection attempts on that port, and one for each concurrent + # connection with a peer + # this makes detecting whether there's a tftpd running difficult, so + # we'll instead use an ephemeral port and configure the PXE boot to + # use that tftp server for the kernel + s = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) + s.bind((host_ip, tftp_port)) + host, port = s.getsockname() + self.status(msg='Bound listen socket to %(host)s, %(port)s', + host=host, port=port) + pid = os.fork() + if pid == 0: + try: + self._serve_tftpd(sock=s, host=host, port=port, + interface=interface, tftproot=tftproot) + except BaseException as e: + import traceback + traceback.print_exc() + os._exit(1) + s.close() + with executor(pid): + try: + yield port + finally: + self.status(msg='Killing tftpd listener pid=%(pid)d', + pid=pid) + os.kill(pid, signal.SIGKILL) + + @contextlib.contextmanager + def tftp_server(self, host_ip, interface, tftp_port=0): + with self._tempdir() as tftproot, \ + self._spawned_tftp_server(tftproot=tftproot, host_ip=host_ip, + interface=interface, + tftp_port=tftp_port) as tftp_port: + self.status(msg='Serving tftp root %(tftproot)s, on port %(port)d', + port=tftp_port, tftproot=tftproot) + yield tftp_port, tftproot + + @contextlib.contextmanager + def _local_copy(self, src, dst): + self.status(msg='Installing %(src)s to %(dst)s', + src=src, dst=dst) + shutil.copy2(src=src, dst=dst) + try: + yield + finally: + self.status(msg='Removing %(dst)s', dst=dst) + os.unlink(dst) + + def local_pxelinux(self, tftproot): + return self._local_copy('/usr/share/syslinux/pxelinux.0', + os.path.join(tftproot, 'pxelinux.0')) + + def local_kernel(self, rootfs, tftproot): + return self._local_copy(os.path.join(rootfs, 'boot/vmlinuz'), + os.path.join(tftproot, 'kernel')) + + @contextlib.contextmanager + def _remote_copy(self, hostname, src, dst): + with open(src, 'r') as f: + cliapp.ssh_runcmd(hostname, + ['install', '-D', '-m644', '/proc/self/fd/0', + dst], stdin=f, stdout=None, stderr=None) + try: + yield + finally: + cliapp.ssh_runcmd(hostname, ['rm', dst]) + + @contextlib.contextmanager + def remote_kernel(self, rootfs, tftp_url, macaddr): + for name in ('vmlinuz', 'zImage', 'uImage'): + kernel_path = os.path.join(rootfs, 'boot', name) + if os.path.exists(kernel_path): + break + else: + raise cliapp.AppException('Failed to locate kernel') + url = urlparse.urlsplit(tftp_url) + basename = '{}-kernel'.format(_normalise_macaddr(macaddr)) + target_path = os.path.join(url.path, basename) + with self._remote_copy(hostname=url.hostname, src=kernel_path, + dst=target_path): + yield basename + + @contextlib.contextmanager + def local_nfsroot(self, rootfs, target_ip): + nfsroot = target_ip + ':' + rootfs + self.status(msg='Exporting %(nfsroot)s as local nfsroot', + nfsroot=nfsroot) + cliapp.runcmd(['exportfs', '-o', 'ro,insecure,no_root_squash', + nfsroot]) + try: + yield + finally: + self.status(msg='Removing %(nfsroot)s from local nfsroots', + nfsroot=nfsroot) + cliapp.runcmd(['exportfs', '-u', nfsroot]) + + @contextlib.contextmanager + def remote_nfsroot(self, rootfs, rsync_url, macaddr): + url = urlparse.urlsplit(rsync_url) + template = os.path.join(url.path, 'nfsroot.XXXXXXXXXX') + with self._remote_tempdir(hostname=url.hostname, template=template) \ + as tempdir: + nfsroot = urlparse.urlunsplit(url.scheme, url.netloc, tempdir, + url.query, url.fragment) + cliapp.runcmd(['rsync', '-asXSPH', '--delete', rootfs, nfsroot], + stdin=None, stdout=None, stderr=None) + yield basename + + @staticmethod + def _write_pxe_config(fh, kernel_tftp_url, rootfs_nfs_url, extra_args=''): + fh.write(textwrap.dedent('''\ + DEFAULT default + LABEL default + LINUX {kernel_url} + APPEND root=/dev/nfs ip=dhcp nfsroot={rootfs_nfs_url} {extra_args} + ''').format(kernel_url=kernel_tftp_url, + rootfs_nfs_url=rootfs_nfs_url, extra_args=extra_args)) + fh.flush() + + @contextlib.contextmanager + def local_pxeboot_config(self, tftproot, macaddr, ip, tftp_port, + nfsroot_dir): + kernel_tftp_url = 'tftp://{}:{}/kernel'.format(ip, tftp_port) + rootfs_nfs_url = '{}:{}'.format(ip, nfsroot_dir) + pxe_cfg_filename = _normalise_macaddr(macaddr) + pxe_cfg_path = os.path.join(tftproot, 'pxelinux.cfg', pxe_cfg_filename) + os.makedirs(os.path.dirname(pxe_cfg_path)) + with open(pxe_cfg_path, 'w') as f: + self._write_pxe_config(fh=f, kernel_tftp_url=kernel_tftp_url, + rootfs_nfs_url=rootfs_nfs_url, + extra_args=os.environ.get('KERNEL_ARGS','')) + try: + yield + finally: + os.unlink(pxe_cfg_path) + + @contextlib.contextmanager + def remote_pxeboot_config(self, tftproot, kernel_tftproot, kernel_subpath, + rootfs_nfsroot, rootfs_subpath, macaddr): + rootfs_nfs_url = '{}:{}/{}'.format(ip, rootfs_nfsroot, rootfs_subpath) + kernel_tftp_url = '{}/{}'.format(kernel_tftproot, kernel_subpath) + pxe_cfg_filename = _normalise_macaddr(macaddr) + url = urlparse.urlsplit(tftproot) + inst_cfg_path = os.path.join(url.path, 'pxelinux.cfg', + pxe_cfg_filename) + with tempfile.NamedTemporaryFile() as f: + self._write_pxe_config(fh=f, kernel_tftp_url=kernel_tftp_url, + rootfs_nfs_url=rootfs_nfs_url, + extra_args=os.environ.get('KERNEL_ARGS','')) + with self._remote_copy(hostname=url.hostname, src=f.name, + dst=inst_cfg_path): + yield + + @contextlib.contextmanager + def dhcp_server(self, interface, host_ip, target_ip, broadcast_ip): + with self._tempdir() as td: + leases_path = os.path.join(td, 'leases') + config_path = os.path.join(td, 'config') + stdout_path = os.path.join(td, 'stdout') + stderr_path = os.path.join(td, 'stderr') + pidfile_path = os.path.join(td, 'pid') + with open(config_path, 'w') as f: + f.write(textwrap.dedent('''\ + start {target_ip} + end {target_ip} + interface {interface} + max_leases 1 + lease_file {leases_path} + pidfile {pidfile_path} + boot_file pxelinux.0 + option dns {host_ip} + option broadcast {broadcast_ip} + ''').format(**locals())) + with open(stdout_path, 'w') as stdout, \ + open(stderr_path, 'w') as stderr: + sp = subprocess.Popen(['udhcpd', '-f', config_path], cwd=td, + stdin=open(os.devnull), stdout=stdout, + stderr=stderr) + try: + with executor(sp.pid): + yield + finally: + sp.terminate() + + def get_interface_ip(self, interface): + ip_addresses = [] + info = cliapp.runcmd(['ip', '-o', '-f', 'inet', + 'addr', 'show', interface]).rstrip('\n') + if info: + tokens = collections.deque(info.split()[1:]) + ifname = tokens.popleft() + while tokens: + tok = tokens.popleft() + if tok == 'inet': + address = tokens.popleft() + address, netmask = address.split('/') + ip_addresses.append(address) + elif tok == 'brd': + tokens.popleft() # not interested in broadcast address + elif tok == 'scope': + tokens.popleft() # not interested in scope tag + else: + continue + if not ip_addresses: + raise cliapp.AppException('Interface %s has no addresses' + % interface) + if len(ip_addresses) > 1: + warnings.warn('Interface %s has multiple addresses, ' + 'using first (%s)' % (interface, ip_addresses[0])) + return ip_addresses[0] + + def ipmi_set_target_vlan(self): + if any(env_var.startswith('IPMI_') for env_var in os.environ): + # Needs IPMI_USER, IPMI_PASSWORD, IPMI_HOST and PXEBOOT_VLAN + default = textwrap.dedent('''\ + ipmitool -I lanplus -U "$IPMI_USER" -E -H "$IPMI_HOST" \\ + lan set 1 vlan id "$PXEBOOT_VLAN" + ''') + else: + default = textwrap.dedent('''\ + while true; do + echo Please set the target\\'s vlan to $PXEBOOT_VLAN, \\ + then enter \\"vlanned\\" + read + if [ "$REPLY" = vlanned ]; then + break + fi + done + ''') + command = os.environ.get('PXEBOOT_SET_VLAN_COMMAND', default) + subprocess.check_call(['sh', '-euc', command, '-']) + + def ipmi_pxe_reboot_target(self): + if any(env_var.startswith('IPMI_') for env_var in os.environ): + # Needs IPMI_USER, IPMI_PASSWORD, IPMI_HOST and PXEBOOT_VLAN + default = textwrap.dedent('''\ + set -- ipmitool -I lanplus -U "$IPMI_USER" -E -H "$IPMI_HOST" + "$@" chassis bootdev pxe + "$@" chassis power reset + ''') + else: + default = textwrap.dedent('''\ + while true; do + echo Please reboot the target in PXE mode, then\\ + enter \\"pxe-booted\\" + read + if [ "$REPLY" = pxe-booted ]; then + break + fi + done + ''') + command = os.environ.get('PXEBOOT_PXE_REBOOT_COMMAND', default) + subprocess.check_call(['sh', '-euc', command, '-']) + + def wait_for_target_to_install(self): + command = os.environ.get( + 'PXEBOOT_WAIT_INSTALL_COMMAND', + textwrap.dedent('''\ + while true; do + echo Please wait for the system to install, then \\ + enter \\"installed\\" + read + if [ "$REPLY" = installed ]; then + break + fi + done + ''')) + subprocess.check_call(['sh', '-euc', command, '-']) + + def ipmi_unset_target_vlan(self): + if any(env_var.startswith('IPMI_') for env_var in os.environ): + # Needs IPMI_USER, IPMI_PASSWORD, IPMI_HOST + default = textwrap.dedent('''\ + ipmitool -I lanplus -U "$IPMI_USER" -E -H "$IPMI_HOST" \\ + lan set 1 vlan id off + ''') + else: + default = textwrap.dedent('''\ + while true; do + echo Please reset the target\\'s vlan, \\ + then enter \\"unvlanned\\" + read + if [ "$REPLY" = unvlanned ]; then + break + fi + done + ''') + command = os.environ.get('PXEBOOT_UNSET_VLAN_COMMAND', default) + subprocess.check_call(['sh', '-euc', command, '-']) + + def ipmi_reboot_target(self): + if any(env_var.startswith('IPMI_') for env_var in os.environ): + # Needs IPMI_USER, IPMI_PASSWORD, IPMI_HOST + default = textwrap.dedent('''\ + ipmitool -I lanplus -U "$IPMI_USER" -E -H "$IPMI_HOST" \\ + chassis power reset + ''') + else: + default = textwrap.dedent('''\ + while true; do + echo Please reboot the target, then\\ + enter \\"rebooted\\" + read + if [ "$REPLY" = rebooted ]; then + break + fi + done + ''') + command = os.environ.get('PXEBOOT_REBOOT_COMMAND', default) + subprocess.check_call(['sh', '-euc', command, '-']) + + def process_args(self, (temp_root, macaddr)): + interface = os.environ.get('PXEBOOT_DEPLOYER_INTERFACE', None) + vlan = os.environ.get('PXEBOOT_VLAN') + if vlan is not None: vlan = int(vlan) + mode = os.environ.get('PXEBOOT_MODE') + if mode is None: + if interface: + if vlan is not None: + mode = 'spawn-vlan' + else: + if 'PXEBOOT_CONFIG_TFTP_ADDRESS' in os.environ: + mode = 'existing-dhcp' + else: + mode = 'spawn-novlan' + else: + mode = 'existing-server' + assert mode in ('spawn-vlan', 'spawn-novlan', 'existing-dhcp', + 'existing-server') + if mode == 'spawn-vlan': + with self.vlan(interface=interface, vlan=vlan) \ + as (host_ip, target_ip, broadcast_ip), \ + self.tftp_server(host_ip=host_ip, interface=interface) \ + as (tftp_port, tftproot), \ + self.local_pxelinux(tftproot=tftproot), \ + self.local_kernel(rootfs=temp_root, tftproot=tftproot), \ + self.local_nfsroot(rootfs=temp_root, target_ip=target_ip), \ + self.local_pxeboot_config(tftproot=tftproot, macaddr=macaddr, + ip=host_ip, tftp_port=tftp_port, + nfsroot_dir=temp_root), \ + self.dhcp_server(interface=interface, host_ip=host_ip, + target_ip=target_ip, + broadcast_ip=broadcast_ip): + self.ipmi_set_target_vlan() + self.ipmi_pxe_reboot_target() + self.wait_for_target_to_install() + self.ipmi_unset_target_vlan() + self.ipmi_reboot_target() + elif mode == 'spawn-novlan': + with self.static_ip(interface=interface) as (host_ip, target_ip, + broadcast_ip), \ + self.tftp_server(host_ip=host_ip, interface=interface, + tftp_port=69) \ + as (tftp_port, tftproot), \ + self.local_pxelinux(tftproot=tftproot), \ + self.local_kernel(rootfs=temp_root, tftproot=tftproot), \ + self.local_nfsroot(rootfs=temp_root, target_ip=target_ip), \ + self.local_pxeboot_config(tftproot=tftproot, macaddr=macaddr, + ip=host_ip, tftp_port=tftp_port, + nfsroot_dir=temp_root), \ + self.dhcp_server(interface=interface, host_ip=host_ip, + target_ip=target_ip, + broadcast_ip=broadcast_ip): + self.ipmi_pxe_reboot_target() + self.wait_for_target_to_install() + self.ipmi_reboot_target() + elif mode == 'existing-dhcp': + ip = self.get_interface_ip(interface) + config_tftpaddr = os.environ['PXEBOOT_CONFIG_TFTP_ADDRESS'] + with self.tftp_server(ip=ip, interface=interface, tftp_port=69) \ + as (tftp_port, tftproot), \ + self.local_kernel(rootfs=temp_root, tftproot=tftproot), \ + self.local_nfsroot(rootfs=temp_root, client_ip=''): + kernel_tftproot = 'tftp://{}:{}/'.format(ip, tftp_port) + rootfs_nfsroot = '{}:{}'.format(ip, temp_root) + with self.remote_pxeboot_config( + tftproot=config_tftpaddr, + kernel_tftproot=kernel_tftproot, + kernel_subpath='kernel', + rootfs_nfsroot=nfsroot, + rootfs_subpath='', + macaddr=macaddr): + self.ipmi_pxe_reboot_target() + self.wait_for_target_to_install() + self.ipmi_reboot_target() + elif mode == 'existing-server': + config_tftpaddr = os.environ[ 'PXEBOOT_CONFIG_TFTP_ADDRESS'] + kernel_tftpaddr = os.environ.get('PXEBOOT_KERNEL_TFTP_ADDRESS', + config_tftpaddr) + url = urlparse.urlsplit(kernel_tftpaddr) + kernel_tftproot = os.environ.get('PXEBOOT_KERNEL_TFTP_ROOT', + 'tftp://%s/%s' % (url.hostname, + url.path)) + rootfs_rsync = os.environ['PXEBOOT_ROOTFS_RSYNC_ADDRESS'] + url = urlparse.urlsplit(rootfs_rsync) + nfsroot = os.environ.get('PXEBOOT_ROOTFS_NFSROOT', + '%s:%s' % (url.hostname, url.path)) + with self.remote_kernel(rootfs=temp_root, url=kernel_tftpaddr, + macaddr=macaddr) as kernel_subpath, \ + self.remote_nfsroot(rootfs=temp_root, rsync_url=rootfs_rsync)\ + as rootfs_subpath, \ + self.remote_pxeboot_config(tftproot=config_tftpaddr, + kernel_tftproot=kernel_tftproot, + kernel_subpath=kernel_subpath, + rootfs_nfsroot=nfsroot, + rootfs_subpath=rootfs_subpath, + macaddr=macaddr): + self.ipmi_pxe_reboot_target() + self.wait_for_target_to_install() + self.ipmi_reboot_target() + else: + cliapp.AppException('Invalid PXEBOOT_MODE: %s' % mode) + +PXEBoot().run() diff --git a/pxeboot.write.help b/pxeboot.write.help new file mode 100644 index 00000000..58a86957 --- /dev/null +++ b/pxeboot.write.help @@ -0,0 +1,123 @@ +help: > + pxeboot.write extension. + + + This write extension will serve your generated system over NFS to + the target system. + + In all modes `location` is the mac address of the interface that + the target will PXE boot from. This is used so that the target will + load the configuration file appropriate to it. + + + # `PXEBOOT_MODE` + + + It has 4 modes, which can be specified with PXEBOOT_MODE, or inferred + from which parameters are passed: + + + ## spawn-vlan + + + Specify PXEBOOT_DEPLOYER_INTERFACE and PXEBOOT_VLAN to configure + the target to pxeboot on a vlan and spawn a dhcp, nfs and tftp + server. This is potentially the fastest, since it doesn't need to + copy data to other servers. + + This will create a vlan interface for the interface specified in + PXEBOOT_DEPLOYER_INTERFACE and spawn a dhcp server which serves + pxelinux.0, a configuration file and a kernel image from itself. + + The configuration file informs the target to boot with a kernel + command-line that uses an NFS root served from the deployment host. + + + ## spawn-novlan + + + Specify PXEBOOT_DEPLOYER_INTERFACE without PXEBOOT_VLAN to configure + like `spawn-vlan`, but without creating the vlan interface. + + This assumes that you have exclusive access to the interface, such + as if you're plugged in to the device directly, or your interface + is vlanned by your infrastructure team. + + This is required if you are serving from a VM and bridging it to the + correct network via macvtap. For this to work, you need to macvtap + bridge to a pre-vlanned interface on your host machine. + + + ## existing-dhcp + + + Specify PXEBOOT_DEPLOYER_INTERFACE and PXEBOOT_CONFIG_TFTP_ADDRESS + to put config on an existing tftp server, already configured by the + dhcp server. + + This spawns a tftp server and configures the local nfs server, but + doesn't spawn a dhcp server. This is useful if you have already got a + dhcp server that serves PXE images. + + PXEBOOT_CONFIG_TFTP_ADDRESS is a URL in the form `sftp://$HOST/$PATH`. + The configuration file is copied to `$PATH/pxelinux.cfg/` on the + target identified by `$HOST`. + + + ## existing-server + + + Specify at least PXEBOOT_CONFIG_TFTP_ADDRESS and + PXEBOOT_ROOTFS_RSYNC_ADDRESS to specify existing servers to copy + config, kernels and the rootfs to. + + Configuration is copied to the target as `existing-dhcp`. + + Specify PXEBOOT_KERNEL_TFTP_ADDRESS if the tftp server that the + kernel must be downloaded from is different to that of the pxelinux + configuration file. + + PXEBOOT_ROOTFS_RSYNC_ADDRESS is a rsync URL describing where to copy + nfsroots to where they will be exported by the NFS server. + + Specify PXEBOOT_ROOTFS_NFSROOT if the nfsroot appears as a different + address from the target's perspective. + + + # IPMI commands + + + After the PXE boot has been set up, the target needs to be rebooted + in PXE mode. + + If the target is IPMI enabled, you can set `IPMI_USER`, `IPMI_HOST` + and `IPMI_PASSWORD` to make it reboot the target into netboot mode + automatically. + + If they are not specified, then instructions will be displayed, and + `pxeboot.write` will wait for you to finish. + + If there are command-line automation tools for rebooting the target + in netboot mode, then appropriate commands can be defined in the + following variables. + + + ## PXEBOOT_PXE_REBOOT_COMMAND + + + This command will be used to reboot the target device with its boot + device set to PXE boot. + + + ## PXEBOOT_REBOOT_COMMAND + + + This command will be used to reboot the target device in its default + boot mode. + + + ## PXEBOOT_WAIT_INSTALL_COMMAND + + + If it is possible for the target to notify you that it has finished + installing, you can put a command in here to wait for the event. diff --git a/scripts/cycle.sh b/scripts/cycle.sh index 0198c1f9..c0e2aa67 100755 --- a/scripts/cycle.sh +++ b/scripts/cycle.sh @@ -15,22 +15,31 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. usage() { - echo "Usage: cycle.sh some-system some-cluster" + echo "Usage: cycle.sh some-system some-cluster [newversion]" echo echo "This builds and deploys the current checked out version of" echo "some-system, applying it as a self-upgrade to the system you" echo "are working in, using configuration from some-cluster." - echo "The upgrade is labelled TEST, and is set to be the default for" - echo "next boot." + echo "The upgrade is labelled TEST by default, or [newversion] if" + echo "specified, and is set to be the default for next boot." } -if [ -z "$1" ] || [ -z "$2" ] ; then +if [ -z "$1" ] || [ -z "$2" ] || [ ! -z "$4" ] ; then usage exit 1 fi -if system-version-manager get-running | grep -q '^TEST$'; then - echo "You are currently running the TEST system." +newversion=TEST +if [ ! -z "$3" ] ; then + newversion=$3 + if (echo "$newversion" | grep ' ' > /dev/null 2>&1) ; then + echo 'Version label must not contain spaces.' + exit 1 + fi +fi + +if system-version-manager get-running | grep -q "^$newversion$"; then + echo "You are currently running the $newversion system." echo "Maybe you want to boot into a different system version?" exit 1 fi @@ -38,13 +47,15 @@ fi set -e set -v -system-version-manager set-default factory -if system-version-manager list | grep -q '^TEST$'; then - system-version-manager remove TEST +runningversion=`system-version-manager get-running` +system-version-manager set-default $runningversion +if system-version-manager list | grep -q "^$newversion$"; then + system-version-manager remove $newversion fi morph gc morph build "$1" sed -i "s|^- morph: .*$|- morph: $1|" "$2" -morph deploy --upgrade "$2" self.HOSTNAME=$(hostname) self.VERSION_LABEL=TEST +morph deploy --upgrade "$2" self.HOSTNAME=$(hostname) self.VERSION_LABEL=$newversion +system-version-manager list diff --git a/scripts/release-test b/scripts/release-test index b2bca58d..a1611721 100755 --- a/scripts/release-test +++ b/scripts/release-test @@ -185,6 +185,8 @@ class Deployment(object): @staticmethod def _ssh_host_key_exists(hostname): """Check if an ssh host key exists in known_hosts""" + if not os.path.exists('/root/.ssh/known_hosts'): + return False with open('/root/.ssh/known_hosts', 'r') as known_hosts: return any(line.startswith(hostname) for line in known_hosts) diff --git a/scripts/release-test-os b/scripts/release-test-os new file mode 100755 index 00000000..a886300e --- /dev/null +++ b/scripts/release-test-os @@ -0,0 +1,526 @@ +#!/usr/bin/env python +# +# Copyright 2014 Codethink Ltd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +'''release-test + +This script deploys the set of systems in the cluster morphology it is +instructed to read, to test that they work correctly. + +''' + +import cliapp +import os +import pipes +import shlex +import shutil +import socket +import tempfile +import time +import uuid + +import morphlib + + +class NovaList: + def __init__(self): + self.output = [] + self.lines = [] + self.instance = [] + + def update(self): + self.output = cliapp.runcmd(['nova', 'list']) + self.lines = self.output.split('\n') + self.lines = self.lines[3:-2] + + def get_nova_details_for_instance(self, name): + self.update() + + for line in self.lines: + entries = line.split('|') + stripped_line = [entry.strip() for entry in entries] + if stripped_line.count(name) == 1: + self.instance = stripped_line + + def get_nova_state_for_instance(self, name): + self.get_nova_details_for_instance(name) + if not self.instance: + return + return self.instance[3] + + def get_nova_ip_for_instance(self, name): + self.get_nova_details_for_instance(name) + if not self.instance: + return + + if self.get_nova_state_for_instance(name) != 'ACTIVE': + return + + return self.instance[6] + + def get_nova_ip_for_instance_timeout(self, name, timeout=120): + start_time = time.time() + + while self.get_nova_state_for_instance(name) != 'ACTIVE': + + if time.time() > start_time + timeout: + print "%s not ACTIVE after %i seconds" % (name, timeout) + return + + time.sleep(1) + + ip_addr = self.get_nova_ip_for_instance(name) + if not ip_addr: + return + + if ip_addr.count('=') == 0: + return + + ip_addr = ip_addr[ip_addr.find('=') + 1:] + + if ip_addr.count(',') == 0: + return ip_addr + + return ip_addr[:ip_addr.find(',')] + + + +class MorphologyHelper(object): + + def __init__(self): + self.sb = sb = morphlib.sysbranchdir.open_from_within('.') + defs_repo_path = sb.get_git_directory_name(sb.root_repository_url) + self.defs_repo = morphlib.gitdir.GitDirectory(defs_repo_path) + self.loader = morphlib.morphloader.MorphologyLoader() + self.finder = morphlib.morphologyfinder.MorphologyFinder(self.defs_repo) + + def load_morphology(self, path): + text = self.finder.read_morphology(path) + return self.loader.load_from_string(text) + + @classmethod + def iterate_systems(cls, systems_list): + for system in systems_list: + yield morphlib.util.sanitise_morphology_path(system['morph']) + if 'subsystems' in system: + for subsystem in cls.iterate_systems(system['subsystems']): + yield subsystem + + def iterate_cluster_deployments(cls, cluster_morph): + for system in cluster_morph['systems']: + path = morphlib.util.sanitise_morphology_path(system['morph']) + defaults = system.get('deploy-defaults', {}) + for name, options in system['deploy'].iteritems(): + config = dict(defaults) + config.update(options) + yield path, name, config + + def load_cluster_systems(self, cluster_morph): + for system_path in set(self.iterate_systems(cluster_morph['systems'])): + system_morph = self.load_morphology(system_path) + yield system_path, system_morph + + +class TimeoutError(cliapp.AppException): + + """Error to be raised when a connection waits too long""" + + def __init__(self, msg): + super(TimeoutError, self).__init__(msg) + + +class VMHost(object): + + def __init__(self, user, address, disk_path): + self.user = user + self.address = address + self.disk_path = disk_path + + @property + def ssh_host(self): + return '{user}@{address}'.format(user=self.user, address=self.address) + + def runcmd(self, *args, **kwargs): + cliapp.ssh_runcmd(self.ssh_host, *args, **kwargs) + + +class DeployedSystemInstance(object): + + def __init__(self, deployment, config, host_machine, vm_id, rootfs_path, + ip_addr, hostname): + self.deployment = deployment + self.config = config + self.ip_address = ip_addr + self.host_machine = host_machine + self.vm_id = vm_id + self.rootfs_path = rootfs_path + self.hostname = hostname + + @property + def ssh_host(self): + # TODO: Stop assuming we ssh into test instances as root + return 'root@{host}'.format(host=self.ip_address) + + def runcmd(self, argv, chdir='.', **kwargs): + ssh_cmd = ['ssh', '-o', 'StrictHostKeyChecking=no', + '-o', 'UserKnownHostsFile=/dev/null', self.ssh_host] + cmd = ['sh', '-c', 'cd "$1" && shift && exec "$@"', '-', chdir] + cmd += argv + ssh_cmd.append(' '.join(map(pipes.quote, cmd))) + return cliapp.runcmd(ssh_cmd, **kwargs) + + def _wait_for_dhcp(self, timeout): + '''Block until given hostname resolves successfully. + + Raises TimeoutError if the hostname has not appeared in 'timeout' + seconds. + + ''' + start_time = time.time() + while True: + try: + socket.gethostbyname(self.ip_address) + return + except socket.gaierror: + pass + if time.time() > start_time + timeout: + raise TimeoutError("Host %s did not appear after %i seconds" % + (self.ip_address, timeout)) + time.sleep(0.5) + + def _wait_for_ssh(self, timeout): + """Wait until the deployed VM is responding via SSH""" + start_time = time.time() + while True: + try: + self.runcmd(['true'], stdin=None, stdout=None, stderr=None) + return + except cliapp.AppException: + # TODO: Stop assuming the ssh part of the command is what failed + if time.time() > start_time + timeout: + raise TimeoutError("%s sshd did not start after %i seconds" + % (self.ip_address, timeout)) + time.sleep(0.5) + + def _wait_for_cloud_init(self, timeout): + """Wait until cloud init has resized the disc""" + start_time = time.time() + while True: + try: + out = self.runcmd(['sh', '-c', + 'test -e "$1" && echo exists || echo does not exist', + '-', + '/root/cloud-init-finished']) + except: + import traceback + traceback.print_exc() + raise + if out.strip() == 'exists': + return + if time.time() > start_time + timeout: + raise TimeoutError("Disc size not increased after %i seconds" + % (timeout)) + time.sleep(3) + + def wait_until_online(self, timeout=120): + self._wait_for_dhcp(timeout) + self._wait_for_ssh(timeout) + self._wait_for_cloud_init(timeout) + print "Test system %s ready to run tests." % (self.hostname) + + def delete(self): + # Stop and remove VM + print "Deleting %s test instance" % (self.hostname) + try: + cliapp.runcmd(['nova', 'delete', self.hostname]) + except cliapp.AppException as e: + # TODO: Stop assuming that delete failed because the instance + # wasn't running + print "- Failed" + pass + print "Deleting %s test disc image" % (self.hostname) + try: + cliapp.runcmd(['nova', 'image-delete', self.hostname]) + except cliapp.AppException as e: + # TODO: Stop assuming that image-delete failed because it was + # already removed + print "- Failed" + pass + + +class Deployment(object): + + def __init__(self, cluster_path, name, deployment_config, + host_machine, net_id): + self.cluster_path = cluster_path + self.name = name + self.deployment_config = deployment_config + self.host_machine = host_machine + self.net_id = net_id + + @staticmethod + def _ssh_host_key_exists(hostname): + """Check if an ssh host key exists in known_hosts""" + if not os.path.exists('/root/.ssh/known_hosts'): + return False + with open('/root/.ssh/known_hosts', 'r') as known_hosts: + return any(line.startswith(hostname) for line in known_hosts) + + def _update_known_hosts(self): + if not self._ssh_host_key_exists(self.host_machine.address): + with open('/root/.ssh/known_hosts', 'a') as known_hosts: + cliapp.runcmd(['ssh-keyscan', self.host_machine.address], + stdout=known_hosts) + + @staticmethod + def _generate_sshkey_config(tempdir, config): + manifest = os.path.join(tempdir, 'manifest') + with open(manifest, 'w') as f: + f.write('0040700 0 0 /root/.ssh\n') + f.write('overwrite 0100600 0 0 /root/.ssh/authorized_keys\n') + authkeys = os.path.join(tempdir, 'root', '.ssh', 'authorized_keys') + os.makedirs(os.path.dirname(authkeys)) + with open(authkeys, 'w') as auth_f: + with open('/root/.ssh/id_rsa.pub', 'r') as key_f: + shutil.copyfileobj(key_f, auth_f) + + install_files = shlex.split(config.get('INSTALL_FILES', '')) + install_files.append(manifest) + yield 'INSTALL_FILES', ' '.join(pipes.quote(f) for f in install_files) + + def deploy(self): + self._update_known_hosts() + + hostname = str(uuid.uuid4()) + vm_id = hostname + image_base = self.host_machine.disk_path + rootpath = '{image_base}/{hostname}.img'.format(image_base=image_base, + hostname=hostname) + loc = 'http://{ssh_host}:5000/v2.0'.format( + ssh_host=self.host_machine.ssh_host, id=vm_id, path=rootpath) + + options = { + 'type': 'openstack', + 'location': loc, + 'HOSTNAME': hostname, + 'DISK_SIZE': '5G', + 'RAM_SIZE': '2G', + 'VERSION_LABEL': 'release-test', + 'OPENSTACK_USER': os.environ['OS_USERNAME'], + 'OPENSTACK_TENANT': os.environ['OS_TENANT_NAME'], + 'OPENSTACK_PASSWORD': os.environ['OS_PASSWORD'], + 'OPENSTACK_IMAGENAME': hostname, + 'CLOUD_INIT': 'yes', + 'KERNEL_ARGS': 'console=tty0 console=ttyS0', + } + + tempdir = tempfile.mkdtemp() + try: + options.update( + self._generate_sshkey_config(tempdir, + self.deployment_config)) + + # Deploy the image to openstack + args = ['morph', 'deploy', self.cluster_path, self.name] + for k, v in options.iteritems(): + args.append('%s.%s=%s' % (self.name, k, v)) + cliapp.runcmd(args, stdin=None, stdout=None, stderr=None) + + config = dict(self.deployment_config) + config.update(options) + + # Boot an instance from the image + args = ['nova', 'boot', + '--flavor', 'm1.medium', + '--image', hostname, + '--user-data', '/usr/lib/mason/os-init-script', + '--nic', "net-id=%s" % (self.net_id), + hostname] + output = cliapp.runcmd(args) + + # Print nova boot output, with adminPass line removed + output_lines = output.split('\n') + for line in output_lines: + if line.find('adminPass') != -1: + password_line = line + output_lines.remove(password_line) + output = '\n'.join(output_lines) + print output + + # Get ip address from nova list + nl = NovaList() + ip_addr = nl.get_nova_ip_for_instance_timeout(hostname) + print "IP address for instance %s: %s" % (hostname, ip_addr) + + return DeployedSystemInstance(self, config, self.host_machine, + vm_id, rootpath, ip_addr, hostname) + finally: + shutil.rmtree(tempdir) + + +class ReleaseApp(cliapp.Application): + + """Cliapp application which handles automatic builds and tests""" + + def add_settings(self): + """Add the command line options needed""" + group_main = 'Program Options' + self.settings.string_list(['deployment-host'], + 'ARCH:HOST:PATH that VMs can be deployed to', + default=None, + group=group_main) + self.settings.string(['trove-host'], + 'Address of Trove for test systems to build from', + default=None, + group=group_main) + self.settings.string(['trove-id'], + 'ID of Trove for test systems to build from', + default=None, + group=group_main) + self.settings.string(['build-ref-prefix'], + 'Prefix of build branches for test systems', + default=None, + group=group_main) + self.settings.string(['net-id'], + 'Openstack network ID', + default=None, + group=group_main) + + @staticmethod + def _run_tests(instance, system_path, system_morph, + (trove_host, trove_id, build_ref_prefix), + morph_helper, systems): + instance.wait_until_online() + + tests = [] + def baserock_build_test(instance): + instance.runcmd(['git', 'config', '--global', 'user.name', + 'Test Instance of %s' % instance.deployment.name]) + instance.runcmd(['git', 'config', '--global', 'user.email', + 'ci-test@%s' % instance.config['HOSTNAME']]) + instance.runcmd(['mkdir', '-p', '/src/ws', '/src/cache', + '/src/tmp']) + def morph_cmd(*args, **kwargs): + # TODO: decide whether to use cached artifacts or not by + # adding --artifact-cache-server= --cache-server= + argv = ['morph', '--log=/src/morph.log', '--cachedir=/src/cache', + '--tempdir=/src/tmp', '--log-max=100M', + '--trove-host', trove_host, '--trove-id', trove_id, + '--build-ref-prefix', build_ref_prefix] + argv.extend(args) + instance.runcmd(argv, **kwargs) + + repo = morph_helper.sb.root_repository_url + ref = morph_helper.defs_repo.HEAD + sha1 = morph_helper.defs_repo.resolve_ref_to_commit(ref) + morph_cmd('init', '/src/ws') + chdir = '/src/ws' + + morph_cmd('checkout', repo, ref, chdir=chdir) + # TODO: Add a morph subcommand that gives the path to the root repository. + repo_path = os.path.relpath( + morph_helper.sb.get_git_directory_name(repo), + morph_helper.sb.root_directory) + chdir = os.path.join(chdir, ref, repo_path) + + instance.runcmd(['git', 'reset', '--hard', sha1], chdir=chdir) + print 'Building test systems for {sys}'.format(sys=system_path) + for to_build_path, to_build_morph in systems.iteritems(): + if to_build_morph['arch'] == system_morph['arch']: + print 'Test building {path}'.format(path=to_build_path) + morph_cmd('build', to_build_path, chdir=chdir, + stdin=None, stdout=None, stderr=None) + print 'Finished Building test systems' + + def python_smoke_test(instance): + instance.runcmd(['python', '-c', 'print "Hello World"']) + + # TODO: Come up with a better way of determining which tests to run + if 'devel' in system_path: + tests.append(baserock_build_test) + else: + tests.append(python_smoke_test) + + for test in tests: + test(instance) + + def deploy_and_test_systems(self, cluster_path, + deployment_hosts, build_test_config, + net_id): + """Run the deployments and tests""" + + version = 'release-test' + + morph_helper = MorphologyHelper() + cluster_morph = morph_helper.load_morphology(cluster_path) + systems = dict(morph_helper.load_cluster_systems(cluster_morph)) + + for system_path, deployment_name, deployment_config in \ + morph_helper.iterate_cluster_deployments(cluster_morph): + + system_morph = systems[system_path] + # We can only test systems in KVM that have a BSP + if not any('bsp' in si['morph'] for si in system_morph['strata']): + continue + + # We can only test systems in KVM that we have a host for + if system_morph['arch'] not in deployment_hosts: + continue + host_machine = deployment_hosts[system_morph['arch']] + deployment = Deployment(cluster_path, deployment_name, + deployment_config, host_machine, + net_id) + + instance = deployment.deploy() + try: + self._run_tests(instance, system_path, system_morph, + build_test_config, morph_helper, systems) + finally: + instance.delete() + + def process_args(self, args): + """Process the command line args and kick off the builds/tests""" + if self.settings['build-ref-prefix'] is None: + self.settings['build-ref-prefix'] = ( + os.path.join(self.settings['trove-id'], 'builds')) + for setting in ('deployment-host', 'trove-host', + 'trove-id', 'build-ref-prefix', 'net-id'): + self.settings.require(setting) + + deployment_hosts = {} + for host_config in self.settings['deployment-host']: + arch, address = host_config.split(':', 1) + user, address = address.split('@', 1) + address, disk_path = address.split(':', 1) + if user == '': + user = 'root' + # TODO: Don't assume root is the user with deploy access + deployment_hosts[arch] = VMHost(user, address, disk_path) + + build_test_config = (self.settings['trove-host'], + self.settings['trove-id'], + self.settings['build-ref-prefix']) + + if len(args) != 1: + raise cliapp.AppException('Usage: release-test CLUSTER') + cluster_path = morphlib.util.sanitise_morphology_path(args[0]) + self.deploy_and_test_systems(cluster_path, deployment_hosts, + build_test_config, + self.settings['net-id']) + + +if __name__ == '__main__': + ReleaseApp().run() diff --git a/strata/NetworkManager-common.morph b/strata/NetworkManager-common.morph index 7233d84f..44adc1fb 100644 --- a/strata/NetworkManager-common.morph +++ b/strata/NetworkManager-common.morph @@ -7,7 +7,8 @@ build-depends: chunks: - name: libndp repo: upstream:libndp - ref: master + ref: f3a3a63d5b5abced8f75731d7b995606933c6e33 + unpetrify-ref: v1.4 build-depends: [] - name: NetworkManager morph: strata/NetworkManager-common/NetworkManager.morph diff --git a/strata/audio-bluetooth.morph b/strata/audio-bluetooth.morph index a24158b6..0c67ee5c 100644 --- a/strata/audio-bluetooth.morph +++ b/strata/audio-bluetooth.morph @@ -10,16 +10,15 @@ chunks: unpetrify-ref: baserock/morph build-depends: [] - name: alsa-lib - morph: strata/audio-bluetooth/alsa-lib.morph repo: upstream:alsa-lib - ref: ab715503853be8d8f365fd157c3cb97ef7a89f7b - unpetrify-ref: baserock/morph + ref: 9cfd1faa27511edbb8bebbab85030125f33590ae + unpetrify-ref: v1.0.28 build-depends: [] - name: alsa-utils morph: strata/audio-bluetooth/alsa-utils.morph repo: upstream:alsa-utils - ref: f12208425051a7abf5ffc87ac2b9d2bd9e096fe1 - unpetrify-ref: baserock/morph + ref: bbf137f66b2c8ce36db73f59ee69d5c443436524 + unpetrify-ref: v1.0.28 build-depends: - alsa-lib - name: libical @@ -70,8 +69,8 @@ chunks: - name: ofono morph: strata/audio-bluetooth/ofono.morph repo: upstream:ofono - ref: a53228f6b1b32d0405c0c3c8e0861d6202ffbba2 - unpetrify-ref: baserock/morph + ref: d05b718cc0b0d367227fbfbf52e60fc5462cc549 + unpetrify-ref: "1.15" build-depends: - mobile-broadband-provider-info - bluez diff --git a/strata/audio-bluetooth/alsa-lib.morph b/strata/audio-bluetooth/alsa-lib.morph deleted file mode 100644 index 1e3015ca..00000000 --- a/strata/audio-bluetooth/alsa-lib.morph +++ /dev/null @@ -1,4 +0,0 @@ -name: alsa-lib -kind: chunk -description: ALSA library -build-system: autotools diff --git a/strata/baserock-import.morph b/strata/baserock-import.morph new file mode 100644 index 00000000..6e875e8c --- /dev/null +++ b/strata/baserock-import.morph @@ -0,0 +1,31 @@ +name: baserock-import +kind: stratum +description: Tools for importing software into Baserock definitions. +build-depends: +- morph: strata/morph-utils.morph +chunks: +- name: ansicolor + repo: upstream:python-packages/ansicolor + ref: 9d3adbaff35bb6cde1d63414a8cc72f572c4d0ef + unpetrify-ref: 0.2.4 + build-depends: [] +- name: python-decorator + repo: upstream:python-packages/python-decorator + ref: b02f7a254c3679dfac57a824e08dd02ced850636 + unpetrify-ref: decorator-3.4.0 + build-depends: [] +- name: networkx + repo: upstream:python-packages/networkx + ref: 8ac796aba866ade1a56b83e30f25ed392ca3512c + unpetrify-ref: networkx-1.9.1 + build-depends: [] +- name: requests-cache + repo: upstream:python-packages/requests-cache + ref: a1b5e65ccd715f1e8434f18f27913715340d6aaf + unpetrify-ref: 0.4.6 + build-depends: [] +- name: baserock-import + repo: baserock:baserock/import + ref: edd18a77973d8cd12b09bc6e3ac06fecd72a7e45 + unpetrify-ref: master + build-depends: [] diff --git a/strata/bsp-armv7-highbank.morph b/strata/bsp-armv7-highbank.morph index d17d9c66..d5ff1264 100644 --- a/strata/bsp-armv7-highbank.morph +++ b/strata/bsp-armv7-highbank.morph @@ -7,6 +7,6 @@ chunks: - name: linux-armv7-highbank morph: strata/bsp-armv7-highbank/linux-armv7-highbank.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] diff --git a/strata/bsp-armv7-highbank/linux-armv7-highbank.morph b/strata/bsp-armv7-highbank/linux-armv7-highbank.morph index 58ad90b4..dfebf69c 100644 --- a/strata/bsp-armv7-highbank/linux-armv7-highbank.morph +++ b/strata/bsp-armv7-highbank/linux-armv7-highbank.morph @@ -37,6 +37,8 @@ configure-commands: - scripts/config -e TMPFS - scripts/config -e TMPFS_POSIX_ACL - scripts/config -e VFAT_FS +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make zImage $MAKEFLAGS diff --git a/strata/bsp-armv7-versatile.morph b/strata/bsp-armv7-versatile.morph index 801f5287..63d79667 100644 --- a/strata/bsp-armv7-versatile.morph +++ b/strata/bsp-armv7-versatile.morph @@ -8,6 +8,6 @@ chunks: - name: linux-armv7-versatile morph: strata/bsp-armv7-versatile/linux-armv7-versatile.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] diff --git a/strata/bsp-armv7-versatile/linux-armv7-versatile.morph b/strata/bsp-armv7-versatile/linux-armv7-versatile.morph index 9b03991b..1da640e7 100644 --- a/strata/bsp-armv7-versatile/linux-armv7-versatile.morph +++ b/strata/bsp-armv7-versatile/linux-armv7-versatile.morph @@ -17,6 +17,8 @@ configure-commands: - scripts/config -e SECCOMP - scripts/config -d DEBUG_STACK_TRACE - scripts/config -e FB_VESA +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make ARCH=arm zImage $MAKEFLAGS diff --git a/strata/bsp-armv7b-highbank.morph b/strata/bsp-armv7b-highbank.morph index fe8c30e1..16dd9a17 100644 --- a/strata/bsp-armv7b-highbank.morph +++ b/strata/bsp-armv7b-highbank.morph @@ -7,6 +7,6 @@ chunks: - name: linux-armv7b-highbank morph: strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] diff --git a/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph b/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph index e3601dc4..ea1a2d5f 100644 --- a/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph +++ b/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph @@ -39,6 +39,8 @@ configure-commands: - scripts/config -e EXT4_USE_FOR_EXT23 - scripts/config -e MSDOS_FS - scripts/config -e VFAT_FS +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make zImage $MAKEFLAGS diff --git a/strata/bsp-armv7b-vexpress-tc2.morph b/strata/bsp-armv7b-vexpress-tc2.morph index 81d6fe48..440271de 100644 --- a/strata/bsp-armv7b-vexpress-tc2.morph +++ b/strata/bsp-armv7b-vexpress-tc2.morph @@ -7,6 +7,6 @@ chunks: - name: linux-armv7b-vexpress-tc2 morph: strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] diff --git a/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph b/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph index e187716d..ecf6b9bc 100644 --- a/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph +++ b/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph @@ -39,6 +39,8 @@ configure-commands: - scripts/config -e EXT4_USE_FOR_EXT23 - scripts/config -e MSDOS_FS - scripts/config -e VFAT_FS +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make zImage vexpress-v2p-ca15_a7.dtb diff --git a/strata/bsp-jetson-devel.morph b/strata/bsp-jetson-devel.morph deleted file mode 100644 index a8fc696a..00000000 --- a/strata/bsp-jetson-devel.morph +++ /dev/null @@ -1,39 +0,0 @@ -name: bsp-jetson-devel -kind: stratum -description: | - Platform-specific chunks for NVIDIA Jetson TK1 development system. - - Support for the Tegra platform is still being developed. This BSP uses - a patched version of Linux 3.10 supplied by NVIDIA, which provides - reliable SATA, USB and networking and runs the CPUs at full speed. - To make use of the graphics acceleration on the Jetson you will need - to use a newer kernel. -build-depends: -- morph: strata/core.morph -chunks: -- name: device-tree-compiler - morph: strata/bsp-jetson-devel/device-tree-compiler.morph - repo: upstream:device-tree-compiler - ref: c92f284c3cf76d471eb27a271de3a51cb45ed058 - unpetrify-ref: baserock/morph - build-depends: [] -- name: u-boot - morph: strata/bsp-jetson-devel/u-boot.morph - repo: upstream:u-boot - ref: c77921345b943cdf5f2f28bbe88c6d8970620d2e - unpetrify-ref: baserock/jetson/u-boot-tegra-next - build-depends: - - device-tree-compiler -- name: linux-jetson-tk1 - morph: strata/bsp-jetson-devel/linux-jetson-tk1.morph - repo: upstream:linux - ref: de3664efca390a8d2fe525a583d17772deee8500 - unpetrify-ref: baserock/arm/tegra-3.10 - build-depends: - - u-boot -- name: bsp-support - morph: strata/bsp-jetson-devel/bsp-support.morph - repo: baserock:baserock/bsp-support - ref: 19bc31ce3198a3c19cdd96d392bde34cb34ed525 - unpetrify-ref: baserock/arm/tegra-3.10 - build-depends: [] diff --git a/strata/bsp-jetson-devel/linux-jetson-tk1.morph b/strata/bsp-jetson-devel/linux-jetson-tk1.morph deleted file mode 100644 index 3494f62b..00000000 --- a/strata/bsp-jetson-devel/linux-jetson-tk1.morph +++ /dev/null @@ -1,53 +0,0 @@ -name: linux-jetson-tk1 -kind: chunk -configure-commands: -- make ARCH=arm tegra12_defconfig -- scripts/config -d KERNEL_LZO -- scripts/config -e KERNEL_GZIP -- scripts/config -e NAMESPACES -- scripts/config -e PACKET -- scripts/config -e SATA_AHCI -- scripts/config -e ATA_GENERIC -- scripts/config -e HAVE_IDE -- scripts/config -d BLK_DEV_IDE_SATA -- scripts/config -e BTRFS_FS -- scripts/config -e BTRFS_FS_POSIX_ACL -- scripts/config -e DEVTMPFS -- scripts/config -e DEVTMPFS_MOUNT -- scripts/config -e CONFIG_FHANDLE -- scripts/config -e CGROUPS -- scripts/config -e AUTOFS4_FS -- scripts/config --set-str UEVENT_HELPER_PATH '' -- scripts/config -e EXT2_FS -- scripts/config -e EXT2_FS_XATTR -- scripts/config -e EXT2_FS_POSIX_ACL -- scripts/config -e EXT2_FS_SECURITY -- scripts/config -e EXT2_FS_XIP -- scripts/config -e EXT3_FS -- scripts/config -d EXT3_DEFAULTS_TO_ORDERED -- scripts/config -e EXT3_FS_XATTR -- scripts/config -e EXT3_FS_POSIX_ACL -- scripts/config -e EXT3_FS_SECURITY -- scripts/config -e EXT4_FS -- scripts/config -e EXT4_FS_XATTR -- scripts/config -e EXT4_FS_POSIX_ACL -- scripts/config -e EXT4_FS_SECURITY -- scripts/config -d EXT4_DEBUG -- scripts/config -d JBD_DEBUG -- scripts/config -d JBD2_DEBUG -- scripts/config -e BLK_DEV_LOOP -- scripts/config -d BLK_DEV_CRYPTOLOOP -- scripts/config --set-val BLK_DEV_LOOP_MIN_COUNT 8 -- scripts/config -e IKCONFIG -- scripts/config -e IKCONFIG_PROC -- scripts/config -e SECCOMP -- scripts/config -d DEBUG_STACK_TRACE -- scripts/config -e NFSD -- scripts/config -e NFSD_V3 -- yes '' | make ARCH=arm oldconfig -build-commands: -- make $MAKEFLAGS ARCH=arm LOADADDR=0x80200000 zImage dtbs -install-commands: -- mkdir -p "$DESTDIR"/boot -- cp arch/arm/boot/zImage "$DESTDIR"/boot/zImage -- cp arch/arm/boot/dts/tegra124-pm375.dtb "$DESTDIR"/boot/. diff --git a/strata/bsp-jetson-genivi/bsp-support.morph b/strata/bsp-jetson-genivi/bsp-support.morph deleted file mode 100644 index 23524ac7..00000000 --- a/strata/bsp-jetson-genivi/bsp-support.morph +++ /dev/null @@ -1,6 +0,0 @@ -name: bsp-support -kind: chunk -install-commands: -- install -o 0 -g 0 -m 755 -D nv-ondemand-cpufreq-governor.service "$DESTDIR/usr/lib/systemd/system/nv-ondemand-cpufreq-governor.service" -- install -d "$DESTDIR/usr/lib/systemd/system/sysinit.target.wants" -- ln -s /usr/lib/systemd/system/nv-ondemand-cpufreq-governor.service "$DESTDIR/usr/lib/systemd/system/sysinit.target.wants/nv-ondemand-cpufreq-governor.service" diff --git a/strata/bsp-jetson-genivi/device-tree-compiler.morph b/strata/bsp-jetson-genivi/device-tree-compiler.morph deleted file mode 100644 index 8abfafc8..00000000 --- a/strata/bsp-jetson-genivi/device-tree-compiler.morph +++ /dev/null @@ -1,6 +0,0 @@ -name: device-tree-compiler -kind: chunk -build-commands: -- make all -install-commands: -- make install DESTDIR="$DESTDIR" PREFIX="$PREFIX" diff --git a/strata/bsp-jetson-genivi/nouveau-drm.morph b/strata/bsp-jetson-genivi/nouveau-drm.morph deleted file mode 100644 index e89df38b..00000000 --- a/strata/bsp-jetson-genivi/nouveau-drm.morph +++ /dev/null @@ -1,10 +0,0 @@ -name: nouveau-drm -kind: chunk -build-commands: - - cd drm && make M=$(pwd) -C /usr/src/linux/ modules -install-commands: - - cd drm && make M="$(pwd)" -C /usr/src/linux/ INSTALL_MOD_PATH="$DESTDIR" modules_install -system-integration: - nouveau-drm-misc: - 00-earlyconf: - - (cd /lib/modules && for version in *; do depmod -a "$version"; done) diff --git a/strata/bsp-jetson-genivi/u-boot.morph b/strata/bsp-jetson-genivi/u-boot.morph deleted file mode 100644 index 705b3851..00000000 --- a/strata/bsp-jetson-genivi/u-boot.morph +++ /dev/null @@ -1,16 +0,0 @@ -name: u-boot -kind: chunk -configure-commands: -- make ARCH=arm jetson-tk1_config -build-commands: -- make ARCH=arm CROSS_COMPILE=/usr/bin/ -- make ARCH=arm CROSS_COMPILE=/usr/bin/ tools -install-commands: -- mkdir -p "$DESTDIR$PREFIX/bin" -- mkdir -p "$DESTDIR/boot" -- install -m 755 u-boot-dtb-tegra.bin "$DESTDIR/boot/u-boot.bin" -- install -m 755 tools/img2brec.sh "$DESTDIR$PREFIX/bin/." -- install -m 755 tools/jtagconsole "$DESTDIR$PREFIX/bin/." -- install -m 755 tools/netconsole "$DESTDIR$PREFIX/bin/." -- install -m 755 tools/mkenvimage "$DESTDIR$PREFIX/bin/." -- install -m 755 tools/mkimage "$DESTDIR$PREFIX/bin/." diff --git a/strata/bsp-jetson-genivi.morph b/strata/bsp-jetson.morph index 62835b74..111402a7 100644 --- a/strata/bsp-jetson-genivi.morph +++ b/strata/bsp-jetson.morph @@ -1,7 +1,7 @@ -name: bsp-jetson-genivi +name: bsp-jetson kind: stratum description: | - Platform-specific chunks for NVIDIA Jetson TK1 GENIVI Baseline + Platform-specific chunks for NVIDIA Jetson TK1 Support for the Tegra platform is still being developed. A very recent kernel with some patches is currently required to get a fully @@ -13,35 +13,40 @@ build-depends: - morph: strata/core.morph chunks: - name: device-tree-compiler - morph: strata/bsp-jetson-genivi/device-tree-compiler.morph + morph: strata/bsp-jetson/device-tree-compiler.morph repo: upstream:device-tree-compiler ref: c92f284c3cf76d471eb27a271de3a51cb45ed058 unpetrify-ref: baserock/morph build-depends: [] -- name: u-boot - morph: strata/bsp-jetson-genivi/u-boot.morph +- name: u-boot@jetson + morph: strata/bsp-jetson/u-boot@jetson.morph repo: upstream:u-boot ref: c77921345b943cdf5f2f28bbe88c6d8970620d2e unpetrify-ref: baserock/jetson/u-boot-tegra-next build-depends: - device-tree-compiler -- name: linux-jetson-tk1-genivi - morph: strata/bsp-jetson-genivi/linux-jetson-tk1-genivi.morph +- name: linux-jetson-tk1 + morph: strata/bsp-jetson/linux-jetson-tk1.morph repo: upstream:linux - ref: 8da6ad2e1c6366ebb2d9a72aeaf4a42dc32c8623 - unpetrify-ref: baserock/jetson/3.17.0-rc5 - build-depends: - - u-boot + ref: 682c943b0159b1a4105f31020605bf8a0f155ffd + unpetrify-ref: baserock/v3.18-with-cpufreq + build-depends: [] - name: bsp-support - morph: strata/bsp-jetson-genivi/bsp-support.morph + morph: strata/bsp-jetson/bsp-support.morph repo: baserock:baserock/bsp-support ref: 19bc31ce3198a3c19cdd96d392bde34cb34ed525 unpetrify-ref: baserock/arm/tegra-3.10 build-depends: [] - name: nouveau-drm - morph: strata/bsp-jetson-genivi/nouveau-drm.morph + morph: strata/bsp-jetson/nouveau-drm.morph repo: upstream:nouveau - ref: 62d1f5d2f5b3e5122eeac0f763dcdd1d04bf5c45 - unpetrify-ref: baserock/jetson/3.17-rc5 + ref: 4d0929aa231a0c2d2b66fa1f8ea1c8fa4d872501 + unpetrify-ref: baserock/jetson/gk20a build-depends: - - linux-jetson-tk1-genivi + - linux-jetson-tk1 +- name: linux-firmware-jetson + morph: strata/bsp-jetson/linux-firmware-jetson.morph + repo: upstream:linux-firmware + ref: 9322ef5b14c78ec28163baa41bff240a0e098810 + unpetrify-ref: baserock/jetson + build-depends: [] diff --git a/strata/bsp-jetson-devel/bsp-support.morph b/strata/bsp-jetson/bsp-support.morph index 23524ac7..23524ac7 100644 --- a/strata/bsp-jetson-devel/bsp-support.morph +++ b/strata/bsp-jetson/bsp-support.morph diff --git a/strata/bsp-jetson-devel/device-tree-compiler.morph b/strata/bsp-jetson/device-tree-compiler.morph index 8abfafc8..8abfafc8 100644 --- a/strata/bsp-jetson-devel/device-tree-compiler.morph +++ b/strata/bsp-jetson/device-tree-compiler.morph diff --git a/strata/bsp-jetson/linux-firmware-jetson.morph b/strata/bsp-jetson/linux-firmware-jetson.morph new file mode 100644 index 00000000..c803eab2 --- /dev/null +++ b/strata/bsp-jetson/linux-firmware-jetson.morph @@ -0,0 +1,6 @@ +name: linux-firmware-jetson +kind: chunk +install-commands: +- install -d "$DESTDIR/lib/firmware/nvidia/tegra124" +- install -m644 nvidia/tegra124/gk20a_ctxsw.bin "$DESTDIR/lib/firmware/nvidia/tegra124" +- install -m644 nvidia/tegra124/xusb.bin "$DESTDIR/lib/firmware/nvidia/tegra124" diff --git a/strata/bsp-jetson-genivi/linux-jetson-tk1-genivi.morph b/strata/bsp-jetson/linux-jetson-tk1.morph index e1c99473..42c16f01 100644 --- a/strata/bsp-jetson-genivi/linux-jetson-tk1-genivi.morph +++ b/strata/bsp-jetson/linux-jetson-tk1.morph @@ -1,4 +1,4 @@ -name: linux-jetson-tk1-genivi +name: linux-jetson-tk1 kind: chunk configure-commands: - make ARCH=arm tegra_defconfig @@ -46,6 +46,8 @@ configure-commands: - scripts/config -e NFSD_V3 - scripts/config -e DRM_TEGRA_STAGING - scripts/config -m DRM_NOUVEAU +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make ARCH=arm oldconfig build-commands: - make $MAKEFLAGS ARCH=arm LOADADDR=0x80200000 zImage dtbs diff --git a/strata/bsp-jetson/nouveau-drm.morph b/strata/bsp-jetson/nouveau-drm.morph new file mode 100644 index 00000000..e297a069 --- /dev/null +++ b/strata/bsp-jetson/nouveau-drm.morph @@ -0,0 +1,12 @@ +name: nouveau-drm +kind: chunk +build-commands: + - cd drm && make ARCH=arm M=$(pwd) -C /usr/src/linux/ modules +install-commands: + - cd drm && make ARCH=arm M="$(pwd)" -C /usr/src/linux/ INSTALL_MOD_PATH="$DESTDIR" modules_install +system-integration: + nouveau-drm-misc: + 00-earlyconf: + - (cd /lib/modules && for version in *; do rm "$version/kernel/drivers/gpu/drm/nouveau/nouveau.ko"; done) + - (cd /lib/modules && for version in *; do rm "$version/kernel/drivers/gpu/drm/nouveau/nouveau_platform.ko"; done) + - (cd /lib/modules && for version in *; do depmod -a "$version"; done) diff --git a/strata/bsp-jetson-devel/u-boot.morph b/strata/bsp-jetson/u-boot@jetson.morph index 705b3851..533f253a 100644 --- a/strata/bsp-jetson-devel/u-boot.morph +++ b/strata/bsp-jetson/u-boot@jetson.morph @@ -1,4 +1,4 @@ -name: u-boot +name: u-boot@jetson kind: chunk configure-commands: - make ARCH=arm jetson-tk1_config @@ -8,7 +8,11 @@ build-commands: install-commands: - mkdir -p "$DESTDIR$PREFIX/bin" - mkdir -p "$DESTDIR/boot" +- mkdir -p "$DESTDIR/boot/u-boot/" - install -m 755 u-boot-dtb-tegra.bin "$DESTDIR/boot/u-boot.bin" +- install -m 755 u-boot-nodtb-tegra.bin "$DESTDIR/boot/u-boot/u-boot-nodtb-tegra.bin" +- install -m 755 u-boot.dtb "$DESTDIR/boot/u-boot/u-boot.dtb" +- size -A u-boot | grep -w .bss | tr -s ' ' | cut -d ' ' -f 2 > "$DESTDIR/boot/u-boot/u-boot-bss-size" - install -m 755 tools/img2brec.sh "$DESTDIR$PREFIX/bin/." - install -m 755 tools/jtagconsole "$DESTDIR$PREFIX/bin/." - install -m 755 tools/netconsole "$DESTDIR$PREFIX/bin/." diff --git a/strata/bsp-ppc64-generic.morph b/strata/bsp-ppc64-generic.morph index cbb0b201..f109ecf2 100644 --- a/strata/bsp-ppc64-generic.morph +++ b/strata/bsp-ppc64-generic.morph @@ -7,6 +7,6 @@ chunks: - name: linux-ppc64 morph: strata/bsp-ppc64-generic/linux-ppc64.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] diff --git a/strata/bsp-wandboard.morph b/strata/bsp-wandboard.morph index 4b07b150..6f829802 100644 --- a/strata/bsp-wandboard.morph +++ b/strata/bsp-wandboard.morph @@ -4,8 +4,8 @@ description: The platform dependent components required to boot an wandboard ARM build-depends: - morph: strata/core.morph chunks: -- name: u-boot - morph: strata/bsp-wandboard/u-boot.morph +- name: u-boot@wandboard + morph: strata/bsp-wandboard/u-boot@wandboard.morph repo: upstream:u-boot ref: fe57382d04b46c37f34cf8d3b3ad876554fd12bf unpetrify-ref: baserock/morph @@ -13,7 +13,7 @@ chunks: - name: linux-armv7-wandboard morph: strata/bsp-wandboard/linux-armv7-wandboard.morph repo: upstream:linux - ref: 9573986cf27ff44814f3efb1f1e95638406db456 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: - - u-boot + - u-boot@wandboard diff --git a/strata/bsp-wandboard/linux-armv7-wandboard.morph b/strata/bsp-wandboard/linux-armv7-wandboard.morph index 16929c9d..15317978 100644 --- a/strata/bsp-wandboard/linux-armv7-wandboard.morph +++ b/strata/bsp-wandboard/linux-armv7-wandboard.morph @@ -44,6 +44,8 @@ configure-commands: - scripts/config -d DEBUG_STACK_TRACE - scripts/config -e NFSD - scripts/config -e NFSD_V3 +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make $MAKEFLAGS ARCH=arm LOADADDR=0x10800000 uImage dtbs diff --git a/strata/bsp-wandboard/u-boot.morph b/strata/bsp-wandboard/u-boot@wandboard.morph index 9be30bc7..8a51ee7c 100644 --- a/strata/bsp-wandboard/u-boot.morph +++ b/strata/bsp-wandboard/u-boot@wandboard.morph @@ -1,4 +1,4 @@ -name: u-boot +name: u-boot@wandboard kind: chunk build-commands: - make tools diff --git a/strata/bsp-x86_32-generic.morph b/strata/bsp-x86_32-generic.morph index 303dd777..480bd702 100644 --- a/strata/bsp-x86_32-generic.morph +++ b/strata/bsp-x86_32-generic.morph @@ -8,8 +8,8 @@ chunks: - name: linux-x86-32-generic morph: strata/bsp-x86_32-generic/linux-x86-32-generic.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] - name: nasm morph: strata/bsp-x86_32-generic/nasm.morph @@ -20,7 +20,7 @@ chunks: - name: syslinux morph: strata/bsp-x86_32-generic/syslinux.morph repo: upstream:syslinux - ref: 8821237240c5374d83298b2da5ad88fa1e3c1ef7 + ref: 2f6d21d2a560cb5581694fef42ee9a350d5f302f unpetrify-ref: baserock/morph build-depends: - nasm diff --git a/strata/bsp-x86_32-generic/linux-x86-32-generic.morph b/strata/bsp-x86_32-generic/linux-x86-32-generic.morph index 10bac0cd..593d9a65 100644 --- a/strata/bsp-x86_32-generic/linux-x86-32-generic.morph +++ b/strata/bsp-x86_32-generic/linux-x86-32-generic.morph @@ -78,6 +78,8 @@ configure-commands: - scripts/config -e FB_VESA - scripts/config -e HOTPLUG_PCI - scripts/config -e HOTPLUG_PCI_ACPI +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make $MAKEFLAGS diff --git a/strata/bsp-x86_64-generic.morph b/strata/bsp-x86_64-generic.morph index 81c99e42..a24a34c5 100644 --- a/strata/bsp-x86_64-generic.morph +++ b/strata/bsp-x86_64-generic.morph @@ -8,8 +8,8 @@ chunks: - name: linux-x86-64-generic morph: strata/bsp-x86_64-generic/linux-x86-64-generic.morph repo: upstream:linux - ref: d67a0e110187abd560a1de63fa172894a52839d5 - unpetrify-ref: baserock/morph + ref: b2776bf7149bddd1f4161f14f79520f17fc1d71d + unpetrify-ref: v3.18 build-depends: [] - name: nasm morph: strata/bsp-x86_64-generic/nasm.morph @@ -20,7 +20,7 @@ chunks: - name: syslinux morph: strata/bsp-x86_64-generic/syslinux.morph repo: upstream:syslinux - ref: 8821237240c5374d83298b2da5ad88fa1e3c1ef7 + ref: 2f6d21d2a560cb5581694fef42ee9a350d5f302f unpetrify-ref: baserock/morph build-depends: - nasm diff --git a/strata/bsp-x86_64-generic/linux-x86-64-generic.morph b/strata/bsp-x86_64-generic/linux-x86-64-generic.morph index 4b18b537..fe0721cc 100644 --- a/strata/bsp-x86_64-generic/linux-x86-64-generic.morph +++ b/strata/bsp-x86_64-generic/linux-x86-64-generic.morph @@ -78,6 +78,8 @@ configure-commands: - scripts/config -e FB_VESA - scripts/config -e HOTPLUG_PCI - scripts/config -e HOTPLUG_PCI_ACPI +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING - yes '' | make oldconfig build-commands: - make $MAKEFLAGS diff --git a/strata/bsp-x86_both-tools.morph b/strata/bsp-x86_both-tools.morph index 4d6d29e4..c1ba501c 100644 --- a/strata/bsp-x86_both-tools.morph +++ b/strata/bsp-x86_both-tools.morph @@ -14,7 +14,7 @@ chunks: - name: syslinux morph: strata/bsp-x86_both-tools/syslinux.morph repo: upstream:syslinux - ref: 8821237240c5374d83298b2da5ad88fa1e3c1ef7 + ref: 2f6d21d2a560cb5581694fef42ee9a350d5f302f unpetrify-ref: baserock/morph build-depends: - nasm diff --git a/strata/build-essential.morph b/strata/build-essential.morph index 7886b610..d7b86648 100644 --- a/strata/build-essential.morph +++ b/strata/build-essential.morph @@ -36,7 +36,7 @@ products: include: - fhs-dirs-.* - busybox-.* - - eglibc-nss + - glibc-nss chunks: - name: stage1-binutils morph: strata/build-essential/stage1-binutils.morph @@ -49,7 +49,7 @@ chunks: - name: stage1-gcc morph: strata/build-essential/stage1-gcc.morph repo: upstream:gcc-tarball - ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + ref: 999c918a7ad32ad436395666def22ab90b3447fe unpetrify-ref: baserock/build-essential build-depends: - stage1-binutils @@ -65,11 +65,11 @@ chunks: - stage1-gcc build-mode: bootstrap prefix: /tools -- name: stage2-eglibc - morph: strata/build-essential/stage2-eglibc.morph - repo: upstream:eglibc2 - ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c - unpetrify-ref: baserock/2.15-build-essential +- name: stage2-glibc + morph: strata/build-essential/stage2-glibc.morph + repo: upstream:glibc + ref: 52cf9a0153c14df4f6ae3bd0e1e6cc5d171e586c + unpetrify-ref: baserock/glibc-2.20 build-depends: - stage1-binutils - stage1-gcc @@ -84,41 +84,50 @@ chunks: build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc build-mode: bootstrap prefix: /tools - name: stage2-gcc-fixed-headers morph: strata/build-essential/stage2-gcc-fixed-headers.morph repo: upstream:gcc-tarball - ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + ref: 999c918a7ad32ad436395666def22ab90b3447fe unpetrify-ref: baserock/build-essential build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc build-mode: bootstrap prefix: /tools - name: stage2-gcc morph: strata/build-essential/stage2-gcc.morph repo: upstream:gcc-tarball - ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + ref: 999c918a7ad32ad436395666def22ab90b3447fe unpetrify-ref: baserock/build-essential build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc - stage2-gcc-fixed-headers build-mode: bootstrap prefix: /tools - name: stage2-busybox morph: strata/build-essential/stage2-busybox.morph repo: upstream:busybox - ref: eeb9014f28e3aa00673a0fad127e7420da4392db + ref: 8a801e0f024f1385d8e989b80b90443546bceae7 unpetrify-ref: baserock/build-essential build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc + build-mode: bootstrap + prefix: /tools +- name: stage2-fake-bash + morph: strata/build-essential/stage2-fake-bash.morph + repo: upstream:bash + ref: 3590145af6f1c9fa321dff231f69ae696e7e740b + unpetrify-ref: baserock/bash-4.3-patch-27 + build-depends: + - stage2-busybox build-mode: bootstrap prefix: /tools - name: stage2-fhs-dirs @@ -137,7 +146,7 @@ chunks: build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc build-mode: bootstrap prefix: /tools - name: stage2-make @@ -148,19 +157,19 @@ chunks: build-depends: - stage1-binutils - stage1-gcc - - stage2-eglibc + - stage2-glibc build-mode: bootstrap prefix: /tools - name: stage2-reset-specs morph: strata/build-essential/stage2-reset-specs.morph - repo: upstream:eglibc2 - ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c - unpetrify-ref: baserock/2.15-build-essential + repo: upstream:glibc + ref: 52cf9a0153c14df4f6ae3bd0e1e6cc5d171e586c + unpetrify-ref: baserock/glibc-2.20 build-depends: - stage1-binutils - stage1-gcc - stage2-linux-api-headers - - stage2-eglibc + - stage2-glibc build-mode: bootstrap prefix: /tools - name: fhs-dirs @@ -171,7 +180,7 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc @@ -186,22 +195,23 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs -- name: eglibc - morph: strata/build-essential/eglibc.morph - repo: upstream:eglibc2 - ref: df0258044f321990eadd647e03095a48ad04c1a8 - unpetrify-ref: baserock/2.15-build-essential +- name: glibc + morph: strata/build-essential/glibc.morph + repo: upstream:glibc + ref: 52cf9a0153c14df4f6ae3bd0e1e6cc5d171e586c + unpetrify-ref: baserock/glibc-2.20 build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-fake-bash + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc @@ -210,9 +220,9 @@ chunks: - stage2-reset-specs - linux-api-headers artifacts: - eglibc-gconv: build-essential-runtime - eglibc-libs: build-essential-minimal - eglibc-nss: build-essential-runtime + glibc-gconv: build-essential-runtime + glibc-libs: build-essential-minimal + glibc-nss: build-essential-runtime - name: zlib morph: strata/build-essential/zlib.morph repo: upstream:zlib @@ -221,14 +231,14 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc artifacts: zlib-libs: build-essential-minimal - name: binutils @@ -239,31 +249,31 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - zlib - name: busybox morph: strata/build-essential/busybox.morph repo: upstream:busybox - ref: bf06394ab87ff22662084c82c1821847c25b7f21 + ref: 772a98fec669cf881d7c1ea17631bc8560bccf5c unpetrify-ref: baserock/build-essential build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - name: gawk morph: strata/build-essential/gawk.morph repo: upstream:gawk @@ -272,30 +282,30 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - name: gcc morph: strata/build-essential/gcc.morph repo: upstream:gcc-tarball - ref: b0254026149b13782eae26d38435a4c62a002cf0 + ref: 5c08cea34d5562dc828b85c7c02519246823aaf0 unpetrify-ref: baserock/build-essential-4.7 build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - zlib artifacts: gcc-libs: build-essential-minimal @@ -307,14 +317,14 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - name: ccache morph: strata/build-essential/ccache.morph repo: upstream:ccache @@ -323,12 +333,12 @@ chunks: build-depends: - stage2-binutils - stage2-busybox - - stage2-eglibc + - stage2-glibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - - eglibc + - glibc - zlib diff --git a/strata/build-essential/busybox.morph b/strata/build-essential/busybox.morph index b0bb46f5..35f57357 100644 --- a/strata/build-essential/busybox.morph +++ b/strata/build-essential/busybox.morph @@ -57,12 +57,6 @@ configure-commands: build-commands: - make -- | - for fin in systemd-units/*.in - do - f=$(echo "$fin" | sed 's/\.in$//') - sed -e 's|@rootprefix@||g' "$fin" >"$f"; - done install-commands: - | @@ -70,41 +64,8 @@ install-commands: make CONFIG_PREFIX="$DESTDIR$PREFIX" install && chmod 6755 "$DESTDIR$PREFIX"/bin/busybox -- mkdir -p "$DESTDIR/var/spool/cron/crontabs" - -# Install systemd units -- mkdir -p "$DESTDIR/lib/systemd/system/multi-user.target.wants" -- | - for f in systemd-units/*.service; do - install -m 644 "$f" "$DESTDIR/lib/systemd/system"; - done -- | - for f in $(cd systemd-units; ls *.service | grep -v -F "@"); do - ln -s "../$f" "$DESTDIR/lib/systemd/system/multi-user.target.wants/"; - done - -# Install custom udev rule to run ifup for every network device detected -- mkdir -p "$DESTDIR/lib/udev/rules.d" -- for f in udev-rules/100-baserock.rules; do - install -m 644 "$f" "$DESTDIR/lib/udev/rules.d"; - done - -# Set up DHCP -- mkdir -p "$DESTDIR$PREFIX"/share/udhcpc -- cp examples/udhcp/simple.script "$DESTDIR$PREFIX"/share/udhcpc/default.script - -# Set up NTP -- install scripts/run-ntpd-with-config "$DESTDIR$PREFIX"/sbin/. -- install -d "$DESTDIR/etc" -- | - cat << EOF > "$DESTDIR/etc/ntpd.conf" - server 0.pool.ntp.org - server 1.pool.ntp.org - server 2.pool.ntp.org - server 3.pool.ntp.org - EOF - # Set up man environment variables +- mkdir -p "$DESTDIR"/etc - | cat << EOF > "$DESTDIR/etc/profile" # Set default pager to less diff --git a/strata/build-essential/eglibc.morph b/strata/build-essential/eglibc.morph deleted file mode 100644 index cc827ef9..00000000 --- a/strata/build-essential/eglibc.morph +++ /dev/null @@ -1,62 +0,0 @@ -name: eglibc -kind: chunk -products: -- artifact: eglibc-nss - include: - - etc/nsswitch.conf - - (usr/)?lib/libnss.* -- artifact: eglibc-gconv - include: - - (usr/)?lib/gconv/.* -- artifact: eglibc-libs - include: - - sbin/ldconfig - - lib(32|64)?/ld-.* - - (usr/)?lib(exec)?/pt_chown -- artifact: eglibc-bins - include: - - (usr/)?s?bin/.* - - (usr/)?libexec/getconf/.* - - (usr/)?lib/libSegFault\.so(\.\d+)*$ -- artifact: eglibc-libs - include: - - (usr/)?lib(32|64)?/lib[^/]*\.so(\.\d+)*$ -- artifact: eglibc-devel - include: - - (usr/)?include/.* - - (usr/)?lib(32|64)?/lib.*\.a - - (usr/)?lib(32|64)?/lib.*\.la - - (usr/)?(lib(32|64)?|share)/pkgconfig/.*\.pc - - (usr/)?lib(32|64)?/.*\.o -- artifact: eglibc-locale - include: - - (usr/)?share/locale/.* - - (usr/)?share/i18n/.* - - (usr/)?share/zoneinfo/.* -- artifact: eglibc-misc - include: - - .* -configure-commands: -- mkdir o - -# Necessary for ARM port -- cd libc && ln -s ../ports ports - -- | - export CFLAGS="-O2 $CFLAGS"; cd o && - ../libc/configure \ - $(../morph-arch-config) \ - --prefix="$PREFIX" \ - --disable-profile \ - --enable-kernel=2.6.25 \ - --enable-add-ons=nptl,ports \ - --without-cvs \ - --without-selinux - -build-commands: -- cd o && make localtime=UTC - -install-commands: -- cd o && make install_root="$DESTDIR" localtime=UTC install -- mkdir -p "$DESTDIR/etc" -- install -m 644 -o root -g root nsswitch.conf "$DESTDIR/etc/nsswitch.conf" diff --git a/strata/build-essential/glibc.morph b/strata/build-essential/glibc.morph new file mode 100644 index 00000000..789283eb --- /dev/null +++ b/strata/build-essential/glibc.morph @@ -0,0 +1,86 @@ +name: glibc +kind: chunk +products: +- artifact: glibc-nss + include: + - etc/nsswitch.conf + - (usr/)?lib/libnss.* +- artifact: glibc-gconv + include: + - (usr/)?lib/gconv/.* +- artifact: glibc-libs + include: + - sbin/ldconfig + - lib(32|64)?/ld-.* + - (usr/)?lib(exec)?/pt_chown +- artifact: glibc-bins + include: + - (usr/)?s?bin/.* + - (usr/)?libexec/getconf/.* + - (usr/)?lib/libSegFault\.so(\.\d+)*$ +- artifact: glibc-libs + include: + - (usr/)?lib(32|64)?/lib[^/]*\.so(\.\d+)*$ +- artifact: glibc-devel + include: + - (usr/)?include/.* + - (usr/)?lib(32|64)?/lib.*\.a + - (usr/)?lib(32|64)?/lib.*\.la + - (usr/)?(lib(32|64)?|share)/pkgconfig/.*\.pc + - (usr/)?lib(32|64)?/.*\.o +- artifact: glibc-locale + include: + - (usr/)?share/locale/.* + - (usr/)?share/i18n/.* + - (usr/)?share/zoneinfo/.* +- artifact: glibc-misc + include: + - .* +configure-commands: +- mkdir o + +- | + case "$MORPH_ARCH" in + armv7*) + ARCH_FLAGS="--without-fp" ;; + esac + + # We override the PATH here to remove /tools/bin from it. + # Thanks to this glibc finds bash in /bin/bash through the /bin + # symlink. This is important because glibc changes the path to bash + # of the shebang in some scripts and these scripts will be broken if + # they point to bash in /tools/bin/bash. + export PATH="/usr/bin:/sbin:/bin"; + export CFLAGS="-O2 $CFLAGS"; + cd o && ../configure \ + $ARCH_FLAGS \ + --prefix="$PREFIX" \ + --disable-profile \ + --enable-kernel=2.6.25 \ + --without-cvs \ + --without-selinux \ + --enable-obsolete-rpc + +build-commands: +- cd o && make localtime=UTC + +install-commands: +- cd o && make install_root="$DESTDIR" localtime=UTC install +- mkdir -p "$DESTDIR/etc" +- | + cat <<EOF > nsswitch.conf + passwd: compat + group: compat + shadow: compat + + hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns mdns4 + networks: files + + protocols: db files + services: db files + ethers: db files + rpc: db files + + netgroup: nis + EOF +- install -m 644 -o root -g root nsswitch.conf "$DESTDIR/etc/nsswitch.conf" diff --git a/strata/build-essential/stage2-fake-bash.morph b/strata/build-essential/stage2-fake-bash.morph new file mode 100644 index 00000000..021fd366 --- /dev/null +++ b/strata/build-essential/stage2-fake-bash.morph @@ -0,0 +1,4 @@ +name: stage2-fake-bash +kind: chunk +install-commands: +- printf '#!/bin/sh\nexec /bin/sh "$@"\n' | install -D /proc/self/fd/0 -m 755 "$DESTDIR$PREFIX/bin/bash" diff --git a/strata/build-essential/stage2-eglibc.morph b/strata/build-essential/stage2-glibc.morph index 3a7277ac..ffa0970b 100644 --- a/strata/build-essential/stage2-eglibc.morph +++ b/strata/build-essential/stage2-glibc.morph @@ -1,28 +1,29 @@ -name: stage2-eglibc +name: stage2-glibc kind: chunk configure-commands: - mkdir o -# Necessary for ARM port -- cd libc && ln -s ../ports ports - # Configure flag notes: # 1. Avoid installing to PREFIX/lib64 on x86_64. # 2. Location of linux-api-headers. -# 3. Normal flags. See eglibc.morph. +# 3. Normal flags. See glibc.morph. # 4. Force configuration values of certain things that can't be detected # in a cross-compile. - | + case "$MORPH_ARCH" in + armv7*) + ARCH_FLAGS="--without-fp" ;; + esac + export CFLAGS="-O2 $CFLAGS"; export CXX=false; \ - cd o && ../libc/configure \ - $(../morph-arch-config) \ - --build=$(../libc/scripts/config.guess) --host=$TARGET_STAGE1 \ + cd o && ../configure \ + $ARCH_FLAGS \ + --build=$(../scripts/config.guess) --host=$TARGET_STAGE1 \ --prefix="$PREFIX" \ `# [1]` --libdir="$PREFIX/lib" \ `# [2]` --with-headers="$(pwd)/../../$PREFIX/include" \ `# [3]` --disable-profile --enable-kernel=2.6.25 \ - --enable-add-ons=nptl,ports --without-cvs --without-selinux \ `# [4]` libc_cv_c_cleanup=yes libc_cv_ctors_header=yes \ libc_cv_forced_unwind=yes libc_cv_ssp=no @@ -31,12 +32,12 @@ build-commands: install-commands: - cd o && make install_root="$DESTDIR" localtime=UTC install -- sh stage2-eglibc-fix-specs +- sh stage2-glibc-fix-specs # Install a symlink for the program interpreter (ld.so) so that binaries -# built in stage 3 before the stage 3 eglibc is built can use it. +# built in stage 3 before the stage 3 glibc is built can use it. # FIXME: get a better way of finding the name of the loader. The lib64 -# path is hardcoded into eglibc in the file +# path is hardcoded into glibc in the file # sysdeps/unix/sysv/linux/configure. - install -d $DESTDIR/lib - | diff --git a/strata/c2man/c2man.morph b/strata/c2man/c2man.morph new file mode 100644 index 00000000..93390d2d --- /dev/null +++ b/strata/c2man/c2man.morph @@ -0,0 +1,11 @@ +name: c2man +kind: chunk +configure-commands: +- ./Configure -d -e +build-commands: +- make LEX=flex +install-commands: +- mkdir -p $DESTDIR$PREFIX/bin +- mkdir -p $DESTDIR$PREFIX/lib +- mkdir -p $DESTDIR$PREFIX/man +- make install bin=$DESTDIR$PREFIX/bin privlib=$DESTDIR$PREFIX/lib/c2man mansrc=$DESTDIR$PREFIX/man diff --git a/strata/connectivity.morph b/strata/connectivity.morph index a8697f3a..2cc6bb69 100644 --- a/strata/connectivity.morph +++ b/strata/connectivity.morph @@ -11,12 +11,12 @@ chunks: - name: wpa_supplicant morph: strata/connectivity/wpa_supplicant.morph repo: upstream:hostap - ref: 1cdfb99c3a04235697dc6979b9eb5418861e42f8 - unpetrify-ref: baserock/genivi/morph + ref: c4a58c968044c2002706b1a69c089c4d63728e77 + unpetrify-ref: baserock/hostap_2_3 build-depends: - libnl - name: iptables repo: upstream:iptables - ref: 3e6fa55d5e28c93f417afeae7a7d4f349ddffcf4 - unpetrify-ref: baserock/morph + ref: 482c6d3731e2681cb4baae835c294840300197e6 + unpetrify-ref: v1.4.21 build-depends: [] diff --git a/strata/core.morph b/strata/core.morph index 5c90c964..a1fc9a10 100644 --- a/strata/core.morph +++ b/strata/core.morph @@ -31,7 +31,7 @@ chunks: - name: m4 morph: strata/core/m4.morph repo: upstream:m4 - ref: d533342af991401d865de9b037ac03cdc9bd852e + ref: cfbd353f3a2dc517992bcdc747281a22feb0c4db unpetrify-ref: baserock/build-essential build-depends: [] - name: mini-utils @@ -89,12 +89,6 @@ chunks: ref: 3590145af6f1c9fa321dff231f69ae696e7e740b unpetrify-ref: baserock/bash-4.3-patch-27 build-depends: [] -- name: error-perl-tarball - repo: upstream:error-perl-tarball - ref: 661707e7bd4282aeab5a2f6a8f02ca5731fd813f - unpetrify-ref: baserock/morph - build-depends: - - perl - name: flex morph: strata/core/flex.morph repo: upstream:flex @@ -105,8 +99,8 @@ chunks: - name: openssl-new morph: strata/core/openssl-new.morph repo: upstream:openssl-new - ref: ed9938171f80c7534f6eb52f75c2538bca462807 - unpetrify-ref: baserock/OpenSSL_1_0_1g + ref: 872e681c00a713e840ebed77a4e05fa0e181f16f + unpetrify-ref: OpenSSL_1_0_1j build-depends: - perl - name: bzip2 @@ -205,13 +199,12 @@ chunks: - name: git morph: strata/core/git.morph repo: upstream:git - ref: 43efcf42382e87de4aa423e5e1607958ad1717d0 - unpetrify-ref: baserock/morph + ref: 49c3e926349e964b311b46251bb2b97d3d669855 + unpetrify-ref: v2.1.3 build-depends: - autoconf - cpython - curl - - error-perl-tarball - gettext - libexpat - openssl-new @@ -226,8 +219,8 @@ chunks: - name: bison morph: strata/core/bison.morph repo: upstream:bison - ref: 6729ad1c314b179225325dcc1bc684077a71f859 - unpetrify-ref: baserock/morph + ref: 2ab6d1daaccf32fc4314e4b2fe44da977f11a308 + unpetrify-ref: baserock/v3.0.2 build-depends: - autoconf - automake @@ -279,9 +272,9 @@ chunks: - texinfo-tarball - name: python-setuptools morph: strata/core/python-setuptools.morph - repo: upstream:python-setuptools - ref: 05b07a427a1eae2a51d527f7ac5135a8fd215d77 - unpetrify-ref: baserock/morph + repo: upstream:python-setuptools-bitbucket + ref: 0aa6a4de5931d02876428388678802db2371fd37 + unpetrify-ref: baserock/master build-depends: - cpython - name: pyyaml @@ -302,3 +295,11 @@ chunks: - gettext - libtool - bison +- name: patch + morph: strata/core/patch.morph + repo: upstream:patch + ref: 3bbb26c928a147cfcf0756f1cc0a1307e5cc663f + unpetrify-ref: baserock/v2.7.1 + build-depends: + - bash + - shadow diff --git a/strata/core/bison.morph b/strata/core/bison.morph index d6b3b148..a9497d4e 100644 --- a/strata/core/bison.morph +++ b/strata/core/bison.morph @@ -1,6 +1,7 @@ name: bison kind: chunk configure-commands: +- echo $(grep '* Noteworthy changes in release' NEWS | grep -v '?\\.?' | head -n1 | cut -d' ' -f6) > .tarball-version - bash bootstrap --skip-po - ./configure --prefix=/usr --disable-nls build-commands: diff --git a/strata/core/git.morph b/strata/core/git.morph index 62932b0d..765f4a5c 100644 --- a/strata/core/git.morph +++ b/strata/core/git.morph @@ -1,6 +1,7 @@ name: git kind: chunk +build-system: autotools +pre-configure-commands: +- make configure build-commands: -- make prefix=${PREFIX-/usr} all PYTHON_PATH=${PREFIX-/usr}/bin/python NO_TCLTK=YesPlease -install-commands: -- make prefix=${PREFIX-/usr} install +- make all diff --git a/strata/foundation/patch.morph b/strata/core/patch.morph index 65e07e67..01d977c4 100644 --- a/strata/foundation/patch.morph +++ b/strata/core/patch.morph @@ -2,7 +2,7 @@ name: patch kind: chunk configure-commands: - bash bootstrap --skip-po -- ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin --disable-nls +- ./configure --prefix="$PREFIX" --disable-nls build-commands: - make install-commands: diff --git a/strata/coreutils-common.morph b/strata/coreutils-common.morph new file mode 100644 index 00000000..9c5c38fe --- /dev/null +++ b/strata/coreutils-common.morph @@ -0,0 +1,15 @@ +name: coreutils-common +kind: stratum +description: | + We need to split this so we can build stuff using coreutils but we can not + having it in the final systems (for example in genivi ones that do not + accept GPLv3 code) +build-depends: +- morph: strata/core.morph +chunks: +- name: coreutils + morph: strata/coreutils-common/coreutils.morph + repo: upstream:coreutils + ref: 9df9643842e4b4d8ece710fe6105f32fa38a0d22 + unpetrify-ref: baserock/8.23 + build-depends: [] diff --git a/strata/coreutils-common/coreutils.morph b/strata/coreutils-common/coreutils.morph new file mode 100644 index 00000000..479e9925 --- /dev/null +++ b/strata/coreutils-common/coreutils.morph @@ -0,0 +1,9 @@ +name: coreutils +kind: chunk +build-system: autotools +configure-commands: +- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf +- bash bootstrap --skip-po +- FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix="$PREFIX" --disable-nls +install-commands: +- make INSTALL_PROGRAM=install DESTDIR="$DESTDIR" install diff --git a/strata/cross-bootstrap.morph b/strata/cross-bootstrap.morph index f6a627b8..9687ac7e 100644 --- a/strata/cross-bootstrap.morph +++ b/strata/cross-bootstrap.morph @@ -54,7 +54,7 @@ chunks: - name: cmdtest morph: strata/cross-bootstrap/cmdtest.morph repo: upstream:cmdtest - ref: 62fa7e08f76a5b6bb8410add49c40656b3e73acd + ref: ac91791842c6e7e6eda3213916af413255999c7b unpetrify-ref: baserock/morph build-depends: - cliapp @@ -74,7 +74,7 @@ chunks: - six - name: morph repo: baserock:baserock/morph - ref: 53e1b30f654d05a26a999a0ad7b8ff9c1895aef6 + ref: 67afd098cd297b769b1341a460d160a2902ba4e4 unpetrify-ref: master build-depends: - cliapp diff --git a/strata/enlightenment.morph b/strata/enlightenment.morph index 7ef6e22a..845e7fab 100644 --- a/strata/enlightenment.morph +++ b/strata/enlightenment.morph @@ -6,42 +6,56 @@ build-depends: - morph: strata/x-generic.morph - morph: strata/lua.morph - morph: strata/audio-bluetooth.morph -- morph: strata/multimedia-gstreamer-0.10.morph +- morph: strata/multimedia.morph - morph: strata/connman-common.morph chunks: +- name: fribidi + repo: upstream:fribidi + ref: c9916f2ab289126a32febcc4754efc73a011fb0c + unpetrify-ref: baserock/morph/0.19.6 + build-depends: [] +- name: bullet3 + morph: strata/enlightenment/bullet3.morph + repo: upstream:bullet3 + ref: 940059ddb3c4476bb9860f79f35b0b1230857f54 + unpetrify-ref: baserock/morph + build-depends: [] - name: efl morph: strata/enlightenment/efl.morph repo: upstream:enlightenment/efl - ref: 8f9b565e79552f09a39507ce802786b1fe773d2d - unpetrify-ref: baserock/morph - build-depends: [] + ref: 3013a7c5cbd728dd9bc5516ffb4bd4f505888bd4 + unpetrify-ref: v1.12.0 + build-depends: + - bullet3 + - fribidi + - luajit2 - name: elementary morph: strata/enlightenment/elementary.morph repo: upstream:enlightenment/elementary - ref: e4c97ddffea9c91a291e1a6a7c6ebd1bbf47629a - unpetrify-ref: baserock/morph + ref: c4fbbbf984b7bd1553191c26459bce4589122ad5 + unpetrify-ref: v1.12.0 build-depends: - efl - name: evas_generic_loaders morph: strata/enlightenment/evas_generic_loaders.morph repo: upstream:enlightenment/evas_generic_loaders - ref: ddbdaa35201f4ef64f1a3f3b067a99e84c14565a - unpetrify-ref: baserock/morph + ref: 5d4415ec1e64930452f7d17cbec4c28a0efa8402 + unpetrify-ref: v1.12.0 build-depends: - efl - name: enlightenment morph: strata/enlightenment/enlightenment.morph repo: upstream:enlightenment/enlightenment - ref: 041b8d14a22f9e4c7f34abe8b0f9a3a1f5933146 - unpetrify-ref: baserock/morph + ref: 55165e2576823780a1053b03c5230cc8df8957b5 + unpetrify-ref: v0.19.1 build-depends: - efl - elementary - name: imlib2 morph: strata/enlightenment/imlib2.morph repo: upstream:enlightenment/imlib2 - ref: 6d02661a4c57771888304960ce62d4fdf587be8f - unpetrify-ref: baserock/morph + ref: f2f20dc5791a175be398a17fcdc4852a79079d47 + unpetrify-ref: baserock/1.4.6 build-depends: - efl - elementary @@ -50,7 +64,6 @@ chunks: morph: strata/enlightenment/libast.morph repo: upstream:enlightenment/libast ref: 0dbc0a5df55474bf61ca166be40e8de2d9e3a031 - unpetrify-ref: baserock/morph build-depends: - efl - elementary diff --git a/strata/enlightenment/bullet3.morph b/strata/enlightenment/bullet3.morph new file mode 100644 index 00000000..74cb097a --- /dev/null +++ b/strata/enlightenment/bullet3.morph @@ -0,0 +1,8 @@ +name: bullet +kind: chunk +configure-commands: +- cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/strata/enlightenment/efl.morph b/strata/enlightenment/efl.morph index ca1c0b57..b2a013ae 100644 --- a/strata/enlightenment/efl.morph +++ b/strata/enlightenment/efl.morph @@ -1,9 +1,8 @@ name: efl kind: chunk configure-commands: -- ./autogen.sh --prefix=/usr --with-tests=none --disable-fribidi --disable-image-loader-gif - --disable-image-loader-tiff --disable-pulseaudio --disable-gstreamer --disable-audio - --disable-physics +- ./autogen.sh --prefix=/usr --with-tests=none --disable-image-loader-gif --enable-systemd + --disable-image-loader-tiff build-commands: - make VPATH=/usr/lib64 install-commands: diff --git a/strata/erlang.morph b/strata/erlang.morph index 05a8e090..657b07be 100644 --- a/strata/erlang.morph +++ b/strata/erlang.morph @@ -7,6 +7,6 @@ chunks: - name: erlang morph: strata/erlang/erlang.morph repo: upstream:erlang - ref: d307c9520644d17d5f7597c0154888e2d570b107 - unpetrify-ref: baserock/morph + ref: 9417f044ee3c291c2ea343c203aebdcc40597226 + unpetrify-ref: OTP-17.3.4 build-depends: [] diff --git a/strata/foundation.morph b/strata/foundation.morph index f321eb87..10111805 100644 --- a/strata/foundation.morph +++ b/strata/foundation.morph @@ -2,7 +2,7 @@ name: foundation kind: stratum description: Basic userland runtime system build-depends: -- morph: strata/core.morph +- morph: strata/coreutils-common.morph chunks: - name: attr morph: strata/foundation/attr.morph @@ -19,8 +19,8 @@ chunks: - name: kmod morph: strata/foundation/kmod.morph repo: upstream:kmod - ref: 7f3b215d4e848afa74aea20a4c64f0cc1ef30eb4 - unpetrify-ref: baserock/morph + ref: ae58de0fcb4a6528dd365e23d383bbe2eaf2d566 + unpetrify-ref: v18 build-depends: [] - name: libcap2 morph: strata/foundation/libcap2.morph @@ -54,14 +54,12 @@ chunks: - libusbx - name: glib repo: upstream:glib - ref: 3f8f040349ae821854bccb2c3535a58b0ee66803 - unpetrify-ref: baserock/2.40.0 + ref: 4125415e7f4d1213fc7122beac0d91af08e37b28 build-depends: - libffi - name: gobject-introspection repo: upstream:gobject-introspection - ref: 6750a92ca83aa301eeac5eb59e918576fe544231 - unpetrify-ref: baserock/GOBJECT_INTROSPECTION_1_40_0 + ref: a543d8563f8e9ca059afb7218c63496f577cd0fc build-depends: - glib - name: dbus-pre @@ -71,18 +69,26 @@ chunks: unpetrify-ref: baserock/genivi/dbus-1.8.8 build-depends: - glib +- name: libgpg-error + repo: upstream:libgpg-error + ref: a498812d767c59ae2b75b0c985f5280b139e7dc4 + build-depends: [] +- name: libgcrypt + repo: upstream:libgcrypt + ref: 412eed473b557ed2172d81d76fa1e1f53c973a67 + build-depends: + - libgpg-error - name: systemd morph: strata/foundation/systemd.morph repo: upstream:systemd - ref: a77af3ec96015b2382ea31020d0a14b482d10a76 - unpetrify-ref: baserock/morph + ref: 941a643569dc6b53d0b334276d2a3cc0ed159e88 + unpetrify-ref: v217 build-depends: - dbus-pre - gobject-introspection - kmod - libcap2 - - pciutils - - usbutils + - libgcrypt - name: lzo morph: strata/foundation/lzo.morph repo: upstream:lzo @@ -123,16 +129,10 @@ chunks: unpetrify-ref: baserock/morph build-depends: - groff -- name: patch - morph: strata/foundation/patch.morph - repo: upstream:patch - ref: 9a16dcb97aac1a26af4372d95bd62b84f3f1264a - unpetrify-ref: baserock/morph - build-depends: [] - name: tbdiff morph: strata/foundation/tbdiff.morph repo: baserock:baserock/tbdiff - ref: 3190be6906eb21a1ba6878d3c8edb4bd16f925d7 + ref: 47fb728f2432929868666afc915dbc5a64836c08 unpetrify-ref: master build-depends: - attr diff --git a/strata/foundation/systemd.morph b/strata/foundation/systemd.morph index 2a1933d7..c298748a 100644 --- a/strata/foundation/systemd.morph +++ b/strata/foundation/systemd.morph @@ -6,16 +6,23 @@ configure-commands: - sh autogen.sh - ./configure --prefix="$PREFIX" --enable-xz --disable-manpages --sysconfdir=/etc --localstatedir=/var --libdir="$PREFIX/lib" --libexecdir="$PREFIX/libexec" --with-rootprefix= - --with-rootlibdir=/lib --with-firmware-path=/lib/firmware/updates:/lib/firmware + --with-rootlibdir=/lib install-commands: - make DESTDIR="$DESTDIR" install - mkdir -p "$DESTDIR"/sbin - ln -s /lib/systemd/systemd "$DESTDIR"/sbin/init - for f in telinit runlevel shutdown poweroff reboot halt; do ln -s /bin/systemctl "$DESTDIR/sbin/$f"; done -- rm -f "$DESTDIR/etc/udev/rules.d/80-net-name-slot.rules" -- touch "$DESTDIR/etc/udev/rules.d/80-net-name-slot.rules" - sed -e 's|@sushell@|/bin/sh|g' units/debug-shell.service.in >"$DESTDIR/etc/systemd/system/debug-shell.service" - sed -r -e '/Options=/s/,?strictatime//' "$DESTDIR/lib/systemd/system/tmp.mount" >"$DESTDIR/etc/systemd/system/tmp.mount" - touch "$DESTDIR/etc/machine-id" +post-install-commands: +- | + cat > "$DESTDIR/etc/systemd/network/10-dhcp.network" << "EOF" + [Match] + Name=e* + + [Network] + DHCP=yes + EOF diff --git a/strata/genivi-foundation.morph b/strata/genivi-foundation.morph deleted file mode 100644 index 2dd44f40..00000000 --- a/strata/genivi-foundation.morph +++ /dev/null @@ -1,12 +0,0 @@ -name: genivi-foundation -kind: stratum -description: Basic components needed by the GENIVI baseline. -build-depends: -- morph: strata/foundation.morph -chunks: -- name: linuxquota - morph: strata/genivi-foundation/linuxquota.morph - repo: upstream:linuxquota - ref: 0804c89a16736533e440771dc42a15e5d0223902 - unpetrify-ref: baserock/genivi/morph - build-depends: [] diff --git a/strata/genivi-wayland-generic.morph b/strata/genivi-wayland-generic.morph deleted file mode 100644 index 3f9eb240..00000000 --- a/strata/genivi-wayland-generic.morph +++ /dev/null @@ -1,15 +0,0 @@ -name: genivi-wayland-generic -kind: stratum -description: Software components designed by genivi, for genivi. -build-depends: -- morph: strata/core.morph -- morph: strata/foundation.morph -- morph: strata/genivi-foundation.morph -- morph: strata/genivi.morph -- morph: strata/wayland-generic.morph -chunks: -- name: layer_management-wayland - repo: upstream:layer_management - ref: 206d6709d0a3b3932a02b30ccacaa02b3eab8493 - unpetrify-ref: baserock/genivi/baseline - build-depends: [] diff --git a/strata/genivi-x-generic.morph b/strata/genivi-x-generic.morph deleted file mode 100644 index 47b912bb..00000000 --- a/strata/genivi-x-generic.morph +++ /dev/null @@ -1,13 +0,0 @@ -name: genivi-x-generic -kind: stratum -description: Software components designed by genivi, for genivi. -build-depends: -- morph: strata/genivi.morph -- morph: strata/x-generic.morph -chunks: -- name: layer_management - morph: strata/genivi-x-generic/layer_management.morph - repo: upstream:layer_management - ref: 206d6709d0a3b3932a02b30ccacaa02b3eab8493 - unpetrify-ref: baserock/genivi/baseline - build-depends: [] diff --git a/strata/genivi-x-generic/layer_management.morph b/strata/genivi-x-generic/layer_management.morph deleted file mode 100644 index f4840604..00000000 --- a/strata/genivi-x-generic/layer_management.morph +++ /dev/null @@ -1,8 +0,0 @@ -name: layer_management -kind: chunk -configure-commands: -- mkdir -p build && cd build && cmake .. -DWITH_GLESv2_LIB=ON -build-commands: -- make -C build -install-commands: -- make -C build install diff --git a/strata/genivi.morph b/strata/genivi.morph index b75861ca..24050b4c 100644 --- a/strata/genivi.morph +++ b/strata/genivi.morph @@ -2,8 +2,14 @@ name: genivi kind: stratum description: Software components designed by genivi, for genivi. build-depends: -- morph: strata/genivi-foundation.morph +- morph: strata/foundation.morph chunks: +- name: linuxquota + morph: strata/genivi/linuxquota.morph + repo: upstream:linuxquota + ref: 0804c89a16736533e440771dc42a15e5d0223902 + unpetrify-ref: baserock/genivi/morph + build-depends: [] - name: DLT-daemon repo: upstream:DLT-daemon ref: 8b48e73f79b4463393916e4c6696917e3dedd026 @@ -12,8 +18,8 @@ chunks: - name: node-startup-controller morph: strata/genivi/node-startup-controller.morph repo: upstream:node-startup-controller - ref: c78fddaddc24a2c49f5ef18896c93403575295ae - unpetrify-ref: baserock/morph + ref: b77fb1dbb280ec45525853e52a362eafd736b400 + unpetrify-ref: baserock/systemd_v216 build-depends: - DLT-daemon - name: googletest @@ -31,13 +37,13 @@ chunks: - googletest - name: genivi-common-api-runtime repo: upstream:genivi-common-api-runtime - ref: 8a62115bad2c0615fdf40f4e54a41454ae6e4698 + ref: 188abb5e24d6a2a7fdd7e5d150439a162621292c unpetrify-ref: 2.1.6 build-depends: [] - name: genivi-common-api-dbus-runtime repo: upstream:genivi-common-api-dbus-runtime - ref: 53d9341444ff9a31b9cc551b10fd0b341207937b - unpetrify-ref: 2.1.6 + ref: 3372155b32a2cf3b05e1a2a13f6f8413069de33f + unpetrify-ref: 2.1.6-p1 build-depends: - genivi-common-api-runtime - name: audiomanager @@ -65,8 +71,8 @@ chunks: - itzam-tarball - name: node-state-manager repo: upstream:node-state-manager - ref: dd4a86b9459537d2e85489b36abf80f34d12f098 - unpetrify-ref: baserock/genivi/baseline + ref: 30add4659e002f1df205cc36f71ef3141c10c1fb + unpetrify-ref: baserock/systemd_v216 build-depends: - DLT-daemon - persistence-client-library diff --git a/strata/genivi-foundation/linuxquota.morph b/strata/genivi/linuxquota.morph index 826696ad..826696ad 100644 --- a/strata/genivi-foundation/linuxquota.morph +++ b/strata/genivi/linuxquota.morph diff --git a/strata/graphics-common.morph b/strata/graphics-common.morph index f5b884ce..b187df8f 100644 --- a/strata/graphics-common.morph +++ b/strata/graphics-common.morph @@ -41,9 +41,10 @@ chunks: unpetrify-ref: Release-v4-0-3 build-depends: [] - name: cairo + morph: strata/graphics-common/cairo.morph repo: upstream:cairo - ref: c373daa9d4bade91b3fc8b7850163db4b3aec40a - unpetrify-ref: baserock/genivi/1.12.10 + ref: f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8 + unpetrify-ref: 1.14.0 build-depends: - fontconfig - freetype2 @@ -55,13 +56,3 @@ chunks: unpetrify-ref: baserock/0.9.12 build-depends: - freetype2 -- name: pango - repo: upstream:pango - ref: f8b1566e81af9e36ac018af4f0ae85ee7db4b8fd - unpetrify-ref: baserock/1.36.3 - build-depends: - - cairo - - harfbuzz - - fontconfig - - freetype2 - - freefont-otf diff --git a/strata/graphics-common/cairo.morph b/strata/graphics-common/cairo.morph new file mode 100644 index 00000000..f91ac385 --- /dev/null +++ b/strata/graphics-common/cairo.morph @@ -0,0 +1,5 @@ +name: cairo +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-glesv2 diff --git a/strata/gtk-deps.morph b/strata/gtk-deps.morph index 6c5db84a..799ba87a 100644 --- a/strata/gtk-deps.morph +++ b/strata/gtk-deps.morph @@ -6,6 +6,11 @@ build-depends: - morph: strata/graphics-common.morph - morph: strata/x-common.morph chunks: +- name: pango + repo: upstream:pango + ref: e0a21abf52a0b7588b1aa3357818948816ed9103 + unpetrify-ref: 1.36.8 + build-depends: [] - name: shared-mime-info morph: strata/gtk-deps/shared-mime-info.morph repo: upstream:shared-mime-info @@ -20,8 +25,8 @@ chunks: - name: gdk-pixbuf morph: strata/gtk-deps/gdk-pixbuf.morph repo: upstream:gdk-pixbuf - ref: bc45874c7ba5a6a95f032b48ab78115b3e2238ad - unpetrify-ref: baserock/morph + ref: b86959aa16e9d49ec6e286bc57d36c5249578c59 + unpetrify-ref: 2.30.8 build-depends: [] - name: atk repo: upstream:atk diff --git a/strata/gtk-deps/gdk-pixbuf.morph b/strata/gtk-deps/gdk-pixbuf.morph index 5cb16917..c89c75c8 100644 --- a/strata/gtk-deps/gdk-pixbuf.morph +++ b/strata/gtk-deps/gdk-pixbuf.morph @@ -3,6 +3,4 @@ kind: chunk build-system: autotools install-commands: - make DESTDIR=$DESTDIR install -- install -d "$DESTDIR/lib/systemd/system/multi-user.target.wants" -- install -m 0644 systemd/gdk-pixbuf-cache-loaders.service "$DESTDIR/lib/systemd/system" -- ln -s ../gdk-pixbuf-cache-loaders.service "$DESTDIR/lib/systemd/system/multi-user.target.wants/gdk-pixbuf-cache-loaders.service" +- LD_LIBRARY_PATH=$DESTDIR/usr/lib $DESTDIR/usr/bin/gdk-pixbuf-query-loaders > $DESTDIR/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache diff --git a/strata/gtk3.morph b/strata/gtk3.morph index d70c5b5f..f471bf6e 100644 --- a/strata/gtk3.morph +++ b/strata/gtk3.morph @@ -3,12 +3,17 @@ kind: stratum description: the gtk3 stratum build-depends: - morph: strata/gtk-deps.morph -- morph: strata/x-generic.morph - morph: strata/wayland-generic.morph chunks: +- name: libepoxy + repo: upstream:libepoxy + ref: 7422de5b4be7b19d789136b3bb5f932de42db27c + unpetrify-ref: v1.2 + build-depends: [] - name: gtk3 morph: strata/gtk3/gtk3.morph repo: upstream:gtk+ - ref: f36770fd0566cafb0a0803e5d80047a41ae68f7d - unpetrify-ref: baserock/morph-gtk-3 - build-depends: [] + ref: 911f3fb6d29f1570a2d30db6f2085d0202e7ad2a + unpetrify-ref: 3.15.0 + build-depends: + - libepoxy diff --git a/strata/gtk3/gtk3.morph b/strata/gtk3/gtk3.morph index 76007474..4542dc15 100644 --- a/strata/gtk3/gtk3.morph +++ b/strata/gtk3/gtk3.morph @@ -4,7 +4,7 @@ build-system: autotools configure-commands: - gdk-pixbuf-query-loaders > loader.cache - NOCONFIGURE=1 ./autogen.sh -- ./configure --prefix="$PREFIX" +- ./configure --prefix="$PREFIX" --enable-wayland-backend build-commands: - GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install-commands: diff --git a/strata/input-common.morph b/strata/input-common.morph index 0e9d25e6..533eff22 100644 --- a/strata/input-common.morph +++ b/strata/input-common.morph @@ -7,23 +7,23 @@ chunks: - name: mtdev repo: upstream:mtdev-git ref: 4381b78fea54de0e775bf54952b2f95e5a06c57d - unpetrify-ref: baserock/genivi/baseline + unpetrify-ref: v1.1.5 build-depends: [] - name: xkeyboard-config morph: strata/input-common/xkeyboard-config.morph repo: upstream:xkeyboard-config - ref: bc3ac1b0d152e929b3532a541596cf9fe286bb9e - unpetrify-ref: xkeyboard-config-2.12 + ref: 73aa90ce32967747c84a1b5fe32cee329bc3bbcf + unpetrify-ref: xkeyboard-config-2.13 build-depends: [] - name: libevdev repo: upstream:libevdev - ref: b23649e1ba9fd5c72fa9318e417b4f17f5f6f528 - unpetrify-ref: baserock/genivi/baseline + ref: 7ac00d7e920c56bb8617403699030a5300bfae1c + unpetrify-ref: libevdev-1.3.2 build-depends: [] - name: libinput repo: upstream:libinput - ref: bb10ec84d3704fc0fb40591bcbffe90f6c77966d - unpetrify-ref: 0.5.0 + ref: 06e2f522a4ab5ea0a1de68cce1b5f9fff568ed4f + unpetrify-ref: 0.7.0 build-depends: - mtdev - libevdev diff --git a/strata/installer-utils.morph b/strata/installer-utils.morph new file mode 100644 index 00000000..b97a7c09 --- /dev/null +++ b/strata/installer-utils.morph @@ -0,0 +1,12 @@ +name: installer-utils +kind: stratum +description: stratum for Baserock installer script. +build-depends: +- morph: strata/build-essential.morph +chunks: +- name: installer-scripts + morph: strata/installer-utils/installer-scripts.morph + repo: baserock:baserock/installer-scripts + ref: master + unpetrify-ref: master + build-depends: [] diff --git a/strata/installer-utils/installer-scripts.morph b/strata/installer-utils/installer-scripts.morph new file mode 100644 index 00000000..e42313a8 --- /dev/null +++ b/strata/installer-utils/installer-scripts.morph @@ -0,0 +1,4 @@ +name: installer-scripts +kind: chunk +install-commands: +- install -D -m 755 baserock-installer "$DESTDIR/usr/lib/baserock-installer/installer" diff --git a/strata/libdrm-common.morph b/strata/libdrm-common.morph index 37bff746..e364bab2 100644 --- a/strata/libdrm-common.morph +++ b/strata/libdrm-common.morph @@ -11,7 +11,7 @@ chunks: - name: drm repo: upstream:drm morph: strata/libdrm-common/drm.morph - ref: bcac0a17407dc78d0813b2eea7fae7c34de54c1b - unpetrify-ref: baserock/jetson/drm + ref: 83b2c40922ce451f5844aae0707ae9783a78d74f + unpetrify-ref: baserock/drm_2.4.58/jetson build-depends: - xorg-lib-libpciaccess diff --git a/strata/libdrm-common/drm.morph b/strata/libdrm-common/drm.morph index 8f5b88e2..d3d06fd8 100644 --- a/strata/libdrm-common/drm.morph +++ b/strata/libdrm-common/drm.morph @@ -3,7 +3,7 @@ kind: chunk build-system: autotools configure-commands: - NOCONFIGURE=1 ./autogen.sh - - ./configure --prefix="$PREFIX" --enable-tegra-experimental-api + - ./configure --prefix="$PREFIX" --enable-tegra-experimental-api --enable-freedreno-experimental-api install-commands: - make install DESTDIR="$DESTDIR" - mkdir -p "$DESTDIR"/usr/lib/pkgconfig diff --git a/strata/lighttpd-server.morph b/strata/lighttpd-server.morph new file mode 100644 index 00000000..cf3dec19 --- /dev/null +++ b/strata/lighttpd-server.morph @@ -0,0 +1,13 @@ +name: lighttpd-server +kind: stratum +description: lighttpd web server +build-depends: +- morph: strata/tools.morph +- morph: strata/pcre-utils.morph +chunks: +- name: lighttpd + morph: strata/lighttpd-server/lighttpd.morph + repo: upstream:lighttpd + ref: 12e4e21763da770034267ff0a7b660876930f789 + unpetrify-ref: baserock/morph + build-depends: [] diff --git a/strata/trove/lighttpd.morph b/strata/lighttpd-server/lighttpd.morph index ae371c52..ae371c52 100644 --- a/strata/trove/lighttpd.morph +++ b/strata/lighttpd-server/lighttpd.morph diff --git a/strata/lorry.morph b/strata/lorry.morph new file mode 100644 index 00000000..158071cc --- /dev/null +++ b/strata/lorry.morph @@ -0,0 +1,129 @@ +name: lorry +kind: stratum +description: | + Lorry and tools for working with version control systems other than Git. + + Lorry is a tool for creating and maintaining Git mirrors of source code + repositories, which aims to support most version control systems in use + by software projects that are used Baserock systems. + + The commandline tools 'hg', 'bzr', 'svn', and 'cvs' are also made available + by this stratum. +build-depends: +# The 'morph-utils' stratum is required for 'cliapp', which Lorry needs at +# build-time to generate its man page. Otherwise we could simply depend on +# the 'foundation' stratum. +- morph: strata/morph-utils.morph +chunks: +- name: bzr-tarball + repo: upstream:bzr-tarball + ref: e61c7edb4789abcd0f73c30fe719fa6fea478a52 + unpetrify-ref: baserock/morph + build-depends: [] +- name: python-fastimport + repo: upstream:python-fastimport + ref: 6500a5e7d82651ade9002d44e3ecc71a50302616 + unpetrify-ref: baserock/morph + build-depends: [] +- name: bzr-fastimport + repo: upstream:bzr-fastimport + ref: b3cda9967f857127bd4dab5eb72223a95916f5ea + unpetrify-ref: baserock/morph + build-depends: + - bzr-tarball + - python-fastimport +- name: cvs-tarball + morph: strata/lorry/cvs-tarball.morph + repo: upstream:cvs-tarball + ref: ca4cd317a75ef4349563b5a9a734561beb4a4f98 + unpetrify-ref: baserock/morph + build-depends: [] +- name: libapr-tarball + repo: upstream:libapr-tarball + ref: dea1efeb7f60fc6848e1e72b3fc973d0057565db + unpetrify-ref: baserock/morph + build-depends: [] +- name: libapr-util-tarball + morph: strata/lorry/libapr-util-tarball.morph + repo: upstream:libapr-util-tarball + ref: daba269ee5a262cc23621b3ee37ed368d2a2b69b + unpetrify-ref: baserock/morph + build-depends: + - libapr-tarball +- name: perl-dbi-tarball + morph: strata/lorry/perl-dbi-tarball.morph + repo: upstream:perl-dbi-tarball + ref: 09e269cff811f0c1881ea0d6b7571173bab8377b + unpetrify-ref: baserock/morph + build-depends: [] +- name: perl-dbd-sqlite-tarball + repo: upstream:perl-dbd-sqlite-tarball + ref: 485b97be9f2f2abf5a40923b5fd85f75714a8c02 + unpetrify-ref: baserock/morph + build-depends: + - perl-dbi-tarball +- name: libserf-tarball + repo: upstream:libserf-tarball + ref: 6f61a1acd01dc2ad1d2f5c1f7458702c77c69f9c + unpetrify-ref: baserock/morph + build-depends: + - libapr-tarball + - libapr-util-tarball +- name: swig-tarball + morph: strata/lorry/swig-tarball.morph + repo: upstream:swig-tarball + ref: 1f6cb46b6a4b3ebf9352fa10198b0b286f84138b + unpetrify-ref: baserock/morph + build-depends: [] +- name: neon + morph: strata/lorry/neon.morph + repo: upstream:neon + ref: 837374e9d797e216f1de684595cefe791f67c0e4 + unpetrify-ref: baserock/morph + build-depends: [] +- name: subversion-tarball + morph: strata/lorry/subversion-tarball.morph + repo: upstream:subversion-tarball + ref: 351e074672d9aa6446d5829938b697a3d6b23266 + unpetrify-ref: baserock/morph + build-depends: + - swig-tarball + - libapr-tarball + - libapr-util-tarball + - libserf-tarball + - neon +- name: mercurial-tarball + morph: strata/lorry/mercurial-tarball.morph + repo: upstream:mercurial-tarball + ref: 4b0aa73b8c69bd5b7521337809f7bc4714209a5a + unpetrify-ref: baserock/morph + build-depends: [] +- name: hg-fast-export + morph: strata/lorry/hg-fast-export.morph + repo: upstream:hg-fast-export + ref: 09a472aa58da0417a11a22bae172785f7cb2e80f + unpetrify-ref: baserock/morph + build-depends: + - mercurial-tarball +- name: cvsps + morph: strata/lorry/cvsps.morph + repo: upstream:cvsps + ref: 71c6d1f5668f405a7b259a0aac0d423f6c9b4d49 + unpetrify-ref: baserock/morph + build-depends: [] +- name: lorry + morph: strata/lorry/lorry.morph + repo: baserock:baserock/lorry + ref: 9fe25bf02dceec04f0ffd6a05cc47146ceab9904 + unpetrify-ref: master + build-depends: + - bzr-tarball + - python-fastimport + - bzr-fastimport + - perl-dbi-tarball + - perl-dbd-sqlite-tarball + - cvs-tarball + - cvsps + - subversion-tarball + - mercurial-tarball + - hg-fast-export diff --git a/strata/trove/cvs-tarball.morph b/strata/lorry/cvs-tarball.morph index e8322017..e8322017 100644 --- a/strata/trove/cvs-tarball.morph +++ b/strata/lorry/cvs-tarball.morph diff --git a/strata/trove/cvsps.morph b/strata/lorry/cvsps.morph index ff53784e..ff53784e 100644 --- a/strata/trove/cvsps.morph +++ b/strata/lorry/cvsps.morph diff --git a/strata/trove/hg-fast-export.morph b/strata/lorry/hg-fast-export.morph index ef99a97a..ef99a97a 100644 --- a/strata/trove/hg-fast-export.morph +++ b/strata/lorry/hg-fast-export.morph diff --git a/strata/trove/libapr-util-tarball.morph b/strata/lorry/libapr-util-tarball.morph index e34e3610..e34e3610 100644 --- a/strata/trove/libapr-util-tarball.morph +++ b/strata/lorry/libapr-util-tarball.morph diff --git a/strata/trove/lorry.morph b/strata/lorry/lorry.morph index 6b8cb355..6b8cb355 100644 --- a/strata/trove/lorry.morph +++ b/strata/lorry/lorry.morph diff --git a/strata/trove/mercurial-tarball.morph b/strata/lorry/mercurial-tarball.morph index 03264f56..03264f56 100644 --- a/strata/trove/mercurial-tarball.morph +++ b/strata/lorry/mercurial-tarball.morph diff --git a/strata/trove/neon.morph b/strata/lorry/neon.morph index 19f8e83f..19f8e83f 100644 --- a/strata/trove/neon.morph +++ b/strata/lorry/neon.morph diff --git a/strata/trove/perl-dbi-tarball.morph b/strata/lorry/perl-dbi-tarball.morph index 9eb3a537..9eb3a537 100644 --- a/strata/trove/perl-dbi-tarball.morph +++ b/strata/lorry/perl-dbi-tarball.morph diff --git a/strata/trove/subversion-tarball.morph b/strata/lorry/subversion-tarball.morph index cb416d53..cb416d53 100644 --- a/strata/trove/subversion-tarball.morph +++ b/strata/lorry/subversion-tarball.morph diff --git a/strata/trove/swig-tarball.morph b/strata/lorry/swig-tarball.morph index 61f154a4..61f154a4 100644 --- a/strata/trove/swig-tarball.morph +++ b/strata/lorry/swig-tarball.morph diff --git a/strata/lua.morph b/strata/lua.morph index 5ac3102b..75ccad86 100644 --- a/strata/lua.morph +++ b/strata/lua.morph @@ -10,3 +10,9 @@ chunks: ref: 948063437e0350d9ef1649ec3a76d0c24a5c8642 unpetrify-ref: baserock/5.1-morph build-depends: [] +- name: luajit2 + morph: strata/lua/luajit2.morph + repo: upstream:luajit2 + ref: 880ca300e8fb7b432b9d25ed377db2102e4cb63d + unpetrify-ref: v2.0.3 + build-depends: [] diff --git a/strata/lua/luajit2.morph b/strata/lua/luajit2.morph new file mode 100644 index 00000000..72f34f02 --- /dev/null +++ b/strata/lua/luajit2.morph @@ -0,0 +1,7 @@ +name: luajit2 +kind: chunk +build-commands: +- make PREFIX="$PREFIX" +install-commands: +- make install PREFIX="$PREFIX" DESTDIR="$DESTDIR" + diff --git a/strata/mesa-common.morph b/strata/mesa-common.morph index e2548e7d..efae2449 100644 --- a/strata/mesa-common.morph +++ b/strata/mesa-common.morph @@ -8,6 +8,6 @@ chunks: - name: mesa morph: strata/mesa-common/mesa.morph repo: upstream:mesa - ref: 1b12af300dfa77c24088780e88200703653293d3 - unpetrify-ref: mesa-10.3 + ref: 1a9cc5f50db5d27530a3449743b43aac389d781f + unpetrify-ref: mesa-10.3.3 build-depends: [] diff --git a/strata/mesa-common/mesa.morph b/strata/mesa-common/mesa.morph index 00b4c9c8..4194acc2 100644 --- a/strata/mesa-common/mesa.morph +++ b/strata/mesa-common/mesa.morph @@ -4,32 +4,20 @@ build-system: autotools configure-commands: - | cpu=$(echo $TARGET | cut -d '-' -f 1) - EXTRAARGS=--disable-gallium-egl case "$cpu" in - x86_32|x64_64) - DRIDRIVERS=intel,i915,i965,swrast - GALLIUMDRIVERS=swrast - EGLPLATFORMS=wayland,drm - ;; armv7lhf) - DRIDRIVERS=nouveau,swrast - GALLIUMDRIVERS=nouveau,swrast - EXTRAARGS="--with-state-trackers=egl --enable-gallium-egl" - EGLPLATFORMS=wayland,drm + DRIDRIVERS=no + GALLIUMDRIVERS=nouveau,freedreno,svga,swrast,vc4 ;; *) - DRIDRIVERS=swrast - GALLIUMDRIVERS=swrast - EGLPLATFORMS=wayland,drm + DRIDRIVERS=yes + GALLIUMDRIVERS=yes ;; esac ./autogen.sh --prefix="$PREFIX" \ --enable-gles2 \ - --with-egl-platforms="$EGLPLATFORMS" \ --disable-glx \ - --enable-gbm \ - --enable-shared-glapi \ + --with-egl-platforms=drm,wayland \ --with-gallium-drivers="$GALLIUMDRIVERS" \ --with-dri-drivers="$DRIDRIVERS" \ - --disable-dri3 $EXTRAARGS - + --enable-gallium-egl diff --git a/strata/morph-utils.morph b/strata/morph-utils.morph index 6c3fc412..57582809 100644 --- a/strata/morph-utils.morph +++ b/strata/morph-utils.morph @@ -53,7 +53,7 @@ chunks: - name: cmdtest morph: strata/morph-utils/cmdtest.morph repo: upstream:cmdtest - ref: b7de175d185948c1130a1036ecd11d113dbf1175 + ref: ac91791842c6e7e6eda3213916af413255999c7b unpetrify-ref: baserock/morph build-depends: - cliapp @@ -71,7 +71,7 @@ chunks: build-depends: [] - name: morph repo: baserock:baserock/morph - ref: 8036c2ddfdbf9f6b35ea76244b98a10b1d76c55b + ref: 8e319db777ccb11ae565293e5c86919192fb459b unpetrify-ref: master build-depends: - cliapp diff --git a/strata/multimedia-gstreamer-0.10.morph b/strata/multimedia-gstreamer-0.10.morph index ae5fe656..50917372 100644 --- a/strata/multimedia-gstreamer-0.10.morph +++ b/strata/multimedia-gstreamer-0.10.morph @@ -11,23 +11,23 @@ chunks: ref: b4f7fcaf99a4d952e59f2a9fa9286d24cc4b3a5a unpetrify-ref: baserock/morph build-depends: [] -- name: gstreamer +- name: gstreamer@0.10 repo: upstream:gstreamer - ref: c7e4a97d26396882960fd399b1a5e298e40d2a35 + ref: 1bb950008f4656f6a6153fa88a8ebb5a39fbe84f unpetrify-ref: baserock/morph/0.10 build-depends: - orc -- name: gstreamer-plugins-base +- name: gstreamer-plugins-base@0.10 repo: upstream:gstreamer-plugins-base ref: 960c596309dbb983a1d733259adccc45c47006a2 unpetrify-ref: baserock/morph/0.10 build-depends: - - gstreamer -- name: gstreamer-plugins-good + - gstreamer@0.10 +- name: gstreamer-plugins-good@0.10 repo: upstream:gstreamer-plugins-good ref: 725e80e0c6b7f8e66d9b3fcaffd283ecbd8498d3 unpetrify-ref: baserock/morph/0.10 build-depends: - - gstreamer - - gstreamer-plugins-base + - gstreamer@0.10 + - gstreamer-plugins-base@0.10 - orc diff --git a/strata/multimedia.morph b/strata/multimedia.morph index b0d82984..6acab0f7 100644 --- a/strata/multimedia.morph +++ b/strata/multimedia.morph @@ -6,33 +6,33 @@ build-depends: chunks: - name: orc repo: upstream:orc - ref: ec132ae118bead13312f126a1f6e5709a2429ff6 - unpetrify-ref: orc-0.4.19 + ref: 16e053b8f2359196fd50b111f1c10b93590f5cb9 + unpetrify-ref: orc-0.4.22 build-depends: [] - name: gstreamer repo: upstream:gstreamer - ref: 0217fba607637860a475d0b5d48a3d4b249ca360 - unpetrify-ref: baserock/morph/1.2 + ref: b9b3440e323c7b32a8c3a9d52c7bf1a229850558 + unpetrify-ref: baserock/1.4 build-depends: - orc - name: gstreamer-plugins-base repo: upstream:gstreamer-plugins-base - ref: 1263caa96fcc1e3d2963bc27acbcf88b5b17d5dd - unpetrify-ref: baserock/morph/1.2 + ref: 3b38ad94a2d58c07c24e4647e08afa1fe4dd7d46 + unpetrify-ref: baserock/1.4 build-depends: - gstreamer - name: gstreamer-plugins-good repo: upstream:gstreamer-plugins-good - ref: b7e3af91197812e41028016d2e75ad2d6530b9b3 - unpetrify-ref: baserock/morph/1.2 + ref: 9d48c2f7a7b63fd967de7eec72434bc876c02667 + unpetrify-ref: baserock/1.4 build-depends: - gstreamer - gstreamer-plugins-base - orc - name: gstreamer-plugins-bad repo: upstream:gstreamer-plugins-bad - ref: 343470e7fd1e7a6bb95b953d25b2caf5425d0185 - unpetrify-ref: baserock/morph/1.2 + ref: bb2a4669ff57af90c8101c54744d3228aa060475 + unpetrify-ref: baserock/1.4 build-depends: - gstreamer - gstreamer-plugins-base diff --git a/strata/nfs.morph b/strata/nfs.morph index f0956ff7..68988d54 100644 --- a/strata/nfs.morph +++ b/strata/nfs.morph @@ -9,12 +9,6 @@ chunks: ref: 9364dff5c20e9e8c18f7f20ee1c92463e9e9c8a7 unpetrify-ref: baserock/release-2.0.21-stable build-depends: [] -- name: tcp-wrappers - morph: strata/nfs/tcp-wrappers.morph - repo: upstream:tcp-wrappers - ref: 23b65f29b324b65a057a3fa87613b788856d6e4e - unpetrify-ref: baserock/fedora-patches - build-depends: [] - name: ti-rpc morph: strata/nfs/ti-rpc.morph repo: upstream:ti-rpc @@ -28,7 +22,6 @@ chunks: unpetrify-ref: baserock/master build-depends: - ti-rpc - - tcp-wrappers - name: nfs-utils morph: strata/nfs/nfs-utils.morph repo: upstream:nfs-utils @@ -36,5 +29,4 @@ chunks: unpetrify-ref: baserock/master build-depends: - libevent - - tcp-wrappers - ti-rpc diff --git a/strata/nfs/nfs-utils.morph b/strata/nfs/nfs-utils.morph index d09c063e..c412e1d0 100644 --- a/strata/nfs/nfs-utils.morph +++ b/strata/nfs/nfs-utils.morph @@ -3,7 +3,7 @@ kind: chunk build-system: autotools configure-commands: - NOCONFIGURE=1 ./autogen.sh -- ./configure --prefix="$PREFIX" --disable-nfsv4 --disable-nfsv41 --disable-gss --with-rpcgen=internal +- ./configure --prefix="$PREFIX" --disable-nfsv4 --disable-nfsv41 --disable-gss --with-rpcgen=internal --without-tcp-wrappers install-commands: - make DESTDIR="$DESTDIR" install - mkdir -p "$DESTDIR"/lib/systemd/system diff --git a/strata/nfs/rpcbind.morph b/strata/nfs/rpcbind.morph index 35b9c77a..0ca929dc 100644 --- a/strata/nfs/rpcbind.morph +++ b/strata/nfs/rpcbind.morph @@ -3,7 +3,7 @@ kind: chunk build-system: autotools configure-commands: - NOCONFIGURE=1 ./autogen.sh -- ./configure --prefix="$PREFIX" --enable-libwrap --with-rpcuser=nobody --enable-warmstarts +- ./configure --prefix="$PREFIX" --with-rpcuser=nobody --enable-warmstarts install-commands: - make DESTDIR="$DESTDIR" install - mkdir -p "$DESTDIR"/lib/systemd/system diff --git a/strata/pcre-utils.morph b/strata/pcre-utils.morph new file mode 100644 index 00000000..44d0bab2 --- /dev/null +++ b/strata/pcre-utils.morph @@ -0,0 +1,10 @@ +name: pcre-utils +kind: stratum +build-depends: +- morph: strata/tools.morph +chunks: +- name: pcre + repo: upstream:pcre + ref: 2720152c58e13e7cc7403642ec33127101b9971b + unpetrify-ref: baserock/morph + build-depends: [] diff --git a/strata/python-tools.morph b/strata/python-tools.morph new file mode 100644 index 00000000..0a707bc6 --- /dev/null +++ b/strata/python-tools.morph @@ -0,0 +1,12 @@ +name: python-tools +kind: stratum +description: "A stratum for non-essential python tools: +useful python tools that we don't want to include in core." +build-depends: +- morph: strata/core.morph +chunks: +- name: pip + repo: upstream:pip + ref: ea680f204fb0e48789710c22c8f597a9bf01bc16 + unpetrify-ref: baserock/master + build-depends: [] diff --git a/strata/qt5-sdk.morph b/strata/qt5-sdk.morph index f0b3cc2e..0d877a62 100644 --- a/strata/qt5-sdk.morph +++ b/strata/qt5-sdk.morph @@ -3,16 +3,11 @@ kind: stratum description: Qt5 Desktop Environment, IDE and Example Apps build-depends: - morph: strata/qt5-tools.morph +- morph: strata/qt5-tools-qtwebkit.morph chunks: - name: qt-creator morph: strata/qt5-sdk/qt-creator.morph repo: upstream:qt-creator - ref: d5a6b10634c1a3271012e9578e016772ef077d59 + ref: v3.2.1 unpetrify-ref: baserock/morph/2.7 build-depends: [] -- name: snowshoe - morph: strata/qt5-sdk/snowshoe.morph - repo: upstream:snowshoe - ref: 098f931de58072edd5d591cdc4a2ad3c05e83991 - unpetrify-ref: baserock/morph - build-depends: [] diff --git a/strata/qt5-sdk/qt-creator.morph b/strata/qt5-sdk/qt-creator.morph index 76d9f7d7..91fae589 100644 --- a/strata/qt5-sdk/qt-creator.morph +++ b/strata/qt5-sdk/qt-creator.morph @@ -6,4 +6,3 @@ build-commands: - make install-commands: - make install INSTALL_ROOT=$DESTDIR -- ./qhelpgenerator.sh diff --git a/strata/qt5-tools-qtmultimedia.morph b/strata/qt5-tools-qtmultimedia.morph new file mode 100644 index 00000000..6482db62 --- /dev/null +++ b/strata/qt5-tools-qtmultimedia.morph @@ -0,0 +1,13 @@ +name: qt5-tools-qtmultimedia +kind: stratum +description: Qt5 QtMultimedia Development Libraries and Tools +build-depends: +- morph: strata/qt5-tools.morph +- morph: strata/multimedia-gstreamer-0.10.morph +chunks: +- name: qtmultimedia + morph: strata/qt5-tools/qtmultimedia.morph + repo: upstream:qt5/qtmultimedia + ref: b3c2dca466042cf362ffb8d803bf05c9b8a0f95f + unpetrify-ref: v5.3.2 + build-depends: [] diff --git a/strata/qt5-tools-qtwebkit.morph b/strata/qt5-tools-qtwebkit.morph new file mode 100644 index 00000000..1d746949 --- /dev/null +++ b/strata/qt5-tools-qtwebkit.morph @@ -0,0 +1,35 @@ +name: qt5-tools-qtwebkit +kind: stratum +description: Qt5 WebKit Development Libraries and Tools +build-depends: +- morph: strata/multimedia.morph +- morph: strata/qt5-tools.morph +- morph: strata/ruby.morph +chunks: +- name: qtwebkit + morph: strata/qt5-tools/qtwebkit.morph + repo: upstream:qt5/qtwebkit + ref: 13f80d34ae84c3231118c8013beee55badab8929 + unpetrify-ref: v5.3.2 + build-depends: [] +- name: qtwebkit-examples + morph: strata/qt5-tools/qtwebkit-examples.morph + repo: upstream:qt5/qtwebkit-examples + ref: bce5056b9e16a943357e362455a46685d3f22093 + unpetrify-ref: v5.3.2 + build-depends: + - qtwebkit +- name: qttools + morph: strata/qt5-tools/qttools.morph + repo: upstream:qt5/qttools + ref: 8c79a098b8b7da4832ebca1884ee833a2c2078a7 + unpetrify-ref: v5.3.2 + build-depends: + - qtwebkit +- name: qttranslations + morph: strata/qt5-tools/qttranslations.morph + repo: upstream:qt5/qttranslations + ref: cf4d6f7e73bb410ed0aa3d64dffb2b6b242cdfe0 + unpetrify-ref: v5.3.2 + build-depends: + - qttools diff --git a/strata/qt5-tools.morph b/strata/qt5-tools.morph index 1c784bf3..34e57bc4 100644 --- a/strata/qt5-tools.morph +++ b/strata/qt5-tools.morph @@ -4,7 +4,6 @@ description: Qt5 Development Libraries and Tools build-depends: - morph: strata/tools.morph - morph: strata/x-generic.morph -- morph: strata/multimedia-gstreamer-0.10.morph chunks: - name: icu morph: strata/qt5-tools/icu.morph @@ -12,179 +11,129 @@ chunks: ref: ba023548a3bff7277cbea4acade3042ce9d8949e unpetrify-ref: baserock/morph build-depends: [] -- name: ruby-1.8 - morph: strata/qt5-tools/ruby-1.8.morph - repo: upstream:ruby - ref: 7a24f1710028d568ad61d0aa49d5178260178d77 - unpetrify-ref: baserock/morph/ruby_1_8_7 - build-depends: [] -- name: ruby-1.9 - morph: strata/qt5-tools/ruby-1.9.morph - repo: upstream:ruby - ref: cb3ea602294b5038b5f7ac21d3875a2b52342956 - unpetrify-ref: baserock/morph/ruby_1_9_3 - build-depends: - - ruby-1.8 - name: qtbase morph: strata/qt5-tools/qtbase.morph repo: upstream:qt5/qtbase - ref: 55f24d7e91e7c906cf4e3a3ef7a4d95ff094a7a8 - unpetrify-ref: baserock/morph + ref: 05670f586ffe05425b7542a27fcca31bddf231aa + unpetrify-ref: v5.3.2 build-depends: - icu - name: qtsvg morph: strata/qt5-tools/qtsvg.morph repo: upstream:qt5/qtsvg - ref: 552bf3adcc48c669f9dfbda5818142fb18c9e957 - unpetrify-ref: baserock/morph - build-depends: - - qtbase -- name: qtjsbackend - morph: strata/qt5-tools/qtjsbackend.morph - repo: upstream:qt5/qtjsbackend - ref: c6978bf56f599a3da8c03b1a7e58102aa84223e7 - unpetrify-ref: baserock/morph + ref: 35a2f0880831d38c60d2b4820dac808f48f6f3a8 + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtscript morph: strata/qt5-tools/qtscript.morph repo: upstream:qt5/qtscript - ref: d20e99b3bdbcf77b69a92a2ba1b3ca1f1379e7c8 - unpetrify-ref: baserock/morph + ref: 71f6dee8791c95fd862ca3651d7f4b7d6b9f440e + unpetrify-ref: v5.3.2 build-depends: - qtbase - - qtjsbackend - name: qtdeclarative morph: strata/qt5-tools/qtdeclarative.morph repo: upstream:qt5/qtdeclarative - ref: 774d0310883a9526210c4530bbb9d0af26d88699 - unpetrify-ref: baserock/morph + ref: a67aa6abc6a406b00ef58a7e07fd39012bfa3eb1 + unpetrify-ref: v5.3.2 build-depends: - qtbase - - qtjsbackend - qtscript - name: qtquick1 morph: strata/qt5-tools/qtquick1.morph repo: upstream:qt5/qtquick1 - ref: b13755a2411dca01e65bb443a399ed130d5dd738 - unpetrify-ref: baserock/morph + ref: 8e7fa2b5aa2e2e4371c4b73926d0e6ad2ebdbd96 + unpetrify-ref: v5.3.2 build-depends: - qtbase - - qtjsbackend - qtscript - name: qt3d morph: strata/qt5-tools/qt3d.morph repo: upstream:qt5/qt3d - ref: 805fbf45a54f1b69f4b13f6dc9f962b07c017d3b + ref: bdb98baf8253c69949a8c259369203da9ffb269c unpetrify-ref: baserock/morph build-depends: - qtbase - - qtjsbackend - qtscript - qtdeclarative - name: qtquickcontrols morph: strata/qt5-tools/qtquickcontrols.morph repo: upstream:qt5/qtquickcontrols - ref: acf9e50d52c4d09a1aed9490bb2f3c5de7dce9bb - unpetrify-ref: baserock/morph + ref: bc91574cca8b6f24968ab4e1cc11fe1fd10f3061 + unpetrify-ref: v5.3.2 build-depends: - qtbase - - qtjsbackend - qtdeclarative - name: qtsensors morph: strata/qt5-tools/qtsensors.morph repo: upstream:qt5/qtsensors - ref: cd22d77e07af6046be24d0322187a86c9a3c4d1d - unpetrify-ref: baserock/morph + ref: fd3e65ef5ab6eb8e4b5bdad380d1f6862799856c + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtserialport morph: strata/qt5-tools/qtserialport.morph repo: upstream:qt5/qtserialport - ref: b1abca2eee45e7b8ecf71cb5cd1e77a2821fcac2 - unpetrify-ref: baserock/morph + ref: 286d64c202f461cb8ff5a4cc4c2320af8195b8f0 + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtx11extras morph: strata/qt5-tools/qtx11extras.morph repo: upstream:qt5/qtx11extras - ref: 3b33afd2814c88002e2efc4955e5b1851aff0c58 - unpetrify-ref: baserock/morph - build-depends: - - qtbase -- name: qtwebkit - morph: strata/qt5-tools/qtwebkit.morph - repo: upstream:qt5/qtwebkit - ref: 15a558c03ea7a35f97dfc0b16024d026d20920be - unpetrify-ref: baserock/morph - build-depends: - - qtbase - - icu - - ruby-1.9 - - qtjsbackend - - qtdeclarative -- name: qtwebkit-examples - morph: strata/qt5-tools/qtwebkit-examples.morph - repo: upstream:qt5/qtwebkit-examples - ref: fdaa2bb5e47d6ca1d3e8c681f88eae0b9d4ae351 - unpetrify-ref: baserock/morph - build-depends: - - qtbase - - qtjsbackend - - qtdeclarative - - qtwebkit -- name: qtmultimedia - morph: strata/qt5-tools/qtmultimedia.morph - repo: upstream:qt5/qtmultimedia - ref: 8b73d090f87f88ee3ae4efc437ac866d05df76be - unpetrify-ref: baserock/morph + ref: 2d84caf5ef1b5dace0d678df4581db3c955be6ee + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtxmlpatterns morph: strata/qt5-tools/qtxmlpatterns.morph repo: upstream:qt5/qtxmlpatterns - ref: ed713a904ee55f1c345d2d6c35e77892be96977e - unpetrify-ref: baserock/morph + ref: 78c2367e22d87b529610117f5b6abef6934abdcf + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtdoc morph: strata/qt5-tools/qtdoc.morph repo: upstream:qt5/qtdoc - ref: 674abef4f06bdde57a272d69750e2a4ac5027ea9 - unpetrify-ref: baserock/morph + ref: 688019893d2cbd9ccdc4d75c550bca4530a46ee4 + unpetrify-ref: v5.3.2 build-depends: - qtbase - name: qtgraphicaleffects morph: strata/qt5-tools/qtgraphicaleffects.morph repo: upstream:qt5/qtgraphicaleffects - ref: e41d08f95d74d7309fc976cb62141b78239de975 - unpetrify-ref: baserock/morph + ref: 82abf6975b6737259ee656564e5ec7f8ad1d0508 + unpetrify-ref: v5.3.2 build-depends: - qtbase - - qtjsbackend - qtdeclarative - name: qtimageformats morph: strata/qt5-tools/qtimageformats.morph repo: upstream:qt5/qtimageformats - ref: 3f7f6126d9832e03a4dcaaca5279220f00126e89 - unpetrify-ref: baserock/morph - build-depends: - - qtbase -- name: qttools - morph: strata/qt5-tools/qttools.morph - repo: upstream:qt5/qttools - ref: 1369d91dd095cd4ea2febe759ef6446e41bd2d80 - unpetrify-ref: baserock/morph - build-depends: - - qtbase - - qtjsbackend - - qtdeclarative - - qtwebkit -- name: qttranslations - morph: strata/qt5-tools/qttranslations.morph - repo: upstream:qt5/qttranslations - ref: e91af8e6363a4538f08992b6af51d17b91453080 - unpetrify-ref: baserock/morph - build-depends: - - qtbase - - qttools + ref: 85e621e3ecf449bb0587bd4da97ca66179b24f31 + unpetrify-ref: v5.3.2 + build-depends: + - qtbase +- name: qtconnectivity + morph: strata/qt5-tools/qtconnectivity.morph + repo: upstream:qt5/qtconnectivity + ref: 8a33a9b43dcc5e7f9a77237a660a3759286e6b86 + unpetrify-ref: v5.3.2 + build-depends: + - qtbase +- name: qtlocation + morph: strata/qt5-tools/qtlocation.morph + repo: upstream:qt5/qtlocation + ref: a36d9e67e3b8168cb4d1eb76eda96ebb8242fd20 + unpetrify-ref: v5.3.2 + build-depends: + - qtbase +- name: qtwebsockets + morph: strata/qt5-tools/qtwebsockets.morph + repo: upstream:qt5/qtwebsockets + ref: 00f77bdc5beb62e980216cfee906ab7aa1d1c4f7 + unpetrify-ref: v5.3.2 + build-depends: + - qtbase + diff --git a/strata/qt5-tools/qtbase.morph b/strata/qt5-tools/qtbase.morph index 1427c4c2..9b2a20c6 100644 --- a/strata/qt5-tools/qtbase.morph +++ b/strata/qt5-tools/qtbase.morph @@ -5,6 +5,8 @@ configure-commands: build-commands: - make - touch /qtbase.build/src/corelib/corelib.pro +- touch /qtbase.build/qmake/qmake.pro +- touch /qtbase.build/qmake/qmake-docs.pro - ./bin/qmake -set QDOC /qtbase.build/bin/qdoc - make html_docs - ./bin/qmake -unset QDOC diff --git a/strata/qt5-tools/qtconnectivity.morph b/strata/qt5-tools/qtconnectivity.morph new file mode 100644 index 00000000..d1123711 --- /dev/null +++ b/strata/qt5-tools/qtconnectivity.morph @@ -0,0 +1,10 @@ +name: qtconnectivity +kind: chunk +configure-commands: +- qmake +build-commands: +- make +- make html_docs +install-commands: +- make install INSTALL_ROOT=$DESTDIR +- make install_html_docs INSTALL_ROOT=$DESTDIR diff --git a/strata/qt5-tools/qtlocation.morph b/strata/qt5-tools/qtlocation.morph new file mode 100644 index 00000000..14a527ff --- /dev/null +++ b/strata/qt5-tools/qtlocation.morph @@ -0,0 +1,10 @@ +name: qtlocation +kind: chunk +configure-commands: +- qmake +build-commands: +- make +- make html_docs +install-commands: +- make install INSTALL_ROOT=$DESTDIR +- make install_html_docs INSTALL_ROOT=$DESTDIR diff --git a/strata/qt5-tools/qtwebsockets.morph b/strata/qt5-tools/qtwebsockets.morph new file mode 100644 index 00000000..e1cac87f --- /dev/null +++ b/strata/qt5-tools/qtwebsockets.morph @@ -0,0 +1,10 @@ +name: qtwebsockets +kind: chunk +configure-commands: +- qmake +build-commands: +- make +- make html_docs +install-commands: +- make install INSTALL_ROOT=$DESTDIR +- make install_html_docs INSTALL_ROOT=$DESTDIR diff --git a/strata/ruby.morph b/strata/ruby.morph index 45db406d..c5bd9993 100644 --- a/strata/ruby.morph +++ b/strata/ruby.morph @@ -1,6 +1,12 @@ name: ruby kind: stratum -description: ruby and things from ruby world +description: | + Ruby and common Ruby build dependencies. + + Most Gem dependencies are not required when building or installing the + Gem. They are needed at runtime only. Tools which extend Rake, such as + 'hoe' and 'rake-compiler', are exceptions to that rule, and are kept + in this stratum so they are always available when building other Gems. build-depends: - morph: strata/tools.morph chunks: @@ -30,3 +36,17 @@ chunks: unpetrify-ref: baserock/v1.6.2 build-depends: - ruby +- name: hoe + morph: strata/ruby/hoe.morph + repo: upstream:ruby-gems/hoe + ref: 50a2706d0f70ece52922ddcc56630e1e0655b83e + unpetrify-ref: master + build-depends: + - ruby +- name: rake-compiler + morph: strata/ruby/rake-compiler.morph + repo: upstream:ruby-gems/rake-compiler + ref: aaed621f6fdb0b0395775fea5464cc83e794fbdb + unpetrify-ref: v0.9.3 + build-depends: + - ruby diff --git a/strata/ruby/hoe.morph b/strata/ruby/hoe.morph new file mode 100644 index 00000000..0d06a82a --- /dev/null +++ b/strata/ruby/hoe.morph @@ -0,0 +1,16 @@ +name: hoe +kind: chunk +description: | + Hoe is a rake/rubygems helper for project Rakefiles. It helps you + manage, maintain, and release your project and includes a dynamic + plug-in system allowing for easy extensibility. +products: +- artifact: hoe-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- rake gem +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./pkg/hoe-*.gem diff --git a/strata/ruby/rake-compiler.morph b/strata/ruby/rake-compiler.morph new file mode 100644 index 00000000..9286f14a --- /dev/null +++ b/strata/ruby/rake-compiler.morph @@ -0,0 +1,15 @@ +name: rake-compiler +kind: chunk +description: | + Provide a standard and simplified way to build and package Ruby + extensions (C, Java) using Rake as glue. +products: +- artifact: rake-compiler-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- rake gem +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./pkg/rake-compiler-*.gem diff --git a/strata/tools.morph b/strata/tools.morph index 333b173f..a09c24f5 100644 --- a/strata/tools.morph +++ b/strata/tools.morph @@ -4,12 +4,6 @@ description: Extra development tools included in the devel system build-depends: - morph: strata/foundation.morph chunks: -- name: coreutils - morph: strata/tools/coreutils.morph - repo: upstream:coreutils - ref: 9df9643842e4b4d8ece710fe6105f32fa38a0d22 - unpetrify-ref: baserock/8.23 - build-depends: [] - name: distcc morph: strata/tools/distcc.morph repo: upstream:distcc diff --git a/strata/tools/coreutils.morph b/strata/tools/coreutils.morph deleted file mode 100644 index 820a4eed..00000000 --- a/strata/tools/coreutils.morph +++ /dev/null @@ -1,9 +0,0 @@ -name: coreutils -kind: chunk -build-system: autotools -configure-commands: -- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf -- bash bootstrap --skip-po -- FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix="$PREFIX" --disable-nls --enable-no-install-program='[,base64,basename,cat,chcon,chgrp,chmod,chown,chroot,cksum,comm,cp,csplit,cut,date,dd,df,dir,dircolors,dirname,du,echo,env,expand,expr,false,fold,ginstall,groups,head,hostid,id,kill,ln,logname,ls,md5sum,mkdir,mkfifo,mknod,mktemp,mv,nice,nohup,od,printenv,printf,pwd,readlink,realpath,rm,rmdir,seq,sha1sum,sha224sum,sha256sum,sha384sum,sha512sum,sleep,sort,split,stat,stty,sum,sync,tac,tail,tee,test,timeout,touch,tr,true,tty,uname,unexpand,uniq,unlink,uptime,users,wc,who,whoami,yes' -install-commands: -- make INSTALL_PROGRAM=install DESTDIR="$DESTDIR" install diff --git a/strata/trove.morph b/strata/trove.morph index c3d4f069..7eaa204a 100644 --- a/strata/trove.morph +++ b/strata/trove.morph @@ -4,6 +4,7 @@ description: Trove software build-depends: - morph: strata/tools.morph - morph: strata/morph-utils.morph +- morph: strata/pcre-utils.morph chunks: - name: lua morph: strata/trove/lua.morph @@ -48,18 +49,12 @@ chunks: build-depends: - lua - luxio -- name: pcre - repo: upstream:pcre - ref: 2720152c58e13e7cc7403642ec33127101b9971b - unpetrify-ref: baserock/morph - build-depends: [] - name: lrexlib-pcre morph: strata/trove/lrexlib-pcre.morph repo: upstream:lrexlib ref: 0524a6e3ab6d50cba63c8642a875e246de53d651 unpetrify-ref: baserock/morph build-depends: - - pcre - lua - name: gitano morph: strata/trove/gitano.morph @@ -74,137 +69,18 @@ chunks: ref: acbf4a15e260c711094455dbef7c024f2553fd32 unpetrify-ref: baserock/morph build-depends: [] -- name: bzr-tarball - repo: upstream:bzr-tarball - ref: e61c7edb4789abcd0f73c30fe719fa6fea478a52 - unpetrify-ref: baserock/morph - build-depends: [] -- name: python-fastimport - repo: upstream:python-fastimport - ref: 6500a5e7d82651ade9002d44e3ecc71a50302616 - unpetrify-ref: baserock/morph - build-depends: [] -- name: bzr-fastimport - repo: upstream:bzr-fastimport - ref: b3cda9967f857127bd4dab5eb72223a95916f5ea - unpetrify-ref: baserock/morph - build-depends: - - bzr-tarball - - python-fastimport -- name: cvs-tarball - morph: strata/trove/cvs-tarball.morph - repo: upstream:cvs-tarball - ref: ca4cd317a75ef4349563b5a9a734561beb4a4f98 - unpetrify-ref: baserock/morph - build-depends: [] -- name: libapr-tarball - repo: upstream:libapr-tarball - ref: dea1efeb7f60fc6848e1e72b3fc973d0057565db - unpetrify-ref: baserock/morph - build-depends: [] -- name: libapr-util-tarball - morph: strata/trove/libapr-util-tarball.morph - repo: upstream:libapr-util-tarball - ref: daba269ee5a262cc23621b3ee37ed368d2a2b69b - unpetrify-ref: baserock/morph - build-depends: - - libapr-tarball -- name: perl-dbi-tarball - morph: strata/trove/perl-dbi-tarball.morph - repo: upstream:perl-dbi-tarball - ref: 09e269cff811f0c1881ea0d6b7571173bab8377b - unpetrify-ref: baserock/morph - build-depends: [] -- name: perl-dbd-sqlite-tarball - repo: upstream:perl-dbd-sqlite-tarball - ref: 485b97be9f2f2abf5a40923b5fd85f75714a8c02 - unpetrify-ref: baserock/morph - build-depends: - - perl-dbi-tarball -- name: libserf-tarball - repo: upstream:libserf-tarball - ref: 6f61a1acd01dc2ad1d2f5c1f7458702c77c69f9c - unpetrify-ref: baserock/morph - build-depends: - - libapr-tarball - - libapr-util-tarball -- name: swig-tarball - morph: strata/trove/swig-tarball.morph - repo: upstream:swig-tarball - ref: 1f6cb46b6a4b3ebf9352fa10198b0b286f84138b - unpetrify-ref: baserock/morph - build-depends: [] -- name: neon - morph: strata/trove/neon.morph - repo: upstream:neon - ref: 837374e9d797e216f1de684595cefe791f67c0e4 - unpetrify-ref: baserock/morph - build-depends: [] -- name: subversion-tarball - morph: strata/trove/subversion-tarball.morph - repo: upstream:subversion-tarball - ref: 351e074672d9aa6446d5829938b697a3d6b23266 - unpetrify-ref: baserock/morph - build-depends: - - swig-tarball - - libapr-tarball - - libapr-util-tarball - - libserf-tarball - - neon -- name: mercurial-tarball - morph: strata/trove/mercurial-tarball.morph - repo: upstream:mercurial-tarball - ref: 4b0aa73b8c69bd5b7521337809f7bc4714209a5a - unpetrify-ref: baserock/morph - build-depends: [] -- name: hg-fast-export - morph: strata/trove/hg-fast-export.morph - repo: upstream:hg-fast-export - ref: 09a472aa58da0417a11a22bae172785f7cb2e80f - unpetrify-ref: baserock/morph - build-depends: - - mercurial-tarball -- name: cvsps - morph: strata/trove/cvsps.morph - repo: upstream:cvsps - ref: 71c6d1f5668f405a7b259a0aac0d423f6c9b4d49 - unpetrify-ref: baserock/morph - build-depends: [] -- name: lorry - morph: strata/trove/lorry.morph - repo: baserock:baserock/lorry - ref: ede3f337e9769b0e6756d4b9cc37d33aa62b82ba - unpetrify-ref: master - build-depends: - - bzr-tarball - - python-fastimport - - bzr-fastimport - - perl-dbi-tarball - - perl-dbd-sqlite-tarball - - cvs-tarball - - cvsps - - subversion-tarball - - mercurial-tarball - - hg-fast-export - name: trove-setup morph: strata/trove/trove-setup.morph repo: baserock:baserock/trove-setup - ref: 109c02002baf3c2d8eac57027f29f6c74e5233b5 + ref: 5f2dab59ff6e70edf6ffbcd65fe64b487c4380c2 unpetrify-ref: master build-depends: [] - name: lorry-controller morph: strata/trove/lorry-controller.morph repo: baserock:baserock/lorry-controller - ref: cc8eb995bdcfe492cde33f2dbe831810e660027a + ref: 4b1fcab140d940470c342c6857cdc8682406f0b7 unpetrify-ref: master build-depends: [] -- name: lighttpd - morph: strata/trove/lighttpd.morph - repo: upstream:lighttpd - ref: 12e4e21763da770034267ff0a7b660876930f789 - unpetrify-ref: baserock/morph - build-depends: - - pcre - name: lua-scrypt morph: strata/trove/lua-scrypt.morph repo: upstream:lua-scrypt diff --git a/strata/wayland-generic.morph b/strata/wayland-generic.morph index 2e3ad90f..890489dc 100644 --- a/strata/wayland-generic.morph +++ b/strata/wayland-generic.morph @@ -5,14 +5,15 @@ build-depends: - morph: strata/xorg-util-macros-common.morph chunks: - name: libxkbcommon + morph: strata/wayland-generic/libxkbcommon.morph repo: upstream:xorg-lib-libxkbcommon - ref: b721254769212d671a4729f1c88b059979b80efc - unpetrify-ref: baserock/genivi/baseline + ref: c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28 + unpetrify-ref: xkbcommon-0.5.0 build-depends: [] - name: wayland morph: strata/wayland-generic/wayland.morph repo: upstream:wayland - ref: c946301cc7616cda6944e29635b424a12147950f - unpetrify-ref: baserock/gnome + ref: 339e83aa579569711cd14623ca4b2db46256b766 + unpetrify-ref: 1.6.0 build-depends: - libxkbcommon diff --git a/strata/wayland-generic/libxkbcommon.morph b/strata/wayland-generic/libxkbcommon.morph new file mode 100644 index 00000000..04048abb --- /dev/null +++ b/strata/wayland-generic/libxkbcommon.morph @@ -0,0 +1,5 @@ +name: libxkbcommon +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --disable-x11 diff --git a/strata/webtools.morph b/strata/webtools.morph index da5e3338..39175747 100644 --- a/strata/webtools.morph +++ b/strata/webtools.morph @@ -1,8 +1,9 @@ name: webtools kind: stratum -description: pip, node and other fun things +description: web things build-depends: - morph: strata/tools.morph +- morph: strata/pcre-utils.morph chunks: - name: icu morph: strata/webtools/icu.morph @@ -18,23 +19,12 @@ chunks: - name: tar morph: strata/webtools/tar.morph repo: upstream:tar - ref: 0492b656656ca7973b126b8c117804d80952de48 - unpetrify-ref: baserock/morph - build-depends: [] -- name: pip - repo: upstream:pip.git - ref: d4b691b743a91500cf49119d28a805db8313f129 - unpetrify-ref: master - build-depends: [] -- name: pcre - repo: upstream:pcre - ref: 2720152c58e13e7cc7403642ec33127101b9971b - unpetrify-ref: baserock/morph + ref: 9a58d148c26c220cb1b163c71e7a51a2e41f6b37 + unpetrify-ref: baserock/release_1_28 build-depends: [] - name: nginx morph: strata/webtools/nginx.morph repo: upstream:nginx ref: 37a582c9ea3e731c115e560d31b26f78535b8fca unpetrify-ref: baserock/v1.7.0 - build-depends: - - pcre + build-depends: [] diff --git a/strata/webtools/tar.morph b/strata/webtools/tar.morph index 2253e3b7..9219abeb 100644 --- a/strata/webtools/tar.morph +++ b/strata/webtools/tar.morph @@ -3,7 +3,7 @@ kind: chunk configure-commands: - bash bootstrap --skip-po - FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin - --disable-nls + --disable-nls --disable-gcc-warnings build-commands: - make install-commands: diff --git a/strata/weston-common.morph b/strata/weston-common.morph new file mode 100644 index 00000000..1d5b015c --- /dev/null +++ b/strata/weston-common.morph @@ -0,0 +1,21 @@ +name: weston-common +kind: stratum +build-depends: +- morph: strata/graphics-common.morph +- morph: strata/input-common.morph +- morph: strata/mesa-common.morph +- morph: strata/libdrm-common.morph +- morph: strata/wayland-generic.morph +chunks: +- name: linux-pam + repo: upstream:linux-pam + ref: b1521c97e73b10469f7b34c0571d51c647eca83c + unpetrify-ref: Linux-PAM-1.1.8 + build-depends: [] +- name: weston + morph: strata/weston-common/weston.morph + repo: upstream:weston + ref: 463b914d4f1efbf5de6d1f45e9037b88a1eb107f + unpetrify-ref: baserock/weston-1.6.0/tegra + build-depends: + - linux-pam diff --git a/strata/weston-common/weston.morph b/strata/weston-common/weston.morph new file mode 100644 index 00000000..2efd662e --- /dev/null +++ b/strata/weston-common/weston.morph @@ -0,0 +1,9 @@ +name: weston +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" \ + --disable-xwayland \ + --disable-x11-compositor \ + --enable-demo-clients-install diff --git a/strata/weston-genivi.morph b/strata/weston-genivi.morph index dd4d5b9b..d47d0ac4 100644 --- a/strata/weston-genivi.morph +++ b/strata/weston-genivi.morph @@ -9,19 +9,20 @@ build-depends: chunks: - name: linux-pam repo: upstream:linux-pam - ref: 6e36ca00ed774a7c5b2f2322c96b023999b733a4 - unpetrify-ref: Linux-PAM-1.1.5 + ref: b1521c97e73b10469f7b34c0571d51c647eca83c + unpetrify-ref: Linux-PAM-1.1.8 build-depends: [] - name: weston morph: strata/weston-genivi/weston.morph repo: upstream:weston - ref: 5d9e9c1393c6b0ea6ce52912fc458c963e644547 - unpetrify-ref: baserock/genivi/1.2.0 + ref: 5d7a71cb941ed419ec042ea28be56c87ea407db6 + unpetrify-ref: baserock/genivi/1.3.0 build-depends: - linux-pam - name: wayland-ivi-extension + morph: strata/weston-genivi/wayland-ivi-extension.morph repo: upstream:genivi/wayland-ivi-extension - ref: 633ce4f89f695c575bdfc080551b0e59c8287427 - unpetrify-ref: baserock/genivi/1.2.0 + ref: 43fa65ede93cef9e6c902df2248229ad204b510a + unpetrify-ref: master build-depends: - weston diff --git a/strata/weston-genivi/wayland-ivi-extension.morph b/strata/weston-genivi/wayland-ivi-extension.morph new file mode 100644 index 00000000..bceb2a88 --- /dev/null +++ b/strata/weston-genivi/wayland-ivi-extension.morph @@ -0,0 +1,8 @@ +name: wayland-ivi-extension +kind: chunk +configure-commands: +- cmake -DCMAKE_INSTALL_PREFIX="$PREFIX" -DCMAKE_C_FLAGS="-I/usr/include/weston" +build-commands: +- make +install-commands: +- make install DESTDIR="$DESTDIR" diff --git a/strata/weston-genivi/weston.morph b/strata/weston-genivi/weston.morph index 892adfb4..810ce5e9 100644 --- a/strata/weston-genivi/weston.morph +++ b/strata/weston-genivi/weston.morph @@ -6,7 +6,7 @@ configure-commands: - autoreconf -ivf - | LDFLAGS='-L/lib64 -lrt' \ - ./configure --prefix=$PREFIX --with-cairo-glesv2 --disable-xwayland \ + ./configure --prefix=$PREFIX --disable-xwayland \ --disable-x11-compositor \ --disable-wayland-compositor --enable-egl \ --enable-clients --enable-demo-clients-install --enable-fbdev-compositor diff --git a/strata/x-common.morph b/strata/x-common.morph index f842c7a9..8c0bba1d 100644 --- a/strata/x-common.morph +++ b/strata/x-common.morph @@ -30,18 +30,18 @@ chunks: build-depends: [] - name: xorg-proto-fontsproto repo: upstream:xorg-proto-fontsproto - ref: 81e4d4ec53f1f3848ff269fe476c3a1d35d93aef - unpetrify-ref: baserock/morph + ref: df8c05f7c0253a36589d96efa52938215eff9d4d + unpetrify-ref: fontsproto-2.1.3 build-depends: [] - name: xorg-proto-glproto repo: upstream:xorg-proto-glproto - ref: 8e3407e02980d088e20041e79bdcdd3737e7827e - unpetrify-ref: baserock/morph + ref: f84853d97d5749308992412a215fa518b6536eb3 + unpetrify-ref: glproto-1.4.17 build-depends: [] - name: xorg-proto-inputproto repo: upstream:xorg-proto-inputproto - ref: f8428123019e7357891bbfc0aef21dbb4d0db10f - unpetrify-ref: baserock/morph + ref: 343ff0938f592876b9d82c966f166bf45a78c3c8 + unpetrify-ref: inputproto-2.3.1 build-depends: [] - name: xorg-proto-kbproto repo: upstream:xorg-proto-kbproto @@ -90,8 +90,8 @@ chunks: build-depends: [] - name: xorg-proto-xextproto repo: upstream:xorg-proto-xextproto - ref: f27fcc99d1cf935cc289933326f7d3baacd5107a - unpetrify-ref: baserock/morph + ref: 66afec3f49e8eb0d4c2e9af7088fc3116d4bafd7 + unpetrify-ref: xextproto-7.3.0 build-depends: [] - name: xorg-proto-xf86bigfontproto repo: upstream:xorg-proto-xf86bigfontproto @@ -115,8 +115,8 @@ chunks: build-depends: [] - name: xorg-proto-x11proto repo: upstream:xorg-proto-x11proto - ref: f8c43d587e43fee2c22bd7b5f35a9d4dc8bdb580 - unpetrify-ref: baserock/morph + ref: 03cbbf6c3e811c026c86e3a60d2f9af56606e155 + unpetrify-ref: xproto-7.0.26 build-depends: [] - name: xorg-proto-dri2proto repo: upstream:xorg-proto-dri2proto @@ -156,8 +156,8 @@ chunks: - xorg-lib-libXau - name: xorg-lib-libxtrans repo: upstream:xorg-lib-libxtrans - ref: bd53f4c8543faf910a7a151241ee07661b4d57ad - unpetrify-ref: baserock/morph + ref: 7cbad9fe2e61cd9d5caeaf361826a6f4bd320f03 + unpetrify-ref: xtrans-1.3.5 build-depends: [] - name: xorg-lib-libX11 repo: upstream:xorg-lib-libX11 @@ -201,8 +201,8 @@ chunks: - xorg-proto-x11proto - name: xorg-lib-libXfixes repo: upstream:xorg-lib-libXfixes - ref: 73a0fbb479f5b7806a3dd0741be55c9abda76220 - unpetrify-ref: baserock/morph + ref: 0cb446962381f750e05d97bfb974ca1e32481d5d + unpetrify-ref: libXfixes-5.0.1 build-depends: - xorg-lib-libXext - xorg-proto-fixesproto diff --git a/strata/x-generic.morph b/strata/x-generic.morph index af42c55e..84f685b0 100644 --- a/strata/x-generic.morph +++ b/strata/x-generic.morph @@ -24,8 +24,8 @@ chunks: - xorg-font-util - name: xorg-lib-libXfont repo: upstream:xorg-lib-libXfont - ref: b8dd42dce868f9c16a59790ce51f0542b59cb79d - unpetrify-ref: baserock/morph + ref: ad4f4d8a2d0730c0ea3c09210bf921638b4682bc + unpetrify-ref: libXfont-1.5.0 build-depends: - xorg-lib-libfontenc - name: xorg-lib-libICE @@ -73,8 +73,8 @@ chunks: - name: xserver morph: strata/x-generic/xserver.morph repo: upstream:xserver - ref: b7cbfa882778cf8857577e0da77aa9295f072db3 - unpetrify-ref: baserock/morph + ref: 4393c7f1ba6140a02232f04fbb434a80d663a99d + unpetrify-ref: xorg-server-1.16.2 build-depends: - libsha1 - xorg-font-util diff --git a/strata/x-generic/xserver.morph b/strata/x-generic/xserver.morph index 473f5d32..f8495057 100644 --- a/strata/x-generic/xserver.morph +++ b/strata/x-generic/xserver.morph @@ -2,4 +2,4 @@ name: xserver kind: chunk build-system: autotools configure-commands: -- ./autogen.sh --prefix="$PREFIX" --with-sha1=libsha1 +- ./autogen.sh --prefix="$PREFIX" --with-sha1=libsha1 --disable-glx diff --git a/strata/xfce.morph b/strata/xfce.morph index e5a30821..5678c1fc 100644 --- a/strata/xfce.morph +++ b/strata/xfce.morph @@ -2,7 +2,6 @@ name: xfce kind: stratum description: xfce stratum build-depends: -- morph: strata/genivi-x-generic.morph - morph: strata/gtk2.morph - morph: strata/x-generic.morph chunks: diff --git a/systems/base-system-armv7-highbank.morph b/systems/base-system-armv7-highbank.morph index 4efd3981..47c69bad 100644 --- a/systems/base-system-armv7-highbank.morph +++ b/systems/base-system-armv7-highbank.morph @@ -15,6 +15,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-armv7-versatile.morph b/systems/base-system-armv7-versatile.morph index 2c3634b5..e5b9d7f5 100644 --- a/systems/base-system-armv7-versatile.morph +++ b/systems/base-system-armv7-versatile.morph @@ -15,6 +15,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-armv7b-highbank.morph b/systems/base-system-armv7b-highbank.morph index 2218af6f..169d490e 100644 --- a/systems/base-system-armv7b-highbank.morph +++ b/systems/base-system-armv7b-highbank.morph @@ -15,6 +15,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-armv7b-vexpress-tc2.morph b/systems/base-system-armv7b-vexpress-tc2.morph index 83b437a1..76d5c006 100644 --- a/systems/base-system-armv7b-vexpress-tc2.morph +++ b/systems/base-system-armv7b-vexpress-tc2.morph @@ -14,6 +14,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-armv7lhf-highbank.morph b/systems/base-system-armv7lhf-highbank.morph index f5ced471..b889278d 100644 --- a/systems/base-system-armv7lhf-highbank.morph +++ b/systems/base-system-armv7lhf-highbank.morph @@ -15,6 +15,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-ppc64-generic.morph b/systems/base-system-ppc64-generic.morph index 85bc50b4..488bf5e4 100644 --- a/systems/base-system-ppc64-generic.morph +++ b/systems/base-system-ppc64-generic.morph @@ -15,6 +15,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/base-system-x86_32-generic.morph b/systems/base-system-x86_32-generic.morph index f82d1667..40e62cad 100644 --- a/systems/base-system-x86_32-generic.morph +++ b/systems/base-system-x86_32-generic.morph @@ -16,7 +16,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - cloud-init diff --git a/systems/base-system-x86_64-generic.morph b/systems/base-system-x86_64-generic.morph index 1bcafc2a..a3346a44 100644 --- a/systems/base-system-x86_64-generic.morph +++ b/systems/base-system-x86_64-generic.morph @@ -17,7 +17,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - cloud-init diff --git a/systems/distbuild-system-armv7lhf-highbank.morph b/systems/build-system-armv7lhf-highbank.morph index c4ac80ad..8b92f267 100644 --- a/systems/distbuild-system-armv7lhf-highbank.morph +++ b/systems/build-system-armv7lhf-highbank.morph @@ -1,6 +1,6 @@ -name: distbuild-system-armv7lhf-highbank +name: build-system-armv7lhf-highbank kind: system -description: Morph distributed build node for armv7lhf highbank +description: The system that should be used for building all other Baserock systems for ARMv7 little-endian hard-float Calxeda Highbank computers. arch: armv7lhf strata: - name: build-essential @@ -21,10 +21,11 @@ strata: morph: strata/ansible.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - distbuild diff --git a/systems/build-system-armv7lhf-jetson.morph b/systems/build-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..d28b94df --- /dev/null +++ b/systems/build-system-armv7lhf-jetson.morph @@ -0,0 +1,34 @@ +name: build-system-armv7lhf-jetson +kind: system +description: The system that should be used for building all other Baserock systems for ARMv7 little-endian hard-float NVIDIA Jetson TK1 computers. +arch: armv7lhf +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: tools + morph: strata/tools.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +configuration-extensions: +- set-hostname +- add-config-files +- nfsboot +- install-files +- distbuild +- fstab +- mason +- cloud-init diff --git a/systems/distbuild-system-ppc64.morph b/systems/build-system-ppc64.morph index 6d77c261..14762a6e 100644 --- a/systems/distbuild-system-ppc64.morph +++ b/systems/build-system-ppc64.morph @@ -1,6 +1,6 @@ -name: distbuild-system-ppc64 +name: build-system-ppc64 kind: system -description: Morph distributed build node for ppc64 +description: The system that should be used for building all other Baserock systems for 64-bit POWER computers. arch: ppc64 strata: - name: build-essential @@ -21,10 +21,11 @@ strata: morph: strata/ansible.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - distbuild diff --git a/systems/distbuild-system-armv7lhf-jetson.morph b/systems/build-system-x86_32-chroot.morph index f4147b9e..089a26c8 100644 --- a/systems/distbuild-system-armv7lhf-jetson.morph +++ b/systems/build-system-x86_32-chroot.morph @@ -1,7 +1,7 @@ -name: distbuild-system-armv7lhf-jetson +name: build-system-x86_32-chroot kind: system -description: Morph distributed build node for armv7lhf jetson -arch: armv7lhf +description: The system that should be used for building all other Baserock systems for 32-bit Intel x86 computers, chroot variant. +arch: x86_32 strata: - name: build-essential morph: strata/build-essential.morph @@ -9,8 +9,6 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: bsp-jetson-devel - morph: strata/bsp-jetson-devel.morph - name: tools morph: strata/tools.morph - name: morph-utils @@ -21,10 +19,11 @@ strata: morph: strata/ansible.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - distbuild diff --git a/systems/distbuild-system-x86_32.morph b/systems/build-system-x86_32.morph index aaa85170..35a86e11 100644 --- a/systems/distbuild-system-x86_32.morph +++ b/systems/build-system-x86_32.morph @@ -1,6 +1,6 @@ -name: distbuild-system-x86_32 +name: build-system-x86_32 kind: system -description: Morph distributed build node for x86_32 +description: The system that should be used for building all other Baserock systems for 32-bit Intel x86 computers. arch: x86_32 strata: - name: build-essential @@ -21,10 +21,11 @@ strata: morph: strata/ansible.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - distbuild diff --git a/systems/build-system-x86_64-chroot.morph b/systems/build-system-x86_64-chroot.morph new file mode 100644 index 00000000..db3a38db --- /dev/null +++ b/systems/build-system-x86_64-chroot.morph @@ -0,0 +1,32 @@ +name: build-system-x86_64-chroot +kind: system +description: The system that should be used for building all other Baserock systems for 64-bit Intel x86 computers, chroot variant. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +configuration-extensions: +- set-hostname +- add-config-files +- nfsboot +- install-files +- distbuild +- fstab +- mason +- cloud-init diff --git a/systems/distbuild-system-x86_64.morph b/systems/build-system-x86_64.morph index c42cb553..06868fed 100644 --- a/systems/distbuild-system-x86_64.morph +++ b/systems/build-system-x86_64.morph @@ -1,6 +1,6 @@ -name: distbuild-system-x86_64 +name: build-system-x86_64 kind: system -description: Morph distributed build node for x86_64 +description: The system that should be used for building all other Baserock systems for 64-bit Intel x86 computers. arch: x86_64 strata: - name: build-essential @@ -21,10 +21,11 @@ strata: morph: strata/ansible.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: openstack-clients + morph: strata/openstack-clients.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - distbuild diff --git a/systems/ceph-service-x86_64-generic.morph b/systems/ceph-service-x86_64-generic.morph index 182cf0cd..f54af0f7 100644 --- a/systems/ceph-service-x86_64-generic.morph +++ b/systems/ceph-service-x86_64-generic.morph @@ -16,10 +16,11 @@ strata: morph: strata/network-security.morph - name: ceph-service morph: strata/ceph-service.morph +- name: tools + morph: strata/tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - ceph diff --git a/systems/cxmanage-system-x86_64-generic.morph b/systems/cxmanage-system-x86_64-generic.morph index 4d731ea3..d75fbd14 100644 --- a/systems/cxmanage-system-x86_64-generic.morph +++ b/systems/cxmanage-system-x86_64-generic.morph @@ -18,7 +18,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - fstab diff --git a/systems/devel-system-armv7-chroot.morph b/systems/devel-system-armv7-chroot.morph index b063673c..466df31f 100644 --- a/systems/devel-system-armv7-chroot.morph +++ b/systems/devel-system-armv7-chroot.morph @@ -1,7 +1,10 @@ name: devel-system-armv7-chroot kind: system -description: A system that is able to build other systems based on the ARM highbank - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use as a chroot inside a Linux-based operating system on ARMv7 + computers using little-endian word order. arch: armv7l strata: - name: build-essential @@ -16,9 +19,18 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7-highbank.morph b/systems/devel-system-armv7-highbank.morph index 3e86b737..ed111387 100644 --- a/systems/devel-system-armv7-highbank.morph +++ b/systems/devel-system-armv7-highbank.morph @@ -1,7 +1,9 @@ name: devel-system-armv7-highbank kind: system -description: A system that is able to build other systems based on the ARM highbank - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 Calxeda Highbank computers using little-endian word order. arch: armv7l strata: - name: build-essential @@ -18,9 +20,20 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7-versatile.morph b/systems/devel-system-armv7-versatile.morph index 43f7a118..6b24e603 100644 --- a/systems/devel-system-armv7-versatile.morph +++ b/systems/devel-system-armv7-versatile.morph @@ -1,7 +1,9 @@ name: devel-system-armv7-versatile kind: system -description: A system that is able to build other systems based on the ARM versatile - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on generic ARMv7 versatile computers using little-endian word order. arch: armv7l strata: - name: build-essential @@ -18,9 +20,20 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7-wandboard.morph b/systems/devel-system-armv7-wandboard.morph index 11bccaf0..70c6f1cc 100644 --- a/systems/devel-system-armv7-wandboard.morph +++ b/systems/devel-system-armv7-wandboard.morph @@ -1,6 +1,9 @@ name: devel-system-armv7-wandboard kind: system -description: A system that is able to build other systems based on the Wandboard. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 Wandboard computers using little-endian word order. arch: armv7l strata: - name: build-essential @@ -17,9 +20,20 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7b-chroot.morph b/systems/devel-system-armv7b-chroot.morph index 5081bd20..1f5bf1cf 100644 --- a/systems/devel-system-armv7b-chroot.morph +++ b/systems/devel-system-armv7b-chroot.morph @@ -1,6 +1,10 @@ name: devel-system-armv7b-chroot kind: system -description: A system that is able to build other systems based on the ARMv7b architecture. +description: | + A system with useful tools for doing Baserock development. + + For use as a chroot inside a Linux-based operating system on ARMv7 computers + using big-endian word order. arch: armv7b strata: - name: build-essential @@ -15,9 +19,12 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7b-highbank.morph b/systems/devel-system-armv7b-highbank.morph index 9054135b..7e703134 100644 --- a/systems/devel-system-armv7b-highbank.morph +++ b/systems/devel-system-armv7b-highbank.morph @@ -1,7 +1,9 @@ name: devel-system-armv7b-highbank kind: system -description: A system that is able to build other systems based on the ARM highbank - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 Calxeda Highbank computers using big-endian word order. arch: armv7b strata: - name: build-essential @@ -18,9 +20,14 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7lhf-chroot.morph b/systems/devel-system-armv7lhf-chroot.morph index 090d4e6d..02358014 100644 --- a/systems/devel-system-armv7lhf-chroot.morph +++ b/systems/devel-system-armv7lhf-chroot.morph @@ -1,6 +1,10 @@ name: devel-system-armv7lhf-chroot kind: system -description: A system that is able to build other systems based on the ARMv7lhf architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 computers using little-endian word order and hardware + floating point support. arch: armv7lhf strata: - name: build-essential @@ -15,9 +19,18 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7lhf-highbank.morph b/systems/devel-system-armv7lhf-highbank.morph index bb5c01b4..8fe3737b 100644 --- a/systems/devel-system-armv7lhf-highbank.morph +++ b/systems/devel-system-armv7lhf-highbank.morph @@ -1,7 +1,10 @@ name: devel-system-armv7lhf-highbank kind: system -description: A system that is able to build other systems based on the ARM highbank - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 Calxeda Highbank computers using little-endian word order + and hardware floating-point support. arch: armv7lhf strata: - name: build-essential @@ -18,9 +21,20 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7lhf-jetson.morph b/systems/devel-system-armv7lhf-jetson.morph index ffcf1766..550c361a 100644 --- a/systems/devel-system-armv7lhf-jetson.morph +++ b/systems/devel-system-armv7lhf-jetson.morph @@ -1,7 +1,10 @@ name: devel-system-armv7lhf-jetson kind: system -description: A system that is able to build other systems based on the NVIDIA Jetson - TK1. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 NVIDIA Jetson TK1 computers using little-endian word order + and hardware floating-point support. arch: armv7lhf strata: - name: build-essential @@ -16,11 +19,22 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph -- name: bsp-jetson-devel - morph: strata/bsp-jetson-devel.morph +- name: nfs + morph: strata/nfs.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-armv7lhf-wandboard.morph b/systems/devel-system-armv7lhf-wandboard.morph index 8f15033a..9e8f0bc6 100644 --- a/systems/devel-system-armv7lhf-wandboard.morph +++ b/systems/devel-system-armv7lhf-wandboard.morph @@ -1,6 +1,10 @@ name: devel-system-armv7lhf-wandboard kind: system -description: A system that is able to build other systems based on the Wandboard. +description: | + A system with useful tools for doing Baserock development. + + For use on ARMv7 Wandboard computers using little-endian word order and + hardware floating point support. arch: armv7lhf strata: - name: build-essential @@ -17,9 +21,20 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-ppc64-chroot.morph b/systems/devel-system-ppc64-chroot.morph index 344aa812..a60f35fc 100644 --- a/systems/devel-system-ppc64-chroot.morph +++ b/systems/devel-system-ppc64-chroot.morph @@ -1,7 +1,10 @@ name: devel-system-ppc64-chroot kind: system -description: A system that is able to build other systems based on the 64-bit PowerPc - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use as a chroot inside a Linux operating system on 64-bit POWER + computers. arch: ppc64 strata: - name: build-essential @@ -16,9 +19,16 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-ppc64-generic.morph b/systems/devel-system-ppc64-generic.morph index 7ccff388..6f7fd319 100644 --- a/systems/devel-system-ppc64-generic.morph +++ b/systems/devel-system-ppc64-generic.morph @@ -1,7 +1,9 @@ name: devel-system-ppc64-generic kind: system -description: A system that is able to build other systems based on the 64-bit PowerPc - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on 64-bit POWER computers. arch: ppc64 strata: - name: build-essential @@ -18,9 +20,18 @@ strata: morph: strata/morph-utils.morph - name: openstack-clients morph: strata/openstack-clients.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-x86_32-chroot.morph b/systems/devel-system-x86_32-chroot.morph index dc884223..52e64847 100644 --- a/systems/devel-system-x86_32-chroot.morph +++ b/systems/devel-system-x86_32-chroot.morph @@ -1,7 +1,10 @@ name: devel-system-x86_32-chroot kind: system -description: A system that is able to build other systems based on the 32-bit x86 - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use as a chroot inside a Linux operating system on 32-bit Intel x86 + computers. arch: x86_32 strata: - name: build-essential @@ -18,9 +21,18 @@ strata: morph: strata/openstack-clients.morph - name: bsp-x86_both-tools morph: strata/bsp-x86_both-tools.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-x86_32-generic.morph b/systems/devel-system-x86_32-generic.morph index d9264ac4..8d484e81 100644 --- a/systems/devel-system-x86_32-generic.morph +++ b/systems/devel-system-x86_32-generic.morph @@ -1,7 +1,9 @@ name: devel-system-x86_32-generic kind: system -description: A system that is able to build other systems based on the 32-bit x86 - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on 32-bit Intel x86 computers. arch: x86_32 strata: - name: build-essential @@ -20,10 +22,21 @@ strata: morph: strata/openstack-clients.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - cloud-init diff --git a/systems/devel-system-x86_64-chroot.morph b/systems/devel-system-x86_64-chroot.morph index 34ccf31f..e77aa5d1 100644 --- a/systems/devel-system-x86_64-chroot.morph +++ b/systems/devel-system-x86_64-chroot.morph @@ -1,7 +1,10 @@ name: devel-system-x86_64-chroot kind: system -description: A system that is able to build other systems based on the 64-bit x86 - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use as a chroot inside a Linux operating system on 64-bit Intel x86 + computers. arch: x86_64 strata: - name: build-essential @@ -18,9 +21,18 @@ strata: morph: strata/openstack-clients.morph - name: bsp-x86_both-tools morph: strata/bsp-x86_both-tools.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/devel-system-x86_64-generic.morph b/systems/devel-system-x86_64-generic.morph index 64133058..143ceb82 100644 --- a/systems/devel-system-x86_64-generic.morph +++ b/systems/devel-system-x86_64-generic.morph @@ -1,7 +1,9 @@ name: devel-system-x86_64-generic kind: system -description: A system that is able to build other systems based on the 64-bit x86 - architecture. +description: | + A system with useful tools for doing Baserock development. + + For use on 64-bit Intel x86 computers. arch: x86_64 strata: - name: build-essential @@ -20,6 +22,18 @@ strata: morph: strata/openstack-clients.morph - name: cloudinit-support morph: strata/cloudinit-support.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files diff --git a/systems/devel-system-x86_64-vagrant.morph b/systems/devel-system-x86_64-vagrant.morph index 43f68e7f..a7731cad 100644 --- a/systems/devel-system-x86_64-vagrant.morph +++ b/systems/devel-system-x86_64-vagrant.morph @@ -1,8 +1,9 @@ name: devel-system-x86_64-vagrant kind: system -description: A system that is able to build other systems based on the 64-bit x86 - architecture. This adds the virtualbox guest additions and vagrant configuration - too +description: | + A system with useful tools for doing Baserock development, using Vagrant. + + For use with the Vagrant tool for x86_64 virtual machines. arch: x86_64 strata: - name: build-essential @@ -11,40 +12,29 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph -- name: connectivity - morph: strata/connectivity.morph -- name: connman-common - morph: strata/connman-common.morph -- name: audio-bluetooth - morph: strata/audio-bluetooth.morph -- name: x-common - morph: strata/x-common.morph -- name: x-generic - morph: strata/x-generic.morph -- name: multimedia - morph: strata/multimedia.morph -- name: genivi - morph: strata/genivi.morph -- name: genivi-x-generic - morph: strata/genivi-x-generic.morph - name: tools morph: strata/tools.morph - name: morph-utils morph: strata/morph-utils.morph -- name: virtualization - morph: strata/virtualization.morph - name: openstack-clients morph: strata/openstack-clients.morph - name: virtualbox-guest-x86_64 morph: strata/virtualbox-guest-x86_64.morph +- name: nodejs + morph: strata/nodejs.morph +- name: ruby + morph: strata/ruby.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python-tools + morph: strata/python-tools.morph configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - vagrant diff --git a/systems/genivi-baseline-system-armv7lhf-jetson.morph b/systems/genivi-baseline-system-armv7lhf-jetson.morph index 250b431b..5cbfddbe 100644 --- a/systems/genivi-baseline-system-armv7lhf-jetson.morph +++ b/systems/genivi-baseline-system-armv7lhf-jetson.morph @@ -9,10 +9,8 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph -- name: bsp-jetson-genivi - morph: strata/bsp-jetson-genivi.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph - name: connectivity morph: strata/connectivity.morph - name: connman-common @@ -38,7 +36,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - strip-gplv3 diff --git a/systems/genivi-baseline-system-armv7lhf-versatile.morph b/systems/genivi-baseline-system-armv7lhf-versatile.morph index 52f04234..a5f07750 100644 --- a/systems/genivi-baseline-system-armv7lhf-versatile.morph +++ b/systems/genivi-baseline-system-armv7lhf-versatile.morph @@ -9,8 +9,6 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph - name: bsp-armv7-versatile morph: strata/bsp-armv7-versatile.morph - name: connectivity @@ -36,7 +34,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - strip-gplv3 diff --git a/systems/genivi-baseline-system-x86_64-generic.morph b/systems/genivi-baseline-system-x86_64-generic.morph index a5646a63..f5fb571e 100644 --- a/systems/genivi-baseline-system-x86_64-generic.morph +++ b/systems/genivi-baseline-system-x86_64-generic.morph @@ -9,8 +9,6 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph - name: connectivity @@ -40,7 +38,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - strip-gplv3 diff --git a/systems/gerrit-x86_64.morph b/systems/gerrit-x86_64.morph index 0dbca14e..91d4c701 100644 --- a/systems/gerrit-x86_64.morph +++ b/systems/gerrit-x86_64.morph @@ -26,7 +26,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - cloud-init diff --git a/systems/gitlab-ci-runner.morph b/systems/gitlab-ci-runner.morph index 0f9e296c..9eabc403 100644 --- a/systems/gitlab-ci-runner.morph +++ b/systems/gitlab-ci-runner.morph @@ -9,8 +9,6 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph - name: connectivity @@ -27,8 +25,6 @@ strata: morph: strata/multimedia.morph - name: genivi morph: strata/genivi.morph -- name: genivi-x-generic - morph: strata/genivi-x-generic.morph - name: tools morph: strata/tools.morph - name: virtualization @@ -37,6 +33,8 @@ strata: morph: strata/openstack-clients.morph - name: databases morph: strata/databases.morph +- name: pcre-utils + morph: strata/pcre-utils.morph - name: webtools morph: strata/webtools.morph - name: ruby @@ -46,6 +44,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/gitlab-server.morph b/systems/gitlab-server.morph index c78abe1c..83093ac1 100644 --- a/systems/gitlab-server.morph +++ b/systems/gitlab-server.morph @@ -17,6 +17,8 @@ strata: morph: strata/nfs.morph - name: databases morph: strata/databases.morph +- name: pcre-utils + morph: strata/pcre-utils.morph - name: webtools morph: strata/webtools.morph - name: ruby @@ -26,7 +28,6 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files - gitlab diff --git a/systems/installer-system-x86_64.morph b/systems/installer-system-x86_64.morph new file mode 100644 index 00000000..0b5e4709 --- /dev/null +++ b/systems/installer-system-x86_64.morph @@ -0,0 +1,22 @@ +name: installer-system-x86_64 +kind: system +description: The system that should be used as an Installer to install other Baserock systems. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: installer-utils + morph: strata/installer-utils.morph +configuration-extensions: +- set-hostname +- install-files +- fstab +- installer diff --git a/systems/nodejs-system-x86_64.morph b/systems/nodejs-system-x86_64.morph index b34d6626..2692e2fc 100644 --- a/systems/nodejs-system-x86_64.morph +++ b/systems/nodejs-system-x86_64.morph @@ -17,6 +17,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/qt4-devel-system-x86_64-generic.morph b/systems/qt4-devel-system-x86_64-generic.morph index 0b4e4638..9a23bdeb 100644 --- a/systems/qt4-devel-system-x86_64-generic.morph +++ b/systems/qt4-devel-system-x86_64-generic.morph @@ -37,6 +37,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/qt5-devel-system-x86_64-generic.morph b/systems/qt5-devel-system-x86_64-generic.morph index 7171c0ca..1a78ff4f 100644 --- a/systems/qt5-devel-system-x86_64-generic.morph +++ b/systems/qt5-devel-system-x86_64-generic.morph @@ -12,8 +12,8 @@ strata: morph: strata/foundation.morph - name: audio-bluetooth morph: strata/audio-bluetooth.morph -- name: multimedia-gstreamer-0.10 - morph: strata/multimedia-gstreamer-0.10.morph +- name: multimedia + morph: strata/multimedia.morph - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph - name: tools @@ -24,6 +24,8 @@ strata: morph: strata/x-generic.morph - name: qt5-tools morph: strata/qt5-tools.morph +- name: qt5-tools-qtwebkit + morph: strata/qt5-tools-qtwebkit.morph - name: qt5-sdk morph: strata/qt5-sdk.morph - name: lua @@ -37,6 +39,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/trove-system-x86_64.morph b/systems/trove-system-x86_64.morph index 297c9fb2..e305c723 100644 --- a/systems/trove-system-x86_64.morph +++ b/systems/trove-system-x86_64.morph @@ -15,8 +15,14 @@ strata: morph: strata/tools.morph - name: morph-utils morph: strata/morph-utils.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: lorry + morph: strata/lorry.morph - name: trove morph: strata/trove.morph +- name: lighttpd-server + morph: strata/lighttpd-server.morph - name: nfs morph: strata/nfs.morph - name: ansible @@ -28,6 +34,5 @@ configuration-extensions: - trove - nfsboot-server - fstab -- simple-network - install-files - cloud-init diff --git a/systems/web-system-x86_64-generic.morph b/systems/web-system-x86_64-generic.morph index 1e6eba80..22aa88c0 100644 --- a/systems/web-system-x86_64-generic.morph +++ b/systems/web-system-x86_64-generic.morph @@ -17,6 +17,10 @@ strata: morph: strata/nfs.morph - name: databases morph: strata/databases.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: lighttpd-server + morph: strata/lighttpd-server.morph - name: webtools morph: strata/webtools.morph - name: erlang @@ -28,6 +32,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files diff --git a/systems/weston-system-armv7lhf-jetson.morph b/systems/weston-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..a51bd810 --- /dev/null +++ b/systems/weston-system-armv7lhf-jetson.morph @@ -0,0 +1,40 @@ +name: weston-system-armv7lhf-jetson +kind: system +description: A weston system for ARMv7 little-endian hard-float NVIDIA Jetson TK1 computers. +arch: armv7lhf +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: connectivity + morph: strata/connectivity.morph +- name: audio-bluetooth + morph: strata/audio-bluetooth.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia + morph: strata/multimedia.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: input-common + morph: strata/input-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: weston-common + morph: strata/weston-common.morph +configuration-extensions: +- set-hostname +- add-config-files +- nfsboot +- install-files diff --git a/systems/weston-system-x86_64-generic.morph b/systems/weston-system-x86_64-generic.morph new file mode 100644 index 00000000..491a34bc --- /dev/null +++ b/systems/weston-system-x86_64-generic.morph @@ -0,0 +1,40 @@ +name: weston-system-x86_64-generic +kind: system +description: A weston system for a 64-bit x86 system. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: connectivity + morph: strata/connectivity.morph +- name: audio-bluetooth + morph: strata/audio-bluetooth.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia + morph: strata/multimedia.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: input-common + morph: strata/input-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: weston-common + morph: strata/weston-common.morph +configuration-extensions: +- set-hostname +- add-config-files +- nfsboot +- install-files diff --git a/systems/xfce-system.morph b/systems/xfce-system.morph index 0c53d7c2..152bf16b 100644 --- a/systems/xfce-system.morph +++ b/systems/xfce-system.morph @@ -9,8 +9,6 @@ strata: morph: strata/core.morph - name: foundation morph: strata/foundation.morph -- name: genivi-foundation - morph: strata/genivi-foundation.morph - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph - name: connectivity @@ -27,8 +25,6 @@ strata: morph: strata/multimedia.morph - name: genivi morph: strata/genivi.morph -- name: genivi-x-generic - morph: strata/genivi-x-generic.morph - name: gtk2 morph: strata/gtk2.morph - name: tools @@ -40,6 +36,5 @@ strata: configuration-extensions: - set-hostname - add-config-files -- simple-network - nfsboot - install-files |