From 9b874110e45b9af3a3bb0a7481bec8918a1c3adb Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Tue, 23 May 2017 14:59:24 +0100 Subject: Move existing Baserock definitions into old/ subdirectory This will be removed in due course. --- old/DEFAULTS | 252 ++ old/README | 59 + old/VERSION | 1 + old/clusters/altera-socfpga-devkit-sd-image.morph | 14 + .../build-system-x86_64-chroot-deploy.morph | 9 + old/clusters/ci.morph | 93 + old/clusters/example-distbuild-cluster.morph | 37 + old/clusters/hardware-deployment.morph | 35 + old/clusters/image-package-example.morph | 12 + old/clusters/initramfs-test.morph | 22 + old/clusters/installer-build-system-x86_64.morph | 52 + old/clusters/jetson-upgrade.morph | 17 + ...nimal-system-armv5l-openbmc-aspeed-deploy.morph | 13 + old/clusters/minimal-system-deploy.morph | 14 + .../minimal-system-x86_64-chroot-deploy.morph | 9 + old/clusters/minimal-system-x86_64-deploy.morph | 12 + old/clusters/moonshot-m2-armv8b64.morph | 56 + old/clusters/moonshot-pxe-armv8b64.morph | 30 + old/clusters/moonshot-pxe-armv8l64.morph | 22 + old/clusters/release.morph | 62 + old/clusters/sdk-example-cluster.morph | 46 + old/clusters/upgrade-devel.morph | 39 + old/extensions/add-config-files.configure | 26 + old/extensions/busybox-init.configure | 145 + old/extensions/ceph.configure | 344 ++ old/extensions/cloud-init.configure | 69 + old/extensions/distbuild-trove-nfsboot.check | 153 + old/extensions/distbuild-trove-nfsboot.write | 283 ++ old/extensions/distbuild-trove-nfsboot.write.help | 49 + old/extensions/distbuild.configure | 132 + old/extensions/fstab.configure | 28 + old/extensions/genivi.configure | 124 + old/extensions/genivi.configure.help | 25 + old/extensions/hosts | 1 + old/extensions/hosts.configure | 50 + old/extensions/image-package-example/README | 9 + old/extensions/image-package-example/common.sh.in | 72 + .../image-package-example/disk-install.sh.in | 51 + .../image-package-example/make-disk-image.sh.in | 36 + old/extensions/image-package.write | 168 + old/extensions/initramfs.write | 26 + old/extensions/initramfs.write.help | 55 + old/extensions/install-essential-files.configure | 40 + .../install-essential-files.configure.help | 20 + old/extensions/install-files.configure | 138 + old/extensions/install-files.configure.help | 86 + old/extensions/installer.configure | 48 + old/extensions/jffs2.write | 64 + old/extensions/jffs2.write.help | 28 + old/extensions/kvm.check | 171 + old/extensions/kvm.write | 126 + old/extensions/kvm.write.help | 90 + old/extensions/mason.configure | 153 + old/extensions/mason/ansible/hosts | 1 + old/extensions/mason/ansible/mason-setup.yml | 83 + old/extensions/mason/httpd.service | 10 + old/extensions/mason/mason-generator.sh | 101 + old/extensions/mason/mason-report.sh | 297 ++ old/extensions/mason/mason-setup.service | 16 + old/extensions/mason/mason.service | 12 + old/extensions/mason/mason.sh | 90 + old/extensions/mason/mason.timer | 10 + old/extensions/mason/os-init-script | 6 + old/extensions/mason/share/mason.conf | 14 + old/extensions/mason/share/os.conf | 30 + old/extensions/moonshot-kernel.configure | 33 + old/extensions/nfsboot-server.configure | 58 + old/extensions/nfsboot.check | 96 + old/extensions/nfsboot.configure | 30 + old/extensions/nfsboot.write | 206 + old/extensions/nfsboot.write.help | 33 + old/extensions/openstack-ceilometer.configure | 122 + old/extensions/openstack-cinder.configure | 125 + old/extensions/openstack-glance.configure | 101 + old/extensions/openstack-ironic.configure | 157 + old/extensions/openstack-keystone.configure | 123 + old/extensions/openstack-network.configure | 80 + old/extensions/openstack-neutron.configure | 138 + old/extensions/openstack-nova.configure | 163 + .../openstack-swift-controller.configure | 49 + old/extensions/openstack-time.configure | 61 + old/extensions/openstack.check | 92 + old/extensions/openstack.write | 94 + old/extensions/openstack.write.help | 51 + old/extensions/partitioning.py | 163 + old/extensions/pxeboot.check | 86 + old/extensions/pxeboot.write | 756 ++++ old/extensions/pxeboot.write.help | 166 + old/extensions/pyfdisk.README | 144 + old/extensions/pyfdisk.py | 769 ++++ old/extensions/rawdisk.check | 52 + old/extensions/rawdisk.write | 122 + old/extensions/rawdisk.write.help | 127 + old/extensions/recv-hole | 158 + old/extensions/sdk.write | 284 ++ old/extensions/set-hostname.configure | 27 + old/extensions/simple-network.configure | 296 ++ old/extensions/ssh-rsync.check | 66 + old/extensions/ssh-rsync.write | 175 + old/extensions/ssh-rsync.write.help | 50 + old/extensions/sshkeys.configure | 25 + old/extensions/strip-gplv3.configure | 97 + old/extensions/swift-build-rings.yml | 34 + old/extensions/swift-storage-devices-validate.py | 60 + old/extensions/swift-storage.configure | 107 + old/extensions/sysroot.check | 23 + old/extensions/sysroot.write | 22 + old/extensions/tar.check | 23 + old/extensions/tar.write | 20 + old/extensions/tar.write.help | 19 + old/extensions/trove.configure | 172 + old/extensions/trove.configure.help | 134 + old/extensions/vagrant.configure | 55 + old/extensions/vdaboot.configure | 33 + old/extensions/virtualbox-ssh.check | 36 + old/extensions/virtualbox-ssh.write | 219 ++ old/extensions/virtualbox-ssh.write.help | 135 + old/extensions/writeexts.py | 1072 ++++++ old/extensions/xfer-hole | 137 + old/genivi/clusters/gdp-jetson-upgrade.morph | 19 + .../genivi-demo-platform-x86_32-deploy.morph | 22 + .../genivi-demo-platform-x86_64-deploy.morph | 22 + old/genivi/clusters/release-genivi-baseline.morph | 41 + old/genivi/strata/genivi-demo-platform-libs.morph | 18 + .../genivi-demo-platform-libs/dbus-c++.morph | 9 + old/genivi/strata/genivi-demo-platform.morph | 42 + .../genivi-demo-platform/audiomanager-poc.morph | 10 + .../genivi-demo-platform/audiomanager@gdp.morph | 14 + .../strata/genivi-demo-platform/browser-poc.morph | 29 + .../genivi-demo-platform-hmi.morph | 137 + .../strata/genivi-demo-platform/mm-common.morph | 7 + old/genivi/strata/genivi.morph | 119 + old/genivi/strata/genivi/DLT-daemon.morph | 7 + .../genivi/genivi-common-api-dbus-runtime.morph | 3 + .../strata/genivi/genivi-common-api-runtime.morph | 3 + old/genivi/strata/genivi/googlemock.morph | 8 + old/genivi/strata/genivi/googletest.morph | 7 + old/genivi/strata/genivi/itzam-tarball.morph | 10 + old/genivi/strata/genivi/json-c.morph | 7 + old/genivi/strata/genivi/linuxquota.morph | 10 + .../strata/genivi/node-startup-controller.morph | 9 + .../strata/genivi/persistence-administrator.morph | 5 + .../strata/genivi/persistence-common-object.morph | 5 + old/genivi/strata/weston-genivi.morph | 21 + .../weston-genivi/wayland-ivi-extension.morph | 8 + old/genivi/strata/weston-genivi/weston.morph | 86 + .../genivi-baseline-system-armv7lhf-jetson.morph | 56 + ...genivi-baseline-system-armv7lhf-versatile.morph | 54 + .../genivi-baseline-system-x86_64-generic.morph | 57 + .../genivi-demo-platform-armv7lhf-jetson.morph | 83 + .../genivi-demo-platform-x86_32-generic.morph | 85 + .../genivi-demo-platform-x86_64-generic.morph | 85 + .../gnome-system-armv7lhf-jetson-deploy.morph | 17 + .../clusters/gnome-system-x86_64-deploy.morph | 24 + old/gnome/strata/WebKitGtk1-common.morph | 19 + .../strata/WebKitGtk1-common/WebKitGtk1.morph | 5 + old/gnome/strata/flatpak-common.morph | 24 + old/gnome/strata/flatpak-common/elfutils.morph | 7 + old/gnome/strata/flatpak-common/flatpak.morph | 5 + old/gnome/strata/gnome.morph | 963 +++++ old/gnome/strata/gnome/WebKitGtk.morph | 5 + old/gnome/strata/gnome/accountsservice.morph | 9 + old/gnome/strata/gnome/adwaita-icon-theme.morph | 11 + old/gnome/strata/gnome/autoconf-archive.morph | 5 + old/gnome/strata/gnome/berkeleydb.morph | 18 + old/gnome/strata/gnome/caribou.morph | 5 + old/gnome/strata/gnome/cheese.morph | 11 + old/gnome/strata/gnome/clutter.morph | 6 + old/gnome/strata/gnome/cogl.morph | 6 + old/gnome/strata/gnome/colord.morph | 9 + old/gnome/strata/gnome/cracklib.morph | 18 + old/gnome/strata/gnome/d-feet.morph | 7 + old/gnome/strata/gnome/dconf.morph | 5 + old/gnome/strata/gnome/desktop-file-utils.morph | 7 + old/gnome/strata/gnome/empathy.morph | 5 + old/gnome/strata/gnome/epiphany.morph | 5 + old/gnome/strata/gnome/evolution-data-server.morph | 10 + old/gnome/strata/gnome/evolution.morph | 11 + old/gnome/strata/gnome/folks.morph | 5 + old/gnome/strata/gnome/gconf.morph | 5 + old/gnome/strata/gnome/gdm.morph | 24 + old/gnome/strata/gnome/glade.morph | 5 + old/gnome/strata/gnome/glib-networking.morph | 9 + old/gnome/strata/gnome/gnome-color-manager.morph | 7 + old/gnome/strata/gnome/gnome-control-center.morph | 5 + old/gnome/strata/gnome/gnome-initial-setup.morph | 9 + old/gnome/strata/gnome/gnome-online-accounts.morph | 5 + old/gnome/strata/gnome/gnome-session.morph | 5 + old/gnome/strata/gnome/gnome-settings-daemon.morph | 5 + old/gnome/strata/gnome/gnome-shell.morph | 5 + old/gnome/strata/gnome/gnome-terminal.morph | 5 + old/gnome/strata/gnome/gnome-themes-standard.morph | 5 + old/gnome/strata/gnome/gtksourceview.morph | 5 + old/gnome/strata/gnome/hicolor-icon-theme.morph | 7 + old/gnome/strata/gnome/ibus-anthy.morph | 5 + old/gnome/strata/gnome/ibus-hangul.morph | 5 + old/gnome/strata/gnome/ibus-libpinyin.morph | 5 + old/gnome/strata/gnome/ibus.morph | 9 + old/gnome/strata/gnome/krb5.morph | 10 + old/gnome/strata/gnome/libchamplain.morph | 5 + old/gnome/strata/gnome/libgdata.morph | 6 + old/gnome/strata/gnome/libhangul.morph | 6 + old/gnome/strata/gnome/libpeas.morph | 5 + old/gnome/strata/gnome/libpurple.morph | 9 + old/gnome/strata/gnome/libpwquality.morph | 6 + old/gnome/strata/gnome/librest.morph | 9 + old/gnome/strata/gnome/libwnck.morph | 11 + old/gnome/strata/gnome/mozjs24.morph | 18 + old/gnome/strata/gnome/mutter.morph | 5 + old/gnome/strata/gnome/nautilus.morph | 5 + old/gnome/strata/gnome/raptor.morph | 5 + old/gnome/strata/gnome/telepathy-gabble.morph | 8 + old/gnome/strata/gnome/telepathy-glib.morph | 6 + old/gnome/strata/gnome/telepathy-logger.morph | 5 + old/gnome/strata/gnome/telepathy-salut.morph | 5 + old/gnome/strata/gnome/upower.morph | 5 + old/gnome/strata/gnome/vte.morph | 5 + old/gnome/strata/gnome/yelp.morph | 5 + old/gnome/strata/gnome/zeitgeist.morph | 5 + .../systems/gnome-system-armv7lhf-jetson.morph | 96 + old/gnome/systems/gnome-system-x86_64.morph | 104 + old/install-files/chef/manifest | 3 + .../system-generators/ccache-nfs-mount-generator | 16 + old/install-files/distbuild/manifest | 28 + .../distbuild-setup/ansible/distbuild-setup.yml | 115 + .../usr/lib/distbuild-setup/ansible/hosts | 1 + .../usr/lib/systemd/system/distbuild-setup.service | 16 + .../lib/systemd/system/morph-cache-server.service | 12 + .../systemd/system/morph-controller-helper.service | 13 + .../lib/systemd/system/morph-controller.service | 12 + .../lib/systemd/system/morph-worker-helper.service | 13 + .../usr/lib/systemd/system/morph-worker.service | 13 + .../distbuild-setup.service | 1 + .../share/distbuild-setup/morph-cache-server.conf | 5 + .../distbuild-setup/morph-controller-helper.conf | 5 + .../share/distbuild-setup/morph-controller.conf | 6 + .../share/distbuild-setup/morph-worker-helper.conf | 4 + .../usr/share/distbuild-setup/morph-worker.conf | 4 + .../distbuild/usr/share/distbuild-setup/morph.conf | 13 + old/install-files/essential-files/etc/inputrc | 38 + old/install-files/essential-files/etc/os-release | 1 + old/install-files/essential-files/etc/profile | 13 + old/install-files/essential-files/manifest | 11 + old/install-files/essential-files/usr/bin/brpaste | 29 + .../essential-files/usr/lib/os-release | 5 + .../usr/lib/tmpfiles.d/shutdownramfs.conf | 4 + .../genivi-devel-system-armv7/etc/morph.conf | 1 + .../genivi-devel-system-armv7/manifest | 5 + .../genivi-devel-system-armv7/src/morph.conf | 5 + old/install-files/gnome/etc/pam.d/gdm | 15 + old/install-files/gnome/etc/pam.d/gdm-autologin | 17 + .../gnome/etc/pam.d/gdm-launch-environment | 11 + old/install-files/gnome/etc/pam.d/gdm-password | 24 + old/install-files/gnome/etc/pam.d/passwd | 10 + old/install-files/gnome/etc/pam.d/system-auth | 19 + old/install-files/gnome/etc/securetty | 8 + old/install-files/gnome/etc/ssh/sshd_config | 135 + old/install-files/gnome/manifest | 9 + .../usr/share/polkit-1/rules.d/geoclue-2.0.rules | 7 + old/install-files/moonshot/boot/m400-1003.dtb | Bin 0 -> 18063 bytes old/install-files/moonshot/manifest | 2 + .../openstack/etc/horizon/apache-horizon.conf | 36 + .../openstack/etc/neutron/dnsmasq-neutron.conf | 2 + .../etc/tempest/set_openstack_to_run_tempest.sh | 122 + .../openstack/etc/tempest/tempest.conf | 1188 ++++++ old/install-files/openstack/manifest | 117 + .../openstack/usr/lib/sysctl.d/neutron.conf | 3 + .../usr/lib/systemd/system/apache-httpd.service | 16 + .../usr/lib/systemd/system/iscsi-setup.service | 12 + .../openstack-ceilometer-alarm-evaluator.service | 15 + .../openstack-ceilometer-alarm-notifier.service | 15 + .../system/openstack-ceilometer-api.service | 15 + .../system/openstack-ceilometer-central.service | 15 + .../system/openstack-ceilometer-collector.service | 15 + .../system/openstack-ceilometer-compute.service | 15 + .../openstack-ceilometer-config-setup.service | 11 + .../system/openstack-ceilometer-db-setup.service | 13 + .../openstack-ceilometer-notification.service | 15 + .../systemd/system/openstack-cinder-api.service | 15 + .../systemd/system/openstack-cinder-backup.service | 15 + .../system/openstack-cinder-config-setup.service | 11 + .../system/openstack-cinder-db-setup.service | 13 + .../system/openstack-cinder-lv-setup.service | 12 + .../system/openstack-cinder-scheduler.service | 15 + .../systemd/system/openstack-cinder-volume.service | 16 + .../systemd/system/openstack-glance-api.service | 16 + .../system/openstack-glance-registry.service | 16 + .../systemd/system/openstack-glance-setup.service | 11 + .../systemd/system/openstack-horizon-setup.service | 10 + .../systemd/system/openstack-ironic-api.service | 16 + .../system/openstack-ironic-conductor.service | 16 + .../systemd/system/openstack-ironic-setup.service | 12 + .../system/openstack-keystone-setup.service | 14 + .../lib/systemd/system/openstack-keystone.service | 16 + .../systemd/system/openstack-network-setup.service | 12 + .../system/openstack-neutron-config-setup.service | 13 + .../system/openstack-neutron-db-setup.service | 13 + .../system/openstack-neutron-dhcp-agent.service | 17 + .../system/openstack-neutron-l3-agent.service | 17 + .../openstack-neutron-metadata-agent.service | 17 + .../system/openstack-neutron-ovs-cleanup.service | 18 + ...nstack-neutron-plugin-openvswitch-agent.service | 17 + .../system/openstack-neutron-server.service | 17 + .../lib/systemd/system/openstack-nova-api.service | 15 + .../lib/systemd/system/openstack-nova-cert.service | 15 + .../systemd/system/openstack-nova-compute.service | 16 + .../system/openstack-nova-conductor.service | 16 + .../system/openstack-nova-config-setup.service | 11 + .../system/openstack-nova-consoleauth.service | 15 + .../systemd/system/openstack-nova-db-setup.service | 13 + .../system/openstack-nova-novncproxy.service | 15 + .../system/openstack-nova-scheduler.service | 15 + .../system/openstack-nova-serialproxy.service | 15 + .../systemd/system/openvswitch-db-server.service | 12 + .../lib/systemd/system/openvswitch-setup.service | 11 + .../usr/lib/systemd/system/openvswitch.service | 12 + .../systemd/system/postgres-server-setup.service | 12 + .../usr/lib/systemd/system/postgres-server.service | 26 + .../usr/lib/systemd/system/rabbitmq-server.service | 16 + .../systemd/system/swift-controller-setup.service | 13 + .../usr/lib/systemd/system/swift-proxy.service | 14 + .../usr/share/openstack/ceilometer-config.yml | 36 + .../usr/share/openstack/ceilometer-db.yml | 50 + .../usr/share/openstack/ceilometer/ceilometer.conf | 1330 +++++++ .../usr/share/openstack/cinder-config.yml | 37 + .../openstack/usr/share/openstack/cinder-db.yml | 59 + .../openstack/usr/share/openstack/cinder-lvs.yml | 21 + .../usr/share/openstack/cinder/cinder.conf | 2991 +++++++++++++++ .../openstack/extras/00-disable-device.network | 2 + .../share/openstack/extras/60-device-dhcp.network | 5 + .../openstack/usr/share/openstack/glance.yml | 92 + .../usr/share/openstack/glance/glance-api.conf | 813 ++++ .../share/openstack/glance/glance-registry.conf | 268 ++ .../openstack/usr/share/openstack/horizon.yml | 46 + .../openstack/usr/share/openstack/hosts | 1 + .../openstack/usr/share/openstack/ironic.yml | 104 + .../usr/share/openstack/ironic/ironic.conf | 1568 ++++++++ .../openstack/usr/share/openstack/iscsi.yml | 15 + .../openstack/usr/share/openstack/keystone.yml | 142 + .../usr/share/openstack/keystone/keystone.conf | 1733 +++++++++ .../openstack/usr/share/openstack/network.yml | 67 + .../usr/share/openstack/neutron-config.yml | 37 + .../openstack/usr/share/openstack/neutron-db.yml | 51 + .../usr/share/openstack/neutron/dhcp_agent.ini | 89 + .../usr/share/openstack/neutron/l3_agent.ini | 121 + .../usr/share/openstack/neutron/metadata_agent.ini | 68 + .../usr/share/openstack/neutron/neutron.conf | 1027 +++++ .../openstack/neutron/plugins/ml2/ml2_conf.ini | 113 + .../share/openstack/neutron/plugins/ryu/ryu.ini | 44 + .../openstack/usr/share/openstack/nova-config.yml | 34 + .../openstack/usr/share/openstack/nova-db.yml | 50 + .../usr/share/openstack/nova/nova-compute.conf | 4 + .../openstack/usr/share/openstack/nova/nova.conf | 4008 ++++++++++++++++++++ .../openstack/usr/share/openstack/openvswitch.yml | 38 + .../openstack/usr/share/openstack/postgres.yml | 48 + .../usr/share/openstack/postgres/pg_hba.conf | 5 + .../usr/share/openstack/postgres/postgresql.conf | 11 + .../usr/share/openstack/rabbitmq/rabbitmq-env.conf | 3 + .../usr/share/openstack/rabbitmq/rabbitmq.config | 9 + .../usr/share/openstack/swift-controller.yml | 52 + .../openstack/usr/share/swift/etc/rsyncd.j2 | 23 + .../usr/share/swift/etc/swift/proxy-server.j2 | 630 +++ old/install-files/swift/etc/ntp.conf | 25 + old/install-files/swift/manifest | 15 + .../swift/usr/lib/systemd/system/rsync.service | 11 + .../lib/systemd/system/swift-storage-setup.service | 12 + .../usr/lib/systemd/system/swift-storage.service | 12 + .../swift/usr/share/swift/etc/rsyncd.j2 | 23 + .../usr/share/swift/etc/swift/account-server.j2 | 192 + .../usr/share/swift/etc/swift/container-server.j2 | 211 ++ .../usr/share/swift/etc/swift/object-server.j2 | 306 ++ .../swift/usr/share/swift/etc/swift/swift.j2 | 169 + old/install-files/swift/usr/share/swift/hosts | 1 + .../swift/usr/share/swift/swift-storage.yml | 24 + .../home/vagrant/.ssh/authorized_keys | 1 + old/install-files/vagrant-files/manifest | 4 + .../ivi-system-armv7lhf-jetson-deploy.morph | 18 + old/ivi/clusters/ivi-system-x86_32-deploy.morph | 24 + old/ivi/clusters/ivi-system-x86_64-deploy.morph | 24 + old/ivi/strata/bsp-x86_32-ivi.morph | 12 + .../strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph | 84 + old/ivi/strata/bsp-x86_64-ivi.morph | 12 + .../strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph | 84 + old/ivi/strata/qt5-ivi.morph | 17 + old/ivi/strata/qt5-ivi/qtapplicationmanager.morph | 8 + old/ivi/strata/rvi.morph | 11 + old/ivi/strata/rvi/rvi_core.morph | 16 + old/ivi/systems/ivi-system-armv7lhf-jetson.morph | 94 + old/ivi/systems/ivi-system-x86_32.morph | 104 + old/ivi/systems/ivi-system-x86_64.morph | 104 + old/migrations | 3 + old/partitioning/default | 9 + old/partitioning/socfpga-devkit | 26 + old/scripts/check-unpetrify-refs.py | 76 + old/scripts/cycle.sh | 61 + old/scripts/licensecheck.pl | 604 +++ old/scripts/licensecheck.py | 201 + old/scripts/organize-morphologies.py | 255 ++ old/scripts/release-build | 192 + old/scripts/release-build.test.conf | 6 + old/scripts/release-test | 400 ++ old/scripts/release-test-os | 526 +++ old/scripts/release-upload | 473 +++ old/scripts/release-upload.test.conf | 10 + old/scripts/scriptslib.py | 156 + old/scripts/yaml-jsonschema | 50 + old/strata/CPAN-Mini-Inject.morph | 306 ++ old/strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph | 3 + old/strata/NetworkManager-common.morph | 46 + .../NetworkManager-common/ModemManager.morph | 9 + .../NetworkManager-common/NetworkManager.morph | 9 + old/strata/ansible.morph | 26 + old/strata/ansible/ansible.morph | 9 + old/strata/ansible/openstack-ansible-modules.morph | 5 + old/strata/armv7lhf-cross-toolchain.morph | 54 + .../armv7lhf-cross-binutils.morph | 24 + .../armv7lhf-cross-gcc-nolibc.morph | 73 + .../armv7lhf-cross-gcc.morph | 47 + .../armv7lhf-cross-glibc.morph | 51 + .../armv7lhf-cross-libstdc++.morph | 32 + .../armv7lhf-cross-linux-api-headers.morph | 10 + old/strata/baserock-import.morph | 24 + old/strata/bluetooth.morph | 39 + old/strata/bluetooth/bluez-tools.morph | 10 + old/strata/bluetooth/bluez.morph | 19 + old/strata/bluetooth/libical.morph | 5 + old/strata/bsp-armv5l-openbmc-aspeed.morph | 18 + .../linux-armv5l-openbmc-aspeed.morph | 9 + .../bsp-armv5l-openbmc-aspeed/u-boot@aspeed.morph | 14 + old/strata/bsp-armv7-highbank.morph | 17 + .../bsp-armv7-highbank/linux-armv7-highbank.morph | 52 + old/strata/bsp-armv7-versatile.morph | 12 + .../linux-armv7-versatile.morph | 31 + old/strata/bsp-armv7b-highbank.morph | 17 + .../linux-armv7b-highbank.morph | 53 + old/strata/bsp-armv7b-vexpress-tc2.morph | 11 + .../linux-armv7b-vexpress-tc2.morph | 57 + old/strata/bsp-armv7l-altera-socfpga-devkit.morph | 39 + .../bsp-support@socfpga-devkit.morph | 17 + .../device-tree-compiler.morph | 6 + .../linux-armv7l-altera-socfpga-devkit.morph | 34 + .../preloader@socfpga-devkit.morph | 17 + .../u-boot-tools@socfpga-devkit.morph | 14 + .../u-boot@socfpga-devkit.morph | 9 + old/strata/bsp-armv8b64-generic.morph | 15 + .../linux-armv8b64-generic.morph | 278 ++ old/strata/bsp-armv8l64-generic.morph | 14 + .../linux-armv8l64-generic.morph | 276 ++ old/strata/bsp-jetson.morph | 36 + .../bsp-jetson/device-tree-compiler@jetson.morph | 6 + old/strata/bsp-jetson/linux-firmware@jetson.morph | 15 + old/strata/bsp-jetson/linux-jetson-tk1.morph | 252 ++ old/strata/bsp-jetson/u-boot@jetson.morph | 20 + old/strata/bsp-ppc64-generic.morph | 11 + old/strata/bsp-ppc64-generic/linux-ppc64.morph | 226 ++ old/strata/bsp-wandboard.morph | 18 + .../bsp-wandboard/linux-armv7-wandboard.morph | 70 + old/strata/bsp-wandboard/u-boot@wandboard.morph | 11 + old/strata/bsp-x86_32-generic.morph | 26 + .../bsp-x86_32-generic/linux-x86-32-generic.morph | 299 ++ old/strata/bsp-x86_32-generic/nasm.morph | 5 + old/strata/bsp-x86_32-generic/syslinux.morph | 12 + old/strata/bsp-x86_64-generic.morph | 26 + .../bsp-x86_64-generic/linux-x86-64-generic.morph | 300 ++ old/strata/bsp-x86_64-generic/nasm.morph | 5 + old/strata/bsp-x86_64-generic/syslinux.morph | 12 + old/strata/bsp-x86_both-tools.morph | 21 + old/strata/bsp-x86_both-tools/nasm.morph | 5 + old/strata/bsp-x86_both-tools/syslinux.morph | 12 + old/strata/build-essential.morph | 412 ++ old/strata/build-essential/binutils.morph | 8 + old/strata/build-essential/busybox.morph | 89 + old/strata/build-essential/ccache.morph | 12 + old/strata/build-essential/fhs-dirs.morph | 49 + old/strata/build-essential/gawk.morph | 5 + old/strata/build-essential/gcc.morph | 62 + old/strata/build-essential/glibc.morph | 100 + old/strata/build-essential/linux-api-headers.morph | 24 + old/strata/build-essential/m4-tarball.morph | 5 + old/strata/build-essential/make.morph | 5 + old/strata/build-essential/stage1-binutils.morph | 23 + old/strata/build-essential/stage1-gcc.morph | 82 + old/strata/build-essential/stage2-binutils.morph | 21 + old/strata/build-essential/stage2-busybox.morph | 80 + old/strata/build-essential/stage2-fake-bash.morph | 4 + old/strata/build-essential/stage2-fhs-dirs.morph | 51 + old/strata/build-essential/stage2-gawk.morph | 9 + .../build-essential/stage2-gcc-fixed-headers.morph | 19 + old/strata/build-essential/stage2-gcc.morph | 81 + old/strata/build-essential/stage2-glibc.morph | 104 + old/strata/build-essential/stage2-libstdc++.morph | 36 + .../build-essential/stage2-linux-api-headers.morph | 24 + old/strata/build-essential/stage2-make.morph | 9 + .../build-essential/stage2-reset-specs.morph | 21 + old/strata/build-essential/zlib.morph | 9 + old/strata/cloudinit-support.morph | 21 + old/strata/cloudinit-support/cloud-init.morph | 6 + old/strata/connectivity.morph | 27 + old/strata/connectivity/wpa_supplicant.morph | 36 + old/strata/connman-common.morph | 16 + old/strata/connman-common/connman.morph | 6 + old/strata/connman-common/ofono.morph | 11 + old/strata/corba.morph | 17 + old/strata/corba/ACE_TAO.morph | 32 + old/strata/corba/MPC.morph | 6 + old/strata/core.morph | 457 +++ old/strata/core/acl.morph | 6 + old/strata/core/attr.morph | 19 + old/strata/core/autoconf-tarball.morph | 5 + old/strata/core/autoconf.morph | 5 + old/strata/core/automake.morph | 8 + old/strata/core/bash.morph | 36 + old/strata/core/bison.morph | 6 + old/strata/core/bzip2.morph | 10 + old/strata/core/ca-certificates.morph | 26 + old/strata/core/cmake.morph | 8 + old/strata/core/curl.morph | 15 + old/strata/core/e2fsprogs.morph | 27 + old/strata/core/flex.morph | 14 + old/strata/core/gdbm.morph | 8 + old/strata/core/gettext-tarball.morph | 5 + old/strata/core/git-minimal.morph | 7 + old/strata/core/gperf.morph | 3 + old/strata/core/libcap2.morph | 6 + old/strata/core/libexpat.morph | 6 + old/strata/core/libffi.morph | 8 + old/strata/core/libtool-tarball.morph | 5 + old/strata/core/linux-pam.morph | 9 + old/strata/core/mini-utils.morph | 7 + old/strata/core/ncurses.morph | 45 + old/strata/core/openssl-new.morph | 15 + old/strata/core/patch.morph | 5 + old/strata/core/perl.morph | 16 + old/strata/core/pkg-config.morph | 5 + old/strata/core/python3.morph | 15 + old/strata/core/readline.morph | 8 + old/strata/core/shadow.morph | 53 + old/strata/core/texinfo-tarball.morph | 9 + old/strata/core/util-linux.morph | 10 + old/strata/coreutils-common.morph | 67 + old/strata/coreutils-common/coreutils.morph | 12 + old/strata/coreutils-common/diff.morph | 8 + old/strata/coreutils-common/sed.morph | 8 + old/strata/coreutils-common/tar.morph | 13 + old/strata/cpp-common-libs.morph | 11 + old/strata/cpp-common-libs/boost.morph | 9 + old/strata/cross-bootstrap.morph | 29 + old/strata/cross-bootstrap/groff.morph | 13 + old/strata/cross-bootstrap/openssh.morph | 28 + old/strata/cross-bootstrap/rsync.morph | 6 + old/strata/cross-tools.morph | 11 + old/strata/cups.morph | 11 + old/strata/cups/cups.morph | 12 + old/strata/data-indexing-management.morph | 40 + old/strata/data-indexing-management/gmime.morph | 6 + .../data-indexing-management/libmediaart.morph | 5 + old/strata/device-management.morph | 12 + old/strata/devtools.morph | 55 + old/strata/devtools/git.morph | 11 + old/strata/devtools/nano.morph | 16 + old/strata/devtools/screen.morph | 11 + old/strata/devtools/vim.morph | 10 + old/strata/devtools/wget.morph | 10 + old/strata/dlna-services.morph | 51 + old/strata/dlna-services/gssdp.morph | 5 + old/strata/docutils.morph | 52 + old/strata/docutils/docbook-xml.morph | 104 + old/strata/docutils/docbook-xsl.morph | 50 + old/strata/docutils/xml-catalog.morph | 6 + old/strata/elixir.morph | 11 + old/strata/elixir/elixir.morph | 6 + old/strata/erlang.morph | 18 + old/strata/erlang/erlang.morph | 9 + old/strata/erlang/rebar.morph | 6 + old/strata/foundation.morph | 131 + old/strata/foundation/btrfs-progs.morph | 8 + old/strata/foundation/dbus-pre.morph | 10 + old/strata/foundation/dbus.morph | 10 + old/strata/foundation/fuse.morph | 5 + old/strata/foundation/groff.morph | 13 + old/strata/foundation/kmod.morph | 23 + old/strata/foundation/libarchive.morph | 6 + old/strata/foundation/libgcrypt.morph | 5 + old/strata/foundation/libgpg-error.morph | 7 + old/strata/foundation/lzo.morph | 5 + old/strata/foundation/openssh.morph | 32 + old/strata/foundation/pciutils.morph | 11 + old/strata/foundation/rsync.morph | 9 + old/strata/foundation/systemd.morph | 31 + old/strata/foundation/tbdiff.morph | 3 + old/strata/foundation/time-zone-database.morph | 11 + old/strata/geolocation.morph | 18 + old/strata/geolocation/geoclue.morph | 13 + old/strata/glib-common.morph | 38 + old/strata/glib-common/glib.morph | 8 + old/strata/graphics-common.morph | 110 + old/strata/graphics-common/cairo.morph | 5 + .../chinese-fonts-truetype-bkai00mp.morph | 5 + .../chinese-fonts-truetype-bsmi00lp.morph | 5 + .../chinese-fonts-truetype-gbsn00lp.morph | 5 + .../chinese-fonts-truetype-gkai00mp.morph | 5 + old/strata/graphics-common/fontconfig.morph | 7 + old/strata/graphics-common/freefont-otf.morph | 5 + old/strata/graphics-common/pixman.morph | 5 + old/strata/graphics-common/ttf-alee.morph | 5 + old/strata/gtk-deps.morph | 55 + old/strata/gtk-deps/at-spi2-atk.morph | 5 + old/strata/gtk-deps/at-spi2-core.morph | 5 + old/strata/gtk-deps/gdk-pixbuf.morph | 8 + old/strata/gtk-deps/shared-mime-info.morph | 8 + old/strata/gtk2.morph | 12 + old/strata/gtk2/gtk+.morph | 15 + old/strata/gtk3.morph | 13 + old/strata/gtk3/gtk3.morph | 15 + old/strata/icu-common.morph | 10 + old/strata/icu-common/icu.morph | 19 + old/strata/initramfs-utils.morph | 11 + old/strata/input-common.morph | 45 + old/strata/input-common/libxkbcommon-no-x11.morph | 12 + old/strata/input-common/xkeyboard-config.morph | 7 + old/strata/installer-utils.morph | 11 + old/strata/installer-utils/installer-scripts.morph | 4 + old/strata/ivi-common.morph | 12 + .../ivi-common/automotive-message-broker.morph | 20 + old/strata/libdrm-common.morph | 17 + old/strata/libdrm-common/drm.morph | 7 + old/strata/libsoup-common.morph | 11 + old/strata/libsoup-common/libsoup.morph | 6 + old/strata/lighttpd-server.morph | 12 + old/strata/lighttpd-server/lighttpd.morph | 6 + old/strata/llvm-common.morph | 10 + old/strata/llvm-common/llvm.morph | 11 + old/strata/lorry.morph | 125 + old/strata/lorry/cvs-tarball.morph | 10 + old/strata/lorry/cvsps.morph | 6 + old/strata/lorry/hg-fast-export.morph | 10 + old/strata/lorry/libapr-util.morph | 7 + old/strata/lorry/libapr.morph | 21 + old/strata/lorry/libserf.morph | 6 + old/strata/lorry/lorry.morph | 3 + old/strata/lorry/mercurial-tarball.morph | 6 + old/strata/lorry/neon.morph | 8 + old/strata/lorry/perl-dbi-tarball.morph | 5 + old/strata/lorry/subversion-tarball.morph | 12 + old/strata/lorry/swig.morph | 7 + old/strata/lua53.morph | 11 + old/strata/lua53/lua53.morph | 9 + old/strata/mesa-common.morph | 22 + old/strata/mesa-common/mesa.morph | 24 + old/strata/mesa-demos-common.morph | 37 + old/strata/mesa-demos-common/glew.morph | 6 + old/strata/morph-utils.morph | 54 + old/strata/morph-utils/cmdtest.morph | 6 + old/strata/morph-utils/pyfilesystem.morph | 6 + old/strata/morph-utils/python-ttystatus.morph | 6 + old/strata/mtd-utilities.morph | 11 + old/strata/mtd-utilities/mtd-utils.morph | 6 + old/strata/multimedia-common.morph | 64 + old/strata/multimedia-common/libmad.morph | 10 + old/strata/multimedia-common/libmpeg2.morph | 6 + old/strata/multimedia-common/libvpx.morph | 14 + old/strata/multimedia-common/orc.morph | 5 + old/strata/multimedia-common/yasm.morph | 4 + .../multimedia-gstreamer-openmax-generic.morph | 14 + .../gst-omx.morph | 7 + old/strata/multimedia-gstreamer.morph | 63 + old/strata/multimedia-gstreamer/gst-libav.morph | 5 + old/strata/multimedia-hardware-codecs-x86.morph | 31 + old/strata/navigation.morph | 11 + old/strata/navigation/navit.morph | 5 + old/strata/network-security.morph | 47 + old/strata/network-security/gnutls.morph | 6 + old/strata/network-security/libtasn1.morph | 6 + old/strata/network-security/nettle.morph | 6 + old/strata/network-security/nspr.morph | 12 + old/strata/network-security/nss.morph | 32 + old/strata/network-security/p11-kit.morph | 5 + old/strata/nfs.morph | 31 + old/strata/nfs/nfs-utils.morph | 13 + old/strata/nfs/rpcbind.morph | 11 + old/strata/nfs/tcp-wrappers.morph | 9 + old/strata/nfs/ti-rpc.morph | 6 + old/strata/nodejs.morph | 12 + old/strata/nodejs/node.morph | 9 + old/strata/openbmc.morph | 22 + old/strata/openbmc/i2c-tools.morph | 16 + old/strata/openbmc/isc-dhcp.morph | 3 + old/strata/openbmc/lm_sensors.morph | 7 + old/strata/openstack-clients.morph | 154 + old/strata/openstack-common.morph | 140 + old/strata/openstack-common/babel.morph | 8 + old/strata/ostree-core.morph | 38 + old/strata/ostree-core/gpgme.morph | 7 + old/strata/ostree-core/libassuan.morph | 7 + old/strata/ostree-core/ostree.morph | 7 + old/strata/pcre-utils.morph | 10 + old/strata/pcre-utils/pcre.morph | 6 + old/strata/perl-common.morph | 388 ++ old/strata/perl-common/List-MoreUtils.morph | 9 + old/strata/privileges-management.morph | 21 + old/strata/privileges-management/mozjs17.morph | 18 + old/strata/privileges-management/polkit.morph | 10 + old/strata/python-cliapp.morph | 26 + old/strata/python-cliapp/python-coveragepy.morph | 6 + old/strata/python-common.morph | 93 + old/strata/python-common/pycrypto.morph | 3 + old/strata/python-pygobject.morph | 13 + old/strata/python-pygobject/pygobject.morph | 5 + old/strata/python-tools.morph | 29 + old/strata/python-wsgi.morph | 17 + old/strata/python2-core.morph | 107 + old/strata/python2-core/python2.morph | 13 + old/strata/python2-core/pyyaml-python2.morph | 6 + old/strata/python3-gobject.morph | 13 + old/strata/python3-gobject/python3-gobject.morph | 5 + old/strata/qt5-sdk.morph | 15 + old/strata/qt5-sdk/qt-creator.morph | 8 + old/strata/qt5-sdk/snowshoe.morph | 8 + old/strata/qt5-tools-qtmultimedia.morph | 12 + old/strata/qt5-tools-qtwayland.morph | 12 + old/strata/qt5-tools-qtwayland/qtwayland.morph | 5 + old/strata/qt5-tools-qtwebengine.morph | 16 + old/strata/qt5-tools-qtwebkit.morph | 34 + old/strata/qt5-tools.morph | 129 + old/strata/qt5-tools/qtbase.morph | 5 + old/strata/ruby.morph | 54 + old/strata/ruby/bundler.morph | 6 + old/strata/ruby/hoe.morph | 16 + old/strata/ruby/rake-compiler.morph | 15 + old/strata/ruby/ruby-1.8.morph | 9 + old/strata/ruby/ruby.morph | 9 + old/strata/samba.morph | 13 + old/strata/samba/samba.morph | 127 + old/strata/sandboxing.morph | 18 + old/strata/secret-service.morph | 27 + old/strata/secret-service/gnome-keyring.morph | 5 + old/strata/secret-service/libsecret.morph | 5 + old/strata/sound-server-pulseaudio.morph | 74 + .../sound-server-pulseaudio/alsa-utils.morph | 7 + old/strata/sound-server-pulseaudio/avahi.morph | 16 + .../sound-server-pulseaudio/libsndfile.morph | 5 + .../sound-server-pulseaudio/pulseaudio.morph | 18 + .../webrtc-audio-processing.morph | 14 + old/strata/spell-checking.morph | 16 + old/strata/storage-management.morph | 40 + old/strata/storage-management/gvfs.morph | 5 + old/strata/storage-management/libatasmart.morph | 6 + old/strata/storage-management/libmtp.morph | 8 + old/strata/storage-management/udisks.morph | 5 + old/strata/swift.morph | 53 + old/strata/swift/gf-complete.morph | 19 + old/strata/swift/liberasurecode.morph | 5 + old/strata/swift/xattr.morph | 8 + old/strata/tools.morph | 69 + old/strata/tools/device-tree-compiler.morph | 6 + old/strata/tools/distcc.morph | 10 + old/strata/tools/gdb.morph | 6 + old/strata/tools/git-fat.morph | 4 + old/strata/tools/ipmitool.morph | 5 + old/strata/tools/kexec-tools.morph | 6 + old/strata/tools/lsof.morph | 12 + old/strata/tools/parted.morph | 12 + old/strata/tools/procps-ng.morph | 16 + old/strata/tools/u-boot.morph | 11 + old/strata/tools/zip.morph | 9 + old/strata/unionfs-fuse-group.morph | 20 + old/strata/unionfs-fuse-group/unionfs-fuse.morph | 12 + old/strata/vala-common.morph | 35 + old/strata/vala-common/vala-bootstrap.morph | 7 + old/strata/virtualbox-guest-x86_64.morph | 22 + old/strata/virtualbox-guest-x86_64/vboxguest.morph | 34 + old/strata/virtualbox-guest-x86_64/yasm.morph | 4 + old/strata/wayland-generic.morph | 17 + old/strata/wayland-generic/wayland.morph | 7 + old/strata/weston-common.morph | 14 + old/strata/weston-common/weston.morph | 7 + old/strata/x-common.morph | 405 ++ old/strata/x-drivers.morph | 26 + old/strata/x-generic.morph | 46 + old/strata/x-generic/xserver.morph | 12 + old/strata/xorg-util-macros-common.morph | 17 + .../armv7lhf-cross-toolchain-system-x86_32.morph | 19 + .../armv7lhf-cross-toolchain-system-x86_64.morph | 19 + old/systems/base-system-armv7-highbank.morph | 20 + old/systems/base-system-armv7-versatile.morph | 20 + old/systems/base-system-armv7b-highbank.morph | 20 + old/systems/base-system-armv7b-vexpress-tc2.morph | 19 + .../base-system-armv7l-altera-socfpga-devkit.morph | 21 + old/systems/base-system-armv7lhf-highbank.morph | 20 + old/systems/base-system-armv8b64.morph | 22 + old/systems/base-system-armv8l64.morph | 22 + old/systems/base-system-ppc64-generic.morph | 20 + old/systems/base-system-x86_32-generic.morph | 19 + old/systems/base-system-x86_64-generic.morph | 20 + .../build-system-armv5l-openbmc-aspeed.morph | 49 + ...build-system-armv7l-altera-socfpga-devkit.morph | 51 + old/systems/build-system-armv7lhf-highbank.morph | 63 + old/systems/build-system-armv7lhf-jetson.morph | 61 + old/systems/build-system-armv7lhf-rootfs.morph | 59 + old/systems/build-system-armv8b64.morph | 63 + old/systems/build-system-armv8l64.morph | 63 + old/systems/build-system-ppc64.morph | 61 + old/systems/build-system-x86_32-chroot.morph | 61 + old/systems/build-system-x86_32.morph | 61 + old/systems/build-system-x86_64-chroot.morph | 61 + old/systems/build-system-x86_64.morph | 61 + .../cross-bootstrap-system-armv5l-generic.morph | 25 + .../cross-bootstrap-system-armv7lhf-generic.morph | 25 + .../cross-bootstrap-system-armv8b64-generic.morph | 25 + .../cross-bootstrap-system-armv8l64-generic.morph | 25 + .../cross-bootstrap-system-ppc64-generic.morph | 25 + .../cross-bootstrap-system-x86_64-generic.morph | 25 + old/systems/devel-system-armv7-chroot.morph | 72 + old/systems/devel-system-armv7-highbank.morph | 75 + old/systems/devel-system-armv7-versatile.morph | 73 + old/systems/devel-system-armv7-wandboard.morph | 73 + old/systems/devel-system-armv7b-chroot.morph | 64 + old/systems/devel-system-armv7b-highbank.morph | 71 + ...devel-system-armv7l-altera-socfpga-devkit.morph | 66 + old/systems/devel-system-armv7lhf-chroot.morph | 72 + old/systems/devel-system-armv7lhf-highbank.morph | 78 + old/systems/devel-system-armv7lhf-jetson.morph | 76 + old/systems/devel-system-armv7lhf-wandboard.morph | 76 + old/systems/devel-system-armv8b64.morph | 77 + old/systems/devel-system-armv8l64.morph | 78 + old/systems/devel-system-ppc64-chroot.morph | 70 + old/systems/devel-system-ppc64-generic.morph | 73 + old/systems/devel-system-x86_32-chroot.morph | 72 + old/systems/devel-system-x86_32-generic.morph | 78 + old/systems/devel-system-x86_64-chroot.morph | 74 + old/systems/devel-system-x86_64-generic.morph | 83 + old/systems/devel-system-x86_64-vagrant.morph | 76 + old/systems/initramfs-x86_32.morph | 11 + old/systems/initramfs-x86_64.morph | 11 + old/systems/installer-system-armv8b64.morph | 41 + old/systems/installer-system-x86_64.morph | 40 + .../minimal-system-armv5l-openbmc-aspeed.morph | 20 + old/systems/minimal-system-x86_32-generic.morph | 21 + old/systems/minimal-system-x86_64-chroot.morph | 12 + old/systems/minimal-system-x86_64-generic.morph | 21 + old/trove/clusters/mason-openstack.morph | 39 + old/trove/clusters/mason.morph | 56 + old/trove/clusters/trove-example.morph | 58 + .../clusters/trove.baserock.org-upgrade.morph | 19 + old/trove/strata/fail2ban-common.morph | 14 + old/trove/strata/fail2ban-common/fail2ban.morph | 6 + old/trove/strata/lorry-controller.morph | 16 + .../strata/lorry-controller/lorry-controller.morph | 10 + old/trove/strata/python3-core.morph | 58 + old/trove/strata/python3-core/pyyaml.morph | 6 + old/trove/strata/trove.morph | 101 + old/trove/strata/trove/cgit.morph | 6 + old/trove/strata/trove/clod.morph | 7 + old/trove/strata/trove/gall.morph | 7 + old/trove/strata/trove/gitano.morph | 5 + old/trove/strata/trove/lace.morph | 7 + old/trove/strata/trove/lrexlib-pcre.morph | 9 + old/trove/strata/trove/lua-scrypt.morph | 4 + old/trove/strata/trove/lua.morph | 11 + old/trove/strata/trove/luxio.morph | 7 + old/trove/strata/trove/supple.morph | 7 + old/trove/strata/trove/trove-setup.morph | 4 + old/trove/systems/trove-system-x86_64.morph | 65 + old/unmaintained/clusters/cephclient.morph | 20 + .../example-ceph-cluster-on-openstack.morph | 55 + .../clusters/example-swift-storage-cluster.morph | 62 + .../clusters/openstack-one-node-swift.morph | 142 + old/unmaintained/clusters/openstack-one-node.morph | 104 + .../clusters/openstack-three-node-installer.morph | 238 ++ .../clusters/openstack-two-node-installer.morph | 199 + .../clusters/xfce-system-x86_64-deploy.morph | 23 + old/unmaintained/clusters/zookeeper.morph | 21 + old/unmaintained/strata/apache-httpd-server.morph | 41 + .../strata/apache-httpd-server/apr.morph | 22 + .../strata/apache-httpd-server/httpd-server.morph | 67 + .../strata/apache-httpd-server/mod_wsgi.morph | 18 + old/unmaintained/strata/ceph-service.morph | 73 + old/unmaintained/strata/ceph-service/ceph.morph | 26 + .../strata/ceph-service/keyutils.morph | 7 + old/unmaintained/strata/ceph-service/leveldb.morph | 9 + old/unmaintained/strata/ceph-service/libaio.morph | 7 + old/unmaintained/strata/chef.morph | 193 + .../strata/chef/chef-12.0.0.alpha.0.morph | 20 + old/unmaintained/strata/chef/chef-zero-2.2.morph | 13 + old/unmaintained/strata/chef/coderay-1.1.0.morph | 13 + old/unmaintained/strata/chef/diff-lcs-1.2.5.morph | 13 + old/unmaintained/strata/chef/erubis-master.morph | 19 + old/unmaintained/strata/chef/ffi-1.9.3.morph | 13 + old/unmaintained/strata/chef/ffi-yajl-1.0.2.morph | 13 + old/unmaintained/strata/chef/hashie-2.1.2.morph | 13 + old/unmaintained/strata/chef/highline-1.6.21.morph | 13 + old/unmaintained/strata/chef/hoe-master.morph | 13 + old/unmaintained/strata/chef/ipaddress-0.8.0.morph | 13 + old/unmaintained/strata/chef/json-1.8.1.morph | 13 + old/unmaintained/strata/chef/libpopt.morph | 6 + old/unmaintained/strata/chef/libyajl2-1.0.1.morph | 13 + .../strata/chef/method_source-0.8.2.morph | 13 + .../strata/chef/mime-types-1.25.1.morph | 13 + .../strata/chef/mixlib-authentication-1.3.0.morph | 13 + .../strata/chef/mixlib-cli-1.5.0.morph | 13 + .../strata/chef/mixlib-config-2.1.0.morph | 13 + .../strata/chef/mixlib-log-1.6.0.morph | 13 + .../strata/chef/mixlib-shellout-1.4.0.morph | 13 + old/unmaintained/strata/chef/net-dhcp-1.2.1.morph | 13 + old/unmaintained/strata/chef/net-ssh-2.9.1.morph | 15 + .../strata/chef/net-ssh-gateway-1.2.0.morph | 15 + .../strata/chef/net-ssh-multi-1.2.0.morph | 15 + old/unmaintained/strata/chef/ohai-7.4.0.dev.morph | 13 + old/unmaintained/strata/chef/plist-master.morph | 13 + old/unmaintained/strata/chef/pry-0.10.1.morph | 13 + old/unmaintained/strata/chef/rack-1.5.2.morph | 13 + old/unmaintained/strata/chef/sgdisk.morph | 7 + old/unmaintained/strata/chef/slop-3.6.0.morph | 13 + old/unmaintained/strata/chef/systemu-2.6.4.morph | 13 + old/unmaintained/strata/chef/wmi-lite-1.0.0.morph | 13 + old/unmaintained/strata/chef/yajl.morph | 6 + old/unmaintained/strata/cxmanage.morph | 36 + old/unmaintained/strata/cxmanage/pexpect.morph | 10 + old/unmaintained/strata/databases.morph | 35 + old/unmaintained/strata/databases/memcached.morph | 21 + old/unmaintained/strata/databases/redis.morph | 6 + old/unmaintained/strata/django.morph | 37 + old/unmaintained/strata/enlightenment.morph | 80 + .../strata/enlightenment/bullet3.morph | 8 + old/unmaintained/strata/enlightenment/efl.morph | 9 + .../strata/enlightenment/elementary.morph | 8 + .../strata/enlightenment/enlightenment.morph | 8 + old/unmaintained/strata/enlightenment/eterm.morph | 8 + .../enlightenment/evas_generic_loaders.morph | 8 + old/unmaintained/strata/enlightenment/imlib2.morph | 8 + old/unmaintained/strata/enlightenment/libast.morph | 8 + old/unmaintained/strata/java.morph | 22 + old/unmaintained/strata/java/java-ant.morph | 8 + old/unmaintained/strata/java/java-binary.morph | 16 + old/unmaintained/strata/lua51.morph | 16 + old/unmaintained/strata/lua51/lua51.morph | 11 + old/unmaintained/strata/lua51/luajit2.morph | 7 + old/unmaintained/strata/lvm.morph | 15 + old/unmaintained/strata/lvm/lvm2.morph | 32 + .../strata/multimedia-gstreamer-0.10.morph | 38 + .../gstreamer-plugins-base@0.10.morph | 14 + old/unmaintained/strata/networking-utils.morph | 105 + .../strata/networking-utils/conntrack-tools.morph | 4 + .../strata/networking-utils/ebtables.morph | 7 + .../strata/networking-utils/iproute2.morph | 10 + .../strata/networking-utils/ipset.morph | 6 + .../strata/networking-utils/iputils.morph | 24 + .../strata/networking-utils/libnet.morph | 16 + .../networking-utils/libnetfilter_conntrack.morph | 3 + .../networking-utils/libnetfilter_cthelper.morph | 3 + .../networking-utils/libnetfilter_cttimeout.morph | 3 + .../networking-utils/libnetfilter_queue.morph | 3 + .../strata/networking-utils/libnfnetlink.morph | 3 + .../strata/networking-utils/libpcap.morph | 3 + .../strata/networking-utils/tcpdump.morph | 3 + old/unmaintained/strata/ntpd.morph | 10 + old/unmaintained/strata/ntpd/ntpd.morph | 51 + old/unmaintained/strata/ocaml-language.morph | 11 + old/unmaintained/strata/ocaml-language/ocaml.morph | 8 + .../strata/openstack-clients/appdirs.morph | 3 + .../strata/openstack-clients/argparse.morph | 3 + .../strata/openstack-clients/cliff-tablib.morph | 3 + .../openstack-clients/os-client-config.morph | 3 + .../strata/openstack-clients/pyparsing.morph | 6 + .../openstack-clients/python-ironicclient.morph | 3 + .../openstack-clients/python-openstackclient.morph | 3 + .../strata/openstack-clients/tablib.morph | 3 + old/unmaintained/strata/openstack-services.morph | 805 ++++ .../strata/openstack-services/ceilometer.morph | 23 + .../strata/openstack-services/cinder.morph | 21 + .../openstack-services/erlang-sd_notify.morph | 8 + .../strata/openstack-services/glance.morph | 29 + .../strata/openstack-services/horizon.morph | 63 + .../strata/openstack-services/ipaddr-py.morph | 6 + .../strata/openstack-services/ironic.morph | 18 + .../strata/openstack-services/keystone.morph | 9 + .../strata/openstack-services/librabbitmq.morph | 10 + .../strata/openstack-services/neutron.morph | 27 + .../strata/openstack-services/nova.morph | 24 + .../strata/openstack-services/novnc.morph | 11 + .../strata/openstack-services/open-iscsi.morph | 46 + .../strata/openstack-services/pysendfile.morph | 3 + .../strata/openstack-services/qpid-python.morph | 6 + .../openstack-services/rabbitmq-codegen.morph | 7 + .../openstack-services/rabbitmq-server.morph | 16 + .../strata/openstack-services/rtslib-fb.morph | 27 + .../strata/openstack-services/singledispatch.morph | 3 + .../strata/openstack-services/tempest.morph | 12 + .../strata/openstack-services/tftp-hpa.morph | 5 + .../strata/openstack-services/thrift.morph | 6 + old/unmaintained/strata/qt4-sdk.morph | 14 + old/unmaintained/strata/qt4-sdk/qt-creator.morph | 9 + old/unmaintained/strata/qt4-tools.morph | 28 + old/unmaintained/strata/qt4-tools/qt4-tools.morph | 18 + old/unmaintained/strata/qt4-tools/ruby-1.8.morph | 9 + old/unmaintained/strata/qt4-tools/ruby-1.9.morph | 9 + old/unmaintained/strata/test-tools.morph | 133 + old/unmaintained/strata/test-tools/subunit.morph | 3 + old/unmaintained/strata/virtualization.morph | 117 + .../strata/virtualization/dmidecode.morph | 7 + .../strata/virtualization/dnsmasq.morph | 10 + .../strata/virtualization/libosinfo.morph | 11 + .../strata/virtualization/libvirt.morph | 34 + .../strata/virtualization/openvswitch.morph | 11 + old/unmaintained/strata/virtualization/qemu.morph | 5 + old/unmaintained/strata/virtualization/yajl.morph | 8 + old/unmaintained/strata/webtools.morph | 18 + old/unmaintained/strata/webtools/nginx.morph | 14 + old/unmaintained/strata/xfce.morph | 159 + old/unmaintained/strata/xfce/elementary-xfce.morph | 10 + old/unmaintained/strata/xfce/exo.morph | 8 + old/unmaintained/strata/xfce/garcon.morph | 8 + .../strata/xfce/gtk-xfce-engine-2.morph | 8 + old/unmaintained/strata/xfce/libwnck.morph | 11 + old/unmaintained/strata/xfce/libxfce4ui.morph | 8 + old/unmaintained/strata/xfce/libxfce4util.morph | 8 + old/unmaintained/strata/xfce/thunar.morph | 9 + old/unmaintained/strata/xfce/tumbler.morph | 8 + old/unmaintained/strata/xfce/xfce4-appfinder.morph | 8 + old/unmaintained/strata/xfce/xfce4-panel.morph | 8 + old/unmaintained/strata/xfce/xfce4-session.morph | 9 + old/unmaintained/strata/xfce/xfce4-settings.morph | 8 + old/unmaintained/strata/xfce/xfconf.morph | 8 + old/unmaintained/strata/xfce/xfdesktop.morph | 8 + old/unmaintained/strata/xfce/xfwm4.morph | 11 + old/unmaintained/strata/xstatic.morph | 154 + old/unmaintained/strata/zookeeper-client.morph | 16 + old/unmaintained/strata/zookeeper-server.morph | 11 + old/unmaintained/strata/zookeeper.morph | 14 + .../strata/zookeeper/zookeeper-client.morph | 17 + .../strata/zookeeper/zookeeper-server.morph | 30 + old/unmaintained/strata/zookeeper/zookeeper.morph | 14 + .../systems/ceph-service-x86_64-generic.morph | 70 + .../systems/chef-system-x86_64-container.morph | 32 + .../systems/cxmanage-system-x86_64-generic.morph | 28 + .../systems/java-build-system-x86_64-generic.morph | 90 + .../systems/nodejs-system-x86_64.morph | 24 + old/unmaintained/systems/ocaml-system-x86_64.morph | 20 + .../systems/openstack-system-x86_64.morph | 88 + .../systems/qt4-devel-system-x86_64-generic.morph | 52 + .../systems/qt5-devel-system-x86_64-generic.morph | 54 + old/unmaintained/systems/swift-system-x86_64.morph | 34 + .../systems/web-system-x86_64-generic.morph | 43 + old/unmaintained/systems/xfce-system-x86_64.morph | 79 + .../systems/zookeeper-client-x86_64.morph | 30 + .../systems/zookeeper-server-x86_64.morph | 30 + .../clusters/weston-qt5-system-x86_64-deploy.morph | 23 + .../weston-system-x86_64-generic-deploy.morph | 23 + old/weston/systems/weston-qt5-system-x86_64.morph | 70 + .../systems/weston-system-armv7lhf-jetson.morph | 58 + .../systems/weston-system-x86_64-generic.morph | 57 + 1051 files changed, 58241 insertions(+) create mode 100644 old/DEFAULTS create mode 100644 old/README create mode 100644 old/VERSION create mode 100644 old/clusters/altera-socfpga-devkit-sd-image.morph create mode 100644 old/clusters/build-system-x86_64-chroot-deploy.morph create mode 100644 old/clusters/ci.morph create mode 100644 old/clusters/example-distbuild-cluster.morph create mode 100644 old/clusters/hardware-deployment.morph create mode 100644 old/clusters/image-package-example.morph create mode 100644 old/clusters/initramfs-test.morph create mode 100644 old/clusters/installer-build-system-x86_64.morph create mode 100644 old/clusters/jetson-upgrade.morph create mode 100644 old/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph create mode 100644 old/clusters/minimal-system-deploy.morph create mode 100644 old/clusters/minimal-system-x86_64-chroot-deploy.morph create mode 100644 old/clusters/minimal-system-x86_64-deploy.morph create mode 100644 old/clusters/moonshot-m2-armv8b64.morph create mode 100644 old/clusters/moonshot-pxe-armv8b64.morph create mode 100644 old/clusters/moonshot-pxe-armv8l64.morph create mode 100644 old/clusters/release.morph create mode 100644 old/clusters/sdk-example-cluster.morph create mode 100644 old/clusters/upgrade-devel.morph create mode 100755 old/extensions/add-config-files.configure create mode 100644 old/extensions/busybox-init.configure create mode 100644 old/extensions/ceph.configure create mode 100755 old/extensions/cloud-init.configure create mode 100755 old/extensions/distbuild-trove-nfsboot.check create mode 100755 old/extensions/distbuild-trove-nfsboot.write create mode 100644 old/extensions/distbuild-trove-nfsboot.write.help create mode 100644 old/extensions/distbuild.configure create mode 100755 old/extensions/fstab.configure create mode 100644 old/extensions/genivi.configure create mode 100644 old/extensions/genivi.configure.help create mode 100644 old/extensions/hosts create mode 100755 old/extensions/hosts.configure create mode 100644 old/extensions/image-package-example/README create mode 100644 old/extensions/image-package-example/common.sh.in create mode 100644 old/extensions/image-package-example/disk-install.sh.in create mode 100644 old/extensions/image-package-example/make-disk-image.sh.in create mode 100755 old/extensions/image-package.write create mode 100755 old/extensions/initramfs.write create mode 100644 old/extensions/initramfs.write.help create mode 100755 old/extensions/install-essential-files.configure create mode 100644 old/extensions/install-essential-files.configure.help create mode 100755 old/extensions/install-files.configure create mode 100644 old/extensions/install-files.configure.help create mode 100755 old/extensions/installer.configure create mode 100644 old/extensions/jffs2.write create mode 100644 old/extensions/jffs2.write.help create mode 100755 old/extensions/kvm.check create mode 100755 old/extensions/kvm.write create mode 100644 old/extensions/kvm.write.help create mode 100644 old/extensions/mason.configure create mode 100644 old/extensions/mason/ansible/hosts create mode 100644 old/extensions/mason/ansible/mason-setup.yml create mode 100644 old/extensions/mason/httpd.service create mode 100755 old/extensions/mason/mason-generator.sh create mode 100755 old/extensions/mason/mason-report.sh create mode 100644 old/extensions/mason/mason-setup.service create mode 100644 old/extensions/mason/mason.service create mode 100755 old/extensions/mason/mason.sh create mode 100644 old/extensions/mason/mason.timer create mode 100644 old/extensions/mason/os-init-script create mode 100644 old/extensions/mason/share/mason.conf create mode 100644 old/extensions/mason/share/os.conf create mode 100644 old/extensions/moonshot-kernel.configure create mode 100755 old/extensions/nfsboot-server.configure create mode 100755 old/extensions/nfsboot.check create mode 100755 old/extensions/nfsboot.configure create mode 100755 old/extensions/nfsboot.write create mode 100644 old/extensions/nfsboot.write.help create mode 100644 old/extensions/openstack-ceilometer.configure create mode 100644 old/extensions/openstack-cinder.configure create mode 100644 old/extensions/openstack-glance.configure create mode 100644 old/extensions/openstack-ironic.configure create mode 100644 old/extensions/openstack-keystone.configure create mode 100644 old/extensions/openstack-network.configure create mode 100644 old/extensions/openstack-neutron.configure create mode 100644 old/extensions/openstack-nova.configure create mode 100644 old/extensions/openstack-swift-controller.configure create mode 100644 old/extensions/openstack-time.configure create mode 100755 old/extensions/openstack.check create mode 100755 old/extensions/openstack.write create mode 100644 old/extensions/openstack.write.help create mode 100644 old/extensions/partitioning.py create mode 100755 old/extensions/pxeboot.check create mode 100644 old/extensions/pxeboot.write create mode 100644 old/extensions/pxeboot.write.help create mode 100644 old/extensions/pyfdisk.README create mode 100644 old/extensions/pyfdisk.py create mode 100755 old/extensions/rawdisk.check create mode 100755 old/extensions/rawdisk.write create mode 100644 old/extensions/rawdisk.write.help create mode 100755 old/extensions/recv-hole create mode 100755 old/extensions/sdk.write create mode 100755 old/extensions/set-hostname.configure create mode 100755 old/extensions/simple-network.configure create mode 100755 old/extensions/ssh-rsync.check create mode 100755 old/extensions/ssh-rsync.write create mode 100644 old/extensions/ssh-rsync.write.help create mode 100755 old/extensions/sshkeys.configure create mode 100755 old/extensions/strip-gplv3.configure create mode 100644 old/extensions/swift-build-rings.yml create mode 100755 old/extensions/swift-storage-devices-validate.py create mode 100644 old/extensions/swift-storage.configure create mode 100755 old/extensions/sysroot.check create mode 100755 old/extensions/sysroot.write create mode 100755 old/extensions/tar.check create mode 100755 old/extensions/tar.write create mode 100644 old/extensions/tar.write.help create mode 100755 old/extensions/trove.configure create mode 100644 old/extensions/trove.configure.help create mode 100644 old/extensions/vagrant.configure create mode 100755 old/extensions/vdaboot.configure create mode 100755 old/extensions/virtualbox-ssh.check create mode 100755 old/extensions/virtualbox-ssh.write create mode 100644 old/extensions/virtualbox-ssh.write.help create mode 100644 old/extensions/writeexts.py create mode 100755 old/extensions/xfer-hole create mode 100644 old/genivi/clusters/gdp-jetson-upgrade.morph create mode 100644 old/genivi/clusters/genivi-demo-platform-x86_32-deploy.morph create mode 100644 old/genivi/clusters/genivi-demo-platform-x86_64-deploy.morph create mode 100644 old/genivi/clusters/release-genivi-baseline.morph create mode 100644 old/genivi/strata/genivi-demo-platform-libs.morph create mode 100644 old/genivi/strata/genivi-demo-platform-libs/dbus-c++.morph create mode 100644 old/genivi/strata/genivi-demo-platform.morph create mode 100644 old/genivi/strata/genivi-demo-platform/audiomanager-poc.morph create mode 100644 old/genivi/strata/genivi-demo-platform/audiomanager@gdp.morph create mode 100644 old/genivi/strata/genivi-demo-platform/browser-poc.morph create mode 100644 old/genivi/strata/genivi-demo-platform/genivi-demo-platform-hmi.morph create mode 100644 old/genivi/strata/genivi-demo-platform/mm-common.morph create mode 100644 old/genivi/strata/genivi.morph create mode 100644 old/genivi/strata/genivi/DLT-daemon.morph create mode 100644 old/genivi/strata/genivi/genivi-common-api-dbus-runtime.morph create mode 100644 old/genivi/strata/genivi/genivi-common-api-runtime.morph create mode 100644 old/genivi/strata/genivi/googlemock.morph create mode 100644 old/genivi/strata/genivi/googletest.morph create mode 100644 old/genivi/strata/genivi/itzam-tarball.morph create mode 100644 old/genivi/strata/genivi/json-c.morph create mode 100644 old/genivi/strata/genivi/linuxquota.morph create mode 100644 old/genivi/strata/genivi/node-startup-controller.morph create mode 100644 old/genivi/strata/genivi/persistence-administrator.morph create mode 100644 old/genivi/strata/genivi/persistence-common-object.morph create mode 100644 old/genivi/strata/weston-genivi.morph create mode 100644 old/genivi/strata/weston-genivi/wayland-ivi-extension.morph create mode 100644 old/genivi/strata/weston-genivi/weston.morph create mode 100644 old/genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph create mode 100644 old/genivi/systems/genivi-baseline-system-armv7lhf-versatile.morph create mode 100644 old/genivi/systems/genivi-baseline-system-x86_64-generic.morph create mode 100644 old/genivi/systems/genivi-demo-platform-armv7lhf-jetson.morph create mode 100644 old/genivi/systems/genivi-demo-platform-x86_32-generic.morph create mode 100644 old/genivi/systems/genivi-demo-platform-x86_64-generic.morph create mode 100644 old/gnome/clusters/gnome-system-armv7lhf-jetson-deploy.morph create mode 100644 old/gnome/clusters/gnome-system-x86_64-deploy.morph create mode 100644 old/gnome/strata/WebKitGtk1-common.morph create mode 100644 old/gnome/strata/WebKitGtk1-common/WebKitGtk1.morph create mode 100644 old/gnome/strata/flatpak-common.morph create mode 100644 old/gnome/strata/flatpak-common/elfutils.morph create mode 100644 old/gnome/strata/flatpak-common/flatpak.morph create mode 100644 old/gnome/strata/gnome.morph create mode 100644 old/gnome/strata/gnome/WebKitGtk.morph create mode 100644 old/gnome/strata/gnome/accountsservice.morph create mode 100644 old/gnome/strata/gnome/adwaita-icon-theme.morph create mode 100644 old/gnome/strata/gnome/autoconf-archive.morph create mode 100644 old/gnome/strata/gnome/berkeleydb.morph create mode 100644 old/gnome/strata/gnome/caribou.morph create mode 100644 old/gnome/strata/gnome/cheese.morph create mode 100644 old/gnome/strata/gnome/clutter.morph create mode 100644 old/gnome/strata/gnome/cogl.morph create mode 100644 old/gnome/strata/gnome/colord.morph create mode 100644 old/gnome/strata/gnome/cracklib.morph create mode 100644 old/gnome/strata/gnome/d-feet.morph create mode 100644 old/gnome/strata/gnome/dconf.morph create mode 100644 old/gnome/strata/gnome/desktop-file-utils.morph create mode 100644 old/gnome/strata/gnome/empathy.morph create mode 100644 old/gnome/strata/gnome/epiphany.morph create mode 100644 old/gnome/strata/gnome/evolution-data-server.morph create mode 100644 old/gnome/strata/gnome/evolution.morph create mode 100644 old/gnome/strata/gnome/folks.morph create mode 100644 old/gnome/strata/gnome/gconf.morph create mode 100644 old/gnome/strata/gnome/gdm.morph create mode 100644 old/gnome/strata/gnome/glade.morph create mode 100644 old/gnome/strata/gnome/glib-networking.morph create mode 100644 old/gnome/strata/gnome/gnome-color-manager.morph create mode 100644 old/gnome/strata/gnome/gnome-control-center.morph create mode 100644 old/gnome/strata/gnome/gnome-initial-setup.morph create mode 100644 old/gnome/strata/gnome/gnome-online-accounts.morph create mode 100644 old/gnome/strata/gnome/gnome-session.morph create mode 100644 old/gnome/strata/gnome/gnome-settings-daemon.morph create mode 100644 old/gnome/strata/gnome/gnome-shell.morph create mode 100644 old/gnome/strata/gnome/gnome-terminal.morph create mode 100644 old/gnome/strata/gnome/gnome-themes-standard.morph create mode 100644 old/gnome/strata/gnome/gtksourceview.morph create mode 100644 old/gnome/strata/gnome/hicolor-icon-theme.morph create mode 100644 old/gnome/strata/gnome/ibus-anthy.morph create mode 100644 old/gnome/strata/gnome/ibus-hangul.morph create mode 100644 old/gnome/strata/gnome/ibus-libpinyin.morph create mode 100644 old/gnome/strata/gnome/ibus.morph create mode 100644 old/gnome/strata/gnome/krb5.morph create mode 100644 old/gnome/strata/gnome/libchamplain.morph create mode 100644 old/gnome/strata/gnome/libgdata.morph create mode 100644 old/gnome/strata/gnome/libhangul.morph create mode 100644 old/gnome/strata/gnome/libpeas.morph create mode 100644 old/gnome/strata/gnome/libpurple.morph create mode 100644 old/gnome/strata/gnome/libpwquality.morph create mode 100644 old/gnome/strata/gnome/librest.morph create mode 100644 old/gnome/strata/gnome/libwnck.morph create mode 100644 old/gnome/strata/gnome/mozjs24.morph create mode 100644 old/gnome/strata/gnome/mutter.morph create mode 100644 old/gnome/strata/gnome/nautilus.morph create mode 100644 old/gnome/strata/gnome/raptor.morph create mode 100644 old/gnome/strata/gnome/telepathy-gabble.morph create mode 100644 old/gnome/strata/gnome/telepathy-glib.morph create mode 100644 old/gnome/strata/gnome/telepathy-logger.morph create mode 100644 old/gnome/strata/gnome/telepathy-salut.morph create mode 100644 old/gnome/strata/gnome/upower.morph create mode 100644 old/gnome/strata/gnome/vte.morph create mode 100644 old/gnome/strata/gnome/yelp.morph create mode 100644 old/gnome/strata/gnome/zeitgeist.morph create mode 100644 old/gnome/systems/gnome-system-armv7lhf-jetson.morph create mode 100644 old/gnome/systems/gnome-system-x86_64.morph create mode 100644 old/install-files/chef/manifest create mode 100755 old/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator create mode 100644 old/install-files/distbuild/manifest create mode 100644 old/install-files/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml create mode 100644 old/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/morph-controller.service create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service create mode 100644 old/install-files/distbuild/usr/lib/systemd/system/morph-worker.service create mode 120000 old/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf create mode 100644 old/install-files/distbuild/usr/share/distbuild-setup/morph.conf create mode 100644 old/install-files/essential-files/etc/inputrc create mode 120000 old/install-files/essential-files/etc/os-release create mode 100644 old/install-files/essential-files/etc/profile create mode 100644 old/install-files/essential-files/manifest create mode 100644 old/install-files/essential-files/usr/bin/brpaste create mode 100644 old/install-files/essential-files/usr/lib/os-release create mode 100644 old/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf create mode 120000 old/install-files/genivi-devel-system-armv7/etc/morph.conf create mode 100644 old/install-files/genivi-devel-system-armv7/manifest create mode 100644 old/install-files/genivi-devel-system-armv7/src/morph.conf create mode 100644 old/install-files/gnome/etc/pam.d/gdm create mode 100644 old/install-files/gnome/etc/pam.d/gdm-autologin create mode 100644 old/install-files/gnome/etc/pam.d/gdm-launch-environment create mode 100644 old/install-files/gnome/etc/pam.d/gdm-password create mode 100644 old/install-files/gnome/etc/pam.d/passwd create mode 100644 old/install-files/gnome/etc/pam.d/system-auth create mode 100644 old/install-files/gnome/etc/securetty create mode 100644 old/install-files/gnome/etc/ssh/sshd_config create mode 100644 old/install-files/gnome/manifest create mode 100644 old/install-files/gnome/usr/share/polkit-1/rules.d/geoclue-2.0.rules create mode 100644 old/install-files/moonshot/boot/m400-1003.dtb create mode 100644 old/install-files/moonshot/manifest create mode 100644 old/install-files/openstack/etc/horizon/apache-horizon.conf create mode 100644 old/install-files/openstack/etc/neutron/dnsmasq-neutron.conf create mode 100755 old/install-files/openstack/etc/tempest/set_openstack_to_run_tempest.sh create mode 100644 old/install-files/openstack/etc/tempest/tempest.conf create mode 100644 old/install-files/openstack/manifest create mode 100644 old/install-files/openstack/usr/lib/sysctl.d/neutron.conf create mode 100644 old/install-files/openstack/usr/lib/systemd/system/apache-httpd.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/openvswitch.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/postgres-server.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service create mode 100644 old/install-files/openstack/usr/lib/systemd/system/swift-proxy.service create mode 100644 old/install-files/openstack/usr/share/openstack/ceilometer-config.yml create mode 100644 old/install-files/openstack/usr/share/openstack/ceilometer-db.yml create mode 100644 old/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf create mode 100644 old/install-files/openstack/usr/share/openstack/cinder-config.yml create mode 100644 old/install-files/openstack/usr/share/openstack/cinder-db.yml create mode 100644 old/install-files/openstack/usr/share/openstack/cinder-lvs.yml create mode 100644 old/install-files/openstack/usr/share/openstack/cinder/cinder.conf create mode 100644 old/install-files/openstack/usr/share/openstack/extras/00-disable-device.network create mode 100644 old/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network create mode 100644 old/install-files/openstack/usr/share/openstack/glance.yml create mode 100644 old/install-files/openstack/usr/share/openstack/glance/glance-api.conf create mode 100644 old/install-files/openstack/usr/share/openstack/glance/glance-registry.conf create mode 100644 old/install-files/openstack/usr/share/openstack/horizon.yml create mode 100644 old/install-files/openstack/usr/share/openstack/hosts create mode 100644 old/install-files/openstack/usr/share/openstack/ironic.yml create mode 100644 old/install-files/openstack/usr/share/openstack/ironic/ironic.conf create mode 100644 old/install-files/openstack/usr/share/openstack/iscsi.yml create mode 100644 old/install-files/openstack/usr/share/openstack/keystone.yml create mode 100644 old/install-files/openstack/usr/share/openstack/keystone/keystone.conf create mode 100644 old/install-files/openstack/usr/share/openstack/network.yml create mode 100644 old/install-files/openstack/usr/share/openstack/neutron-config.yml create mode 100644 old/install-files/openstack/usr/share/openstack/neutron-db.yml create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/neutron.conf create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini create mode 100644 old/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini create mode 100644 old/install-files/openstack/usr/share/openstack/nova-config.yml create mode 100644 old/install-files/openstack/usr/share/openstack/nova-db.yml create mode 100644 old/install-files/openstack/usr/share/openstack/nova/nova-compute.conf create mode 100644 old/install-files/openstack/usr/share/openstack/nova/nova.conf create mode 100644 old/install-files/openstack/usr/share/openstack/openvswitch.yml create mode 100644 old/install-files/openstack/usr/share/openstack/postgres.yml create mode 100644 old/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf create mode 100644 old/install-files/openstack/usr/share/openstack/postgres/postgresql.conf create mode 100644 old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf create mode 100644 old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config create mode 100644 old/install-files/openstack/usr/share/openstack/swift-controller.yml create mode 100644 old/install-files/openstack/usr/share/swift/etc/rsyncd.j2 create mode 100644 old/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 create mode 100644 old/install-files/swift/etc/ntp.conf create mode 100644 old/install-files/swift/manifest create mode 100644 old/install-files/swift/usr/lib/systemd/system/rsync.service create mode 100644 old/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service create mode 100644 old/install-files/swift/usr/lib/systemd/system/swift-storage.service create mode 100644 old/install-files/swift/usr/share/swift/etc/rsyncd.j2 create mode 100644 old/install-files/swift/usr/share/swift/etc/swift/account-server.j2 create mode 100644 old/install-files/swift/usr/share/swift/etc/swift/container-server.j2 create mode 100644 old/install-files/swift/usr/share/swift/etc/swift/object-server.j2 create mode 100644 old/install-files/swift/usr/share/swift/etc/swift/swift.j2 create mode 100644 old/install-files/swift/usr/share/swift/hosts create mode 100644 old/install-files/swift/usr/share/swift/swift-storage.yml create mode 100644 old/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys create mode 100644 old/install-files/vagrant-files/manifest create mode 100644 old/ivi/clusters/ivi-system-armv7lhf-jetson-deploy.morph create mode 100644 old/ivi/clusters/ivi-system-x86_32-deploy.morph create mode 100644 old/ivi/clusters/ivi-system-x86_64-deploy.morph create mode 100644 old/ivi/strata/bsp-x86_32-ivi.morph create mode 100644 old/ivi/strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph create mode 100644 old/ivi/strata/bsp-x86_64-ivi.morph create mode 100644 old/ivi/strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph create mode 100644 old/ivi/strata/qt5-ivi.morph create mode 100644 old/ivi/strata/qt5-ivi/qtapplicationmanager.morph create mode 100644 old/ivi/strata/rvi.morph create mode 100644 old/ivi/strata/rvi/rvi_core.morph create mode 100644 old/ivi/systems/ivi-system-armv7lhf-jetson.morph create mode 100644 old/ivi/systems/ivi-system-x86_32.morph create mode 100644 old/ivi/systems/ivi-system-x86_64.morph create mode 100644 old/migrations create mode 100644 old/partitioning/default create mode 100644 old/partitioning/socfpga-devkit create mode 100755 old/scripts/check-unpetrify-refs.py create mode 100755 old/scripts/cycle.sh create mode 100644 old/scripts/licensecheck.pl create mode 100755 old/scripts/licensecheck.py create mode 100755 old/scripts/organize-morphologies.py create mode 100755 old/scripts/release-build create mode 100644 old/scripts/release-build.test.conf create mode 100755 old/scripts/release-test create mode 100755 old/scripts/release-test-os create mode 100755 old/scripts/release-upload create mode 100644 old/scripts/release-upload.test.conf create mode 100644 old/scripts/scriptslib.py create mode 100755 old/scripts/yaml-jsonschema create mode 100644 old/strata/CPAN-Mini-Inject.morph create mode 100644 old/strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph create mode 100644 old/strata/NetworkManager-common.morph create mode 100644 old/strata/NetworkManager-common/ModemManager.morph create mode 100644 old/strata/NetworkManager-common/NetworkManager.morph create mode 100644 old/strata/ansible.morph create mode 100644 old/strata/ansible/ansible.morph create mode 100644 old/strata/ansible/openstack-ansible-modules.morph create mode 100644 old/strata/armv7lhf-cross-toolchain.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-binutils.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-gcc-nolibc.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-gcc.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-glibc.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-libstdc++.morph create mode 100644 old/strata/armv7lhf-cross-toolchain/armv7lhf-cross-linux-api-headers.morph create mode 100644 old/strata/baserock-import.morph create mode 100644 old/strata/bluetooth.morph create mode 100644 old/strata/bluetooth/bluez-tools.morph create mode 100644 old/strata/bluetooth/bluez.morph create mode 100644 old/strata/bluetooth/libical.morph create mode 100644 old/strata/bsp-armv5l-openbmc-aspeed.morph create mode 100644 old/strata/bsp-armv5l-openbmc-aspeed/linux-armv5l-openbmc-aspeed.morph create mode 100644 old/strata/bsp-armv5l-openbmc-aspeed/u-boot@aspeed.morph create mode 100644 old/strata/bsp-armv7-highbank.morph create mode 100644 old/strata/bsp-armv7-highbank/linux-armv7-highbank.morph create mode 100644 old/strata/bsp-armv7-versatile.morph create mode 100644 old/strata/bsp-armv7-versatile/linux-armv7-versatile.morph create mode 100644 old/strata/bsp-armv7b-highbank.morph create mode 100644 old/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph create mode 100644 old/strata/bsp-armv7b-vexpress-tc2.morph create mode 100644 old/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/bsp-support@socfpga-devkit.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/device-tree-compiler.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/linux-armv7l-altera-socfpga-devkit.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/preloader@socfpga-devkit.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot-tools@socfpga-devkit.morph create mode 100644 old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot@socfpga-devkit.morph create mode 100644 old/strata/bsp-armv8b64-generic.morph create mode 100644 old/strata/bsp-armv8b64-generic/linux-armv8b64-generic.morph create mode 100644 old/strata/bsp-armv8l64-generic.morph create mode 100644 old/strata/bsp-armv8l64-generic/linux-armv8l64-generic.morph create mode 100644 old/strata/bsp-jetson.morph create mode 100644 old/strata/bsp-jetson/device-tree-compiler@jetson.morph create mode 100644 old/strata/bsp-jetson/linux-firmware@jetson.morph create mode 100644 old/strata/bsp-jetson/linux-jetson-tk1.morph create mode 100644 old/strata/bsp-jetson/u-boot@jetson.morph create mode 100644 old/strata/bsp-ppc64-generic.morph create mode 100644 old/strata/bsp-ppc64-generic/linux-ppc64.morph create mode 100644 old/strata/bsp-wandboard.morph create mode 100644 old/strata/bsp-wandboard/linux-armv7-wandboard.morph create mode 100644 old/strata/bsp-wandboard/u-boot@wandboard.morph create mode 100644 old/strata/bsp-x86_32-generic.morph create mode 100644 old/strata/bsp-x86_32-generic/linux-x86-32-generic.morph create mode 100644 old/strata/bsp-x86_32-generic/nasm.morph create mode 100644 old/strata/bsp-x86_32-generic/syslinux.morph create mode 100644 old/strata/bsp-x86_64-generic.morph create mode 100644 old/strata/bsp-x86_64-generic/linux-x86-64-generic.morph create mode 100644 old/strata/bsp-x86_64-generic/nasm.morph create mode 100644 old/strata/bsp-x86_64-generic/syslinux.morph create mode 100644 old/strata/bsp-x86_both-tools.morph create mode 100644 old/strata/bsp-x86_both-tools/nasm.morph create mode 100644 old/strata/bsp-x86_both-tools/syslinux.morph create mode 100644 old/strata/build-essential.morph create mode 100644 old/strata/build-essential/binutils.morph create mode 100644 old/strata/build-essential/busybox.morph create mode 100644 old/strata/build-essential/ccache.morph create mode 100644 old/strata/build-essential/fhs-dirs.morph create mode 100644 old/strata/build-essential/gawk.morph create mode 100644 old/strata/build-essential/gcc.morph create mode 100644 old/strata/build-essential/glibc.morph create mode 100644 old/strata/build-essential/linux-api-headers.morph create mode 100644 old/strata/build-essential/m4-tarball.morph create mode 100644 old/strata/build-essential/make.morph create mode 100644 old/strata/build-essential/stage1-binutils.morph create mode 100644 old/strata/build-essential/stage1-gcc.morph create mode 100644 old/strata/build-essential/stage2-binutils.morph create mode 100644 old/strata/build-essential/stage2-busybox.morph create mode 100644 old/strata/build-essential/stage2-fake-bash.morph create mode 100644 old/strata/build-essential/stage2-fhs-dirs.morph create mode 100644 old/strata/build-essential/stage2-gawk.morph create mode 100644 old/strata/build-essential/stage2-gcc-fixed-headers.morph create mode 100644 old/strata/build-essential/stage2-gcc.morph create mode 100644 old/strata/build-essential/stage2-glibc.morph create mode 100644 old/strata/build-essential/stage2-libstdc++.morph create mode 100644 old/strata/build-essential/stage2-linux-api-headers.morph create mode 100644 old/strata/build-essential/stage2-make.morph create mode 100644 old/strata/build-essential/stage2-reset-specs.morph create mode 100644 old/strata/build-essential/zlib.morph create mode 100644 old/strata/cloudinit-support.morph create mode 100644 old/strata/cloudinit-support/cloud-init.morph create mode 100644 old/strata/connectivity.morph create mode 100644 old/strata/connectivity/wpa_supplicant.morph create mode 100644 old/strata/connman-common.morph create mode 100644 old/strata/connman-common/connman.morph create mode 100644 old/strata/connman-common/ofono.morph create mode 100644 old/strata/corba.morph create mode 100644 old/strata/corba/ACE_TAO.morph create mode 100644 old/strata/corba/MPC.morph create mode 100644 old/strata/core.morph create mode 100644 old/strata/core/acl.morph create mode 100644 old/strata/core/attr.morph create mode 100644 old/strata/core/autoconf-tarball.morph create mode 100644 old/strata/core/autoconf.morph create mode 100644 old/strata/core/automake.morph create mode 100644 old/strata/core/bash.morph create mode 100644 old/strata/core/bison.morph create mode 100644 old/strata/core/bzip2.morph create mode 100644 old/strata/core/ca-certificates.morph create mode 100644 old/strata/core/cmake.morph create mode 100644 old/strata/core/curl.morph create mode 100644 old/strata/core/e2fsprogs.morph create mode 100644 old/strata/core/flex.morph create mode 100644 old/strata/core/gdbm.morph create mode 100644 old/strata/core/gettext-tarball.morph create mode 100644 old/strata/core/git-minimal.morph create mode 100644 old/strata/core/gperf.morph create mode 100644 old/strata/core/libcap2.morph create mode 100644 old/strata/core/libexpat.morph create mode 100644 old/strata/core/libffi.morph create mode 100644 old/strata/core/libtool-tarball.morph create mode 100644 old/strata/core/linux-pam.morph create mode 100644 old/strata/core/mini-utils.morph create mode 100644 old/strata/core/ncurses.morph create mode 100644 old/strata/core/openssl-new.morph create mode 100644 old/strata/core/patch.morph create mode 100644 old/strata/core/perl.morph create mode 100644 old/strata/core/pkg-config.morph create mode 100644 old/strata/core/python3.morph create mode 100644 old/strata/core/readline.morph create mode 100644 old/strata/core/shadow.morph create mode 100644 old/strata/core/texinfo-tarball.morph create mode 100644 old/strata/core/util-linux.morph create mode 100644 old/strata/coreutils-common.morph create mode 100644 old/strata/coreutils-common/coreutils.morph create mode 100644 old/strata/coreutils-common/diff.morph create mode 100644 old/strata/coreutils-common/sed.morph create mode 100644 old/strata/coreutils-common/tar.morph create mode 100644 old/strata/cpp-common-libs.morph create mode 100644 old/strata/cpp-common-libs/boost.morph create mode 100644 old/strata/cross-bootstrap.morph create mode 100644 old/strata/cross-bootstrap/groff.morph create mode 100644 old/strata/cross-bootstrap/openssh.morph create mode 100644 old/strata/cross-bootstrap/rsync.morph create mode 100644 old/strata/cross-tools.morph create mode 100644 old/strata/cups.morph create mode 100644 old/strata/cups/cups.morph create mode 100644 old/strata/data-indexing-management.morph create mode 100644 old/strata/data-indexing-management/gmime.morph create mode 100644 old/strata/data-indexing-management/libmediaart.morph create mode 100644 old/strata/device-management.morph create mode 100644 old/strata/devtools.morph create mode 100644 old/strata/devtools/git.morph create mode 100644 old/strata/devtools/nano.morph create mode 100644 old/strata/devtools/screen.morph create mode 100644 old/strata/devtools/vim.morph create mode 100644 old/strata/devtools/wget.morph create mode 100644 old/strata/dlna-services.morph create mode 100644 old/strata/dlna-services/gssdp.morph create mode 100644 old/strata/docutils.morph create mode 100644 old/strata/docutils/docbook-xml.morph create mode 100644 old/strata/docutils/docbook-xsl.morph create mode 100644 old/strata/docutils/xml-catalog.morph create mode 100644 old/strata/elixir.morph create mode 100644 old/strata/elixir/elixir.morph create mode 100644 old/strata/erlang.morph create mode 100644 old/strata/erlang/erlang.morph create mode 100644 old/strata/erlang/rebar.morph create mode 100644 old/strata/foundation.morph create mode 100644 old/strata/foundation/btrfs-progs.morph create mode 100644 old/strata/foundation/dbus-pre.morph create mode 100644 old/strata/foundation/dbus.morph create mode 100644 old/strata/foundation/fuse.morph create mode 100644 old/strata/foundation/groff.morph create mode 100644 old/strata/foundation/kmod.morph create mode 100644 old/strata/foundation/libarchive.morph create mode 100644 old/strata/foundation/libgcrypt.morph create mode 100644 old/strata/foundation/libgpg-error.morph create mode 100644 old/strata/foundation/lzo.morph create mode 100644 old/strata/foundation/openssh.morph create mode 100644 old/strata/foundation/pciutils.morph create mode 100644 old/strata/foundation/rsync.morph create mode 100644 old/strata/foundation/systemd.morph create mode 100644 old/strata/foundation/tbdiff.morph create mode 100644 old/strata/foundation/time-zone-database.morph create mode 100644 old/strata/geolocation.morph create mode 100644 old/strata/geolocation/geoclue.morph create mode 100644 old/strata/glib-common.morph create mode 100644 old/strata/glib-common/glib.morph create mode 100644 old/strata/graphics-common.morph create mode 100644 old/strata/graphics-common/cairo.morph create mode 100644 old/strata/graphics-common/chinese-fonts-truetype-bkai00mp.morph create mode 100644 old/strata/graphics-common/chinese-fonts-truetype-bsmi00lp.morph create mode 100644 old/strata/graphics-common/chinese-fonts-truetype-gbsn00lp.morph create mode 100644 old/strata/graphics-common/chinese-fonts-truetype-gkai00mp.morph create mode 100644 old/strata/graphics-common/fontconfig.morph create mode 100644 old/strata/graphics-common/freefont-otf.morph create mode 100644 old/strata/graphics-common/pixman.morph create mode 100644 old/strata/graphics-common/ttf-alee.morph create mode 100644 old/strata/gtk-deps.morph create mode 100644 old/strata/gtk-deps/at-spi2-atk.morph create mode 100644 old/strata/gtk-deps/at-spi2-core.morph create mode 100644 old/strata/gtk-deps/gdk-pixbuf.morph create mode 100644 old/strata/gtk-deps/shared-mime-info.morph create mode 100644 old/strata/gtk2.morph create mode 100644 old/strata/gtk2/gtk+.morph create mode 100644 old/strata/gtk3.morph create mode 100644 old/strata/gtk3/gtk3.morph create mode 100644 old/strata/icu-common.morph create mode 100644 old/strata/icu-common/icu.morph create mode 100644 old/strata/initramfs-utils.morph create mode 100644 old/strata/input-common.morph create mode 100644 old/strata/input-common/libxkbcommon-no-x11.morph create mode 100644 old/strata/input-common/xkeyboard-config.morph create mode 100644 old/strata/installer-utils.morph create mode 100644 old/strata/installer-utils/installer-scripts.morph create mode 100644 old/strata/ivi-common.morph create mode 100644 old/strata/ivi-common/automotive-message-broker.morph create mode 100644 old/strata/libdrm-common.morph create mode 100644 old/strata/libdrm-common/drm.morph create mode 100644 old/strata/libsoup-common.morph create mode 100644 old/strata/libsoup-common/libsoup.morph create mode 100644 old/strata/lighttpd-server.morph create mode 100644 old/strata/lighttpd-server/lighttpd.morph create mode 100644 old/strata/llvm-common.morph create mode 100644 old/strata/llvm-common/llvm.morph create mode 100644 old/strata/lorry.morph create mode 100644 old/strata/lorry/cvs-tarball.morph create mode 100644 old/strata/lorry/cvsps.morph create mode 100644 old/strata/lorry/hg-fast-export.morph create mode 100644 old/strata/lorry/libapr-util.morph create mode 100644 old/strata/lorry/libapr.morph create mode 100644 old/strata/lorry/libserf.morph create mode 100644 old/strata/lorry/lorry.morph create mode 100644 old/strata/lorry/mercurial-tarball.morph create mode 100644 old/strata/lorry/neon.morph create mode 100644 old/strata/lorry/perl-dbi-tarball.morph create mode 100644 old/strata/lorry/subversion-tarball.morph create mode 100644 old/strata/lorry/swig.morph create mode 100644 old/strata/lua53.morph create mode 100644 old/strata/lua53/lua53.morph create mode 100644 old/strata/mesa-common.morph create mode 100644 old/strata/mesa-common/mesa.morph create mode 100644 old/strata/mesa-demos-common.morph create mode 100644 old/strata/mesa-demos-common/glew.morph create mode 100644 old/strata/morph-utils.morph create mode 100644 old/strata/morph-utils/cmdtest.morph create mode 100644 old/strata/morph-utils/pyfilesystem.morph create mode 100644 old/strata/morph-utils/python-ttystatus.morph create mode 100644 old/strata/mtd-utilities.morph create mode 100644 old/strata/mtd-utilities/mtd-utils.morph create mode 100644 old/strata/multimedia-common.morph create mode 100644 old/strata/multimedia-common/libmad.morph create mode 100644 old/strata/multimedia-common/libmpeg2.morph create mode 100644 old/strata/multimedia-common/libvpx.morph create mode 100644 old/strata/multimedia-common/orc.morph create mode 100644 old/strata/multimedia-common/yasm.morph create mode 100644 old/strata/multimedia-gstreamer-openmax-generic.morph create mode 100644 old/strata/multimedia-gstreamer-openmax-generic/gst-omx.morph create mode 100644 old/strata/multimedia-gstreamer.morph create mode 100644 old/strata/multimedia-gstreamer/gst-libav.morph create mode 100644 old/strata/multimedia-hardware-codecs-x86.morph create mode 100644 old/strata/navigation.morph create mode 100644 old/strata/navigation/navit.morph create mode 100644 old/strata/network-security.morph create mode 100644 old/strata/network-security/gnutls.morph create mode 100644 old/strata/network-security/libtasn1.morph create mode 100644 old/strata/network-security/nettle.morph create mode 100644 old/strata/network-security/nspr.morph create mode 100644 old/strata/network-security/nss.morph create mode 100644 old/strata/network-security/p11-kit.morph create mode 100644 old/strata/nfs.morph create mode 100644 old/strata/nfs/nfs-utils.morph create mode 100644 old/strata/nfs/rpcbind.morph create mode 100644 old/strata/nfs/tcp-wrappers.morph create mode 100644 old/strata/nfs/ti-rpc.morph create mode 100644 old/strata/nodejs.morph create mode 100644 old/strata/nodejs/node.morph create mode 100644 old/strata/openbmc.morph create mode 100644 old/strata/openbmc/i2c-tools.morph create mode 100644 old/strata/openbmc/isc-dhcp.morph create mode 100644 old/strata/openbmc/lm_sensors.morph create mode 100644 old/strata/openstack-clients.morph create mode 100644 old/strata/openstack-common.morph create mode 100644 old/strata/openstack-common/babel.morph create mode 100644 old/strata/ostree-core.morph create mode 100644 old/strata/ostree-core/gpgme.morph create mode 100644 old/strata/ostree-core/libassuan.morph create mode 100644 old/strata/ostree-core/ostree.morph create mode 100644 old/strata/pcre-utils.morph create mode 100644 old/strata/pcre-utils/pcre.morph create mode 100644 old/strata/perl-common.morph create mode 100644 old/strata/perl-common/List-MoreUtils.morph create mode 100644 old/strata/privileges-management.morph create mode 100644 old/strata/privileges-management/mozjs17.morph create mode 100644 old/strata/privileges-management/polkit.morph create mode 100644 old/strata/python-cliapp.morph create mode 100644 old/strata/python-cliapp/python-coveragepy.morph create mode 100644 old/strata/python-common.morph create mode 100644 old/strata/python-common/pycrypto.morph create mode 100644 old/strata/python-pygobject.morph create mode 100644 old/strata/python-pygobject/pygobject.morph create mode 100644 old/strata/python-tools.morph create mode 100644 old/strata/python-wsgi.morph create mode 100644 old/strata/python2-core.morph create mode 100644 old/strata/python2-core/python2.morph create mode 100644 old/strata/python2-core/pyyaml-python2.morph create mode 100644 old/strata/python3-gobject.morph create mode 100644 old/strata/python3-gobject/python3-gobject.morph create mode 100644 old/strata/qt5-sdk.morph create mode 100644 old/strata/qt5-sdk/qt-creator.morph create mode 100644 old/strata/qt5-sdk/snowshoe.morph create mode 100644 old/strata/qt5-tools-qtmultimedia.morph create mode 100644 old/strata/qt5-tools-qtwayland.morph create mode 100644 old/strata/qt5-tools-qtwayland/qtwayland.morph create mode 100644 old/strata/qt5-tools-qtwebengine.morph create mode 100644 old/strata/qt5-tools-qtwebkit.morph create mode 100644 old/strata/qt5-tools.morph create mode 100644 old/strata/qt5-tools/qtbase.morph create mode 100644 old/strata/ruby.morph create mode 100644 old/strata/ruby/bundler.morph create mode 100644 old/strata/ruby/hoe.morph create mode 100644 old/strata/ruby/rake-compiler.morph create mode 100644 old/strata/ruby/ruby-1.8.morph create mode 100644 old/strata/ruby/ruby.morph create mode 100644 old/strata/samba.morph create mode 100644 old/strata/samba/samba.morph create mode 100644 old/strata/sandboxing.morph create mode 100644 old/strata/secret-service.morph create mode 100644 old/strata/secret-service/gnome-keyring.morph create mode 100644 old/strata/secret-service/libsecret.morph create mode 100644 old/strata/sound-server-pulseaudio.morph create mode 100644 old/strata/sound-server-pulseaudio/alsa-utils.morph create mode 100644 old/strata/sound-server-pulseaudio/avahi.morph create mode 100644 old/strata/sound-server-pulseaudio/libsndfile.morph create mode 100644 old/strata/sound-server-pulseaudio/pulseaudio.morph create mode 100644 old/strata/sound-server-pulseaudio/webrtc-audio-processing.morph create mode 100644 old/strata/spell-checking.morph create mode 100644 old/strata/storage-management.morph create mode 100644 old/strata/storage-management/gvfs.morph create mode 100644 old/strata/storage-management/libatasmart.morph create mode 100644 old/strata/storage-management/libmtp.morph create mode 100644 old/strata/storage-management/udisks.morph create mode 100644 old/strata/swift.morph create mode 100644 old/strata/swift/gf-complete.morph create mode 100644 old/strata/swift/liberasurecode.morph create mode 100644 old/strata/swift/xattr.morph create mode 100644 old/strata/tools.morph create mode 100644 old/strata/tools/device-tree-compiler.morph create mode 100644 old/strata/tools/distcc.morph create mode 100644 old/strata/tools/gdb.morph create mode 100644 old/strata/tools/git-fat.morph create mode 100644 old/strata/tools/ipmitool.morph create mode 100644 old/strata/tools/kexec-tools.morph create mode 100644 old/strata/tools/lsof.morph create mode 100644 old/strata/tools/parted.morph create mode 100644 old/strata/tools/procps-ng.morph create mode 100644 old/strata/tools/u-boot.morph create mode 100644 old/strata/tools/zip.morph create mode 100644 old/strata/unionfs-fuse-group.morph create mode 100644 old/strata/unionfs-fuse-group/unionfs-fuse.morph create mode 100644 old/strata/vala-common.morph create mode 100644 old/strata/vala-common/vala-bootstrap.morph create mode 100644 old/strata/virtualbox-guest-x86_64.morph create mode 100644 old/strata/virtualbox-guest-x86_64/vboxguest.morph create mode 100644 old/strata/virtualbox-guest-x86_64/yasm.morph create mode 100644 old/strata/wayland-generic.morph create mode 100644 old/strata/wayland-generic/wayland.morph create mode 100644 old/strata/weston-common.morph create mode 100644 old/strata/weston-common/weston.morph create mode 100644 old/strata/x-common.morph create mode 100644 old/strata/x-drivers.morph create mode 100644 old/strata/x-generic.morph create mode 100644 old/strata/x-generic/xserver.morph create mode 100644 old/strata/xorg-util-macros-common.morph create mode 100644 old/systems/armv7lhf-cross-toolchain-system-x86_32.morph create mode 100644 old/systems/armv7lhf-cross-toolchain-system-x86_64.morph create mode 100644 old/systems/base-system-armv7-highbank.morph create mode 100644 old/systems/base-system-armv7-versatile.morph create mode 100644 old/systems/base-system-armv7b-highbank.morph create mode 100644 old/systems/base-system-armv7b-vexpress-tc2.morph create mode 100644 old/systems/base-system-armv7l-altera-socfpga-devkit.morph create mode 100644 old/systems/base-system-armv7lhf-highbank.morph create mode 100644 old/systems/base-system-armv8b64.morph create mode 100644 old/systems/base-system-armv8l64.morph create mode 100644 old/systems/base-system-ppc64-generic.morph create mode 100644 old/systems/base-system-x86_32-generic.morph create mode 100644 old/systems/base-system-x86_64-generic.morph create mode 100644 old/systems/build-system-armv5l-openbmc-aspeed.morph create mode 100644 old/systems/build-system-armv7l-altera-socfpga-devkit.morph create mode 100644 old/systems/build-system-armv7lhf-highbank.morph create mode 100644 old/systems/build-system-armv7lhf-jetson.morph create mode 100644 old/systems/build-system-armv7lhf-rootfs.morph create mode 100644 old/systems/build-system-armv8b64.morph create mode 100644 old/systems/build-system-armv8l64.morph create mode 100644 old/systems/build-system-ppc64.morph create mode 100644 old/systems/build-system-x86_32-chroot.morph create mode 100644 old/systems/build-system-x86_32.morph create mode 100644 old/systems/build-system-x86_64-chroot.morph create mode 100644 old/systems/build-system-x86_64.morph create mode 100644 old/systems/cross-bootstrap-system-armv5l-generic.morph create mode 100644 old/systems/cross-bootstrap-system-armv7lhf-generic.morph create mode 100644 old/systems/cross-bootstrap-system-armv8b64-generic.morph create mode 100644 old/systems/cross-bootstrap-system-armv8l64-generic.morph create mode 100644 old/systems/cross-bootstrap-system-ppc64-generic.morph create mode 100644 old/systems/cross-bootstrap-system-x86_64-generic.morph create mode 100644 old/systems/devel-system-armv7-chroot.morph create mode 100644 old/systems/devel-system-armv7-highbank.morph create mode 100644 old/systems/devel-system-armv7-versatile.morph create mode 100644 old/systems/devel-system-armv7-wandboard.morph create mode 100644 old/systems/devel-system-armv7b-chroot.morph create mode 100644 old/systems/devel-system-armv7b-highbank.morph create mode 100644 old/systems/devel-system-armv7l-altera-socfpga-devkit.morph create mode 100644 old/systems/devel-system-armv7lhf-chroot.morph create mode 100644 old/systems/devel-system-armv7lhf-highbank.morph create mode 100644 old/systems/devel-system-armv7lhf-jetson.morph create mode 100644 old/systems/devel-system-armv7lhf-wandboard.morph create mode 100644 old/systems/devel-system-armv8b64.morph create mode 100644 old/systems/devel-system-armv8l64.morph create mode 100644 old/systems/devel-system-ppc64-chroot.morph create mode 100644 old/systems/devel-system-ppc64-generic.morph create mode 100644 old/systems/devel-system-x86_32-chroot.morph create mode 100644 old/systems/devel-system-x86_32-generic.morph create mode 100644 old/systems/devel-system-x86_64-chroot.morph create mode 100644 old/systems/devel-system-x86_64-generic.morph create mode 100644 old/systems/devel-system-x86_64-vagrant.morph create mode 100644 old/systems/initramfs-x86_32.morph create mode 100644 old/systems/initramfs-x86_64.morph create mode 100644 old/systems/installer-system-armv8b64.morph create mode 100644 old/systems/installer-system-x86_64.morph create mode 100644 old/systems/minimal-system-armv5l-openbmc-aspeed.morph create mode 100644 old/systems/minimal-system-x86_32-generic.morph create mode 100644 old/systems/minimal-system-x86_64-chroot.morph create mode 100644 old/systems/minimal-system-x86_64-generic.morph create mode 100644 old/trove/clusters/mason-openstack.morph create mode 100644 old/trove/clusters/mason.morph create mode 100644 old/trove/clusters/trove-example.morph create mode 100644 old/trove/clusters/trove.baserock.org-upgrade.morph create mode 100644 old/trove/strata/fail2ban-common.morph create mode 100644 old/trove/strata/fail2ban-common/fail2ban.morph create mode 100644 old/trove/strata/lorry-controller.morph create mode 100644 old/trove/strata/lorry-controller/lorry-controller.morph create mode 100644 old/trove/strata/python3-core.morph create mode 100644 old/trove/strata/python3-core/pyyaml.morph create mode 100644 old/trove/strata/trove.morph create mode 100644 old/trove/strata/trove/cgit.morph create mode 100644 old/trove/strata/trove/clod.morph create mode 100644 old/trove/strata/trove/gall.morph create mode 100644 old/trove/strata/trove/gitano.morph create mode 100644 old/trove/strata/trove/lace.morph create mode 100644 old/trove/strata/trove/lrexlib-pcre.morph create mode 100644 old/trove/strata/trove/lua-scrypt.morph create mode 100644 old/trove/strata/trove/lua.morph create mode 100644 old/trove/strata/trove/luxio.morph create mode 100644 old/trove/strata/trove/supple.morph create mode 100644 old/trove/strata/trove/trove-setup.morph create mode 100644 old/trove/systems/trove-system-x86_64.morph create mode 100644 old/unmaintained/clusters/cephclient.morph create mode 100644 old/unmaintained/clusters/example-ceph-cluster-on-openstack.morph create mode 100644 old/unmaintained/clusters/example-swift-storage-cluster.morph create mode 100644 old/unmaintained/clusters/openstack-one-node-swift.morph create mode 100644 old/unmaintained/clusters/openstack-one-node.morph create mode 100644 old/unmaintained/clusters/openstack-three-node-installer.morph create mode 100644 old/unmaintained/clusters/openstack-two-node-installer.morph create mode 100644 old/unmaintained/clusters/xfce-system-x86_64-deploy.morph create mode 100644 old/unmaintained/clusters/zookeeper.morph create mode 100644 old/unmaintained/strata/apache-httpd-server.morph create mode 100644 old/unmaintained/strata/apache-httpd-server/apr.morph create mode 100644 old/unmaintained/strata/apache-httpd-server/httpd-server.morph create mode 100644 old/unmaintained/strata/apache-httpd-server/mod_wsgi.morph create mode 100644 old/unmaintained/strata/ceph-service.morph create mode 100644 old/unmaintained/strata/ceph-service/ceph.morph create mode 100644 old/unmaintained/strata/ceph-service/keyutils.morph create mode 100644 old/unmaintained/strata/ceph-service/leveldb.morph create mode 100644 old/unmaintained/strata/ceph-service/libaio.morph create mode 100644 old/unmaintained/strata/chef.morph create mode 100644 old/unmaintained/strata/chef/chef-12.0.0.alpha.0.morph create mode 100644 old/unmaintained/strata/chef/chef-zero-2.2.morph create mode 100644 old/unmaintained/strata/chef/coderay-1.1.0.morph create mode 100644 old/unmaintained/strata/chef/diff-lcs-1.2.5.morph create mode 100644 old/unmaintained/strata/chef/erubis-master.morph create mode 100644 old/unmaintained/strata/chef/ffi-1.9.3.morph create mode 100644 old/unmaintained/strata/chef/ffi-yajl-1.0.2.morph create mode 100644 old/unmaintained/strata/chef/hashie-2.1.2.morph create mode 100644 old/unmaintained/strata/chef/highline-1.6.21.morph create mode 100644 old/unmaintained/strata/chef/hoe-master.morph create mode 100644 old/unmaintained/strata/chef/ipaddress-0.8.0.morph create mode 100644 old/unmaintained/strata/chef/json-1.8.1.morph create mode 100644 old/unmaintained/strata/chef/libpopt.morph create mode 100644 old/unmaintained/strata/chef/libyajl2-1.0.1.morph create mode 100644 old/unmaintained/strata/chef/method_source-0.8.2.morph create mode 100644 old/unmaintained/strata/chef/mime-types-1.25.1.morph create mode 100644 old/unmaintained/strata/chef/mixlib-authentication-1.3.0.morph create mode 100644 old/unmaintained/strata/chef/mixlib-cli-1.5.0.morph create mode 100644 old/unmaintained/strata/chef/mixlib-config-2.1.0.morph create mode 100644 old/unmaintained/strata/chef/mixlib-log-1.6.0.morph create mode 100644 old/unmaintained/strata/chef/mixlib-shellout-1.4.0.morph create mode 100644 old/unmaintained/strata/chef/net-dhcp-1.2.1.morph create mode 100644 old/unmaintained/strata/chef/net-ssh-2.9.1.morph create mode 100644 old/unmaintained/strata/chef/net-ssh-gateway-1.2.0.morph create mode 100644 old/unmaintained/strata/chef/net-ssh-multi-1.2.0.morph create mode 100644 old/unmaintained/strata/chef/ohai-7.4.0.dev.morph create mode 100644 old/unmaintained/strata/chef/plist-master.morph create mode 100644 old/unmaintained/strata/chef/pry-0.10.1.morph create mode 100644 old/unmaintained/strata/chef/rack-1.5.2.morph create mode 100644 old/unmaintained/strata/chef/sgdisk.morph create mode 100644 old/unmaintained/strata/chef/slop-3.6.0.morph create mode 100644 old/unmaintained/strata/chef/systemu-2.6.4.morph create mode 100644 old/unmaintained/strata/chef/wmi-lite-1.0.0.morph create mode 100644 old/unmaintained/strata/chef/yajl.morph create mode 100644 old/unmaintained/strata/cxmanage.morph create mode 100644 old/unmaintained/strata/cxmanage/pexpect.morph create mode 100644 old/unmaintained/strata/databases.morph create mode 100644 old/unmaintained/strata/databases/memcached.morph create mode 100644 old/unmaintained/strata/databases/redis.morph create mode 100644 old/unmaintained/strata/django.morph create mode 100644 old/unmaintained/strata/enlightenment.morph create mode 100644 old/unmaintained/strata/enlightenment/bullet3.morph create mode 100644 old/unmaintained/strata/enlightenment/efl.morph create mode 100644 old/unmaintained/strata/enlightenment/elementary.morph create mode 100644 old/unmaintained/strata/enlightenment/enlightenment.morph create mode 100644 old/unmaintained/strata/enlightenment/eterm.morph create mode 100644 old/unmaintained/strata/enlightenment/evas_generic_loaders.morph create mode 100644 old/unmaintained/strata/enlightenment/imlib2.morph create mode 100644 old/unmaintained/strata/enlightenment/libast.morph create mode 100644 old/unmaintained/strata/java.morph create mode 100644 old/unmaintained/strata/java/java-ant.morph create mode 100644 old/unmaintained/strata/java/java-binary.morph create mode 100644 old/unmaintained/strata/lua51.morph create mode 100644 old/unmaintained/strata/lua51/lua51.morph create mode 100644 old/unmaintained/strata/lua51/luajit2.morph create mode 100644 old/unmaintained/strata/lvm.morph create mode 100644 old/unmaintained/strata/lvm/lvm2.morph create mode 100644 old/unmaintained/strata/multimedia-gstreamer-0.10.morph create mode 100644 old/unmaintained/strata/multimedia-gstreamer-0.10/gstreamer-plugins-base@0.10.morph create mode 100644 old/unmaintained/strata/networking-utils.morph create mode 100644 old/unmaintained/strata/networking-utils/conntrack-tools.morph create mode 100644 old/unmaintained/strata/networking-utils/ebtables.morph create mode 100644 old/unmaintained/strata/networking-utils/iproute2.morph create mode 100644 old/unmaintained/strata/networking-utils/ipset.morph create mode 100644 old/unmaintained/strata/networking-utils/iputils.morph create mode 100644 old/unmaintained/strata/networking-utils/libnet.morph create mode 100644 old/unmaintained/strata/networking-utils/libnetfilter_conntrack.morph create mode 100644 old/unmaintained/strata/networking-utils/libnetfilter_cthelper.morph create mode 100644 old/unmaintained/strata/networking-utils/libnetfilter_cttimeout.morph create mode 100644 old/unmaintained/strata/networking-utils/libnetfilter_queue.morph create mode 100644 old/unmaintained/strata/networking-utils/libnfnetlink.morph create mode 100644 old/unmaintained/strata/networking-utils/libpcap.morph create mode 100644 old/unmaintained/strata/networking-utils/tcpdump.morph create mode 100644 old/unmaintained/strata/ntpd.morph create mode 100644 old/unmaintained/strata/ntpd/ntpd.morph create mode 100644 old/unmaintained/strata/ocaml-language.morph create mode 100644 old/unmaintained/strata/ocaml-language/ocaml.morph create mode 100644 old/unmaintained/strata/openstack-clients/appdirs.morph create mode 100644 old/unmaintained/strata/openstack-clients/argparse.morph create mode 100644 old/unmaintained/strata/openstack-clients/cliff-tablib.morph create mode 100644 old/unmaintained/strata/openstack-clients/os-client-config.morph create mode 100644 old/unmaintained/strata/openstack-clients/pyparsing.morph create mode 100644 old/unmaintained/strata/openstack-clients/python-ironicclient.morph create mode 100644 old/unmaintained/strata/openstack-clients/python-openstackclient.morph create mode 100644 old/unmaintained/strata/openstack-clients/tablib.morph create mode 100644 old/unmaintained/strata/openstack-services.morph create mode 100644 old/unmaintained/strata/openstack-services/ceilometer.morph create mode 100644 old/unmaintained/strata/openstack-services/cinder.morph create mode 100644 old/unmaintained/strata/openstack-services/erlang-sd_notify.morph create mode 100644 old/unmaintained/strata/openstack-services/glance.morph create mode 100644 old/unmaintained/strata/openstack-services/horizon.morph create mode 100644 old/unmaintained/strata/openstack-services/ipaddr-py.morph create mode 100644 old/unmaintained/strata/openstack-services/ironic.morph create mode 100644 old/unmaintained/strata/openstack-services/keystone.morph create mode 100644 old/unmaintained/strata/openstack-services/librabbitmq.morph create mode 100644 old/unmaintained/strata/openstack-services/neutron.morph create mode 100644 old/unmaintained/strata/openstack-services/nova.morph create mode 100644 old/unmaintained/strata/openstack-services/novnc.morph create mode 100644 old/unmaintained/strata/openstack-services/open-iscsi.morph create mode 100644 old/unmaintained/strata/openstack-services/pysendfile.morph create mode 100644 old/unmaintained/strata/openstack-services/qpid-python.morph create mode 100644 old/unmaintained/strata/openstack-services/rabbitmq-codegen.morph create mode 100644 old/unmaintained/strata/openstack-services/rabbitmq-server.morph create mode 100644 old/unmaintained/strata/openstack-services/rtslib-fb.morph create mode 100644 old/unmaintained/strata/openstack-services/singledispatch.morph create mode 100644 old/unmaintained/strata/openstack-services/tempest.morph create mode 100644 old/unmaintained/strata/openstack-services/tftp-hpa.morph create mode 100644 old/unmaintained/strata/openstack-services/thrift.morph create mode 100644 old/unmaintained/strata/qt4-sdk.morph create mode 100644 old/unmaintained/strata/qt4-sdk/qt-creator.morph create mode 100644 old/unmaintained/strata/qt4-tools.morph create mode 100644 old/unmaintained/strata/qt4-tools/qt4-tools.morph create mode 100644 old/unmaintained/strata/qt4-tools/ruby-1.8.morph create mode 100644 old/unmaintained/strata/qt4-tools/ruby-1.9.morph create mode 100644 old/unmaintained/strata/test-tools.morph create mode 100644 old/unmaintained/strata/test-tools/subunit.morph create mode 100644 old/unmaintained/strata/virtualization.morph create mode 100644 old/unmaintained/strata/virtualization/dmidecode.morph create mode 100644 old/unmaintained/strata/virtualization/dnsmasq.morph create mode 100644 old/unmaintained/strata/virtualization/libosinfo.morph create mode 100644 old/unmaintained/strata/virtualization/libvirt.morph create mode 100644 old/unmaintained/strata/virtualization/openvswitch.morph create mode 100644 old/unmaintained/strata/virtualization/qemu.morph create mode 100644 old/unmaintained/strata/virtualization/yajl.morph create mode 100644 old/unmaintained/strata/webtools.morph create mode 100644 old/unmaintained/strata/webtools/nginx.morph create mode 100644 old/unmaintained/strata/xfce.morph create mode 100644 old/unmaintained/strata/xfce/elementary-xfce.morph create mode 100644 old/unmaintained/strata/xfce/exo.morph create mode 100644 old/unmaintained/strata/xfce/garcon.morph create mode 100644 old/unmaintained/strata/xfce/gtk-xfce-engine-2.morph create mode 100644 old/unmaintained/strata/xfce/libwnck.morph create mode 100644 old/unmaintained/strata/xfce/libxfce4ui.morph create mode 100644 old/unmaintained/strata/xfce/libxfce4util.morph create mode 100644 old/unmaintained/strata/xfce/thunar.morph create mode 100644 old/unmaintained/strata/xfce/tumbler.morph create mode 100644 old/unmaintained/strata/xfce/xfce4-appfinder.morph create mode 100644 old/unmaintained/strata/xfce/xfce4-panel.morph create mode 100644 old/unmaintained/strata/xfce/xfce4-session.morph create mode 100644 old/unmaintained/strata/xfce/xfce4-settings.morph create mode 100644 old/unmaintained/strata/xfce/xfconf.morph create mode 100644 old/unmaintained/strata/xfce/xfdesktop.morph create mode 100644 old/unmaintained/strata/xfce/xfwm4.morph create mode 100644 old/unmaintained/strata/xstatic.morph create mode 100644 old/unmaintained/strata/zookeeper-client.morph create mode 100644 old/unmaintained/strata/zookeeper-server.morph create mode 100644 old/unmaintained/strata/zookeeper.morph create mode 100644 old/unmaintained/strata/zookeeper/zookeeper-client.morph create mode 100644 old/unmaintained/strata/zookeeper/zookeeper-server.morph create mode 100644 old/unmaintained/strata/zookeeper/zookeeper.morph create mode 100644 old/unmaintained/systems/ceph-service-x86_64-generic.morph create mode 100644 old/unmaintained/systems/chef-system-x86_64-container.morph create mode 100644 old/unmaintained/systems/cxmanage-system-x86_64-generic.morph create mode 100644 old/unmaintained/systems/java-build-system-x86_64-generic.morph create mode 100644 old/unmaintained/systems/nodejs-system-x86_64.morph create mode 100644 old/unmaintained/systems/ocaml-system-x86_64.morph create mode 100644 old/unmaintained/systems/openstack-system-x86_64.morph create mode 100644 old/unmaintained/systems/qt4-devel-system-x86_64-generic.morph create mode 100644 old/unmaintained/systems/qt5-devel-system-x86_64-generic.morph create mode 100644 old/unmaintained/systems/swift-system-x86_64.morph create mode 100644 old/unmaintained/systems/web-system-x86_64-generic.morph create mode 100644 old/unmaintained/systems/xfce-system-x86_64.morph create mode 100644 old/unmaintained/systems/zookeeper-client-x86_64.morph create mode 100644 old/unmaintained/systems/zookeeper-server-x86_64.morph create mode 100644 old/weston/clusters/weston-qt5-system-x86_64-deploy.morph create mode 100644 old/weston/clusters/weston-system-x86_64-generic-deploy.morph create mode 100644 old/weston/systems/weston-qt5-system-x86_64.morph create mode 100644 old/weston/systems/weston-system-armv7lhf-jetson.morph create mode 100644 old/weston/systems/weston-system-x86_64-generic.morph diff --git a/old/DEFAULTS b/old/DEFAULTS new file mode 100644 index 00000000..402e5889 --- /dev/null +++ b/old/DEFAULTS @@ -0,0 +1,252 @@ +# Baserock definitions defaults +# ============================= +# +# The DEFAULTS file is treated specially by Baserock build tools. +# +# For more information, see: . + + +# Baserock Definitions Build Step Defaults +# ---------------------------------------- +# +# The default names and ordering for build steps in a given chunk. +# +build-steps: ['pre-bootstrap-commands', + 'bootstrap-commands', + 'post-bootstrap-commands', + 'pre-configure-commands', + 'configure-commands', + 'post-configure-commands', + 'pre-build-commands', + 'build-commands', + 'post-build-commands', + 'pre-test-commands', + 'test-commands', + 'post-test-commands', + 'pre-install-commands', + 'install-commands', + 'post-install-commands', + 'pre-strip-commands', + 'strip-commands', + 'post-strip-commands'] + + +# Predefined architecture constants +# --------------------------------- +# +# Mapping from definitions architecture keywords to compiler keywords +# +cpus: + x86_32: 'i686' + armv8l64: 'aarch64' + armv8b64: 'aarch64_be' + mips64b: 'mips64' + mips64l: 'mips64el' + mips32b: 'mips' + mips32l: 'mipsel' + + +# Predefined build commands +# ------------------------- +# +# Common patterns in build instructions can be defined here, which can save +# users from having to write lots of similar-looking chunk .morph files. +# +# There are pre- and post- variants for each set of commands. These exist so +# you can add more commands without having to copy the defaults. For example, +# to create an extra symlink after running `make install`, you can use +# post-install-commands. Since these exist as a way of extending the defaults, +# you cannot set default values for the pre- and post- commands. +# +# The set of environment variables available when these commands are executed +# is not formally specified right now, but you can assume PREFIX, DESTDIR and +# MORPH_ARCH are all set. +# +build-systems: + manual: + # The special, default 'no-op' build system. + configure-commands: [] + build-commands: [] + install-commands: [] + strip-commands: [] + + autotools: + # GNU Autoconf and GNU Automake, or anything which follow the same pattern. + # + # See also: https://github.com/cgwalters/build-api/blob/master/build-api.md + configure-commands: + - >- + export NOCONFIGURE=1; + if [ -e autogen ]; then ./autogen; + elif [ -e autogen.sh ]; then ./autogen.sh; + elif [ -e bootstrap ]; then ./bootstrap; + elif [ -e bootstrap.sh ]; then ./bootstrap.sh; + elif [ ! -e ./configure ]; then autoreconf -ivf; + fi + - ./configure --prefix="$PREFIX" + --sysconfdir=/etc + --localstatedir=/var + + build-commands: + - make + install-commands: + - make DESTDIR="$DESTDIR" install + strip-commands: + # TODO: Make idempotent when files are hardlinks + # Strip all ELF binary files that are executable or named like a library. + # .so files for C, .cmxs for OCaml and .node for Node. + # + # The file name and permissions checks are done with the `find` command before + # the ELF header is checked with the shell command, because it is a lot cheaper + # to check the mode and file name first, because it is a metadata check, rather + # than a subprocess and a file read. + # + # `file` is not used, to keep the dependency requirements down. + - &generic-strip-command | + find "$DESTDIR" -type f \ + '(' -perm -111 -o -name '*.so*' -o -name '*.cmxs' -o -name '*.node' ')' \ + -exec sh -ec \ + 'read -n4 hdr <"$1" # check for elf header + if [ "$hdr" != "$(printf \\x7fELF)" ]; then + exit 0 + fi + debugfile="$DESTDIR$PREFIX/lib/debug/$(basename "$1")" + mkdir -p "$(dirname "$debugfile")" + objcopy --only-keep-debug "$1" "$debugfile" + chmod 644 "$debugfile" + strip --remove-section=.comment --remove-section=.note --strip-unneeded "$1" + objcopy --add-gnu-debuglink "$debugfile" "$1"' - {} ';' + + python-distutils: + # The Python distutils build systems. + configure-commands: [] + build-commands: + - python setup.py build + install-commands: + - python setup.py install --prefix "$PREFIX" --root "$DESTDIR" + strip-commands: + - *generic-strip-command + + python3-distutils: + # The Python distutils build systems. + configure-commands: [] + build-commands: + - python3 setup.py build + install-commands: + - python3 setup.py install --prefix "$PREFIX" --root "$DESTDIR" + strip-commands: + - *generic-strip-command + + cpan: + # The Perl ExtUtil::MakeMaker build system. This is called the 'cpan' build + # system for historical reasons. + # + # To install perl distributions into the correct location in our chroot + # we need to set PREFIX to / in the configure-commands. + # + # The mapping between PREFIX and the final installation + # directories is complex and depends upon the configuration of perl + # see, + # https://metacpan.org/pod/distribution/perl/INSTALL#Installation-Directories + # and ExtUtil::MakeMaker's documentation for more details. + configure-commands: + - perl Makefile.PL PREFIX=$DESTDIR$PREFIX + build-commands: + - make + install-commands: + - make install + strip-commands: + - *generic-strip-command + + module-build: + # The Module::Build build system + # + # See the comment in ExtUtilsMakeMakerBuildSystem to see why --prefix is + # set to $DESTDIR$PREFIX here (--prefix in Module::Build has the same + # meaning as PREFIX in ExtUtils::MakeMaker). + configure-commands: + - perl Build.PL --prefix "$DESTDIR$PREFIX" + build-commands: + - ./Build + install-commands: + - ./Build install + strip-commands: + - *generic-strip-command + + cmake: + # The CMake build system. + configure-commands: + - cmake -DCMAKE_INSTALL_PREFIX="$PREFIX" + build-commands: + - make + install-commands: + - make DESTDIR="$DESTDIR" install + strip-commands: + - *generic-strip-command + + qmake: + # The Qt build system. + configure-commands: + - qmake -makefile + build-commands: + - make + install-commands: + - make INSTALL_ROOT="$DESTDIR" install + strip-commands: + - *generic-strip-command + + +# Predefined artifact splitting rules +# ----------------------------------- +# +# Once a build has completed, you have some files that have been installed into +# $DESTDIR. The splitting rules control how many 'artifact' tarballs are +# generated as a result of the build, and which files from $DESTDIR end up in +# which 'artifact'. +# +# The default split rules are defined here. These can be overriden in +# individual chunk .morph files and stratum .morph files using the 'products' +# field. +# +split-rules: + chunk: + - artifact: -bins + include: + - (usr/)?s?bin/.* + - artifact: -libs + include: + - (usr/)?lib(32|64)?/lib[^/]*\.so(\.\d+)* + - (usr/)libexec/.* + - artifact: -devel + include: + - (usr/)?include/.* + - (usr/)?lib(32|64)?/lib.*\.a + - (usr/)?lib(32|64)?/lib.*\.la + - (usr/)?(lib(32|64)?|share)/pkgconfig/.*\.pc + - artifact: -doc + include: + - (usr/)?share/doc/.* + - (usr/)?share/man/.* + - (usr/)?share/info/.* + - artifact: -locale + include: + - (usr/)?share/locale/.* + - (usr/)?share/i18n/.* + - (usr/)?share/zoneinfo/.* + - artifact: -misc + include: + - .* + + stratum: + - artifact: -devel + include: + - .*-devel + - .*-debug + - .*-doc + - artifact: -runtime + include: + - .*-bins + - .*-libs + - .*-locale + - .*-misc + - .* diff --git a/old/README b/old/README new file mode 100644 index 00000000..ec38f9df --- /dev/null +++ b/old/README @@ -0,0 +1,59 @@ +Baserock reference system definitions +===================================== + +Baserock is a system for developing embedded and appliance Linux systems. For +more information, see . + +These are some example definitions for use with Baserock tooling. You can fork +this repo and develop your own systems directly within it, or use it as a +reference point when developing your own set of definitions. + +These definitions follow the Baserock definitions format, which is defined in +spec.git repository (http://git.baserock.org/cgit/baserock/baserock/spec.git). + +The spec is readable online at . + +The systems listed in the systems/ directory are example systems +that build and run at some point. The only ones we can be sure +that still build in current master of definitions are the ones that +we keep building in our ci system; they are listed in +http://git.baserock.org/cgit/baserock/baserock/definitions.git/tree/clusters/ci.morph + +Keeping up to date +------------------ + +The Baserock definitions format is evolving. A set of automated migrations is +provided in the migrations/ directory of spec.git, for use when the format has +changed and you want to bring your definitions up to date. + +Before running the migrations, you can use the 'migrations/indent' tool to +format the definitions in the specific style that the migrations expect. +The migrations use the 'ruamel.yaml' Python library for editing the .morph +files. This library preserves comments, ordering and some of the formatting +when it rewrites a .morph file. However, it does impose a certain line width +and indent style. + +It makes a lot of sense to run the migrations with a *clean Git working tree*, +so you can clearly see what changes they made, and can then choose to either +commit them, tweak them, or revert them with `git reset --hard` and write an +angry email. + +The suggested workflow is to run this from within your definitions.git clone: + + git clone git://git.baserock.org/baserock/baserock/spec ../spec.git + + git status # ensure a clean Git tree + ../spec/migrations/indent + git diff # check for any spurious changes + git commit -a -m "Fix formatting" + ../spec/migrations/run-all + git diff # check the results + git commit -a -m "Migrate to version xx of Baserock definitions format" + +If you are working in a fork of the Baserock definitions.git repo, you can +also keep to date with using changes in 'master' using `git merge`. In general, +we recommend first running the migrations, committing any changes they make, +*then* merging in changes using `git merge`. This should minimise the number of +merge conflicts, although merge conflicts are still possible. + +See migrations/GUIDELINES for information on how to write new migrations. diff --git a/old/VERSION b/old/VERSION new file mode 100644 index 00000000..9a47f2b9 --- /dev/null +++ b/old/VERSION @@ -0,0 +1 @@ +version: 8 diff --git a/old/clusters/altera-socfpga-devkit-sd-image.morph b/old/clusters/altera-socfpga-devkit-sd-image.morph new file mode 100644 index 00000000..71d3da2d --- /dev/null +++ b/old/clusters/altera-socfpga-devkit-sd-image.morph @@ -0,0 +1,14 @@ +name: altera-socfpga-devkit-sd-image +kind: cluster +description: | + This cluster morph deploys a little endian Baserock system to + an SD image for the Altera Cyclone V development kit +systems: +- morph: systems/build-system-armv7l-altera-socfpga-devkit.morph + deploy: + self: + type: extensions/rawdisk + location: build-system-armv7l-altera-socfpga-devkit.img + DISK_SIZE: 7G + USE_PARTITIONING: yes + PARTITION_FILE: partitioning/socfpga-devkit diff --git a/old/clusters/build-system-x86_64-chroot-deploy.morph b/old/clusters/build-system-x86_64-chroot-deploy.morph new file mode 100644 index 00000000..ce0b26bc --- /dev/null +++ b/old/clusters/build-system-x86_64-chroot-deploy.morph @@ -0,0 +1,9 @@ +name: build-system-x86_64-chroot-deploy +kind: cluster +systems: +- morph: systems/build-system-x86_64-chroot.morph + deploy: + build-system-x86_64-chroot: + type: extensions/tar + location: build-system-x86_64-chroot.tar + HOSTNAME: build-system-x86-64-chroot diff --git a/old/clusters/ci.morph b/old/clusters/ci.morph new file mode 100644 index 00000000..a56e34ea --- /dev/null +++ b/old/clusters/ci.morph @@ -0,0 +1,93 @@ +name: ci +kind: cluster +description: | + Deploy all the systems for CD. + + This cluster morph is for use by the Mason Continuous Delivery pipeline + during development. +systems: +- morph: systems/minimal-system-x86_64-generic.morph + deploy: + minimal-system-x86_64-generic: + type: extensions/rawdisk + location: minimal-system-x86_64-generic.img + DISK_SIZE: 512M + INIT_SYSTEM: busybox +- morph: systems/devel-system-x86_64-generic.morph + deploy: + devel-system-x86_64-generic: + type: extensions/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: extensions/rawdisk + location: devel-system-x86_32-generic.img + DISK_SIZE: 4G +- morph: systems/build-system-armv7lhf-jetson.morph + deploy: + build-system-armv7lhf-jetson: + type: extensions/rawdisk + location: build-system-armv7lhf-jetson.img + DISK_SIZE: 3G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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: gnome/systems/gnome-system-x86_64.morph + deploy: + gnome-system-x86_64: + type: extensions/rawdisk + location: gnome-system-x86_64.img + DISK_SIZE: 7G + KERNEL_ARGS: vga=788 +- morph: weston/systems/weston-system-armv7lhf-jetson.morph + deploy: + weston-system-armv7lhf-jetson: + type: extensions/rawdisk + location: weston-system-armv7lhf-jetson.img + DISK_SIZE: 4G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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: genivi/systems/genivi-baseline-system-x86_64-generic.morph + deploy: + genivi-baseline-system-x86_64-generic: + type: extensions/rawdisk + location: genivi-baseline-system-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + GENIVI_WESTON_BACKEND: fbdev + GENIVI_WESTON_CONFIG: baseline + GENIVI_WESTON_AUTOSTART: False +- morph: genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph + deploy: + genivi-baseline-system-armv7lhf-jetson: + type: extensions/rawdisk + location: genivi-baseline-system-armv7lhf-jetson.img + DISK_SIZE: 4G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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 + GENIVI_WESTON_BACKEND: drm + GENIVI_WESTON_CONFIG: baseline + GENIVI_WESTON_AUTOSTART: True +- morph: weston/systems/weston-qt5-system-x86_64.morph + deploy: + weston-qt5-system-x86_64.morph: + type: extensions/rawdisk + location: weston-qt5-system-x86_64.morph.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 diff --git a/old/clusters/example-distbuild-cluster.morph b/old/clusters/example-distbuild-cluster.morph new file mode 100644 index 00000000..5208a5ca --- /dev/null +++ b/old/clusters/example-distbuild-cluster.morph @@ -0,0 +1,37 @@ +name: example-distbuild-cluster +kind: cluster +description: | + This is an example cluster morph that can be adapted to set up a + Baserock distributed build network. + + You will need to deploy a Trove for the distributed build network + to use before deploying this cluster. The worker SSH key file should + be generated as part of the Trove deployment. It is the key used by + workers to authenticate with the Trove to give them read access to + all source repositories. +systems: +- morph: systems/build-system-x86_64.morph + deploy-defaults: + CONTROLLERHOST: build-controller + DISTBUILD_CONTROLLER: false + DISTBUILD_WORKER: true + FSTAB_SRC: LABEL=src /srv/distbuild auto defaults,rw,noatime 0 2 + INSTALL_FILES: install-files/distbuild/manifest + NFSBOOT_CONFIGURE: true + TROVE_ID: $MY_TROVE + WORKER_SSH_KEY: ssh-keys/worker.key + deploy: + build-controller: + type: extensions/nfsboot + location: $MY_TROVE + DISTBUILD_CONTROLLER: true + HOSTNAME: build-controller + WORKERS: build-node-1, build-node-2 + build-node-1: + type: extensions/nfsboot + location: $MY_TROVE + HOSTNAME: build-node-1 + build-node-2: + type: extensions/nfsboot + location: $MY_TROVE + HOSTNAME: build-node-2 diff --git a/old/clusters/hardware-deployment.morph b/old/clusters/hardware-deployment.morph new file mode 100644 index 00000000..674d6587 --- /dev/null +++ b/old/clusters/hardware-deployment.morph @@ -0,0 +1,35 @@ +name: hardware-deployment +kind: cluster +description: | + Deploy a build-system into hardware using the combination + of the pxeboot.write extension and the installer system. + This examples uses the spawn-novlan mode of pxeboot.write. +systems: +- morph: systems/installer-system-x86_64.morph + deploy: + installer: + type: extensions/pxeboot + location: AB:CD:EF:12:34:56:78 #MAC address. + PXEBOOT_MODE: spawn-novlan + PXEBOOT_DEPLOYER_INTERFACE: ens6 + KERNEL_ARGS: console=ttyS1,9600 console=tty0 init=/usr/lib/baserock-installer/installer + HOSTNAME: installer-system + IPMI_USER: myipmiuser + IPMI_PASSWORD: myipmipassword + IPMI_HOST: 123.34.45.120 #IPMI ip address + INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda + INSTALLER_ROOTFS_TO_INSTALL: /rootfs + subsystems: + - morph: systems/build-system-x86_64.morph + deploy: + to-install: + type: extensions/sysroot + location: /rootfs + INITRAMFS_PATH: boot/initramfs.gz + KERNEL_ARGS: console=ttyS1,9600 console=tty0 + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/clusters/image-package-example.morph b/old/clusters/image-package-example.morph new file mode 100644 index 00000000..ca79ec97 --- /dev/null +++ b/old/clusters/image-package-example.morph @@ -0,0 +1,12 @@ +name: image-package-example +kind: cluster +description: | + Packaged system and script for installing it, for deferred instantiation. +systems: +- morph: systems/base-system-x86_32-generic.morph + deploy: + imgpkg: + type: extensions/image-package + location: image-package-example.tar + BOOTLOADER_BLOBS: /usr/share/syslinux/mbr.bin + INCLUDE_SCRIPTS: extensions/image-package-example/make-disk-image.sh.in:extensions/image-package-example/disk-install.sh.in:extensions/image-package-example/common.sh.in diff --git a/old/clusters/initramfs-test.morph b/old/clusters/initramfs-test.morph new file mode 100644 index 00000000..a4ce7f32 --- /dev/null +++ b/old/clusters/initramfs-test.morph @@ -0,0 +1,22 @@ +name: initramfs-test +kind: cluster +systems: +- morph: systems/base-system-x86_64-generic.morph + deploy: + system: + type: extensions/rawdisk + location: initramfs-system-x86_64.img + DISK_SIZE: 1G + HOSTNAME: initramfs-system + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: extensions/initramfs + location: boot/initramfs.gz + - morph: systems/initramfs-x86_64.morph + deploy: + shutdownramfs: + type: sysroot + location: usr/lib/shutdownramfs diff --git a/old/clusters/installer-build-system-x86_64.morph b/old/clusters/installer-build-system-x86_64.morph new file mode 100644 index 00000000..d9a2a28b --- /dev/null +++ b/old/clusters/installer-build-system-x86_64.morph @@ -0,0 +1,52 @@ +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: extensions/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 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + installer-initramfs: + type: extensions/initramfs + location: boot/initramfs.gz + - morph: systems/build-system-x86_64.morph + deploy: + to-install: + type: extensions/sysroot + location: /rootfs + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + to-install-initramfs: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/clusters/jetson-upgrade.morph b/old/clusters/jetson-upgrade.morph new file mode 100644 index 00000000..c8ac0681 --- /dev/null +++ b/old/clusters/jetson-upgrade.morph @@ -0,0 +1,17 @@ +name: jetson-upgrade +kind: cluster +systems: +- morph: systems/devel-system-armv7lhf-jetson.morph + deploy-defaults: + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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 + FSTAB_SRC: LABEL=src /src auto defaults,rw,noatime,nofail 0 2 + deploy: + self: + upgrade-type: extensions/ssh-rsync + upgrade-location: root@127.0.0.1 diff --git a/old/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph b/old/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph new file mode 100644 index 00000000..3154fa26 --- /dev/null +++ b/old/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph @@ -0,0 +1,13 @@ +name: minimal-system-armv5l-openbmc-aspeed-deploy +kind: cluster +systems: +- morph: systems/minimal-system-armv5l-openbmc-aspeed.morph + deploy: + minimal-system-armv5l-openbmc-aspeed: + type: extensions/jffs2 + location: minimal-system-armv5l-openbmc-aspeed.img + ROOT_DEVICE: /dev/mtdblock + BOOTLOADER_CONFIG_FORMAT: extlinux + BOOTLOADER_INSTALL: none + ERASE_BLOCK: 64 + INIT_SYSTEM: busybox diff --git a/old/clusters/minimal-system-deploy.morph b/old/clusters/minimal-system-deploy.morph new file mode 100644 index 00000000..cf8de54f --- /dev/null +++ b/old/clusters/minimal-system-deploy.morph @@ -0,0 +1,14 @@ +name: minimal-system-deploy +kind: cluster +description: | + Deploy a minimal system to a system running KVM +systems: +- morph: systems/minimal-system-x86_32-generic.morph + deploy: + vm: + type: extensions/kvm + location: kvm+ssh://192.168.122.1/tiny-x86_32/srv/VMs/tiny-x86_32.img + DISK_SIZE: 512M + HOSTNAME: tiny-x86_32 + INIT_SYSTEM: busybox + RAM_SIZE: 512M diff --git a/old/clusters/minimal-system-x86_64-chroot-deploy.morph b/old/clusters/minimal-system-x86_64-chroot-deploy.morph new file mode 100644 index 00000000..d25fdcc8 --- /dev/null +++ b/old/clusters/minimal-system-x86_64-chroot-deploy.morph @@ -0,0 +1,9 @@ +name: minimal-system-x86_64-chroot-deploy +kind: cluster +systems: +- morph: systems/minimal-system-x86_64-chroot.morph + deploy: + minimal-system-x86_64-chroot: + type: extensions/tar + location: minimal-system-x86_64-chroot.tar + HOSTNAME: minimal-system-x86-64-chroot diff --git a/old/clusters/minimal-system-x86_64-deploy.morph b/old/clusters/minimal-system-x86_64-deploy.morph new file mode 100644 index 00000000..be193b8b --- /dev/null +++ b/old/clusters/minimal-system-x86_64-deploy.morph @@ -0,0 +1,12 @@ +name: minimal-system-x86_64-deploy +kind: cluster +description: | + Deploy a minimal system +systems: +- morph: systems/minimal-system-x86_64-generic.morph + deploy: + minimal-system-x86_64-generic: + type: extensions/rawdisk + location: minimal-system-x86_64.img + DISK_SIZE: 1G + HOSTNAME: minimal-system-x86-64 diff --git a/old/clusters/moonshot-m2-armv8b64.morph b/old/clusters/moonshot-m2-armv8b64.morph new file mode 100644 index 00000000..a1057fbd --- /dev/null +++ b/old/clusters/moonshot-m2-armv8b64.morph @@ -0,0 +1,56 @@ +name: moonshot-m2-armv8b64 +kind: cluster +description: | + Install a build armv8b64 system into the M.2 SSD storage of an HP + Moonshot node, using a combination of the pxeboot.write extension and + the installer system. +systems: +- morph: systems/installer-system-armv8b64.morph + deploy: + installer: + type: extensions/pxeboot + location: 14:58:d0:57:7f:42 + PXEBOOT_MODE: existing-server + PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ + PXEBOOT_ROOTFS_RSYNC_ADDRESS: rsync://192.168.0.1/srv/nfsboot/ + PXEBOOT_PXE_REBOOT_COMMAND: | + ssh Administrator@10.0.1.10 set node power off force c31n1 + ssh Administrator@10.0.1.10 set node boot pxe c31n1 + # Nodes are powered on twice as sometimes powering them on + # once is not enough + ssh Administrator@10.0.1.10 set node power on c31n1 + ssh Administrator@10.0.1.10 set node power on c31n1 + PXEBOOT_REBOOT_COMMAND: | + ssh Administrator@10.0.1.10 set node power off force c31n1 + ssh Administrator@10.0.1.10 set node boot m.2 c31n1 + ssh Administrator@10.0.1.10 set node power on c31n1 + ssh Administrator@10.0.1.10 set node power on c31n1 + + INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda + INSTALLER_ROOTFS_TO_INSTALL: /rootfs + INSTALLER_POST_INSTALL_COMMAND: | + while : ; do + echo "enter 'installed' in your deployment machine to finish the installation" + sleep 2 + done + INSTALLER_CREATE_BOOT_PARTITION: true + + HOSTNAME: installer-system-c31n1 + DTB_PATH: boot/m400-1003.dtb + KERNEL_ARGS: console=ttyS0,9600n8r init=/usr/lib/baserock-installer/installer + INSTALL_FILES: install-files/moonshot/manifest + MOONSHOT_KERNEL: true + subsystems: + - morph: systems/devel-system-armv8b64.morph + deploy: + to-install: + type: extensions/sysroot + location: /rootfs + HOSTNAME: baserock-c31n1 + DTB_PATH: boot/m400-1003.dtb + INSTALL_FILES: install-files/moonshot/manifest + MOONSHOT_KERNEL: true + BOOT_DEVICE: /dev/sda1 + ROOT_DEVICE: /dev/sda2 + BOOTLOADER_CONFIG_FORMAT: extlinux + BOOTLOADER_INSTALL: none diff --git a/old/clusters/moonshot-pxe-armv8b64.morph b/old/clusters/moonshot-pxe-armv8b64.morph new file mode 100644 index 00000000..b1734084 --- /dev/null +++ b/old/clusters/moonshot-pxe-armv8b64.morph @@ -0,0 +1,30 @@ +name: moonshot-pxe-armv8b64 +kind: cluster +description: | + Deploy a big-endian armv8b64 devel system onto an HP Moonshot node + + The system will be configured to boot through PXE from existing DHCP, + TFTP and NFS servers. +systems: +- morph: systems/devel-system-armv8b64.morph + deploy: + netboot: + type: extensions/pxeboot + location: 14:58:d0:57:7f:42 + PXEBOOT_MODE: existing-server + PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ + PXEBOOT_ROOTFS_RSYNC_ADDRESS: rsync://192.168.0.1/srv/nfsboot/ + PXEBOOT_PXE_REBOOT_COMMAND: | + ssh Administrator@10.0.1.10 set node power off force c31n1 + ssh Administrator@10.0.1.10 set node boot pxe c31n1 + # Nodes are powered on twice as sometimes powering them on + # once is not enough + ssh Administrator@10.0.1.10 set node power on c31n1 + ssh Administrator@10.0.1.10 set node power on c31n1 + PXE_INSTALLER: false + + HOSTNAME: baserock-c31n1 + DTB_PATH: boot/m400-1003.dtb + KERNEL_ARGS: console=ttyS0,9600n8r rw + INSTALL_FILES: install-files/moonshot/manifest + MOONSHOT_KERNEL: true diff --git a/old/clusters/moonshot-pxe-armv8l64.morph b/old/clusters/moonshot-pxe-armv8l64.morph new file mode 100644 index 00000000..1bce7791 --- /dev/null +++ b/old/clusters/moonshot-pxe-armv8l64.morph @@ -0,0 +1,22 @@ +name: moonshot-pxe-armv8l64 +kind: cluster +description: | + Deploy an armv8l64 devel system into a HP Moonshot node + + The system will be configured to boot through PXE from existing DHCP, + TFTP and NFS servers. +systems: +- morph: systems/devel-system-armv8l64.morph + deploy: + netboot: + type: extensions/pxeboot + location: 14:58:d0:57:7f:42 + PXEBOOT_MODE: existing-server + PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ + PXEBOOT_ROOTFS_RSYNC_ADDRESS: rsync://192.168.0.1/srv/nfsboot/ + KERNEL_ARGS: console=ttyS0,9600n8r rw + DTB_PATH: boot/m400-1003.dtb + HOSTNAME: baserock-m400-node31 + MOONSHOT_KERNEL: true + INSTALL_FILES: install-files/moonshot/manifest + PXE_INSTALLER: false diff --git a/old/clusters/release.morph b/old/clusters/release.morph new file mode 100644 index 00000000..fe07665f --- /dev/null +++ b/old/clusters/release.morph @@ -0,0 +1,62 @@ +name: release +kind: cluster +description: | + Deploy all the systems for we support in a release. + + This cluster morph is used by the tool 'scripts/do-release'. While + you can deploy the systems yourself, if you are making a Baserock release + then the script should be used. +systems: +- morph: systems/build-system-x86_32-chroot.morph + deploy: + build-system-x86_32-chroot: + type: extensions/tar + location: build-system-x86_32-chroot.tar + HOSTNAME: build-system-x86-32-chroot +- morph: systems/build-system-x86_32.morph + deploy: + build-system-x86_32: + type: extensions/rawdisk + location: build-system-x86_32.img + DISK_SIZE: 6G + HOSTNAME: build-system-x86-32 +- morph: systems/build-system-x86_64-chroot.morph + deploy: + build-system-x86_64-chroot: + type: extensions/tar + location: build-system-x86_64-chroot.tar + HOSTNAME: build-system-x86-64-chroot +- morph: systems/build-system-x86_64.morph + deploy: + build-system-x86_64: + type: extensions/rawdisk + location: build-system-x86_64.img + DISK_SIZE: 6G + INITRAMFS_PATH: boot/initramfs.gz + HOSTNAME: build-system-x86-64 + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs-build-system-x86_64: + type: extensions/initramfs + location: boot/initramfs.gz +- morph: systems/build-system-armv7lhf-rootfs.morph + deploy: + build-system-armv7lhf-rootfs: + type: extensions/tar + location: build-system-armv7lhf-rootfs.tar + HOSTNAME: build-system-armv7lhf-rootfs +- morph: systems/build-system-armv7lhf-jetson.morph + deploy: + build-system-armv7lhf-jetson: + type: extensions/rawdisk + location: build-system-armv7lhf-jetson.img + DISK_SIZE: 3G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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 + HOSTNAME: build-system-armv7lhf-jetson diff --git a/old/clusters/sdk-example-cluster.morph b/old/clusters/sdk-example-cluster.morph new file mode 100644 index 00000000..961afdcb --- /dev/null +++ b/old/clusters/sdk-example-cluster.morph @@ -0,0 +1,46 @@ +name: sdk-example-cluster +kind: cluster +description: | + An example of creating a cross-compile SDK for an embedded Baserock system. + + This cluster demonstrates how you can use the 'sdk' write extension to + produce a cross-compile SDK tarball for an Baserock applicance. In this + example the system is assumed to run on ARMv7, and the SDK is built to + run on any x86_32 GNU/Linux system. + + The SDK is a Baserock system itself, containing just 'build-essential' and a + 'cross-toolchain' stratum. The SDK system also includes the target + appliance's system, as a 'subsystem', so that the libraries and headers are + available when building. + + This cluster deploys the SDK system using the 'sdk' write extension, which + produces a tarball with a small shell header. When the shell header is + executed, and passed a directory name on the commandline, it extracts the SDK + to that path and patches the binaries so that they execute correctly from + that directory. + + Deploying the applicate system artifact to the target device should be + done with a separate cluster morphology, because you will often want to + do this without rebuilding the SDK. + + You must build each system with `morph build` before deploying. We recommend + doing this all from your Baserock development machine, using a Baserock + ARM distributed build network to produce the system artifact. Once both + system artifacts are cached locally, the `morph deploy` command will produce + a self-extracting shell script/tarball following the 'location' field. + + See the documentation of the sdk.write extension for more information. +systems: +- morph: systems/armv7lhf-cross-toolchain-system-x86_64.morph + deploy: + sdk: + type: extensions/sdk + location: armv7lhf-cross-toolchain-system-x86_64.sh + PREFIX: /usr + TARGET: armv7lhf-baserock-linux-gnueabi + subsystems: + - morph: systems/devel-system-armv7lhf-highbank.morph + deploy: + sysroot: + type: extensions/sysroot + location: usr/armv7lhf-baserock-linux-gnueabi/sys-root diff --git a/old/clusters/upgrade-devel.morph b/old/clusters/upgrade-devel.morph new file mode 100644 index 00000000..dcf1cd8d --- /dev/null +++ b/old/clusters/upgrade-devel.morph @@ -0,0 +1,39 @@ +name: upgrade-devel +kind: cluster +description: | + This is a cluster morphology that can be used to deploy systems to a + an existing Baserock devel system, as an upgrade of the running system. + + This method is for users who deployed a system manually from one of the + images provided on http://download.baserock.org. IT IS ONLY POSSIBLE TO + UPGRADE BASEROCK 14 RELEASES OR NEWER. + + If you deployed your system using `morph deploy` then you should reuse the + cluster morphology you did the initial deployment with, instead of this one, + so that the configuration is preserved in the new system. + + Ensure that your root user has passwordless SSH access to localhost with + `ssh root@localhost whoami`. If not, run `ssh-copy-id root@localhost`. + Make sure the 'morph' field below matches the system you are upgrading. + + To upgrade, select a sensible a value for VERSION_LABEL and run: + + morph upgrade clusters/upgrade-devel.morph self.HOSTNAME=$(hostname) self.VERSION_LABEL=$VERSION_LABEL + + Your configuration in /etc should be propagated to the new system, but there + may be merge conflicts. Check /etc for files named '.rej' and '.orig' in the + new system, which will indicate that there are changes from the old system + that must be merged manually. You can get a nice diff from the old /etc as + follows: + + mount /dev/sda /mnt + git diff --no-index /mnt/systems/factory/run/etc /mnt/systems/$VERSION_LABEL/run/etc + + On a base system, use 'diff -r' instead of 'git diff --no-index'. It will + not be as colourful. +systems: +- morph: systems/devel-system-x86_64-generic.morph + deploy: + self: + upgrade-type: extensions/ssh-rsync + upgrade-location: root@127.0.0.1 diff --git a/old/extensions/add-config-files.configure b/old/extensions/add-config-files.configure new file mode 100755 index 00000000..2cf96fd1 --- /dev/null +++ b/old/extensions/add-config-files.configure @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2013,2015 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, see . + + +# Copy all files located in $SRC_CONFIG_DIR to the image /etc. + + +set -e + +if [ "x${SRC_CONFIG_DIR}" != x ] +then + cp -r "$SRC_CONFIG_DIR"/* "$1/etc/" +fi + diff --git a/old/extensions/busybox-init.configure b/old/extensions/busybox-init.configure new file mode 100644 index 00000000..c7dba3b9 --- /dev/null +++ b/old/extensions/busybox-init.configure @@ -0,0 +1,145 @@ +#!/bin/sh +# +# 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 a system +# to use busybox for its init, if INIT_SYSTEM=busybox is specified. +# +# As well as checking INIT_SYSTEM, the following variables are used. +# +# Getty configuration: +# * CONSOLE_DEVICE: Which device to spawn a getty on (default: ttyS0) +# * CONSOLE_BAUDRATE: Baud rate of the console (default: 115200) +# * CONSOLE_MODE: What kind of terminal this console emulates +# (default: vt100) + +if [ "$INIT_SYSTEM" != busybox ]; then + echo Not configuring system to use busybox init. + exit 0 +fi + +set -e +echo Configuring system to use busybox init + +RUN_SCRIPT=/etc/rcS +INIT_SCRIPT=/sbin/init + +install_mdev_config(){ + install -D -m644 /dev/stdin "$1" <<'EOF' +# support module loading on hotplug +$MODALIAS=.* root:root 660 @modprobe "$MODALIAS" + +# null may already exist; therefore ownership has to be changed with command +null root:root 666 @chmod 666 $MDEV +zero root:root 666 +full root:root 666 +random root:root 444 +urandom root:root 444 +hwrandom root:root 444 +grsec root:root 660 + +kmem root:root 640 +mem root:root 640 +port root:root 640 +# console may already exist; therefore ownership has to be changed with command +console root:root 600 @chmod 600 $MDEV +ptmx root:root 666 +pty.* root:root 660 + +# Typical devices + +tty root:root 666 +tty[0-9]* root:root 660 +vcsa*[0-9]* root:root 660 +ttyS[0-9]* root:root 660 + +# block devices +ram[0-9]* root:root 660 +loop[0-9]+ root:root 660 +sd[a-z].* root:root 660 +hd[a-z][0-9]* root:root 660 +md[0-9]* root:root 660 +sr[0-9]* root:root 660 @ln -sf $MDEV cdrom +fd[0-9]* root:root 660 + +# net devices +SUBSYSTEM=net;.* root:root 600 @nameif +tun[0-9]* root:root 600 =net/ +tap[0-9]* root:root 600 =net/ +EOF +} + +install_start_script(){ + install -D -m755 /dev/stdin "$1" <<'EOF' +#!/bin/sh +mount -t devtmpfs devtmpfs /dev +mount -t proc proc /proc +mount -t sysfs sysfs /sys +mkdir -p /dev/pts +mount -t devpts devpts /dev/pts + +echo /sbin/mdev >/proc/sys/kernel/hotplug +mdev -s + +hostname -F /etc/hostname + +run-parts -a start /etc/init.d +EOF +} + +install_inittab(){ + local inittab="$1" + local dev="$2" + local baud="$3" + local mode="$4" + install -D -m644 /dev/stdin "$1" <&2 + exit 1 +} + +install_mdev_config "$1/etc/mdev.conf" + +install_start_script "$1$RUN_SCRIPT" + +install_inittab "$1/etc/inittab" "${CONSOLE_DEV-ttyS0}" \ + "${CONSOLE_BAUD-115200}" "${CONSOLE_MODE-vt100}" + +install_init_symlink "$1$INIT_SCRIPT" diff --git a/old/extensions/ceph.configure b/old/extensions/ceph.configure new file mode 100644 index 00000000..32f512ef --- /dev/null +++ b/old/extensions/ceph.configure @@ -0,0 +1,344 @@ +#!/usr/bin/env python +# Copyright (C) 2013-2015 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.5 +# +# 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. + +import os +import shutil +import stat +import sys +import re + +import writeexts + +systemd_monitor_template = """ +[Unit] +Description=Ceph Monitor firstboot setup +After=network-online.target + +[Service] +ExecStart=/bin/sh /root/setup-ceph-head +ExecStartPost=/bin/systemctl disable ceph-monitor-fboot.service + +[Install] +WantedBy=multi-user.target +""" + +systemd_monitor_fname_template = "ceph-monitor-fboot.service" + +systemd_osd_template = """ +[Unit] +Description=Ceph osd firstboot setup +After=network-online.target + +[Service] +ExecStart=/bin/sh /root/setup-ceph-node +ExecStartPost=/bin/systemctl disable ceph-storage-fboot.service + +[Install] +WantedBy=multi-user.target +""" +systemd_osd_fname_template = "ceph-storage-fboot.service" + +ceph_monitor_config_template = """#!/bin/sh +hn={self.hostname} +monIp={self.mon_ip} +clustFsid={self.cluster_fsid} +ceph-authtool --create-keyring /tmp/ceph.mon.keyring \ + --gen-key -n mon. --cap mon 'allow *' +ceph-authtool /tmp/ceph.mon.keyring \ + --import-keyring /etc/ceph/ceph.client.admin.keyring +monmaptool --create --add "$hn" "$monIp" --fsid "$clustFsid" /tmp/monmap +mkdir -p /var/lib/ceph/mon/ceph-"$hn" +ceph-mon --mkfs -i "$hn" --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring +systemctl enable ceph-mon@"$hn".service +systemctl start ceph-mon@"$hn".service +""" + +ceph_storage_config_template = """#!/bin/sh +storageDisk={self.osd_storage_dev} +if `file -sL "$storageDisk" | grep -q ext4`; then + echo "ext4 disk detected. Proceding..." +else + echo "ERROR: ext4 disk required." \ + "Ensure $storageDisk is formated as ext4." >&2 + exit 1 +fi +hn={self.hostname} +uuid="`uuidgen`" +osdnum="`ceph osd create $uuid`" +mkdir /var/lib/ceph/osd/ceph-"$osdnum" +mount -o user_xattr "$storageDisk" /var/lib/ceph/osd/ceph-"$osdnum" +ceph-osd -i "$osdnum" --mkfs --mkkey --osd-uuid "$uuid" +ceph auth add osd."$osdnum" osd 'allow *' mon 'allow profile osd' \ + -i /var/lib/ceph/osd/ceph-"$osdnum"/keyring +ceph osd crush add-bucket "$hn" host +ceph osd crush move "$hn" root=default +ceph osd crush add osd."$osdnum" 1.0 host="$hn" +systmectl enable ceph-osd@"$osdnum".service +systemctl start ceph-osd@"$osdnum".service +echo "$storageDisk /var/lib/ceph/osd/ceph-$osdnum/ ext4 defaults 0 2" \ + >> /etc/fstab +""" + +executable_file_permissions = ( + stat.S_IRUSR | stat.S_IXUSR | stat.S_IWUSR | + stat.S_IXGRP | stat.S_IRGRP | stat.S_IXOTH | + stat.S_IROTH ) + +class CephConfigurationExtension(writeexts.Extension): + """ + Set up ceph server daemons. + + Support for metadata server has not been tested. + + Must include the following environment variables: + + HOSTNAME - Must be defined it is used as the ID for + the monitor and metadata daemons. + + CEPH_CONF - Provide a ceph configuration file. + + Optional environment variables: + + CEPH_CLUSTER - Cluster name, if not provided defaults to 'ceph'. + + CEPH_BOOTSTRAP_OSD - Registered key capable of generating OSD + keys. + + CEPH_BOOTSTRAP_MDS - Registered key capable of generating MDS + keys. + + Bootstrap keys are required for creating OSD daemons on servers + that do not have a running monitor daemon. They are gathered + by 'ceph-deploy gatherkeys' but can be generated and registered + separately. + + CEPH_CLIENT_ADMIN - Key required by any ceph action that requires + client admin authentication to run + + CEPH_MON - (Blank) Create a ceph monitor daemon on the image. + CEPH_MON_KEYRING - Location of monitor keyring. Required by the + monitor if using cephx authentication. + CEPH_MON_IP - ip address that the monitor node will have. This is required + if CEPH_MON is set. It should also be set in the CEPH_CONF + file too. + CEPH_CLUSTER_FSID - A uuid for the ceph cluster. This is required if + CEPH_MON is set. It should also be set in the + CEPH_CONF file too. + + CEPH_OSD - (Blank) Create a ceph object storage daemon on the image. + CEPH_OSD_X_DATA_DIR - Location of data directory for OSD. + Create an OSD daemon on image. 'X' is an integer + id, many osd daemons may be run on same server. + CEPH_OSD_STORAGE_DEV - Location of the storage device to be used to host + the osd file system. This is a required field. + + CEPH_MDS - (Blank) Create a metadata server daemon on server. + """ + + def process_args(self, args): + + if "HOSTNAME" not in os.environ: + sys.exit( "ERROR: Need a hostname defined by 'HOSTNAME'" ) + if "CEPH_CONF" not in os.environ: + sys.exit( "ERROR: Need a ceph conf file defined by 'CEPH_CONF'" ) + + self.dest_dir = args[0] + + self.cluster_name = "ceph" + self.hostname = os.environ["HOSTNAME"] + + self.conf_file = "/etc/ceph/{}.conf".format(self.cluster_name) + self.admin_file = os.path.join( "/etc/ceph/", + "{}.client.admin.keyring".format(self.cluster_name) ) + self.mon_dir = "/var/lib/ceph/mon/" + self.osd_dir = "/var/lib/ceph/osd/" + self.mds_dir = "/var/lib/ceph/mds/" + self.tmp_dir = "/var/lib/ceph/tmp/" + self.bootstrap_mds_dir = "/var/lib/ceph/bootstrap-mds/" + self.bootstrap_osd_dir = "/var/lib/ceph/bootstrap-osd/" + self.systemd_dir = "/etc/systemd/system/" + self.systemd_multiuser_dir = \ + "/etc/systemd/system/multi-user.target.wants/" + + + print "Copying from " + os.getcwd() + self.copy_to_img(os.environ["CEPH_CONF"], self.conf_file) + + + # If the clustername is provided set it accprdingly. Default is "ceph" + if "CEPH_CLUSTER" in os.environ: + self.cluster_name = os.environ["CEPH_CLUSTER"] + + # Copy over bootstrap keyrings + if "CEPH_BOOTSTRAP_OSD" in os.environ: + self.copy_bootstrap_osd(os.environ["CEPH_BOOTSTRAP_OSD"]); + if "CEPH_BOOTSTRAP_MDS" in os.environ: + self.copy_bootstrap_mds(os.environ["CEPH_BOOTSTRAP_MDS"]); + + # Copy over admin keyring + if "CEPH_CLIENT_ADMIN" in os.environ: + self.copy_to_img(os.environ["CEPH_CLIENT_ADMIN"], self.admin_file); + + # Configure any monitor daemons + if "CEPH_MON" in os.environ: + + # check for and set self.mon_ip : needs static value. + if "CEPH_MON_IP" not in os.environ: + sys.exit("ERROR: Static ip required for the monitor node") + else: + self.mon_ip = os.environ["CEPH_MON_IP"] + + # Check and set for cluster fsid : can have default + if "CEPH_CLUSTER_FSID" not in os.environ: + sys.exit("ERROR: UUID fsid value required for cluster.") + else: + self.cluster_fsid = os.environ["CEPH_CLUSTER_FSID"] + + self.create_mon_data_dir(os.environ.get("CEPH_MON_KEYRING")) + + # Configure any object storage daemons + if "CEPH_OSD" in os.environ: + + # Check a osd storage device has been provided + if "CEPH_OSD_STORAGE_DEV" not in os.environ: + sys.exit("ERROR: Storage device required. \ + Set 'CEPH_OSD_STORAGE_DEV'.") + else: + self.osd_storage_dev = os.environ["CEPH_OSD_STORAGE_DEV"] + + self.create_osd_startup_script() + + osd_re = r"CEPH_OSD_(\d+)_DATA_DIR$" + + for env in os.environ.keys(): + match = re.match(osd_re, env) + if match: + osd_data_dir_env = match.group(0) + osd_id = match.group(1) + + self.create_osd_data_dir(osd_id, + os.environ.get(osd_data_dir_env)) + + + # Configure any mds daemons + if "CEPH_MDS" in os.environ: + self.create_mds_data_dir() + + # Create a fake 'partprobe' + fake_partprobe_filename = self.dest_dir + "/sbin/partprobe" + fake_partprobe = open(fake_partprobe_filename, 'w') + fake_partprobe.write("#!/bin/bash\nexit 0;\n") + fake_partprobe.close() + os.chmod(fake_partprobe_filename, executable_file_permissions) + self.create_startup_scripts() + + def copy_to_img(self, src_file, dest_file): + shutil.copy(src_file, self.dest_dir + dest_file) + + def copy_bootstrap_osd(self, src_file): + self.copy_to_img(src_file, + os.path.join(self.bootstrap_osd_dir, + "{}.keyring".format(self.cluster_name))) + + def copy_bootstrap_mds(self, src_file): + self.copy_to_img(src_file, + os.path.join(self.bootstrap_mds_dir, + "{}.keyring".format(self.cluster_name))) + + def symlink_to_multiuser(self, fname): + sys.stderr.write( os.path.join("../", fname) ) + sys.stderr.write( self.dest_dir + + os.path.join(self.systemd_multiuser_dir, fname) ) + print "Linking: %s into %s"%(fname, self.systemd_multiuser_dir) + os.symlink(os.path.join("../", fname), + self.dest_dir + + os.path.join(self.systemd_multiuser_dir, fname)) + + def create_mon_data_dir(self, src_keyring): + + # Create systemd file to initialize the monitor data directory + keyring = "" + mon_systemd_fname = systemd_monitor_fname_template + + systemd_script_name = self.dest_dir \ + + os.path.join(self.systemd_dir, mon_systemd_fname) + print "Write monitor systemd script to " + systemd_script_name + mon_systemd = open(systemd_script_name, 'w') + mon_systemd.write(systemd_monitor_template) + mon_systemd.close() + # Create a symlink to the multi user target + self.symlink_to_multiuser(mon_systemd_fname) + + def create_osd_data_dir(self, osd_id, data_dir): + if not data_dir: + data_dir = '/srv/osd' + osd_id + + # Create the osd data dir + os.makedirs(self.dest_dir + data_dir) + + def create_osd_startup_script(self): + osd_systemd_fname = systemd_osd_fname_template + + osd_full_name = self.dest_dir + \ + os.path.join(self.systemd_dir, osd_systemd_fname) + print "Write Storage systemd script to " + osd_full_name + + osd_systemd = open(osd_full_name, 'w') + + osd_systemd.write(systemd_osd_template) + osd_systemd.close() + + # Create a symlink to the multi user target + self.symlink_to_multiuser(osd_systemd_fname) + + def create_mds_data_dir(self): + + # Create the monitor data directory + mds_data_dir = os.path.join(self.mds_dir, + "{}-{}".format(self.cluster_name, self.hostname)) + os.makedirs(self.dest_dir + mds_data_dir) + + # Create sysvinit file to start via sysvinit + sysvinit_file = os.path.join(mds_data_dir, "sysvinit") + open(self.dest_dir + sysvinit_file, 'a').close() + + + def create_startup_scripts(self): + print "Copying startup scripts to node:" + + # Write monitor script if monitor requested + if "CEPH_MON" in os.environ: + head_setup_file = \ + os.path.join(self.dest_dir,"root","setup-ceph-head") + with open(head_setup_file, "w") as hs_file: + hs_file.write( ceph_monitor_config_template.format(self=self) ) + + os.chmod(head_setup_file, executable_file_permissions) + + # Write osd script if osd is requested + elif "CEPH_OSD" in os.environ: + osd_setup_file = \ + os.path.join(self.dest_dir, "root", "setup-ceph-node") + with open(osd_setup_file, "w") as os_file: + os_file.write( ceph_storage_config_template.format(self=self) ) + + os.chmod(osd_setup_file, executable_file_permissions) + + else: + print ("No valid node type defined. " + "A generic ceph node will be created.") + +CephConfigurationExtension().run() diff --git a/old/extensions/cloud-init.configure b/old/extensions/cloud-init.configure new file mode 100755 index 00000000..3bcc0909 --- /dev/null +++ b/old/extensions/cloud-init.configure @@ -0,0 +1,69 @@ +#!/bin/sh +# +# 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 enable the +# cloud-init services. +set -e + +ROOT="$1" + +# Write detailed logs to a special log file if set, otherwise everything +# goes to stdout. +if [ -z "$MORPH_LOG_FD" ]; then + MORPH_LOG_FD=1 +fi + +########################################################################## + +set -e + +case "$CLOUD_INIT" in +''|False|no) + exit 0 + ;; +True|yes) + echo "Configuring cloud-init" + ;; +*) + echo Unrecognised option "$CLOUD_INIT" to CLOUD_INIT + exit 1 + ;; +esac + + +cloud_init_services="cloud-config.service + cloud-init-local.service + cloud-init.service + cloud-final.service" + +# Iterate over the cloud-init services and enable them creating a link +# into /etc/systemd/system/multi-user.target.wants. +# If the services to link are not present, fail. + +services_folder="lib/systemd/system" +for service_name in $cloud_init_services; do + if [ ! -f "$ROOT/$services_folder/$service_name" ]; then + echo "ERROR: Service $service_name is missing." >&2 + echo "Failed to configure cloud-init." + exit 1 + else + echo Enabling systemd service "$service_name" >&"$MORPH_LOG_FD" + ln -sf "/$services_folder/$service_name" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$service_name" + fi +done diff --git a/old/extensions/distbuild-trove-nfsboot.check b/old/extensions/distbuild-trove-nfsboot.check new file mode 100755 index 00000000..e825ac66 --- /dev/null +++ b/old/extensions/distbuild-trove-nfsboot.check @@ -0,0 +1,153 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'distbuild-trove-nfsboot' write extension''' + +import logging +import os +import sys + +import writeexts + + +class DistbuildTroveNFSBootCheckExtension(writeexts.WriteExtension): + + nfsboot_root = '/srv/nfsboot' + remote_user = 'root' + + required_vars = [ + 'DISTBUILD_CONTROLLER', + 'DISTBUILD_GIT_SERVER', + 'DISTBUILD_SHARED_ARTIFACT_CACHE', + 'DISTBUILD_TROVE_ID', + 'DISTBUILD_WORKERS', + 'DISTBUILD_WORKER_SSH_KEY', + ] + + def system_path(self, system_name, version_label=None): + if version_label: + return os.path.join(self.nfsboot_root, system_name, 'systems', + version_label, 'run') + else: + return os.path.join(self.nfsboot_root, system_name) + + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + nfs_host = args[0] + nfs_netloc = '%s@%s' % (self.remote_user, nfs_host) + + version_label = os.getenv('VERSION_LABEL', 'factory') + + missing_vars = [var for var in self.required_vars + if not var in os.environ] + if missing_vars: + raise writeexts.ExtensionError( + 'Please set: %s' % ', '.join(missing_vars)) + + controllers = os.getenv('DISTBUILD_CONTROLLER').split() + workers = os.getenv('DISTBUILD_WORKERS').split() + + if len(controllers) != 1: + raise writeexts.ExtensionError( + 'Please specify exactly one controller.') + + if len(workers) == 0: + raise writeexts.ExtensionError( + 'Please specify at least one worker.') + + upgrade = self.get_environment_boolean('UPGRADE') + + self.check_good_server(nfs_netloc) + + system_names = set(controllers + workers) + for system_name in system_names: + if upgrade: + self.check_upgradeable(nfs_netloc, system_name, version_label) + else: + system_path = self.system_path(system_name) + + if self.remote_directory_exists(nfs_netloc, system_path): + if self.get_environment_boolean('OVERWRITE') == False: + raise writeexts.ExtensionError( + 'System %s already exists at %s:%s. Try `morph ' + 'upgrade` instead of `morph deploy`.' % ( + system_name, nfs_netloc, system_path)) + + def check_good_server(self, netloc): + # FIXME: assumes root + self.check_ssh_connectivity(netloc.split('@')[-1]) + + # Is an NFS server + try: + writeexts.ssh_runcmd( + netloc, ['test', '-e', '/etc/exports']) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s is not an nfs server' + % netloc) + try: + writeexts.ssh_runcmd( + netloc, ['systemctl', 'is-enabled', 'nfs-server.service']) + + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s does not control its ' + 'nfs server by systemd' % netloc) + + # TFTP server exports /srv/nfsboot/tftp + tftp_root = os.path.join(self.nfsboot_root, 'tftp') + try: + writeexts.ssh_runcmd( + netloc, ['test' , '-d', tftp_root]) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s does not export %s' % + (netloc, tftp_root)) + + def check_upgradeable(self, nfs_netloc, system_name, version_label): + '''Check that there is already a version of the system present. + + Distbuild nodes are stateless, so an upgrade is actually pretty much + the same as an initial deployment. This test is just a sanity check. + + ''' + system_path = self.system_path(system_name) + system_version_path = self.system_path(system_name, version_label) + + if not self.remote_directory_exists(nfs_netloc, system_path): + raise writeexts.ExtensionError( + 'System %s not found at %s:%s, cannot deploy an upgrade.' % ( + system_name, nfs_netloc, system_path)) + + if self.remote_directory_exists(nfs_netloc, system_version_path): + if self.get_environment_boolean('OVERWRITE'): + pass + else: + raise writeexts.ExtensionError( + 'System %s version %s already exists at %s:%s.' % ( + system_name, version_label, nfs_netloc, + system_version_path)) + + def remote_directory_exists(self, nfs_netloc, path): + try: + writeexts.ssh_runcmd(nfs_netloc, ['test', '-d', path]) + except writeexts.ExtensionError as e: + logging.debug('SSH exception: %s', e) + return False + + return True + + +DistbuildTroveNFSBootCheckExtension().run() diff --git a/old/extensions/distbuild-trove-nfsboot.write b/old/extensions/distbuild-trove-nfsboot.write new file mode 100755 index 00000000..171a84a8 --- /dev/null +++ b/old/extensions/distbuild-trove-nfsboot.write @@ -0,0 +1,283 @@ +#!/usr/bin/python2 +# Copyright (C) 2013-2015 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, see . + + +'''Morph .write extension for a distbuild network booting off a Trove with NFS. + +''' + + +import os +import subprocess +import sys +import tempfile + +import writeexts + + +class DistbuildTroveNFSBootWriteExtension(writeexts.WriteExtension): + + '''Create an NFS root and kernel on TFTP during Morph's deployment. + + See distbuild-trove-nfsboot.help for documentation. + + ''' + + nfsboot_root = '/srv/nfsboot' + remote_user = 'root' + + def system_path(self, system_name, version_label=None): + if version_label: + # The 'run' directory is kind of a historical artifact. Baserock + # systems that have Btrfs root disks maintain an orig/ and a run/ + # subvolume, so that one can find changes that have been made at + # runtime. For distbuild systems, this isn't necessary because the + # root filesystems of the nodes are effectively stateless. However, + # existing systems have bootloaders configured to look for the + # 'run' directory, so we need to keep creating it. + return os.path.join(self.nfsboot_root, system_name, 'systems', + version_label, 'run') + else: + return os.path.join(self.nfsboot_root, system_name) + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError('Wrong number of command line args') + + local_system_path, nfs_host = args + + nfs_netloc = '%s@%s' % (self.remote_user, nfs_host) + + version_label = os.getenv('VERSION_LABEL', 'factory') + + controller_name = os.getenv('DISTBUILD_CONTROLLER') + worker_names = os.getenv('DISTBUILD_WORKERS').split() + system_names = set([controller_name] + worker_names) + + git_server = os.getenv('DISTBUILD_GIT_SERVER') + shared_artifact_cache = os.getenv('DISTBUILD_SHARED_ARTIFACT_CACHE') + trove_id = os.getenv('DISTBUILD_TROVE_ID') + worker_ssh_key_path = os.getenv('DISTBUILD_WORKER_SSH_KEY') + + host_map = self.parse_host_map_string(os.getenv('HOST_MAP', '')) + + kernel_relpath = self.find_kernel(local_system_path) + + copied_rootfs = None + for system_name in system_names: + remote_system_path = self.system_path(system_name, version_label) + if copied_rootfs is None: + self.transfer_system( + nfs_netloc, local_system_path, remote_system_path) + copied_rootfs = remote_system_path + else: + self.duplicate_remote_system( + nfs_netloc, copied_rootfs, remote_system_path) + + for system_name in system_names: + remote_system_path = self.system_path(system_name, version_label) + self.link_kernel_to_tftpboot_path( + nfs_netloc, system_name, version_label, kernel_relpath) + self.set_hostname( + nfs_netloc, system_name, remote_system_path) + self.write_distbuild_config( + nfs_netloc, system_name, remote_system_path, git_server, + shared_artifact_cache, trove_id, worker_ssh_key_path, + controller_name, worker_names, host_map=host_map) + + self.configure_nfs_exports(nfs_netloc, system_names) + + for system_name in system_names: + self.update_default_version(nfs_netloc, system_name, version_label) + + def parse_host_map_string(self, host_map_string): + '''Parse the HOST_MAP variable + + Returns a dict mapping hostname to value (where value is an IP + address, a fully-qualified domain name, an alternate hostname, or + whatever). + + ''' + pairs = host_map_string.split(' ') + return writeexts.parse_environment_pairs({}, pairs) + + def transfer_system(self, nfs_netloc, local_system_path, + remote_system_path): + self.status(msg='Copying rootfs to %(nfs_netloc)s', + nfs_netloc=nfs_netloc) + writeexts.ssh_runcmd( + nfs_netloc, ['mkdir', '-p', remote_system_path]) + # The deployed rootfs may have been created by OSTree, so definitely + # don't pass --hard-links to `rsync`. + subprocess.check_call( + ['rsync', '--archive', '--delete', '--info=progress2', + '--protect-args', '--partial', '--sparse', '--xattrs', + local_system_path + '/', + '%s:%s' % (nfs_netloc, remote_system_path)], stdout=sys.stdout) + + def duplicate_remote_system(self, nfs_netloc, source_system_path, + target_system_path): + self.status(msg='Duplicating rootfs to %(target_system_path)s', + target_system_path=target_system_path) + writeexts.ssh_runcmd(nfs_netloc, + ['mkdir', '-p', target_system_path]) + # We can't pass --info=progress2 here, because it may not be available + # in the remote 'rsync'. The --info setting was added in RSync 3.1.0, + # old versions of Baserock have RSync 3.0.9. So the user doesn't get + # any progress info on stdout for the 'duplicate' stage. + writeexts.ssh_runcmd(nfs_netloc, + ['rsync', '--archive', '--delete', '--protect-args', '--partial', + '--sparse', '--xattrs', source_system_path + '/', + target_system_path], stdout=sys.stdout) + + def find_kernel(self, local_system_path): + bootdir = os.path.join(local_system_path, 'boot') + image_names = ['vmlinuz', 'zImage', 'uImage'] + + for name in image_names: + try_path = os.path.join(bootdir, name) + if os.path.exists(try_path): + kernel_path = os.path.relpath(try_path, local_system_path) + break + else: + raise writeexts.ExtensionError( + 'Could not find a kernel in the system: none of ' + '%s found' % ', '.join(image_names)) + return kernel_path + + def link_kernel_to_tftpboot_path(self, nfs_netloc, system_name, + version_label, kernel_relpath): + '''Create links for TFTP server for a system's kernel.''' + + remote_system_path = self.system_path(system_name, version_label) + kernel_dest = os.path.join(remote_system_path, kernel_relpath) + + self.status(msg='Creating links to %(name)s kernel in tftp directory', + name=system_name) + tftp_dir = os.path.join(self.nfsboot_root , 'tftp') + + versioned_kernel_name = "%s-%s" % (system_name, version_label) + kernel_name = system_name + + writeexts.ssh_runcmd(nfs_netloc, + ['ln', '-f', kernel_dest, + os.path.join(tftp_dir, versioned_kernel_name)]) + + writeexts.ssh_runcmd(nfs_netloc, + ['ln', '-sf', versioned_kernel_name, + os.path.join(tftp_dir, kernel_name)]) + + def set_remote_file_contents(self, nfs_netloc, path, text): + with tempfile.NamedTemporaryFile() as f: + f.write(text) + f.flush() + subprocess.check_call( + ['scp', f.name, '%s:%s' % (nfs_netloc, path)]) + + def set_hostname(self, nfs_netloc, system_name, system_path): + hostname_path = os.path.join(system_path, 'etc', 'hostname') + self.set_remote_file_contents( + nfs_netloc, hostname_path, system_name + '\n') + + def write_distbuild_config(self, nfs_netloc, system_name, system_path, + git_server, shared_artifact_cache, trove_id, + worker_ssh_key_path, controller_name, + worker_names, host_map = {}): + '''Write /etc/distbuild/distbuild.conf on the node. + + This .write extension takes advantage of the 'generic' mode of + distbuild.configure. Each node is not configured until first-boot, + when distbuild-setup.service runs and configures the node based on the + contents of /etc/distbuild/distbuild.conf. + + ''' + def host(hostname): + return host_map.get(hostname, hostname) + + config = { + 'ARTIFACT_CACHE_SERVER': host(shared_artifact_cache), + 'CONTROLLERHOST': host(controller_name), + 'TROVE_HOST': host(git_server), + 'TROVE_ID': trove_id, + 'DISTBUILD_CONTROLLER': system_name == controller_name, + 'DISTBUILD_WORKER': system_name in worker_names, + 'WORKERS': ', '.join(map(host, worker_names)), + 'WORKER_SSH_KEY': '/etc/distbuild/worker.key', + } + + config_text = '\n'.join( + '%s: %s' % (key, value) for key, value in config.iteritems()) + config_text = \ + '# Generated by distbuild-trove-nfsboot.write\n' + \ + config_text + '\n' + path = os.path.join(system_path, 'etc', 'distbuild') + writeexts.ssh_runcmd( + nfs_netloc, ['mkdir', '-p', path]) + subprocess.check_call( + ['scp', worker_ssh_key_path, '%s:%s' % (nfs_netloc, path)]) + self.set_remote_file_contents( + nfs_netloc, os.path.join(path, 'distbuild.conf'), config_text) + + def configure_nfs_exports(self, nfs_netloc, system_names): + '''Ensure the Trove is set up to export the NFS roots we need. + + This doesn't handle setting up the TFTP daemon. We assume that is + already running. + + ''' + for system_name in system_names: + exported_path = self.system_path(system_name) + exports_path = '/etc/exports' + + # Rather ugly SSH hackery follows to ensure each system path is + # listed in /etc/exports. + try: + writeexts.ssh_runcmd( + nfs_netloc, ['grep', '-q', exported_path, exports_path]) + except writeexts.ExtensionError: + ip_mask = '*' + options = 'rw,no_subtree_check,no_root_squash,async' + exports_string = '%s %s(%s)\n' % (exported_path, ip_mask, + options) + exports_append_sh = '''\ + set -eu + target="$1" + temp=$(mktemp) + cat "$target" > "$temp" + cat >> "$temp" + mv "$temp" "$target" + ''' + writeexts.ssh_runcmd( + nfs_netloc, + ['sh', '-c', exports_append_sh, '--', exports_path], + feed_stdin=exports_string) + + writeexts.ssh_runcmd(nfs_netloc, + ['systemctl', 'restart', 'nfs-server.service']) + + def update_default_version(self, remote_netloc, system_name, + version_label): + self.status(msg='Linking \'default\' to %(version)s for %(system)s', + version=version_label, system=system_name) + system_path = self.system_path(system_name) + system_version_path = os.path.join(system_path, 'systems', + version_label) + default_path = os.path.join(system_path, 'systems', 'default') + + writeexts.ssh_runcmd(remote_netloc, + ['ln', '-sfn', system_version_path, default_path]) + + +DistbuildTroveNFSBootWriteExtension().run() diff --git a/old/extensions/distbuild-trove-nfsboot.write.help b/old/extensions/distbuild-trove-nfsboot.write.help new file mode 100644 index 00000000..62f1455c --- /dev/null +++ b/old/extensions/distbuild-trove-nfsboot.write.help @@ -0,0 +1,49 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + Deploy a distbuild network, using a Trove to serve the kernel and rootfs. + + The `location` argument is the hostname of the Trove system. + + The following configuration values must be specified: + + - DISTBUILD_CONTROLLER: hostname of controller system + - DISTBUILD_WORKERS: hostnames of each worker system + - DISTBUILD_GIT_SERVER: Trove hostname + - DISTBUILD_SHARED_ARTIFACT_CACHE: Trove hostname + - DISTBUILD_TROVE_ID: Trove ID + - DISTBUILD_WORKER_SSH_KEY: SSH key to be used for ssh:// repos + + A note on TROVE_ID: the current distbuild-setup service requires that + a single 'Trove ID' is specified. This is used in Morph for expanding + keyed URLs. If you set TROVE_ID=foo for example, foo:bar will be expanded + to git://$GIT_SERVER/foo, in addition to the standard baserock: and + upstream: prefixes that you can use. + + The WORKER_SSH_KEY must be provided, even if you don't need it. The + distbuild-setup service could be changed to make it optional. + + The following configuration values are optional: + + - HOST_MAP: a list of key=value pairs mapping hostnames to IP addresses, + or fully-qualified domain names. Useful if you + cannot rely on hostname resolution working for your deploment. + + The extension will connect to root@location via ssh to copy the kernel and + rootfs, and configure the nfs server. It will duplicate the kernel and + rootfs once for each node in the distbuild network. + + The deployment mechanism makes assumptions about the bootloader + configuration of the target machines. diff --git a/old/extensions/distbuild.configure b/old/extensions/distbuild.configure new file mode 100644 index 00000000..062aaecc --- /dev/null +++ b/old/extensions/distbuild.configure @@ -0,0 +1,132 @@ +#!/bin/sh +# 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 +# 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" configure extension to configure a Baserock +# build node, as part of a distributed building cluster. It uses the +# following variables from the environment: +# +# * DISTBUILD_CONTROLLER: if 'yes', machine is set up as the controller. +# * DISTBUILD_WORKER: if 'yes', machine is set up as a worker. +# * TROVE_ID: hostname and Trove prefix of the server to pull source +# from and push built artifacts to. +# * TROVE_HOST: FQDN of the same server as in TROVE_ID +# +# The following variable is optional: +# +# * ARTIFACT_CACHE_SERVER: by default artifacts are pushed to the same +# Trove that served the source, but you can use a different one. +# +# The following variable is required for worker nodes only: +# +# * CONTROLLERHOST: hostname or IP address of distbuild controller machine. +# * WORKER_SSH_KEY: identity used to authenticate with Trove +# +# The following variable is required for the controller node only: +# +# * WORKERS: hostnames or IP address of worker nodes, comma-separated. + +set -e + +if [ -n "$DISTBUILD_GENERIC" ]; then + echo "Not configuring the distbuild node, it will be generic" + 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$TROVE_HOST" = "x" ]; then + echo "ERROR: TROVE_HOST needs to be defined." + error_vars=true +fi + +if [ "x$TROVE_ID" = "x" ]; then + echo "ERROR: TROVE_ID needs to be defined." + error_vars=true +fi + +if [ "$DISTBUILD_WORKER" = True ]; then + if ! ssh-keygen -lf "$WORKER_SSH_KEY" > /dev/null 2>&1; then + echo "ERROR: WORKER_SSH_KEY is not a vaild ssh key." + error_vars=true + fi + + if [ "x$CONTROLLERHOST" = "x" ]; then + echo "ERROR: CONTROLLERHOST needs to be defined." + error_vars=true + fi +fi + +if [ "$DISTBUILD_CONTROLLER" = True ]; then + if [ "x$WORKERS" = "x" ]; then + echo "ERROR: WORKERS needs to be defined." + error_vars=true + fi +fi + +if "$error_vars"; then + exit 1 +fi + + +ROOT="$1" + +DISTBUILD_DATA="$ROOT/etc/distbuild" +mkdir -p "$DISTBUILD_DATA" + +# If it's a worker, install the worker ssh key. +if [ "$DISTBUILD_WORKER" = True ] +then + install -m 0644 "$WORKER_SSH_KEY" "$DISTBUILD_DATA/worker.key" +fi + + + +# Create the configuration file +python <<'EOF' >"$DISTBUILD_DATA/distbuild.conf" +import os, sys, yaml + +distbuild_configuration={ + 'TROVE_ID': os.environ['TROVE_ID'], + 'TROVE_HOST': os.environ['TROVE_HOST'], + 'DISTBUILD_WORKER': os.environ['DISTBUILD_WORKER'], + 'DISTBUILD_CONTROLLER': os.environ['DISTBUILD_CONTROLLER'], + 'WORKER_SSH_KEY': '/etc/distbuild/worker.key', +} + + +optional_keys = ('ARTIFACT_CACHE_SERVER', 'CONTROLLERHOST', 'WORKERS', + 'TROVE_BACKUP_KEYS') + +for key in optional_keys: + if key in os.environ: + distbuild_configuration[key] = os.environ[key] + +yaml.dump(distbuild_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/fstab.configure b/old/extensions/fstab.configure new file mode 100755 index 00000000..3e67b585 --- /dev/null +++ b/old/extensions/fstab.configure @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright © 2013-2015 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, see . +# +# =*= License: GPL-2 =*= + + +import os +import sys + +import writeexts + +envvars = {k: v for (k, v) in os.environ.iteritems() if k.startswith('FSTAB_')} + +conf_file = os.path.join(sys.argv[1], 'etc/fstab') +writeexts.write_from_dict(conf_file, envvars) diff --git a/old/extensions/genivi.configure b/old/extensions/genivi.configure new file mode 100644 index 00000000..c5f6dc4f --- /dev/null +++ b/old/extensions/genivi.configure @@ -0,0 +1,124 @@ +#!/bin/sh + +# Copyright (C) 2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True) + eval "$1=true" + ;; + False|'') + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +check_weston_config(){ + weston_ini_folder="$ROOT/usr/share/doc/weston" + case "$GENIVI_WESTON_CONFIG" in + 'baseline'|'') + weston_ini_file=ivi-shell-weston.ini + ;; + 'gdp') + weston_ini_file=gdp-weston.ini + ;; + *) + unnaceptable "GENIVI_WESTON_CONFIG" + ;; + esac + weston_ini_file="$weston_ini_folder/$weston_ini_file" + if [ ! -f "$weston_ini_file" ]; then + echo ERROR: Failed to locate weston config file: $weston_ini_file + exit 1 + fi +} + +check_weston_backend (){ + # If nothing defined, use drm-backend.so + if [ "x$GENIVI_WESTON_BACKEND" == "x" ]; then + echo GENIVI_WESTON_BACLEND not set, defaulting to drm-backend.so + GENIVI_WESTON_BACKEND=drm-backend.so + fi + + backends_folder="$ROOT/usr/lib/weston" + backend_file="$backends_folder/$GENIVI_WESTON_BACKEND" + # Check that the backend exists + echo Checking for "$backend_file" ... + if [ ! -f "$backend_file" ]; then + echo "File $backend_file doesn't exist" + GENIVI_WESTON_BACKEND="$GENIVI_WESTON_BACKEND-backend.so" + backend_file="$backends_folder/$GENIVI_WESTON_BACKEND" + echo Checking for "$backend_file" ... + if [ ! -f "$backend_file" ]; then + echo "File $backend_file doesn't exist" + echo ERROR: Failed to find Weston backend in the system + exit 1 + fi + fi + echo Backend $backend_file found +} + +########################################################################## +# Check variables +########################################################################## + +check_bool GENIVI_WESTON_AUTOSTART +check_weston_config +check_weston_backend + +###################################### +# Create and enable weston.service # +###################################### + +cat > "$ROOT/usr/lib/systemd/system/weston.service" <&2 +} + +warn(){ + echo "$@" >&2 +} + +extract_rootfs(){ + tar -C "$1" -xf @@ROOTFS_TAR_PATH@@ . +} + +make_disk_image(){ + truncate --size "$1" "$2" +} + +format_disk(){ + local disk="$1" + mkfs.ext4 -F -L rootfs "$disk" +} + +install_fs_config(){ + local mountpoint="$1" + local rootdisk="${2-/dev/vda}" + cat >>"$mountpoint/etc/fstab" <&2 + exit 1 +} + +warn(){ + echo "$@" >&2 +} + +info(){ + echo "$@" >&2 +} + +shellescape(){ + echo "'$(echo "$1" | sed -e "s/'/'\\''/g")'" +} + +sedescape(){ + # Escape the passed in string so it can be safely interpolated into + # a sed expression as a literal value. + echo "$1" | sed -e 's/[\/&]/\\&/g' +} + +ROOTDIR="$1" +OUTPUT_TAR="$2" +td="$(mktemp -d)" +IMAGE_SUBDIR="${IMAGE_SUBDIR-image_files}" +SCRIPT_SUBDIR="${SCRIPT_SUBDIR-tools}" +ROOTFS_TAR="${ROOTFS_TAR-rootfs.tar}" + +# Generate shell snippets that will expand to paths to various resources +# needed by the scripts. +# They expand to a single shell word, so constructs like the following work +# SCRIPT_DIR=@@SCRIPT_DIR@@ +# dd if="$SCRIPT_DIR/mbr" of="$disk" count=1 +# tar -C "$mountpoint" -xf @@ROOTFS_TAR_PATH@@ . +find_script_dir='"$(readlink -f "$(dirname "$0")")"' +image_dir="$find_script_dir/../$(shellescape "$IMAGE_SUBDIR")" +rootfs_tar_path="$image_dir/$(shellescape "$ROOTFS_TAR")" + +install_script(){ + local source_file="$1" + local output_dir="$2" + local target_file="$output_dir/$SCRIPT_SUBDIR/$(basename "$source_file" .in)" + sed -e "s/@@SCRIPT_DIR@@/$(sedescape "$find_script_dir")/g" \ + -e "s/@@IMAGE_DIR@@/$(sedescape "$image_dir")/g" \ + -e "s/@@ROOTFS_TAR_PATH@@/$(sedescape "$rootfs_tar_path")/g" \ + "$source_file" \ + | install -D -m 755 /proc/self/fd/0 "$target_file" +} + +install_scripts(){ + local output_dir="$1" + ( + IFS="${INCLUDE_SCRIPTS_SEPARATOR-:}" + for script in $INCLUDE_SCRIPTS; do + local script_path="$(pwd)/$script" + if [ ! -e "$script_path" ]; then + warn Script "$script" not found, ignoring + continue + fi + install_script "$script" "$output_dir" + done + ) +} + +install_bootloader_blobs(){ + local output_dir="$1" + local image_dir="$output_dir/$IMAGE_SUBDIR" + ( + IFS="${BOOTLOADER_BLOBS_SEPARATOR-:}" + for blob in $BOOTLOADER_BLOBS; do + local blob_path="$ROOTDIR/$blob" + if [ ! -e "$blob_path" ]; then + warn Bootloader blob "$blob" not found, ignoring + continue + fi + install -D -m644 "$blob_path" "$image_dir/$(basename "$blob_path")" + done + ) +} + +# Determine a basename for our directory as the same as our tarball with +# extensions removed. This is needed, since tarball packages usually +# have a base directory of its contents, rather then extracting into the +# current directory. +output_dir="$(basename "$OUTPUT_TAR")" +for ext in .xz .bz2 .gzip .gz .tgz .tar; do + output_dir="${output_dir%$ext}" +done + +info Installing scripts +install_scripts "$td/$output_dir" + +info Installing bootloader blobs +install_bootloader_blobs "$td/$output_dir" + +info Writing rootfs tar to "$IMAGE_SUBDIR/$ROOTFS_TAR" +tar -C "$ROOTDIR" -c . \ +| sh -c "${ROOTFS_COMPRESS-cat}" >"$td/$output_dir/$IMAGE_SUBDIR/$ROOTFS_TAR" + +info Writing image package tar to "$OUTPUT_TAR" +tar -C "$td" -c "$output_dir" | sh -c "${OUTPUT_COMPRESS-cat}" >"$OUTPUT_TAR" diff --git a/old/extensions/initramfs.write b/old/extensions/initramfs.write new file mode 100755 index 00000000..1059defa --- /dev/null +++ b/old/extensions/initramfs.write @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2014-2015 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, see . +# +# =*= License: GPL-2 =*= + +set -e + +ROOTDIR="$1" +INITRAMFS_PATH="$2" + +(cd "$ROOTDIR" && + find . -print0 | + cpio -0 -H newc -o) | + gzip -c | install -D -m644 /dev/stdin "$INITRAMFS_PATH" diff --git a/old/extensions/initramfs.write.help b/old/extensions/initramfs.write.help new file mode 100644 index 00000000..54d3ae8c --- /dev/null +++ b/old/extensions/initramfs.write.help @@ -0,0 +1,55 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Create an initramfs for a system by taking an existing system and + converting it to the appropriate format. + + The system must have a `/init` executable as the userland entry-point. + This can have a different path, if `rdinit=$path` is added to + the kernel command line. This can be added to the `rawdisk`, + `virtualbox-ssh` and `kvm` write extensions with the `KERNEL_CMDLINE` + option. + + It is possible to use a ramfs as the final rootfs without a `/init` + executable, by setting `root=/dev/mem`, or `rdinit=/sbin/init`, + but this is beyond the scope for the `initramfs.write` extension. + + The intended use of initramfs.write is to be part of a nested + deployment, so the parent system has an initramfs stored as + `/boot/initramfs.gz`. See the following example: + + name: initramfs-test + kind: cluster + systems: + - morph: minimal-system-x86_64-generic + deploy: + system: + type: rawdisk + location: initramfs-system-x86_64.img + DISK_SIZE: 1G + HOSTNAME: initramfs-system + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: initramfs-x86_64 + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz + + Parameters: + + * location: the path where the initramfs will be installed (e.g. + `boot/initramfs.gz`) in the above example diff --git a/old/extensions/install-essential-files.configure b/old/extensions/install-essential-files.configure new file mode 100755 index 00000000..8314b56d --- /dev/null +++ b/old/extensions/install-essential-files.configure @@ -0,0 +1,40 @@ +#!/usr/bin/env python2 +# Copyright (C) 2015 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, see . + + +''' A Morph configuration extension for adding essential files to a system + +It will read the manifest files located in essential-files/manifest, +then use the contens of those files to determine which files +to install into the target system. + +''' + +import os +import subprocess +import sys + +target_root = sys.argv[1] + +# Clear all INSTALL_FILES environment variable options, +# so we don't end up installing INSTALL_FILES_foo multiple times. +for var in list(os.environ): + if var.startswith("INSTALL_FILES"): + del os.environ[var] + +# Force installation of the essential-files manifest +os.environ["INSTALL_FILES"] = "install-files/essential-files/manifest" +command = "extensions/install-files.configure" +subprocess.check_call([command, target_root]) diff --git a/old/extensions/install-essential-files.configure.help b/old/extensions/install-essential-files.configure.help new file mode 100644 index 00000000..9148aeff --- /dev/null +++ b/old/extensions/install-essential-files.configure.help @@ -0,0 +1,20 @@ +# Copyright (C) 2015 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, see . + +help: | + This installs files from the essential-files/ folder in your + definitions.git repo, according to essential-files/manifest. + + It wraps the install-files.configure extension. Take a look to that + extension help to know more about the format of the manifest file. diff --git a/old/extensions/install-files.configure b/old/extensions/install-files.configure new file mode 100755 index 00000000..54481b97 --- /dev/null +++ b/old/extensions/install-files.configure @@ -0,0 +1,138 @@ +#!/usr/bin/python2 +# Copyright (C) 2013-2015 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, see . + + +''' A Morph configuration extension for adding arbitrary files to a system + +It will read the manifest files specified in environment variables starting +INSTALL_FILES, then use the contens of those files to determine which files +to install into the target system. + +''' + +import errno +import os +import re +import sys +import shlex +import shutil +import stat + +try: + import jinja2 + jinja_available = True +except ImportError: + jinja_available = False + +import writeexts + +class InstallFilesConfigureExtension(writeexts.Extension): + + def process_args(self, args): + if not any(var.startswith('INSTALL_FILES') for var in os.environ): + return + target_root = args[0] + for manifest_var in sorted((var for var in os.environ + if var.startswith('INSTALL_FILES'))): + manifests = shlex.split(os.environ[manifest_var]) + for manifest in manifests: + self.install_manifest(manifest, target_root) + + def install_manifest(self, manifest, target_root): + manifest_dir = os.path.dirname(manifest) + with open(manifest) as f: + entries = f.readlines() + for entry in entries: + self.install_entry(entry, manifest_dir, target_root) + + def force_symlink(self, source, link_name): + try: + os.symlink(source, link_name) + except OSError as e: + if e.errno == errno.EEXIST: + os.remove(link_name) + os.symlink(source, link_name) + + def install_entry(self, entry, manifest_root, target_root): + m = re.match('(template )?(overwrite )?' + '([0-7]+) ([0-9]+) ([0-9]+) (\S+)', entry) + + if m: + template = m.group(1) + overwrite = m.group(2) + mode = int(m.group(3), 8) # mode is octal + uid = int(m.group(4)) + gid = int(m.group(5)) + path = m.group(6) + else: + raise writeexts.ExtensionError( + 'Invalid manifest entry, ' + 'format: [template] [overwrite] ' + ' ') + + dest_path = os.path.join(target_root, './' + path) + if stat.S_ISDIR(mode): + if os.path.exists(dest_path) and not overwrite: + dest_stat = os.stat(dest_path) + if (mode != dest_stat.st_mode + or uid != dest_stat.st_uid + or gid != dest_stat.st_gid): + raise writeexts.ExtensionError( + '"%s" exists and is not identical to directory ' + '"%s"' % (dest_path, entry)) + else: + os.mkdir(dest_path, mode) + os.chown(dest_path, uid, gid) + os.chmod(dest_path, mode) + + elif stat.S_ISLNK(mode): + if os.path.lexists(dest_path) and not overwrite: + raise writeexts.ExtensionError('Symlink already exists at %s' + % dest_path) + else: + linkdest = os.readlink(os.path.join(manifest_root, + './' + path)) + self.force_symlink(linkdest, dest_path) + os.lchown(dest_path, uid, gid) + + elif stat.S_ISREG(mode): + if os.path.lexists(dest_path) and not overwrite: + raise writeexts.ExtensionError('File already exists at %s' + % dest_path) + else: + if template: + if not jinja_available: + raise writeexts.ExtensionError( + "Failed to install template file `%s': " + 'install-files templates require jinja2' + % path) + + loader = jinja2.FileSystemLoader(manifest_root) + env = jinja2.Environment(loader=loader, + keep_trailing_newline=True) + + env.get_template(path).stream(os.environ).dump(dest_path) + else: + shutil.copyfile(os.path.join(manifest_root, './' + path), + dest_path) + + os.chown(dest_path, uid, gid) + os.chmod(dest_path, mode) + + else: + raise writeexts.ExtensionError('Mode given in "%s" is not a file,' + ' symlink or directory' % entry) + +InstallFilesConfigureExtension().run() diff --git a/old/extensions/install-files.configure.help b/old/extensions/install-files.configure.help new file mode 100644 index 00000000..191e1378 --- /dev/null +++ b/old/extensions/install-files.configure.help @@ -0,0 +1,86 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + Install a set of files onto a system + + To use this extension you create a directory of files you want to install + onto the target system. + + In this example we want to copy some ssh keys onto a system + + % mkdir sshkeyfiles + % mkdir -p sshkeyfiles/root/.ssh + % cp id_rsa sshkeyfiles/root/.ssh + % cp id_rsa.pub sshkeyfiles/root/.ssh + + Now we need to create a manifest file to set the file modes + and persmissions. The manifest file should be created inside the + directory that contains the files we're trying to install. + + cat << EOF > sshkeyfiles/manifest + 0040755 0 0 /root/.ssh + 0100600 0 0 /root/.ssh/id_rsa + 0100644 0 0 /root/.ssh/id_rsa.pub + EOF + + Then we add the path to our manifest to our cluster morph, + this path should be relative to the system definitions repository. + + INSTALL_FILES: sshkeysfiles/manifest + + All variables starting INSTALL_FILES are considered, and are processed in + alphabetical order, so if INSTALL_FILES, INSTALL_FILES_distbuild and + INSTALL_FILES_openstack are given, manifests in INSTALL_FILES are processed + before those in INSTALL_FILES_distbuild, followed by INSTALL_FILES_openstack. + + Multiple manifest files may be given in the same INSTALL_FILES variable, + by providing a whitespace separated list. + + Shell word splitting is supported, so if a manifest's path has spaces in, + the path may be shell escaped. + + + More generally entries in the manifest are formatted as: + [overwrite] + + NOTE: Directories on the target must be created if they do not exist. + + The extension supports files, symlinks and directories. + + For example, + + 0100644 0 0 /etc/issue + + creates a regular file at /etc/issue with 644 permissions, + uid 0 and gid 0, if the file doesn't already exist. + + overwrite 0100644 0 0 /etc/issue + + creates a regular file at /etc/issue with 644 permissions, + uid 0 and gid 0, if the file already exists it is overwritten. + + 0100755 0 0 /usr/bin/foo + + creates an executable file at /usr/bin/foo + + 0040755 0 0 /etc/foodir + + creates a directory with 755 permissions + + 0120000 0 0 /usr/bin/bar + + creates a symlink at /usr/bin/bar + + NOTE: You will still need to make a symlink in the manifest directory. diff --git a/old/extensions/installer.configure b/old/extensions/installer.configure new file mode 100755 index 00000000..995038ac --- /dev/null +++ b/old/extensions/installer.configure @@ -0,0 +1,48 @@ +#!/usr/bin/python2 +# +# 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/old/extensions/jffs2.write b/old/extensions/jffs2.write new file mode 100644 index 00000000..8ff918df --- /dev/null +++ b/old/extensions/jffs2.write @@ -0,0 +1,64 @@ +#!/usr/bin/python2 +#-*- coding: utf-8 -*- +# Copyright © 2015 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, see . + + +'''A Morph deployment write extension for creating images with jffs2 + as the root filesystem.''' + + +import os +import subprocess + +import writeexts + + +class Jffs2WriteExtension(writeexts.WriteExtension): + + '''See jffs2.write.help for documentation.''' + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError('Wrong number of command line args') + + temp_root, location = args + + try: + self.create_jffs2_system(temp_root, location) + self.status(msg='Disk image has been created at %(location)s', + location=location) + except Exception: + self.status(msg='Failure to deploy system to %(location)s', + location=location) + raise + + def create_jffs2_system(self, temp_root, location): + erase_block = self.get_erase_block_size() + subprocess.check_call( + ['mkfs.jffs2', '--pad', '--no-cleanmarkers', + '--eraseblock='+erase_block, '-d', temp_root, '-o', location]) + + def get_erase_block_size(self): + erase_block = os.environ.get('ERASE_BLOCK', '') + + if erase_block == '': + raise writeexts.ExtensionError('ERASE_BLOCK was not given') + + if not erase_block.isdigit(): + raise writeexts.ExtensionError('ERASE_BLOCK must be a whole number') + + return erase_block + +Jffs2WriteExtension().run() diff --git a/old/extensions/jffs2.write.help b/old/extensions/jffs2.write.help new file mode 100644 index 00000000..059a354b --- /dev/null +++ b/old/extensions/jffs2.write.help @@ -0,0 +1,28 @@ +#-*- coding: utf-8 -*- +# Copyright © 2015 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, see . + +help: | + + Creates a system produced by Morph build with a jffs2 filesystem and then + writes to an image. To use this extension, the host system must have access + to mkfs.jffs2 which is provided in the mtd-utilities.morph stratum. + + Parameters: + + * location: the pathname of the disk image to be created/upgraded, or the + path to the physical device. + + * ERASE_BLOCK: the erase block size of the target system, which can be + found in '/sys/class/mtd/mtdx/erasesize' diff --git a/old/extensions/kvm.check b/old/extensions/kvm.check new file mode 100755 index 00000000..9ed439dc --- /dev/null +++ b/old/extensions/kvm.check @@ -0,0 +1,171 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'kvm' write extension''' + +import os +import re +import urlparse + +import writeexts + + +class KvmPlusSshCheckExtension(writeexts.WriteExtension): + + location_pattern = '^/(?P[^/]+)(?P/.+)$' + + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise writeexts.ExtensionError( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + + location = args[0] + ssh_host, vm_name, vm_path = self.check_and_parse_location(location) + + self.check_ssh_connectivity(ssh_host) + self.check_can_create_file_at_given_path(ssh_host, vm_path) + self.check_no_existing_libvirt_vm(ssh_host, vm_name) + self.check_extra_disks_exist(ssh_host, self.parse_attach_disks()) + self.check_virtual_networks_are_started(ssh_host) + self.check_host_has_virtinstall(ssh_host) + + def check_and_parse_location(self, location): + '''Check and parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + + if x.scheme != 'kvm+ssh': + raise writeexts.ExtensionError( + 'URL schema must be kvm+ssh in %s' % location) + + m = re.match(self.location_pattern, x.path) + if not m: + raise writeexts.ExtensionError( + 'Cannot parse location %s' % location) + + return x.netloc, m.group('guest'), m.group('path') + + def check_no_existing_libvirt_vm(self, ssh_host, vm_name): + try: + writeexts.ssh_runcmd(ssh_host, + ['virsh', '--connect', 'qemu:///system', 'domstate', vm_name]) + except writeexts.ExtensionError as e: + pass + else: + raise writeexts.ExtensionError( + 'Host %s already has a VM named %s. You can use the ssh-rsync ' + 'write extension to deploy upgrades to existing machines.' % + (ssh_host, vm_name)) + + def check_can_create_file_at_given_path(self, ssh_host, vm_path): + + def check_can_write_to_given_path(): + try: + writeexts.ssh_runcmd(ssh_host, ['touch', vm_path]) + except writeexts.ExtensionError as e: + raise writeexts.ExtensionError( + "Can't write to location %s on %s" % (vm_path, ssh_host)) + else: + writeexts.ssh_runcmd(ssh_host, ['rm', vm_path]) + + try: + writeexts.ssh_runcmd(ssh_host, ['test', '-e', vm_path]) + except writeexts.ExtensionError as e: + # vm_path doesn't already exist, so let's test we can write + check_can_write_to_given_path() + else: + raise writeexts.ExtensionError('%s already exists on %s' + % (vm_path, ssh_host)) + + def check_extra_disks_exist(self, ssh_host, filename_list): + for filename in filename_list: + try: + writeexts.ssh_runcmd(ssh_host, ['ls', filename]) + except writeexts.ExtensionError as e: + raise writeexts.ExtensionError( + 'Did not find file %s on host %s' % (filename, ssh_host)) + + def check_virtual_networks_are_started(self, ssh_host): + + def check_virtual_network_is_started(network_name): + cmd = ['virsh', '-c', 'qemu:///system', 'net-info', network_name] + net_info = writeexts.ssh_runcmd(ssh_host, cmd).split('\n') + + def pretty_concat(lines): + return '\n'.join(['\t%s' % line for line in lines]) + + for line in net_info: + m = re.match('^Active:\W*(\w+)\W*', line) + if m: + break + else: + raise writeexts.ExtensionError( + "Got unexpected output parsing output of `%s':\n%s" + % (' '.join(cmd), pretty_concat(net_info))) + + network_active = m.group(1) == 'yes' + + if not network_active: + raise writeexts.ExtensionError("Network '%s' is not started" + % network_name) + + def name(nic_entry): + if ',' in nic_entry: + # network=NETWORK_NAME,mac=12:34,model=e1000... + return nic_entry[:nic_entry.find(',')].lstrip('network=') + else: + return nic_entry.lstrip('network=') # NETWORK_NAME + + if 'NIC_CONFIG' in os.environ: + nics = os.environ['NIC_CONFIG'].split() + + for n in nics: + if not (n.startswith('network=') + or n.startswith('bridge=') + or n == 'user'): + raise writeexts.ExtensionError( + "malformed NIC_CONFIG: %s\n" + " (expected 'bridge=BRIDGE' 'network=NAME'" + " or 'user')" % n) + + # --network bridge= is used to specify a bridge + # --network user is used to specify a form of NAT + # (see the virt-install(1) man page) + networks = [name(n) for n in nics if not n.startswith('bridge=') + and not n.startswith('user')] + else: + networks = ['default'] + + for network in networks: + check_virtual_network_is_started(network) + + def check_host_has_virtinstall(self, ssh_host): + try: + writeexts.ssh_runcmd(ssh_host, ['which', 'virt-install']) + except writeexts.ExtensionError: + raise writeexts.ExtensionError( + 'virt-install does not seem to be installed on host %s' + % ssh_host) + + +KvmPlusSshCheckExtension().run() diff --git a/old/extensions/kvm.write b/old/extensions/kvm.write new file mode 100755 index 00000000..d29f52e2 --- /dev/null +++ b/old/extensions/kvm.write @@ -0,0 +1,126 @@ +#!/usr/bin/python2 +# Copyright (C) 2012-2015 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, see . + + +'''A Morph deployment write extension for deploying to KVM+libvirt. + +See file kvm.write.help for documentation + +''' + + +import os +import re +import subprocess +import sys +import tempfile +import urlparse + +import writeexts + + +class KvmPlusSshWriteExtension(writeexts.WriteExtension): + + location_pattern = '^/(?P[^/]+)(?P/.+)$' + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + ssh_host, vm_name, vm_path = self.parse_location(location) + autostart = self.get_environment_boolean('AUTOSTART') + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + + try: + self.transfer(raw_disk, ssh_host, vm_path) + self.create_libvirt_guest(ssh_host, vm_name, vm_path, autostart) + except BaseException: + sys.stderr.write('Error deploying to libvirt') + os.remove(raw_disk) + writeexts.ssh_runcmd(ssh_host, ['rm', '-f', vm_path]) + raise + else: + os.remove(raw_disk) + + self.status( + msg='Virtual machine %(vm_name)s has been created', + vm_name=vm_name) + + def parse_location(self, location): + '''Parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + m = re.match('^/(?P[^/]+)(?P/.+)$', x.path) + return x.netloc, m.group('guest'), m.group('path') + + def transfer(self, raw_disk, ssh_host, vm_path): + '''Transfer raw disk image to libvirt host.''' + + self.status(msg='Transferring disk image') + + xfer_hole_path = writeexts.get_data_path('xfer-hole') + recv_hole = writeexts.get_data('recv-hole') + + ssh_remote_cmd = [ + 'sh', '-c', recv_hole, 'dummy-argv0', 'file', vm_path + ] + + xfer_hole_proc = subprocess.Popen( + ['python', xfer_hole_path, raw_disk], + stdout=subprocess.PIPE) + recv_hole_proc = subprocess.Popen( + ['ssh', ssh_host] + map(writeexts.shell_quote, ssh_remote_cmd), + stdin=xfer_hole_proc.stdout) + xfer_hole_proc.stdout.close() + recv_hole_proc.communicate() + + def create_libvirt_guest(self, ssh_host, vm_name, vm_path, autostart): + '''Create the libvirt virtual machine.''' + + self.status(msg='Creating libvirt/kvm virtual machine') + + attach_disks = self.parse_attach_disks() + attach_opts = [] + for disk in attach_disks: + attach_opts.extend(['--disk', 'path=%s' % disk]) + + if 'NIC_CONFIG' in os.environ: + nics = os.environ['NIC_CONFIG'].split() + for nic in nics: + attach_opts.extend(['--network', nic]) + + ram_mebibytes = str(self.get_ram_size() / (1024**2)) + + vcpu_count = str(self.get_vcpu_count()) + + cmdline = ['virt-install', '--connect', 'qemu:///system', + '--import', '--name', vm_name, '--vnc', + '--ram', ram_mebibytes, '--vcpus', vcpu_count, + '--disk', 'path=%s,bus=ide' % vm_path] + attach_opts + if not autostart: + cmdline += ['--noreboot'] + writeexts.ssh_runcmd(ssh_host, cmdline) + + if autostart: + writeexts.ssh_runcmd(ssh_host, + ['virsh', '--connect', 'qemu:///system', + 'autostart', vm_name]) + +KvmPlusSshWriteExtension().run() diff --git a/old/extensions/kvm.write.help b/old/extensions/kvm.write.help new file mode 100644 index 00000000..812a5309 --- /dev/null +++ b/old/extensions/kvm.write.help @@ -0,0 +1,90 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Deploy a Baserock system as a *new* KVM/LibVirt virtual machine. + + Use the `ssh-rsync` write extension to deploy upgrades to an *existing* VM + + Parameters: + + * location: a custom URL scheme of the form `kvm+ssh://HOST/GUEST/PATH`, + where: + * HOST is the name of the host on which KVM/LibVirt is running + * GUEST is the name of the guest VM on that host + * PATH is the path to the disk image that should be created, + on that host. For example, + `kvm+ssh://alice@192.168.122.1/testsys/home/alice/testys.img` where + * `alice@192.168.122.1` is the target host as given to ssh, + **from within the development host** (which may be + different from the target host's normal address); + * `testsys` is the name of the new guest VM'; + * `/home/alice/testys.img` is the pathname of the disk image files + on the target host. + + * HOSTNAME=name: the hostname of the **guest** VM within the network into + which it is being deployed + + * DISK_SIZE=X: the size of the VM's primary virtual hard disk. `X` should + use a suffix of `K`, `M`, or `G` (in upper or lower case) to indicate + kilo-, mega-, or gigabytes. For example, `DISK_SIZE=100G` would create a + 100 gigabyte disk image. **This parameter is mandatory**. + + * RAM_SIZE=X: The amount of RAM that the virtual machine should allocate + for itself from the host. `X` is interpreted in the same was as for + DISK_SIZE`, and defaults to `1G` + + * VCPUS=n: the number of virtual CPUs for the VM. Allowed values 1-32. Do + not use more CPU cores than you have available physically (real cores, no + hyperthreads) + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * AUTOSTART=` - boolean. If it is set, the VM will be started when + it has been deployed. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/old/extensions/mason.configure b/old/extensions/mason.configure new file mode 100644 index 00000000..40fdfe46 --- /dev/null +++ b/old/extensions/mason.configure @@ -0,0 +1,153 @@ +#!/bin/sh +# +# 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 fully configure +# a Mason instance at deployment time. It uses the following variables +# from the environment: +# +# * ARTIFACT_CACHE_SERVER +# * MASON_CLUSTER_MORPHOLOGY +# * MASON_DEFINITIONS_REF +# * MASON_DISTBUILD_ARCH +# * MASON_TEST_HOST +# * OPENSTACK_NETWORK_ID +# * TEST_INFRASTRUCTURE_TYPE +# * TROVE_HOST +# * TROVE_ID +# * CONTROLLERHOST + +set -e + +########################################################################## +# Copy Mason files into root filesystem +########################################################################## + +ROOT="$1" + +mkdir -p "$ROOT"/usr/lib/mason +cp extensions/mason/mason.sh "$ROOT"/usr/lib/mason/mason.sh +cp extensions/mason/mason-report.sh "$ROOT"/usr/lib/mason/mason-report.sh +cp extensions/mason/os-init-script "$ROOT"/usr/lib/mason/os-init-script + +cp extensions/mason/mason.timer "$ROOT"/etc/systemd/system/mason.timer + +cp extensions/mason/mason.service "$ROOT"/etc/systemd/system/mason.service + +########################################################################## +# Set up httpd web server +########################################################################## + +cp extensions/mason/httpd.service "$ROOT"/etc/systemd/system/httpd.service + +mkdir -p "$ROOT"/srv/mason + +cat >>"$ROOT"/etc/httpd.conf <"$MASON_DATA/mason.conf" +import os, sys, yaml + +mason_configuration={ + 'ARTIFACT_CACHE_SERVER': os.environ['ARTIFACT_CACHE_SERVER'], + 'MASON_CLUSTER_MORPHOLOGY': os.environ['MASON_CLUSTER_MORPHOLOGY'], + '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'], +} + +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 ../httpd.service "$ROOT"/etc/systemd/system/multi-user.target.wants/httpd.service diff --git a/old/extensions/mason/ansible/hosts b/old/extensions/mason/ansible/hosts new file mode 100644 index 00000000..5b97818d --- /dev/null +++ b/old/extensions/mason/ansible/hosts @@ -0,0 +1 @@ +localhost ansible_connection=local diff --git a/old/extensions/mason/ansible/mason-setup.yml b/old/extensions/mason/ansible/mason-setup.yml new file mode 100644 index 00000000..d1528dbb --- /dev/null +++ b/old/extensions/mason/ansible/mason-setup.yml @@ -0,0 +1,83 @@ +--- +- hosts: localhost + vars_files: + - "/etc/mason/mason.conf" + tasks: + + + - fail: msg='TROVE_ID is mandatory' + when: TROVE_ID is not defined + + - fail: msg='TROVE_HOST is mandatory' + when: TROVE_HOST is not defined + + - fail: msg='ARTIFACT_CACHE_SERVER is mandatory' + when: ARTIFACT_CACHE_SERVER is not defined + + - fail: msg='MASON_CLUSTER_MORPHOLOGY is mandatory' + when: MASON_CLUSTER_MORPHOLOGY is not defined + + - fail: msg='MASON_DEFINITIONS_REF is mandatory' + when: MASON_DEFINITIONS_REF is not defined + + - fail: msg='MASON_DISTBUILD_ARCH is mandatory' + when: MASON_DISTBUILD_ARCH is not defined + + - fail: msg='MASON_TEST_HOST is mandatory' + when: MASON_TEST_HOST is not defined + + - 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 + - name: Restart the mason service + service: name=mason.service state=restarted + when: mason_service|changed + + - name: Enable the mason timer + service: name=mason.timer enabled=yes + register: mason_timer + - name: Restart the mason timer + service: name=mason.timer state=restarted + when: mason_timer|changed + + - name: Enable the httpd service + service: name=httpd.service enabled=yes + register: httpd_service + - name: Restart the httpd service + service: name=httpd state=restarted + when: httpd_service|changed diff --git a/old/extensions/mason/httpd.service b/old/extensions/mason/httpd.service new file mode 100644 index 00000000..7572b732 --- /dev/null +++ b/old/extensions/mason/httpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=HTTP server for Mason +After=network.target + +[Service] +User=root +ExecStart=/usr/sbin/httpd -f -p 80 -h /srv/mason + +[Install] +WantedBy=multi-user.target diff --git a/old/extensions/mason/mason-generator.sh b/old/extensions/mason/mason-generator.sh new file mode 100755 index 00000000..187db72c --- /dev/null +++ b/old/extensions/mason/mason-generator.sh @@ -0,0 +1,101 @@ +#!/bin/sh + +set -e + +if [ "$#" -lt 5 -o "$#" -gt 6 -o "$1" == "-h" -o "$1" == "--help" ]; then + cat < $REPORT_PATH <<'EOF' + + + + + + + +

Mason

+

Baserock: Continuous Delivery

+

Build log of changes to BRANCH from TROVE. Most recent first.

+ + + + + + + + +
StartedRefDurationResult
+ + + +EOF + + sed -i 's/BRANCH/'"$(sed_escape "$1")"'/' $REPORT_PATH + sed -i 's/TROVE/'"$(sed_escape "$2")"'/' $REPORT_PATH +} + +update_report() { + # Give function params sensible names + build_start_time="$1" + build_trove_host="$2" + build_ref="$3" + build_sha1="$4" + build_duration="$5" + build_result="$6" + report_path="$7" + build_log="$8" + + # Generate template if report file is not there + if [ ! -f $REPORT_PATH ]; then + create_report $build_ref $build_trove_host + fi + + # Build table row for insertion into report file + if [ "$build_result" = nonet ]; then + msg=''"${build_start_time}"'Failed to contact '"${build_trove_host}"''"${build_duration}s"''"${build_result}"'' + else + msg=''"${build_start_time}"''"${build_sha1}"''"${build_duration}s"''"${build_result}"'' + fi + + # Insert report line, newest at top + sed -i 's//\n'"$(sed_escape "$msg")"'/' $report_path +} + +update_report_time() { + # Give function params sensible names + build_start_time="$1" + + # If the report file exists, update the last-checked-for-updates time + if [ -f $REPORT_PATH ]; then + sed -i 's/....-..-.. ..:..:..<\/code>/'"$(sed_escape "$build_start_time")"'<\/code>/' $REPORT_PATH + fi +} + +START_TIME=`date +%Y-%m-%d\ %T` + +update_report_time "$START_TIME" +cp "$REPORT_PATH" "$SERVER_PATH/index.html" + +logfile="$(mktemp)" + +#Update current.log symlink to point to the current build log +ln -sf "$logfile" "$SERVER_PATH"/current.log + +#Copy current server report, to restore when result is "skip" +cp "$SERVER_REPORT_PATH" "$SERVER_REPORT_PATH".bak + +update_report "$START_TIME" \ + "$UPSTREAM_TROVE_ADDRESS" \ + "$DEFINITIONS_REF" \ + "" \ + " - " \ + "progress" \ + "$SERVER_REPORT_PATH" \ + "current.log" + + +/usr/lib/mason/mason.sh 2>&1 | tee "$logfile" +case "${PIPESTATUS[0]}" in +0) + RESULT=pass + ;; +33) + RESULT=skip + ;; +42) + RESULT=nonet + ;; +*) + RESULT=fail + ;; +esac + +# TODO: Update page with last executed time +if [ "$RESULT" = skip ]; then + # Restore copied server report, otherwise the 'progress' row will + # be still present with a broken link after we remove the $logfile + mv "$SERVER_REPORT_PATH".bak "$SERVER_REPORT_PATH" + + rm "$logfile" + exit 0 +fi + +DURATION=$(( $(date +%s) - $(date --date="$START_TIME" +%s) )) +SHA1="$(cd "/ws/mason-definitions-$DEFINITIONS_REF" && git rev-parse HEAD)" +BUILD_LOG="log/${SHA1}--${START_TIME}.log" + +update_report "$START_TIME" \ + "$UPSTREAM_TROVE_ADDRESS" \ + "$DEFINITIONS_REF" \ + "$SHA1" \ + "$DURATION" \ + "$RESULT" \ + "$REPORT_PATH" \ + "$BUILD_LOG" + + +# +# Copy report into server directory +# + +cp "$REPORT_PATH" "$SERVER_REPORT_PATH" +mkdir "$SERVER_PATH/log" +mv "$logfile" "$SERVER_PATH/$BUILD_LOG" + +# Cleanup + +mkdir -p /srv/distbuild/remove +find /srv/distbuild/ -not \( -name "remove" -o -name "trees.cache.pickle" \) -mindepth 1 -maxdepth 1 -exec mv '{}' /srv/distbuild/remove \; +find /srv/distbuild/remove -delete diff --git a/old/extensions/mason/mason-setup.service b/old/extensions/mason/mason-setup.service new file mode 100644 index 00000000..60403bde --- /dev/null +++ b/old/extensions/mason/mason-setup.service @@ -0,0 +1,16 @@ +[Unit] +Description=Run mason-setup Ansible scripts +Requires=network.target +After=network.target +Requires=opensshd.service +After=opensshd.service + +# If there's a shared /var subvolume, it must be mounted before this +# unit runs. +Requires=local-fs.target +After=local-fs.target + +ConditionPathExists=/etc/mason/mason.conf + +[Service] +ExecStart=/usr/bin/ansible-playbook -v -i /usr/lib/mason-setup/ansible/hosts /usr/lib/mason-setup/ansible/mason-setup.yml diff --git a/old/extensions/mason/mason.service b/old/extensions/mason/mason.service new file mode 100644 index 00000000..d5c99498 --- /dev/null +++ b/old/extensions/mason/mason.service @@ -0,0 +1,12 @@ +[Unit] +Description=Mason: Continuous Delivery Service +After=mason-setup.service +ConditionPathIsDirectory=/srv/distbuild + +[Service] +User=root +ExecStart=/usr/lib/mason/mason-report.sh +WorkingDirectory=/srv/distbuild + +[Install] +WantedBy=multi-user.target diff --git a/old/extensions/mason/mason.sh b/old/extensions/mason/mason.sh new file mode 100755 index 00000000..8b2cea5f --- /dev/null +++ b/old/extensions/mason/mason.sh @@ -0,0 +1,90 @@ +#!/bin/sh + +# Load OpenStack credentials +if [ -f "/etc/os.conf" ]; then + . /etc/os.conf +fi + +set -e +set -x + +# Load our deployment config +. /etc/mason.conf + +mkdir -p /ws + +definitions_repo=/ws/mason-definitions-"$DEFINITIONS_REF" +if [ ! -e "$definitions_repo" ]; then + git clone -b "$DEFINITIONS_REF" git://"$UPSTREAM_TROVE_ADDRESS"/baserock/baserock/definitions "$definitions_repo" + cd "$definitions_repo" + git config user.name "$TROVE_ID"-mason + git config user.email "$TROVE_ID"-mason@$(hostname) +else + cd "$definitions_repo" + SHA1_PREV="$(git rev-parse HEAD)" +fi + +if ! git remote update origin; then + echo ERROR: Unable to contact trove + exit 42 +fi +git clean -fxd +git reset --hard origin/"$DEFINITIONS_REF" + +SHA1="$(git rev-parse HEAD)" + +if [ -f "$HOME/success" ] && [ "$SHA1" = "$SHA1_PREV" ]; then + echo INFO: No changes to "$DEFINITIONS_REF", nothing to do + exit 33 +fi + +rm -f "$HOME/success" + +echo INFO: Mason building: $DEFINITIONS_REF at $SHA1 + +if ! "scripts/release-build" --no-default-configs \ + --trove-host "$UPSTREAM_TROVE_ADDRESS" \ + --artifact-cache-server "http://$ARTIFACT_CACHE_SERVER:8080/" \ + --controllers "$DISTBUILD_ARCH:$DISTBUILD_CONTROLLER_ADDRESS" \ + "$BUILD_CLUSTER_MORPHOLOGY"; then + echo ERROR: Failed to build release images + echo Build logs for chunks: + find build-* -type f -exec echo {} \; -exec cat {} \; + exit 1 +fi + +releases_made="$(cd release && ls | wc -l)" +if [ "$releases_made" = 0 ]; then + echo ERROR: No release images created + exit 1 +else + echo INFO: Created "$releases_made" release images +fi + +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" \ + --log-level=debug --log="$HOME"/release-upload.log \ + --public-trove-host "$UPSTREAM_TROVE_ADDRESS" \ + --public-trove-username root \ + --public-trove-artifact-dir /home/cache/artifacts \ + --no-upload-release-artifacts \ + "$BUILD_CLUSTER_MORPHOLOGY" + +echo INFO: Artifact upload complete for $DEFINITIONS_REF at $SHA1 + +touch "$HOME/success" diff --git a/old/extensions/mason/mason.timer b/old/extensions/mason/mason.timer new file mode 100644 index 00000000..107dff97 --- /dev/null +++ b/old/extensions/mason/mason.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Runs Mason continually with 1 min between calls + +[Timer] +#Time between Mason finishing and calling it again +OnUnitActiveSec=1min +Unit=mason.service + +[Install] +WantedBy=multi-user.target diff --git a/old/extensions/mason/os-init-script b/old/extensions/mason/os-init-script new file mode 100644 index 00000000..77afb926 --- /dev/null +++ b/old/extensions/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/old/extensions/mason/share/mason.conf b/old/extensions/mason/share/mason.conf new file mode 100644 index 00000000..1295ce84 --- /dev/null +++ b/old/extensions/mason/share/mason.conf @@ -0,0 +1,14 @@ +# This file is generarated by the mason-setup systemd unit. +# If you want to change the configuration, change the configuration +# in /etc/mason/mason.conf and restart the service. + +ARTIFACT_CACHE_SERVER={{ ARTIFACT_CACHE_SERVER|quote }} +UPSTREAM_TROVE_ADDRESS={{ TROVE_HOST|quote }} +DEFINITIONS_REF={{ MASON_DEFINITIONS_REF|quote }} +DISTBUILD_ARCH={{ MASON_DISTBUILD_ARCH|quote }} +DISTBUILD_CONTROLLER_ADDRESS={{ CONTROLLERHOST|quote }} +TROVE_ID={{ TROVE_ID|quote }} +BUILD_CLUSTER_MORPHOLOGY={{ MASON_CLUSTER_MORPHOLOGY|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/old/extensions/mason/share/os.conf b/old/extensions/mason/share/os.conf new file mode 100644 index 00000000..21ef398c --- /dev/null +++ b/old/extensions/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/old/extensions/moonshot-kernel.configure b/old/extensions/moonshot-kernel.configure new file mode 100644 index 00000000..11d01751 --- /dev/null +++ b/old/extensions/moonshot-kernel.configure @@ -0,0 +1,33 @@ +#!/bin/sh +# +# 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 convert a plain +# kernel Image to uImage, for an HP Moonshot m400 cartridge + +set -eu + +case "$MOONSHOT_KERNEL" in + True|yes) + echo "Converting kernel image for Moonshot" + mkimage -A arm -O linux -C none -T kernel -a 0x00080000 \ + -e 0x00080000 -n Linux -d "$1/boot/vmlinux" "$1/boot/uImage" + ;; + *) + echo Unrecognised option "$MOONSHOT_KERNEL" to MOONSHOT_KERNEL + exit 1 + ;; +esac diff --git a/old/extensions/nfsboot-server.configure b/old/extensions/nfsboot-server.configure new file mode 100755 index 00000000..9fb48096 --- /dev/null +++ b/old/extensions/nfsboot-server.configure @@ -0,0 +1,58 @@ +#!/bin/sh +# +# 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 +# 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 set up a server for +# booting over nfs and tftp. +set -e + +ROOT="$1" + +########################################################################## + +nfsboot_root=/srv/nfsboot +tftp_root="$nfsboot_root"/tftp +nfs_root="$nfsboot_root"/nfs +mkdir -p "$ROOT$tftp_root" "$ROOT$nfs_root" + +install -D /dev/stdin "$ROOT/usr/lib/systemd/system/nfsboot-tftp.service" <. + +'''Preparatory checks for Morph 'nfsboot' write extension''' + +import os + +import writeexts + + +class NFSBootCheckExtension(writeexts.WriteExtension): + + _nfsboot_root = '/srv/nfsboot' + + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + location = args[0] + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise writeexts.ExtensionError( + 'Upgrading is not currently supported for NFS deployments.') + + hostname = os.environ.get('HOSTNAME', None) + if hostname is None: + raise writeexts.ExtensionError('You must specify a HOSTNAME.') + if hostname == 'baserock': + raise writeexts.ExtensionError('It is forbidden to nfsboot a ' + 'system with hostname "%s"' + % hostname) + + self.test_good_server(location) + + version_label = os.getenv('VERSION_LABEL', 'factory') + versioned_root = os.path.join(self._nfsboot_root, hostname, 'systems', + version_label) + if self.version_exists(versioned_root, location): + raise writeexts.ExtensionError( + 'Root file system for host %s (version %s) already exists on ' + 'the NFS server %s. Deployment aborted.' % (hostname, + version_label, location)) + + def test_good_server(self, server): + self.check_ssh_connectivity(server) + + # Is an NFS server + try: + writeexts.ssh_runcmd( + 'root@%s' % server, ['test', '-e', '/etc/exports']) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s is not an nfs server' + % server) + try: + writeexts.ssh_runcmd( + 'root@%s' % server, ['systemctl', 'is-enabled', + 'nfs-server.service']) + + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s does not control its ' + 'nfs server by systemd' % server) + + # TFTP server exports /srv/nfsboot/tftp + tftp_root = os.path.join(self._nfsboot_root, 'tftp') + try: + writeexts.ssh_runcmd( + 'root@%s' % server, ['test' , '-d', tftp_root]) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('server %s does not export %s' % + (tftp_root, server)) + + def version_exists(self, versioned_root, location): + try: + writeexts.ssh_runcmd('root@%s' % location, + ['test', '-d', versioned_root]) + except writeexts.ExtensionError: + return False + + return True + + +NFSBootCheckExtension().run() diff --git a/old/extensions/nfsboot.configure b/old/extensions/nfsboot.configure new file mode 100755 index 00000000..6a68dc48 --- /dev/null +++ b/old/extensions/nfsboot.configure @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2013-2015 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, see . + + +# Remove all networking interfaces. On nfsboot systems, eth0 is set up +# during kernel init, and the normal ifup@eth0.service systemd unit +# would break the NFS connection and cause the system to hang. + + +set -e +if [ "$NFSBOOT_CONFIGURE" ]; then + # Remove all networking interfaces but loopback + cat > "$1/etc/network/interfaces" <. + + +'''A Morph deployment write extension for deploying to an nfsboot server + +*** DO NOT USE *** +- This was written before 'proper' deployment mechanisms were in place +It is unlikely to work at all and will not work correctly + +Use the pxeboot write extension instead + +*** + + + +An nfsboot server is defined as a baserock system that has tftp and nfs +servers running, the tftp server is exporting the contents of +/srv/nfsboot/tftp/ and the user has sufficient permissions to create nfs roots +in /srv/nfsboot/nfs/ + +''' + + +import glob +import os +import subprocess + +import writeexts + + +class NFSBootWriteExtension(writeexts.WriteExtension): + + '''Create an NFS root and kernel on TFTP during Morph's deployment. + + The location command line argument is the hostname of the nfsboot server. + The user is expected to provide the location argument + using the following syntax: + + HOST + + where: + + * HOST is the host of the nfsboot server + + The extension will connect to root@HOST via ssh to copy the kernel and + rootfs, and configure the nfs server. + + It requires root because it uses systemd, and reads/writes to /etc. + + ''' + + _nfsboot_root = '/srv/nfsboot' + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + + version_label = os.getenv('VERSION_LABEL', 'factory') + hostname = os.environ['HOSTNAME'] + + versioned_root = os.path.join(self._nfsboot_root, hostname, 'systems', + version_label) + + self.copy_rootfs(temp_root, location, versioned_root, hostname) + self.copy_kernel(temp_root, location, versioned_root, version_label, + hostname) + self.configure_nfs(location, hostname) + + def create_local_state(self, location, hostname): + statedir = os.path.join(self._nfsboot_root, hostname, 'state') + subdirs = [os.path.join(statedir, 'home'), + os.path.join(statedir, 'opt'), + os.path.join(statedir, 'srv')] + writeexts.ssh_runcmd('root@%s' % location, + ['mkdir', '-p'] + subdirs) + + def copy_kernel(self, temp_root, location, versioned_root, version, + hostname): + bootdir = os.path.join(temp_root, 'boot') + image_names = ['vmlinuz', 'zImage', 'uImage'] + for name in image_names: + try_path = os.path.join(bootdir, name) + if os.path.exists(try_path): + kernel_src = try_path + break + else: + raise writeexts.ExtensionError( + 'Could not find a kernel in the system: none of ' + '%s found' % ', '.join(image_names)) + + kernel_dest = os.path.join(versioned_root, 'orig', 'kernel') + rsync_dest = 'root@%s:%s' % (location, kernel_dest) + self.status(msg='Copying kernel') + subprocess.check_call( + ['rsync', '-s', kernel_src, rsync_dest]) + + # Link the kernel to the right place + self.status(msg='Creating links to kernel in tftp directory') + tftp_dir = os.path.join(self._nfsboot_root , 'tftp') + versioned_kernel_name = "%s-%s" % (hostname, version) + kernel_name = hostname + try: + writeexts.ssh_runcmd('root@%s' % location, + ['ln', '-f', kernel_dest, + os.path.join(tftp_dir, versioned_kernel_name)]) + + writeexts.ssh_runcmd('root@%s' % location, + ['ln', '-sf', versioned_kernel_name, + os.path.join(tftp_dir, kernel_name)]) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('Could not create symlinks to the ' + 'kernel at %s in %s on %s' % + (kernel_dest, tftp_dir, location)) + + def copy_rootfs(self, temp_root, location, versioned_root, hostname): + rootfs_src = temp_root + '/' + orig_path = os.path.join(versioned_root, 'orig') + run_path = os.path.join(versioned_root, 'run') + + self.status(msg='Creating destination directories') + try: + writeexts.ssh_runcmd('root@%s' % location, + ['mkdir', '-p', orig_path, run_path]) + except writeexts.ExtensionError: + raise writexts.ExtensionError( + 'Could not create dirs %s and %s on %s' + % (orig_path, run_path, location)) + + self.status(msg='Creating \'orig\' rootfs') + subprocess.check_call( + ['rsync', '-asXSPH', '--delete', rootfs_src, + 'root@%s:%s' % (location, orig_path)]) + + self.status(msg='Creating \'run\' rootfs') + try: + writeexts.ssh_runcmd('root@%s' % location, + ['rm', '-rf', run_path]) + writeexts.ssh_runcmd('root@%s' % location, + ['cp', '-al', orig_path, run_path]) + writeexts.ssh_runcmd('root@%s' % location, + ['rm', '-rf', + os.path.join(run_path, 'etc')]) + writeexts.ssh_runcmd('root@%s' % location, + ['cp', '-a', + os.path.join(orig_path, 'etc'), + os.path.join(run_path, 'etc')]) + except writeexts.ExtensionError: + raise writeexts.ExtensionError('Could not create \'run\' rootfs' + ' from \'orig\'') + + self.status(msg='Linking \'default\' to latest system') + try: + writeexts.ssh_runcmd('root@%s' % location, + ['ln', '-sfn', versioned_root, + os.path.join(self._nfsboot_root, hostname, 'systems', + 'default')]) + except writeexts.ExtensionError: + raise writeexts.ExtensionError("Could not link 'default' to %s" + % versioned_root) + + def configure_nfs(self, location, hostname): + exported_path = os.path.join(self._nfsboot_root, hostname) + exports_path = '/etc/exports' + # If that path is not already exported: + try: + writeexts.ssh_runcmd( + 'root@%s' % location, ['grep', '-q', exported_path, + exports_path]) + except writeexts.ExtensionError: + ip_mask = '*' + options = 'rw,no_subtree_check,no_root_squash,async' + exports_string = '%s %s(%s)\n' % (exported_path, ip_mask, options) + exports_append_sh = '''\ +set -eu +target="$1" +temp=$(mktemp) +cat "$target" > "$temp" +cat >> "$temp" +mv "$temp" "$target" +''' + writeexts.ssh_runcmd( + 'root@%s' % location, + ['sh', '-c', exports_append_sh, '--', exports_path], + feed_stdin=exports_string) + writeexts.ssh_runcmd( + 'root@%s' % location, ['systemctl', 'restart', + 'nfs-server.service']) + + +NFSBootWriteExtension().run() diff --git a/old/extensions/nfsboot.write.help b/old/extensions/nfsboot.write.help new file mode 100644 index 00000000..186c479a --- /dev/null +++ b/old/extensions/nfsboot.write.help @@ -0,0 +1,33 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + *** DO NOT USE *** + - This was written before 'proper' deployment mechanisms were in place. + It is unlikely to work at all, and will not work correctly. + + Use the pxeboot write extension instead + + *** + Deploy a system image and kernel to an nfsboot server. + + An nfsboot server is defined as a baserock system that has + tftp and nfs servers running, the tftp server is exporting + the contents of /srv/nfsboot/tftp/ and the user has sufficient + permissions to create nfs roots in /srv/nfsboot/nfs/. + + The `location` argument is the hostname of the nfsboot server. + + The extension will connect to root@HOST via ssh to copy the + kernel and rootfs, and configure the nfs server. diff --git a/old/extensions/openstack-ceilometer.configure b/old/extensions/openstack-ceilometer.configure new file mode 100644 index 00000000..a98c4d73 --- /dev/null +++ b/old/extensions/openstack-ceilometer.configure @@ -0,0 +1,122 @@ +#!/bin/sh + +# Copyright (C) 2015 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. + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool CEILOMETER_ENABLE_CONTROLLER +check_bool CEILOMETER_ENABLE_COMPUTE + +if ! "$CEILOMETER_ENABLE_CONTROLLER" && \ + ! "$CEILOMETER_ENABLE_COMPUTE"; then + exit 0 +fi + +if [ -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" -o \ + -z "$CEILOMETER_SERVICE_USER" -o \ + -z "$CEILOMETER_SERVICE_PASSWORD" -o \ + -z "$CEILOMETER_DB_USER" -o \ + -z "$CEILOMETER_DB_PASSWORD" -o \ + -z "$METERING_SECRET" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$NOVA_VIRT_TYPE" -o \ + -z "$CONTROLLER_HOST_ADDRESS" ]; then + echo Some options required for Ceilometer were defined, but not all. + exit 1 +fi + +###################################### +# Enable relevant openstack services # +###################################### + +if "$CEILOMETER_ENABLE_COMPUTE" || "$CEILOMETER_ENABLE_CONTROLLER"; then + enable openstack-ceilometer-config-setup +fi +if "$CEILOMETER_ENABLE_COMPUTE"; then + enable openstack-ceilometer-compute +fi +if "$CEILOMETER_ENABLE_CONTROLLER"; then + enable openstack-ceilometer-db-setup + enable openstack-ceilometer-api + enable openstack-ceilometer-collector + enable openstack-ceilometer-notification + enable openstack-ceilometer-central + enable openstack-ceilometer-alarm-evaluator + enable openstack-ceilometer-alarm-notifier +fi + +########################################################################## +# Generate configuration file +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/ceilometer.conf" +import os, sys, yaml + +ceilometer_configuration={ + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], + 'CEILOMETER_SERVICE_PASSWORD': os.environ['CEILOMETER_SERVICE_PASSWORD'], + 'CEILOMETER_SERVICE_USER': os.environ['CEILOMETER_SERVICE_USER'], + 'CEILOMETER_DB_USER': os.environ['CEILOMETER_DB_USER'], + 'CEILOMETER_DB_PASSWORD': os.environ['CEILOMETER_DB_PASSWORD'], + 'METERING_SECRET': os.environ['METERING_SECRET'], + 'RABBITMQ_HOST': os.environ['RABBITMQ_HOST'], + 'RABBITMQ_PORT': os.environ['RABBITMQ_PORT'], + 'RABBITMQ_USER': os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD': os.environ['RABBITMQ_PASSWORD'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], + 'NOVA_VIRT_TYPE': os.environ['NOVA_VIRT_TYPE'], +} + +yaml.dump(ceilometer_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-cinder.configure b/old/extensions/openstack-cinder.configure new file mode 100644 index 00000000..4c32e11a --- /dev/null +++ b/old/extensions/openstack-cinder.configure @@ -0,0 +1,125 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool CINDER_ENABLE_CONTROLLER +check_bool CINDER_ENABLE_COMPUTE +check_bool CINDER_ENABLE_STORAGE + +if ! "$CINDER_ENABLE_CONTROLLER" && \ + ! "$CINDER_ENABLE_COMPUTE" && \ + ! "$CINDER_ENABLE_STORAGE"; then + exit 0 +fi + +if [ -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" -o \ + -z "$CINDER_DB_USER" -o \ + -z "$CINDER_DB_PASSWORD" -o \ + -z "$CONTROLLER_HOST_ADDRESS" -o \ + -z "$CINDER_SERVICE_USER" -o \ + -z "$CINDER_SERVICE_PASSWORD" -o \ + -z "$CINDER_DEVICE" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" ]; then + echo Some options required for Cinder were defined, but not all. + exit 1 +fi + +###################################### +# Enable relevant openstack services # +###################################### + +if "$CINDER_ENABLE_COMPUTE" || "$CINDER_ENABLE_STORAGE"; then + enable iscsi-setup + enable target #target.service! + enable iscsid +fi +if "$CINDER_ENABLE_COMPUTE" || "$CINDER_ENABLE_CONTROLLER" || "$CINDER_ENABLE_STORAGE"; then + enable openstack-cinder-config-setup +fi +if "$CINDER_ENABLE_STORAGE"; then + enable openstack-cinder-lv-setup + enable lvm2-lvmetad + enable openstack-cinder-volume + enable openstack-cinder-backup + enable openstack-cinder-scheduler +fi +if "$CINDER_ENABLE_CONTROLLER"; then + enable openstack-cinder-db-setup + enable openstack-cinder-api +fi + +########################################################################## +# Generate configuration file +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/cinder.conf" +import os, sys, yaml + +cinder_configuration={ + 'RABBITMQ_HOST':os.environ['RABBITMQ_HOST'], + 'RABBITMQ_PORT':os.environ['RABBITMQ_PORT'], + 'RABBITMQ_USER':os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD':os.environ['RABBITMQ_PASSWORD'], + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN':os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], + 'CINDER_DB_USER':os.environ['CINDER_DB_USER'], + 'CINDER_DB_PASSWORD':os.environ['CINDER_DB_PASSWORD'], + 'CONTROLLER_HOST_ADDRESS':os.environ['CONTROLLER_HOST_ADDRESS'], + 'CINDER_SERVICE_USER':os.environ['CINDER_SERVICE_USER'], + 'CINDER_SERVICE_PASSWORD':os.environ['CINDER_SERVICE_PASSWORD'], + 'CINDER_DEVICE':os.environ['CINDER_DEVICE'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS':os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], +} + +yaml.dump(cinder_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-glance.configure b/old/extensions/openstack-glance.configure new file mode 100644 index 00000000..5da08895 --- /dev/null +++ b/old/extensions/openstack-glance.configure @@ -0,0 +1,101 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool GLANCE_ENABLE_SERVICE + +if ! "$GLANCE_ENABLE_SERVICE"; then + exit 0 +fi + +if [ -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" -o \ + -z "$GLANCE_SERVICE_USER" -o \ + -z "$GLANCE_SERVICE_PASSWORD" -o \ + -z "$GLANCE_DB_USER" -o \ + -z "$GLANCE_DB_PASSWORD" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$CONTROLLER_HOST_ADDRESS" ]; then + echo Some options required for Glance were defined, but not all. + exit 1 +fi + +###################################### +# Enable relevant openstack services # +###################################### + +enable openstack-glance-setup + +########################################################################## +# Generate configuration file +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/glance.conf" +import os, sys, yaml + +glance_configuration={ + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], + 'GLANCE_SERVICE_PASSWORD': os.environ['GLANCE_SERVICE_PASSWORD'], + 'GLANCE_SERVICE_USER': os.environ['GLANCE_SERVICE_USER'], + 'GLANCE_DB_USER': os.environ['GLANCE_DB_USER'], + 'GLANCE_DB_PASSWORD': os.environ['GLANCE_DB_PASSWORD'], + 'RABBITMQ_HOST': os.environ['RABBITMQ_HOST'], + 'RABBITMQ_PORT': os.environ['RABBITMQ_PORT'], + 'RABBITMQ_USER': os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD': os.environ['RABBITMQ_PASSWORD'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], +} + +yaml.dump(glance_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-ironic.configure b/old/extensions/openstack-ironic.configure new file mode 100644 index 00000000..c77b1288 --- /dev/null +++ b/old/extensions/openstack-ironic.configure @@ -0,0 +1,157 @@ +#!/bin/sh + +# Copyright (C) 2015 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. + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool IRONIC_ENABLE_SERVICE + +if ! "$IRONIC_ENABLE_SERVICE"; then + exit 0 +fi + +if [ -z "$IRONIC_SERVICE_USER" -o \ + -z "$IRONIC_SERVICE_PASSWORD" -o \ + -z "$IRONIC_DB_USER" -o \ + -z "$IRONIC_DB_PASSWORD" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$CONTROLLER_HOST_ADDRESS" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" ]; then + echo Some options required for Ironic were defined, but not all. + exit 1 +fi + +###################################### +# Enable relevant openstack services # +###################################### + +enable openstack-ironic-setup +enable iscsi-setup +enable target #target.service! +enable iscsid + +########################################################################## +# Generate configuration file +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/ironic.conf" +import os, sys, yaml + +ironic_configuration={ + 'IRONIC_SERVICE_USER': os.environ['IRONIC_SERVICE_USER'], + 'IRONIC_SERVICE_PASSWORD': os.environ['IRONIC_SERVICE_PASSWORD'], + 'IRONIC_DB_USER': os.environ['IRONIC_DB_USER'], + 'IRONIC_DB_PASSWORD': os.environ['IRONIC_DB_PASSWORD'], + 'RABBITMQ_HOST':os.environ['RABBITMQ_HOST'], + 'RABBITMQ_PORT':os.environ['RABBITMQ_PORT'], + 'RABBITMQ_USER':os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD':os.environ['RABBITMQ_PASSWORD'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], + +} + +yaml.dump(ironic_configuration, sys.stdout, default_flow_style=False) +EOF + +########################################################################## +# Configure the TFTP service # +########################################################################## + +tftp_root="/srv/tftp_root/" # trailing slash is essential +mkdir -p "$ROOT/$tftp_root" + +install -D /dev/stdin -m 644 "$ROOT/usr/lib/systemd/system/tftp-hpa.service" << 'EOF' +[Unit] +Description=tftp service for booting kernels +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +EnvironmentFile=/etc/tftp-hpa.conf +ExecStart=/usr/sbin/in.tftpd $TFTP_OPTIONS ${TFTP_ROOT} +StandardInput=socket +StandardOutput=inherit +StandardError=journal + +[Install] +WantedBy=multi-user.target +EOF + +install -D /dev/stdin -m 644 "$ROOT/usr/lib/systemd/system/tftp-hpa.socket" << EOF +[Unit] +Description=Tftp server activation socket + +[Socket] +ListenDatagram=$MANAGEMENT_INTERFACE_IP_ADDRESS:69 +FreeBind=yes + +[Install] +WantedBy=sockets.target +EOF + +install -D -m 644 /dev/stdin "$ROOT"/etc/tftp-hpa.conf << EOF +TFTP_ROOT=$tftp_root +TFTP_OPTIONS="-v -v -v -v -v --map-file $tftp_root/map-file" +EOF + +install -D /dev/stdin -m 644 "$ROOT/$tftp_root"/map-file << EOF +r ^([^/]) $tftp_root\1 +r ^/tftpboot/ $tftp_root\2 +EOF + +cp "$ROOT"/usr/share/syslinux/pxelinux.0 "$ROOT/$tftp_root" +cp "$ROOT"/usr/share/syslinux/chain.c32 "$ROOT/$tftp_root" + diff --git a/old/extensions/openstack-keystone.configure b/old/extensions/openstack-keystone.configure new file mode 100644 index 00000000..6b011b14 --- /dev/null +++ b/old/extensions/openstack-keystone.configure @@ -0,0 +1,123 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool KEYSTONE_ENABLE_SERVICE + +if ! "$KEYSTONE_ENABLE_SERVICE"; then + exit 0 +fi + +if [ -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" -o \ + -z "$KEYSTONE_ADMIN_PASSWORD" -o \ + -z "$KEYSTONE_DB_USER" -o \ + -z "$KEYSTONE_DB_PASSWORD" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$CONTROLLER_HOST_ADDRESS" ]; then + echo Some options required for Keystone were defined, but not all. + exit 1 +fi + +python <<'EOF' +import socket +import sys +import os + +try: + socket.inet_pton(socket.AF_INET, os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS']) +except: + print "Error: MANAGEMENT_INTERFACE_IP_ADDRESS is not a valid IP" + sys.exit(1) +EOF + +###################################### +# Enable relevant openstack services # +###################################### + +enable openstack-keystone-setup +enable openstack-horizon-setup +enable postgres-server-setup + +########################################################################## +# Generate configuration file +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/keystone.conf" +import os, sys, yaml + +keystone_configuration={ + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], + 'KEYSTONE_ADMIN_PASSWORD': os.environ['KEYSTONE_ADMIN_PASSWORD'], + 'KEYSTONE_DB_USER': os.environ['KEYSTONE_DB_USER'], + 'KEYSTONE_DB_PASSWORD': os.environ['KEYSTONE_DB_PASSWORD'], + 'RABBITMQ_HOST': os.environ['RABBITMQ_HOST'], + 'RABBITMQ_PORT': os.environ['RABBITMQ_PORT'], + 'RABBITMQ_USER': os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD': os.environ['RABBITMQ_PASSWORD'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], +} + +yaml.dump(keystone_configuration, sys.stdout, default_flow_style=False) +EOF + +python << 'EOF' > "$OPENSTACK_DATA/postgres.conf" +import os, sys, yaml + +postgres_configuration={ + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], +} + +yaml.dump(postgres_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-network.configure b/old/extensions/openstack-network.configure new file mode 100644 index 00000000..9128f845 --- /dev/null +++ b/old/extensions/openstack-network.configure @@ -0,0 +1,80 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool NEUTRON_ENABLE_MANAGER +check_bool NEUTRON_ENABLE_AGENT + +if ! "$NEUTRON_ENABLE_MANAGER" && ! "$NEUTRON_ENABLE_AGENT"; then + exit 0 +fi + +################### +# Enable services # +################### + +enable openvswitch-setup +enable openstack-network-setup + +########################################################################## +# Generate config variable shell snippet +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/network.conf" +import os, sys, yaml + +network_configuration = {} + +optional_keys = ('EXTERNAL_INTERFACE',) + +network_configuration.update((k, os.environ[k]) for k in optional_keys if k in os.environ) + +yaml.dump(network_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-neutron.configure b/old/extensions/openstack-neutron.configure new file mode 100644 index 00000000..210222db --- /dev/null +++ b/old/extensions/openstack-neutron.configure @@ -0,0 +1,138 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/openstack-neutron-$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/openstack-neutron-$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool NEUTRON_ENABLE_CONTROLLER +check_bool NEUTRON_ENABLE_MANAGER +check_bool NEUTRON_ENABLE_AGENT + +if ! "$NEUTRON_ENABLE_CONTROLLER" && \ + ! "$NEUTRON_ENABLE_MANAGER" && \ + ! "$NEUTRON_ENABLE_AGENT"; then + exit 0 +fi + +if [ -z "$NEUTRON_SERVICE_USER" -o \ + -z "$NEUTRON_SERVICE_PASSWORD" -o \ + -z "$NEUTRON_DB_USER" -o \ + -z "$NEUTRON_DB_PASSWORD" -o \ + -z "$METADATA_PROXY_SHARED_SECRET" -o \ + -z "$NOVA_SERVICE_USER" -o \ + -z "$NOVA_SERVICE_PASSWORD" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$CONTROLLER_HOST_ADDRESS" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" ]; then + echo Some options required for Neutron were defined, but not all. + exit 1 +fi + +############################################# +# Ensure /var/run is an appropriate symlink # +############################################# + +if ! link="$(readlink "$ROOT/var/run")" || [ "$link" != ../run ]; then + rm -rf "$ROOT/var/run" + ln -s ../run "$ROOT/var/run" +fi + +################### +# Enable services # +################### + +if "$NEUTRON_ENABLE_CONTROLLER"; then + enable config-setup + enable db-setup + enable server +fi + +if "$NEUTRON_ENABLE_MANAGER"; then + enable config-setup + enable ovs-cleanup + enable dhcp-agent + enable l3-agent + enable plugin-openvswitch-agent + enable metadata-agent +fi + +if "$NEUTRON_ENABLE_AGENT"; then + enable config-setup + enable plugin-openvswitch-agent +fi + +########################################################################## +# Generate config variable shell snippet +########################################################################## + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/neutron.conf" +import os, sys, yaml + +nova_configuration={ + 'NEUTRON_SERVICE_USER': os.environ['NEUTRON_SERVICE_USER'], + 'NEUTRON_SERVICE_PASSWORD': os.environ['NEUTRON_SERVICE_PASSWORD'], + 'NEUTRON_DB_USER': os.environ['NEUTRON_DB_USER'], + 'NEUTRON_DB_PASSWORD': os.environ['NEUTRON_DB_PASSWORD'], + 'METADATA_PROXY_SHARED_SECRET': os.environ['METADATA_PROXY_SHARED_SECRET'], + 'NOVA_SERVICE_USER': os.environ['NOVA_SERVICE_USER'], + 'NOVA_SERVICE_PASSWORD': os.environ['NOVA_SERVICE_PASSWORD'], + 'RABBITMQ_HOST': os.environ['RABBITMQ_HOST'], + 'RABBITMQ_USER': os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD': os.environ['RABBITMQ_PASSWORD'], + 'RABBITMQ_PORT': os.environ['RABBITMQ_PORT'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], +} + +yaml.dump(nova_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-nova.configure b/old/extensions/openstack-nova.configure new file mode 100644 index 00000000..241d94c2 --- /dev/null +++ b/old/extensions/openstack-nova.configure @@ -0,0 +1,163 @@ +#!/bin/sh + +# Copyright (C) 2014-2015 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, see . + +set -e + +ROOT="$1" + +enable(){ + ln -sf "/usr/lib/systemd/system/openstack-nova-$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/openstack-nova-$1.service" +} + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +########################################################################## +# Check variables +########################################################################## + +check_bool NOVA_ENABLE_CONTROLLER +check_bool NOVA_ENABLE_COMPUTE + +if ! "$NOVA_ENABLE_CONTROLLER" && \ + ! "$NOVA_ENABLE_COMPUTE"; then + exit 0 +fi + +if [ -z "$NOVA_SERVICE_USER" -o \ + -z "$NOVA_SERVICE_PASSWORD" -o \ + -z "$NOVA_DB_USER" -o \ + -z "$NOVA_DB_PASSWORD" -o \ + -z "$NOVA_VIRT_TYPE" -o \ + -z "$NEUTRON_SERVICE_USER" -o \ + -z "$NEUTRON_SERVICE_PASSWORD" -o \ + -z "$IRONIC_SERVICE_USER" -a \ + -z "$IRONIC_SERVICE_PASSWORD" -a \ + -z "$METADATA_PROXY_SHARED_SECRET" -o \ + -z "$RABBITMQ_HOST" -o \ + -z "$RABBITMQ_USER" -o \ + -z "$RABBITMQ_PASSWORD" -o \ + -z "$RABBITMQ_PORT" -o \ + -z "$CONTROLLER_HOST_ADDRESS" -o \ + -z "$MANAGEMENT_INTERFACE_IP_ADDRESS" -o \ + -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" ]; then + echo Some options required for Nova were defined, but not all. + exit 1 +fi + +############################################### +# Enable libvirtd and libvirt-guests services # +############################################### + +wants_dir="$ROOT"/usr/lib/systemd/system/multi-user.target.wants +mkdir -p "$wants_dir" +mkdir -p "$ROOT"/var/lock/subsys +ln -sf ../libvirtd.service "$wants_dir/libvirtd.service" + +###################################### +# Enable relevant openstack services # +###################################### + +if "$NOVA_ENABLE_CONTROLLER" || "$NOVA_ENABLE_COMPUTE"; then + enable config-setup +fi +if "$NOVA_ENABLE_CONTROLLER" && ! "$NOVA_ENABLE_COMPUTE"; then + enable conductor +fi +if "$NOVA_ENABLE_COMPUTE"; then + enable compute +fi +if "$NOVA_ENABLE_CONTROLLER"; then + for service in db-setup api cert consoleauth novncproxy scheduler serialproxy; do + enable "$service" + done +fi + + +########################################################################## +# Generate configuration file +########################################################################## + +case "$NOVA_BAREMETAL_SCHEDULING" in + True|true|yes) + export COMPUTE_MANAGER=ironic.nova.compute.manager.ClusteredComputeManager + export RESERVED_HOST_MEMORY_MB=0 + export SCHEDULER_HOST_MANAGER=nova.scheduler.ironic_host_manager.IronicHostManager + export RAM_ALLOCATION_RATIO=1.0 + export COMPUTE_DRIVER=nova.virt.ironic.IronicDriver + export SCHEDULER_USE_BAREMETAL_FILTERS=true + ;; + *) + export COMPUTE_MANAGER=nova.compute.manager.ComputeManager + export RESERVED_HOST_MEMORY_MB=512 + export SCHEDULER_HOST_MANAGER=nova.scheduler.host_manager.HostManager + export RAM_ALLOCATION_RATIO=1.5 + export COMPUTE_DRIVER=libvirt.LibvirtDriver + export SCHEDULER_USE_BAREMETAL_FILTERS=false + ;; +esac + +OPENSTACK_DATA="$ROOT/etc/openstack" +mkdir -p "$OPENSTACK_DATA" + +python <<'EOF' >"$OPENSTACK_DATA/nova.conf" +import os, sys, yaml + +nova_configuration={ + 'NOVA_SERVICE_USER': os.environ['NOVA_SERVICE_USER'], + 'NOVA_SERVICE_PASSWORD': os.environ['NOVA_SERVICE_PASSWORD'], + 'NOVA_DB_USER': os.environ['NOVA_DB_USER'], + 'NOVA_DB_PASSWORD': os.environ['NOVA_DB_PASSWORD'], + 'NOVA_VIRT_TYPE': os.environ['NOVA_VIRT_TYPE'], + 'COMPUTE_MANAGER': os.environ['COMPUTE_MANAGER'], + 'RESERVED_HOST_MEMORY_MB': os.environ['RESERVED_HOST_MEMORY_MB'], + 'SCHEDULER_HOST_MANAGER': os.environ['SCHEDULER_HOST_MANAGER'], + 'RAM_ALLOCATION_RATIO': os.environ['RAM_ALLOCATION_RATIO'], + 'SCHEDULER_USE_BAREMETAL_FILTERS': os.environ['SCHEDULER_USE_BAREMETAL_FILTERS'], + 'COMPUTE_DRIVER': os.environ['COMPUTE_DRIVER'], + 'NEUTRON_SERVICE_USER': os.environ['NEUTRON_SERVICE_USER'], + 'NEUTRON_SERVICE_PASSWORD': os.environ['NEUTRON_SERVICE_PASSWORD'], + 'IRONIC_SERVICE_USER': os.environ['IRONIC_SERVICE_USER'], + 'IRONIC_SERVICE_PASSWORD': os.environ['IRONIC_SERVICE_PASSWORD'], + 'METADATA_PROXY_SHARED_SECRET': os.environ['METADATA_PROXY_SHARED_SECRET'], + 'RABBITMQ_HOST': os.environ['RABBITMQ_HOST'], + 'RABBITMQ_USER': os.environ['RABBITMQ_USER'], + 'RABBITMQ_PASSWORD': os.environ['RABBITMQ_PASSWORD'], + 'RABBITMQ_PORT': os.environ['RABBITMQ_PORT'], + 'CONTROLLER_HOST_ADDRESS': os.environ['CONTROLLER_HOST_ADDRESS'], + 'MANAGEMENT_INTERFACE_IP_ADDRESS': os.environ['MANAGEMENT_INTERFACE_IP_ADDRESS'], + 'KEYSTONE_TEMPORARY_ADMIN_TOKEN': os.environ['KEYSTONE_TEMPORARY_ADMIN_TOKEN'], +} + +yaml.dump(nova_configuration, sys.stdout, default_flow_style=False) +EOF diff --git a/old/extensions/openstack-swift-controller.configure b/old/extensions/openstack-swift-controller.configure new file mode 100644 index 00000000..424ab57b --- /dev/null +++ b/old/extensions/openstack-swift-controller.configure @@ -0,0 +1,49 @@ +#!/bin/bash +# +# Copyright © 2015 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, see . + + +set -e + +export ROOT="$1" + +MANDATORY_OPTIONS="SWIFT_ADMIN_PASSWORD KEYSTONE_TEMPORARY_ADMIN_TOKEN" + +for option in $MANDATORY_OPTIONS +do + if ! [[ -v $option ]] + then + missing_option=True + echo "Required option $option isn't set!" >&2 + fi +done + +if [[ $missing_option = True ]]; then exit 1; fi + +mkdir -p "$ROOT/usr/lib/systemd/system/multi-user.target.wants" # ensure this exists before we make symlinks + +ln -s "/usr/lib/systemd/system/swift-controller-setup.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/swift-controller-setup.service" +ln -s "/usr/lib/systemd/system/memcached.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/memcached.service" +ln -s "/usr/lib/systemd/system/openstack-swift-proxy.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/swift-proxy.service" + +cat << EOF > "$ROOT"/usr/share/openstack/swift-controller-vars.yml +--- +SWIFT_ADMIN_PASSWORD: $SWIFT_ADMIN_PASSWORD +MANAGEMENT_INTERFACE_IP_ADDRESS: $MANAGEMENT_INTERFACE_IP_ADDRESS +KEYSTONE_TEMPORARY_ADMIN_TOKEN: $KEYSTONE_TEMPORARY_ADMIN_TOKEN +EOF diff --git a/old/extensions/openstack-time.configure b/old/extensions/openstack-time.configure new file mode 100644 index 00000000..4f5c8fbd --- /dev/null +++ b/old/extensions/openstack-time.configure @@ -0,0 +1,61 @@ +#!/bin/sh + +# Copyright (C) 2015 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. + +set -e + +ROOT="$1" + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True) + eval "$1=true" + ;; + False|'') + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} +check_bool SYNC_TIME_WITH_CONTROLLER + +if "$SYNC_TIME_WITH_CONTROLLER"; then + + cat << EOF > "$ROOT"/etc/ntpd.conf +# We use iburst here to reduce the potential initial delay to set the clock +server $CONTROLLER_HOST_ADDRESS iburst + +# kod - notify client when packets are denied service, +# rather than just dropping the packets +# +# nomodify - deny queries which attempt to modify the state of the server +# +# notrap - decline to provide mode 6 control message trap service to +# matching hosts +# +# see ntp.conf(5) for more details +restrict -4 default limited limited nomodify +restrict -6 default limited limited notrap nomodify +EOF + +fi diff --git a/old/extensions/openstack.check b/old/extensions/openstack.check new file mode 100755 index 00000000..131ea8e8 --- /dev/null +++ b/old/extensions/openstack.check @@ -0,0 +1,92 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'openstack' write extension''' + +import os +import urlparse + +import keystoneclient + +import writeexts + + +class OpenStackCheckExtension(writeexts.WriteExtension): + + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise writeexts.ExtensionError( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + + location = args[0] + self.check_location(location) + + self.check_imagename() + self.check_openstack_parameters(self._get_auth_parameters(location)) + + def _get_auth_parameters(self, location): + '''Check the environment variables needed and returns all. + + The environment variables are described in the class documentation. + ''' + + auth_keys = {'OPENSTACK_USER': 'username', + 'OPENSTACK_TENANT': 'tenant_name', + 'OPENSTACK_PASSWORD': 'password'} + + for key in auth_keys: + if os.environ.get(key, '') == '': + raise writeexts.ExtensionError(key + ' was not given') + + auth_params = {auth_keys[key]: os.environ[key] for key in auth_keys} + auth_params['auth_url'] = location + return auth_params + + def check_imagename(self): + if os.environ.get('OPENSTACK_IMAGENAME', '') == '': + raise writeexts.ExtensionError( + 'OPENSTACK_IMAGENAME was not given') + + def check_location(self, location): + x = urlparse.urlparse(location) + if x.scheme not in ['http', 'https']: + raise writeexts.ExtensionError( + 'URL schema must be http or https in %s' % location) + if (x.path != '/v2.0' and x.path != '/v2.0/'): + raise writeexts.ExtensionError( + 'API version must be v2.0 in %s' % location) + + def check_openstack_parameters(self, auth_params): + ''' Check that we can connect to and authenticate with openstack ''' + + self.status(msg='Checking OpenStack credentials...') + + try: + keystoneclient.v2_0.Client(**auth_params) + except keystoneclient.exceptions.Unauthorized: + errmsg = ('Failed to authenticate with OpenStack ' + '(are your credentials correct?)') + raise writeexts.ExtensionError(errmsg) + + +OpenStackCheckExtension().run() diff --git a/old/extensions/openstack.write b/old/extensions/openstack.write new file mode 100755 index 00000000..1fc3ba90 --- /dev/null +++ b/old/extensions/openstack.write @@ -0,0 +1,94 @@ +#!/usr/bin/python2 +# Copyright (C) 2013-2015 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, see . + + +'''A Morph deployment write extension for deploying to OpenStack.''' + + +import os +import subprocess +import tempfile +import urlparse + +import writeexts + + +class OpenStackWriteExtension(writeexts.WriteExtension): + + '''See openstack.write.help for documentation''' + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + + os_params = self.get_openstack_parameters() + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + self.status(msg='Temporary disk image has been created at %s' + % raw_disk) + + self.set_extlinux_root_to_virtio(raw_disk) + + self.configure_openstack_image(raw_disk, location, os_params) + + def set_extlinux_root_to_virtio(self, raw_disk): + '''Re-configures extlinux to use virtio disks''' + self.status(msg='Updating extlinux.conf') + with self.find_and_mount_rootfs(raw_disk) as mp: + path = os.path.join(mp, 'extlinux.conf') + + with open(path) as f: + extlinux_conf = f.read() + + extlinux_conf = extlinux_conf.replace('root=/dev/sda', + 'root=/dev/vda') + with open(path, "w") as f: + f.write(extlinux_conf) + + def get_openstack_parameters(self): + '''Get the environment variables needed. + + The environment variables are described in the class documentation. + ''' + + keys = ('OPENSTACK_USER', 'OPENSTACK_TENANT', + 'OPENSTACK_IMAGENAME', 'OPENSTACK_PASSWORD') + return (os.environ[key] for key in keys) + + def configure_openstack_image(self, raw_disk, auth_url, os_params): + '''Configure the image in OpenStack using glance-client''' + self.status(msg='Configuring OpenStack image...') + + username, tenant_name, image_name, password = os_params + cmdline = ['glance', + '--os-username', username, + '--os-tenant-name', tenant_name, + '--os-password', password, + '--os-auth-url', auth_url, + 'image-create', + '--name=%s' % image_name, + '--disk-format=raw', + '--container-format', 'bare', + '--file', raw_disk] + subprocess.check_call(cmdline) + + self.status(msg='Image configured.') + +OpenStackWriteExtension().run() diff --git a/old/extensions/openstack.write.help b/old/extensions/openstack.write.help new file mode 100644 index 00000000..26983060 --- /dev/null +++ b/old/extensions/openstack.write.help @@ -0,0 +1,51 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Deploy a Baserock system as a *new* OpenStack virtual machine. + (Use the `ssh-rsync` write extension to deploy upgrades to an *existing* + VM) + + Deploys the system to the OpenStack host using python-glanceclient. + + Parameters: + + * location: the authentication url of the OpenStack server using the + following syntax: + + http://HOST:PORT/VERSION + + where + + * HOST is the host running OpenStack + * PORT is the port which is using OpenStack for authentications. + * VERSION is the authentication version of OpenStack (Only v2.0 + supported) + + * OPENSTACK_USER=username: the username to use in the `--os-username` + argument to `glance`. + + * OPENSTACK_TENANT=tenant: the project name to use in the + `--os-tenant-name` argument to `glance`. + + * OPENSTACK_IMAGENAME=imagename: the name of the image to use in the + `--name` argument to `glance`. + + * OPENSTACK_PASSWORD=password: the password of the OpenStack user. (We + recommend passing this on the command-line, rather than setting an + environment variable or storing it in a cluster cluster definition file.) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/old/extensions/partitioning.py b/old/extensions/partitioning.py new file mode 100644 index 00000000..2a8de058 --- /dev/null +++ b/old/extensions/partitioning.py @@ -0,0 +1,163 @@ +#!/usr/bin/python2 +# Copyright (C) 2015 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, see . + + +"""A module providing Baserock-specific partitioning functions""" + +import os +import pyfdisk +import re +import subprocess +import writeexts + +def do_partitioning(location, disk_size, temp_root, part_spec): + '''Perform partitioning + + Perform partitioning using the pyfdisk.py module. Documentation + for this, and guidance on how to create a partition specification can + be found in extensions/pyfdisk.README + + This function also validates essential parts of the partition layout + + Args: + location: Path to the target device or image + temp_root: Location of the unpacked Baserock rootfs + part_spec: Path to a YAML formatted partition specification + Returns: + A pyfdisk.py Device object + Raises: + writeexts.ExtensionError + ''' + # Create partition table and filesystems + try: + dev = pyfdisk.load_yaml(location, disk_size, part_spec) + writeexts.Extension.status(msg='Loaded partition specification: %s' % + part_spec) + + # FIXME: GPT currently not fully supported due to missing tools + if dev.partition_table_format.lower() == 'gpt': + writeexts.Extension.status(msg='WARNING: GPT partition tables ' + 'are not currently supported, ' + 'when using the extlinux ' + 'bootloader') + + writeexts.Extension.status(msg='Summary:\n' + str(dev.partitionlist)) + writeexts.Extension.status(msg='Writing partition table') + dev.commit() + dev.create_filesystems(skip=('/')) + except (pyfdisk.PartitioningError, pyfdisk.FdiskError) as e: + raise writeexts.ExtensionError(e.msg) + + mountpoints = set(part.mountpoint for part in dev.partitionlist + if hasattr(part, 'mountpoint')) + if '/' not in mountpoints: + raise writeexts.ExtensionError('No partition with root ' + 'mountpoint, please specify a ' + 'partition with \'mountpoint: /\' ' + 'in the partition specification') + + mounted_partitions = set(part for part in dev.partitionlist + if hasattr(part, 'mountpoint')) + + for part in mounted_partitions: + if not hasattr(part, 'filesystem'): + raise writeexts.ExtensionError('Cannot mount a partition ' + 'without filesystem, please specify one ' + 'for \'%s\' partition in the partition ' + 'specification' % part.mountpoint) + if part.mountpoint == '/': + # Check that bootable flag is set for MBR devices + if (hasattr(part, 'boot') + and str(part.boot).lower() not in ('yes', 'true') + and dev.partition_table_format.lower() == 'mbr'): + writeexts.Extension.status(msg='WARNING: Boot partition ' + 'needs bootable flag set to ' + 'boot with extlinux/syslinux') + + return dev + +def process_raw_files(dev, temp_root): + if hasattr(dev, 'raw_files'): + write_raw_files(dev.location, temp_root, dev) + for part in dev.partitionlist: + if hasattr(part, 'raw_files'): + # dd seek=n is used, which skips n blocks before writing, + # so we must skip n-1 sectors before writing in order to + # start writing files to the first block of the partition + write_raw_files(dev.location, temp_root, part, + (part.extent.start - 1) * dev.sector_size) + +def write_raw_files(location, temp_root, dev_or_part, start_offset=0): + '''Write files with `dd`''' + offset = 0 + for raw_args in dev_or_part.raw_files: + r = RawFile(temp_root, start_offset, offset, **raw_args) + offset = r.next_offset + r.dd(location) + + +class RawFile(object): + '''A class to hold information about a raw file to write to a device''' + + def __init__(self, source_root, + start_offset=0, wr_offset=0, + sector_size=512, **kwargs): + '''Initialisation function + + Args: + source_root: Base path for filenames + wr_offset: Offset to write to (and offset per-file offsets by) + sector_size: Device sector size (default: 512) + **kwargs: + file: A path to the file to write (combined with source_root) + offset_sectors: An offset to write to in sectors (optional) + offset_bytes: An offset to write to in bytes (optional) + ''' + if 'file' not in kwargs: + raise writeexts.ExtensionError('Missing file name or path') + self.path = os.path.join(source_root, + re.sub('^/', '', kwargs['file'])) + + if not os.path.exists(self.path): + raise writeexts.ExtensionError('File not found: %s' % self.path) + elif os.path.isdir(self.path): + raise writeexts.ExtensionError('Can only dd regular files') + else: + self.size = os.stat(self.path).st_size + + self.offset = start_offset + if 'offset_bytes' in kwargs: + self.offset += pyfdisk.human_size(kwargs['offset_bytes']) + elif 'offset_sectors' in kwargs: + self.offset += kwargs['offset_sectors'] * sector_size + else: + self.offset += wr_offset + + self.skip = pyfdisk.human_size(kwargs.get('skip_bytes', 0)) + self.count = pyfdisk.human_size(kwargs.get('count_bytes', self.size)) + + # Offset of the first free byte after this file (first byte of next) + self.next_offset = self.size + self.offset + + def dd(self, location): + writeexts.Extension.status(msg='Writing %s at %d bytes' % + (self.path, self.offset)) + subprocess.check_call(['dd', 'if=%s' % self.path, + 'of=%s' % location, 'bs=1', + 'seek=%d' % self.offset, + 'skip=%d' % self.skip, + 'count=%d' % self.count, + 'conv=notrunc']) + subprocess.check_call('sync') diff --git a/old/extensions/pxeboot.check b/old/extensions/pxeboot.check new file mode 100755 index 00000000..19891482 --- /dev/null +++ b/old/extensions/pxeboot.check @@ -0,0 +1,86 @@ +#!/usr/bin/python2 + +import itertools +import os +import subprocess +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('WARNING: Following options might not be needed: %s' % ' or '.join( + word_separate_options(list(opt_set)) + for opt_set in removable_sets if opt_set)) + +if 'PXEBOOT_MODE' in os.environ: + mode = os.environ['PXEBOOT_MODE'] +else: + try: + mode, = (mode for (mode, opt_set) in valid_option_sets + if all(o in os.environ for o in opt_set)) + + except ValueError as e: + print ('More than one candidate for PXEBOOT_MODE, please ' + 'set a value for it. Type `morph help pxeboot.write for ' + 'more info') + sys.exit(1) + +if mode not in valid_modes: + print('%s is not a valid PXEBOOT_MODE' % mode) + sys.exit(1) + +if mode != 'existing-server': + with open(os.devnull, 'w') as devnull: + if subprocess.call(['systemctl', 'is-active', 'nfs-server'], + stdout=devnull) != 0: + print ('ERROR: nfs-server.service is not running and is needed ' + 'for this deployment. Please, run `systemctl start nfs-server` ' + 'and try `morph deploy` again.') + sys.exit(1) diff --git a/old/extensions/pxeboot.write b/old/extensions/pxeboot.write new file mode 100644 index 00000000..20e4f6bd --- /dev/null +++ b/old/extensions/pxeboot.write @@ -0,0 +1,756 @@ +#!/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 writeexts + +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(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): + persist = os.environ.get('PXE_INSTALLER') in ('no', 'False') + td = writeexts.ssh_runcmd( + hostname, ['mktemp', '-d', template]).strip() + try: + yield td + finally: + if not persist: + writeexts.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) + + @contextlib.contextmanager + def _local_symlink(self, src, dst): + os.symlink(src, dst) + try: + yield + finally: + 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): + persist = os.environ.get('PXE_INSTALLER') in ('no', 'False') + with open(src, 'r') as f: + writeexts.ssh_runcmd(hostname, + ['install', '-D', '-m644', + '/proc/self/fd/0', dst], + stdin=f, stdout=None, stderr=None) + try: + yield + finally: + if not persist: + writeexts.ssh_runcmd(hostname, ['rm', dst]) + + @contextlib.contextmanager + def _remote_symlink(self, hostname, src, dst): + persist = os.environ.get('PXE_INSTALLER') in ('no', 'False') + writeexts.ssh_runcmd(hostname, + ['ln', '-s', '-f', src, dst], + stdin=None, stdout=None, stderr=None) + try: + yield + finally: + if not persist: + writeexts.ssh_runcmd(hostname, ['rm', '-f', 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 writeexts.ExtensionError('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 remote_fdt(self, rootfs, tftp_url, macaddr): + fdt_rel_path = os.environ.get('DTB_PATH', '') + if fdt_rel_path == '': + yield + fdt_abs_path = os.path.join(rootfs, fdt_rel_path) + if not fdt_abs_path: + raise writeexts.ExtensionError( + 'Failed to locate Flattened Device Tree') + url = urlparse.urlsplit(tftp_url) + basename = '{}-fdt'.format(_normalise_macaddr(macaddr)) + target_path = os.path.join(url.path, basename) + with self._remote_copy(hostname=url.hostname, src=fdt_abs_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) + subprocess.check_call(['exportfs', '-o', 'ro,insecure,no_root_squash', + nfsroot]) + try: + yield + finally: + self.status(msg='Removing %(nfsroot)s from local nfsroots', + nfsroot=nfsroot) + subprocess.check_call(['exportfs', '-u', nfsroot]) + + @contextlib.contextmanager + def remote_nfsroot(self, rootfs, rsync_url, macaddr): + url = urlparse.urlsplit(rsync_url) + template = os.path.join(url.path, + _normalise_macaddr(macaddr) + '.XXXXXXXXXX') + with self._remote_tempdir(hostname=url.hostname, template=template) \ + as tempdir: + nfsroot = urlparse.urlunsplit((url.scheme, url.netloc, tempdir, + url.query, url.fragment)) + subprocess.check_call(['rsync', '-asSPH', '--delete', + rootfs, nfsroot], + stdin=None, stdout=open(os.devnull, 'w'), + stderr=None) + yield os.path.join(os.path.basename(tempdir), + os.path.basename(rootfs)) + + @staticmethod + def _write_pxe_config(fh, kernel_tftp_url, rootfs_nfs_url, device=None, + fdt_subpath=None, extra_args=''): + + if device is None: + ip_cfg = "ip=dhcp" + else: + ip_cfg = "ip=:::::{device}:dhcp::".format(device=device) + + fh.write(textwrap.dedent('''\ + DEFAULT default + LABEL default + LINUX {kernel_url} + APPEND root=/dev/nfs {ip_cfg} nfsroot={rootfs_nfs_url} {extra_args} + ''').format(kernel_url=kernel_tftp_url, ip_cfg=ip_cfg, + rootfs_nfs_url=rootfs_nfs_url, extra_args=extra_args)) + if fdt_subpath is not None: + fh.write("FDT {}\n".format(fdt_subpath)) + fh.flush() + + @contextlib.contextmanager + def local_pxeboot_config(self, tftproot, macaddr, ip, tftp_port, + nfsroot_dir, device=None): + 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, + device=device, + extra_args=os.environ.get('KERNEL_ARGS','')) + + try: + with self._local_symlink( + src=pxe_cfg_filename, + dst=os.path.join(tftproot, + 'pxelinux.cfg', + '01-' + pxe_cfg_filename)): + yield + finally: + os.unlink(pxe_cfg_path) + + @contextlib.contextmanager + def remote_pxeboot_config(self, tftproot, kernel_tftproot, kernel_subpath, + fdt_subpath, rootfs_nfsroot, rootfs_subpath, + macaddr): + rootfs_nfs_url = '{}/{}'.format(rootfs_nfsroot, rootfs_subpath) + url = urlparse.urlsplit(kernel_tftproot) + kernel_tftp_url = '{}:{}'.format(url.netloc, kernel_subpath) + pxe_cfg_filename = _normalise_macaddr(macaddr) + url = urlparse.urlsplit(tftproot) + inst_cfg_path = os.path.join(url.path, 'pxelinux.cfg') + with tempfile.NamedTemporaryFile() as f: + self._write_pxe_config( + fh=f, kernel_tftp_url=kernel_tftp_url, + fdt_subpath=fdt_subpath, + rootfs_nfs_url=rootfs_nfs_url, + extra_args=os.environ.get('KERNEL_ARGS','')) + with self._remote_copy( + hostname=url.hostname, src=f.name, + dst=os.path.join(inst_cfg_path, + pxe_cfg_filename)), \ + self._remote_symlink( + hostname=url.hostname, + src=pxe_cfg_filename, + dst=os.path.join(inst_cfg_path, + '01-' + pxe_cfg_filename)): + 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 = subprocess.check_output(['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 writeexts.ExtensionError('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) + target_interface = os.environ.get('PXEBOOT_TARGET_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, + device=target_interface, + 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, + device=target_interface, + 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, tftp_url=kernel_tftpaddr, + macaddr=macaddr) as kernel_subpath, \ + self.remote_fdt(rootfs=temp_root, tftp_url=kernel_tftpaddr, + macaddr=macaddr) as fdt_subpath, \ + self.remote_nfsroot(rootfs=temp_root, rsync_url=rootfs_rsync, \ + macaddr=macaddr) as rootfs_subpath, \ + self.remote_pxeboot_config(tftproot=config_tftpaddr, + kernel_tftproot=kernel_tftproot, + kernel_subpath=kernel_subpath, + fdt_subpath=fdt_subpath, + rootfs_nfsroot=nfsroot, + rootfs_subpath=rootfs_subpath, + macaddr=macaddr): + persist = os.environ.get('PXE_INSTALLER') in ('no', 'False') + if not persist: + self.ipmi_pxe_reboot_target() + self.wait_for_target_to_install() + self.ipmi_reboot_target() + else: + writeexts.ExtensionError('Invalid PXEBOOT_MODE: %s' % mode) + +PXEBoot().run() diff --git a/old/extensions/pxeboot.write.help b/old/extensions/pxeboot.write.help new file mode 100644 index 00000000..7cb78bce --- /dev/null +++ b/old/extensions/pxeboot.write.help @@ -0,0 +1,166 @@ +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. + + + # Misc + + + ## KERNEL_ARGS + + + Additional kernel command line options. Note that the following + options + + root=/dev/nfs ip=dhcp nfsroot=$NFSROOT` + + are implicitly added by the extension. + + + ## DTB_PATH + + + Location in the deployed root filesystem of the Flattened Device + Tree blob (FDT) to use. + + + ## PXE_INSTALLER + + + If set to `no`, `False` or any other YAML value for false, the + remotely installed rootfs, kernel, bootloader config file and + device tree blob if specified, will not be removed after the + deployment finishes. This variable is only meanful on the + `existing-server` mode. + + + ## PXEBOOT_TARGET_INTERFACE + + Name of the interface of the target to pxeboot from. Some targets + with more than one interface try to get the rootfs from a different + interface than the interface from where the pxeboot server is + reachable. Using this variable, the kernel arguments will be filled + to include the device. + + Note that the name of this interface is the kernel's default name, + usually called ethX, and is non-determinisic. diff --git a/old/extensions/pyfdisk.README b/old/extensions/pyfdisk.README new file mode 100644 index 00000000..8b3b941b --- /dev/null +++ b/old/extensions/pyfdisk.README @@ -0,0 +1,144 @@ +Introduction +============ + +The pyfdisk.py module provides a basic Python wrapper around command-line +fdisk from util-linux, and some assorted related functions for querying +information from real disks or disk images. + + +YAML partition specification +============================ + +A YAML file may be loaded, using the function load_yaml(). This can contain +all the information needed to create a Device object which can then be +committed to disk. + +The format of this file is as follows: + + start_offset: 2048 + partition_table_format: gpt + partitions: + - description: boot + size: 1M + fdisk_type: 0x0B + filesystem: vfat + boot: yes + mountpoint: /boot + - description: rootfs + number: 3 + size: 10G + filesystem: btrfs + fdisk_type: 0x83 + mountpoint: / + - description: src + size: fill + filesystem: ext4 + fdisk_type: 0x81 + mountpoint: /src + +There are a couple of global attributes: + +* 'start_offset': specifies the start sector of the first partition on the + device (default: 2048) + +* 'partition_table_format': specifies the partition table format to be used + when creating the partition table. Possible format + strings are 'gpt', 'dos', or 'mbr' ('dos' and + 'mbr' are interchangeable). (default: gpt) + +Following this, up to 4 (for MBR) or 128 (for GPT) partitions can be +specified, in the list, 'partitions'. For partitions, 'size', 'fdisk_type' and +'filesystem' are required. + +* 'size' is the size in bytes, or 'fill', which will expand the partition to + fill any unused space. Multiple partitions with 'size: fill' will share the + free space on the device. Human readable formatting can be used: K, M, G, T, + for integer multiples (calculated as powers of 2^n) + +* 'fdisk_type' is the fdisk partition type, specified as a hexadecimal value + (default: 0x81) + +* 'filesystem' specifies a filesystem to be created on the partition. It can + be a filesystem with associated any mkfs.* tool, or 'none' for an + unformatted partition. + +Optional partition attributes include: + +* 'number' is optional, and can be used to override the numbering of + partitions, if it is desired to have partition numbering that differs from + the physical order of the partitions on the disk. + - For all un-numbered partitions, the physical order of partitions on the + device is determined by the order in which they appear in the + specification. + - For any partitions without a specified number, partition numbering is + handled automatically. In the example above, /boot is 1, /src is 2, + and / is 3, even though the physical order differs. + +* 'boot' sets the partition's bootable flag (currently only for MBR partition + tables) + +* 'mountpoint' specifies a mountpoint of a partition. One partition must + have a '/' mountpoint to contain the rootfs, otherwise this is optional. + Files present in the rootfs under the mount point for a given partition will + be copied to the created partition. + +load_yaml() produces a Device object, populated with any partitions contained +in the specification. + + +Objects +======= + +Partition - An object containing properties of a partition + +Device - An object holding information about a physical device, and the + overall properties of the partitioning scheme. It contains a + PartitionList holding the partitions on the device. + +PartitionList - An object which holds a list of partitions on the disk. New + partitions can be added to the list at any time. When the list + is queried, properties of partitions which depend on the + properties of the other partitions in the list, for example + the size of a fill partition, or numbering, are recalculated, + and an updated copy of a Partition object is returned. + +Extent - An object which helps encapsulate sector dimensions for partitions + and devices. + + +Quick start +=========== + + >>> dev = pyfdisk.Device('test.img', 'fill') + >>> print dev + + >>> part = pyfdisk.Partition(size='1M', fdisk_type=0x81, filesystem='ext4', mountpoint='/test1') + >>> part2 = pyfdisk.Partition(size='fill', filesystem='btrfs', mountpoint='/test2') + >>> dev.add_partition(part) + >>> dev.add_partition(part2) + >>> print dev.partitionlist + Partition + size: 14663168 + fdisk type: 0x81 + filesystem: btrfs + start: 4096 + end: 32734 + number: 2 + mountpoint: /test2 + Partition + size: 1048576 + fdisk type: 0x81 + filesystem: ext4 + start: 2048 + end: 4095 + number: 1 + mountpoint: /test1 + >>> dev.commit() + Creating GPT partition table on test.img + + $ fdisk -l test.img + Disk test.img: 16 MiB, 16777216 bytes, 32768 sectors + ... + Device Start End Sectors Size Type + test.img1 2048 4095 2048 1M Linux filesystem + test.img2 4096 32734 28639 14M Linux filesystem diff --git a/old/extensions/pyfdisk.py b/old/extensions/pyfdisk.py new file mode 100644 index 00000000..a7796729 --- /dev/null +++ b/old/extensions/pyfdisk.py @@ -0,0 +1,769 @@ +#!/usr/bin/env python2 +# Copyright (C) 2015 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, see . + +""" +A simple Python wrapper for fdisk + + * Intends to have as few dependencies as possible, beyond command line fdisk + * Intends to work on Linux, though may work on other operating systems with + fdisk from util-linux. + * Provides for the creation of MBR and GPT partitioned images or devices + * Includes some utility functions for reading information from existing + partition tables + +Caveats: + * Designed to cater for disks using 4096 byte sectors, although this hasn't + been tested yet. +""" + +import contextlib +from copy import deepcopy +import re +import subprocess +import time +import yaml + + +class Extent(object): + """ + A class to hold start and end points for other objects + + Start and end points are measured in sectors. This class transparently + handles the inclusive nature of the start and end sectors of blocks of + storage. It also allows extents to be aligned within other extents. + """ + + def __init__(self, start=0, length=0, end=0): + if length and not start: + raise PartitioningError('Extent requires a non-zero start ' + 'point and length') + if start and length: + self.start = int(start) + self.end = int(start) + int(length) - 1 + else: + self.start = int(start) + self.end = int(end) + + self.filled_sectors = 0 + + def __max__(self): + return self.end + + def __min__(self): + return self.start + + def __len__(self): + return self.end - self.start + 1 + + def __add__(self, other): + """Return the sum of two extents""" + return Extent(start=self.start, + length=(len(self) + len(other))) + + def __iadd__(self, other): + """+=""" + self.end += len(other) + return self + + def __gt__(self, other): + return len(self) > len(other) + + def __lt__(self, other): + return not self > other + + def __str__(self): + return ('' % + (self.start, self.end, len(self))) + + def pack(self, other): + """ + Return a new Extent aligned to self's first unused sector + + This is done by length, to quantify fitting an area of disk space + inside the other. The filled space in self is calculated and updated. + + Returns: + A new Extent, starting at the first available sector in `self`, + with the same length as `other`. + """ + length_other = len(other) + first_free_sector = self.start + self.filled_sectors + if length_other + self.filled_sectors > len(self): + raise PartitioningError('Not enough free space to pack Extent') + self.filled_sectors += length_other + return Extent(start=first_free_sector, length=length_other) + + def free_sectors(self): + return len(self) - self.filled_sectors + + +class PartitionList(object): + """ + An iterable object to contain and process a list of Partition objects + + This class eases the calculation of partition sizes and numbering, since + the properties of a given partition depend on each of the other partitions + in the list. + + Attributes: + device: A Device class containing the partition list + """ + + def __init__(self, device): + """ + Initialisation function + + Args: + device: A Device object + """ + self.device = device + self.extent = device.extent + + self.__cached_list_hash = 0 + + self.__partition_list = [] + self.__iter_index = 0 + + def append(self, partition): + """Append a new Partition object to the list""" + partition.check() + if isinstance(partition, Partition): + for part in self.__partition_list: + dup_attrib = part.compare(partition) + if dup_attrib: + raise PartitioningError('Duplicated partition attribute ' + '\'%s\'' % dup_attrib) + self.__partition_list.append(partition) + else: + raise PartitioningError('PartitionList can only ' + 'contain Partition objects') + + def __iter__(self): + """Return a copy of self as an iterable object""" + self.__iter_index = 0 + copy = deepcopy(self) + return copy + + def __next__(self): + """Return the next item in an iteration""" + if self.__iter_index == len(self.__partition_list): + raise StopIteration + else: + partition = self[self.__iter_index] + self.__iter_index += 1 + return partition + + def next(self): + """Provide a next() method for Python 2 compatibility""" + return self.__next__() + + def __getitem__(self, i): + """Return an partition from the list, sorted by partition number""" + part_list = sorted(self.__update_partition_list(), + key=lambda part: part.number) + return part_list[i] + + def free_sectors(self): + """Calculate the amount of unused space in the list""" + part_list = self.__update_partition_list() + self.extent.filled_sectors = 0 + for part in part_list: + self.extent.pack(part.extent) + return self.extent.free_sectors() + + def __update_partition_list(self): + """ + Allocate extent and numbering for each Partition object in the list + + A copy of the partition list is made so that any Partition object + returned from this list is a copy of a stored Partition object, thus + any partitions stored in the partition list remain intact even if a + copy is modified after is is returned. Hashing is used to avoid + updating the list when the partition list has not changed. + """ + current_list_hash = hash(str(self.__partition_list)) + if current_list_hash == self.__cached_list_hash: + return self.__cached_list + + part_list = deepcopy(self.__partition_list) + used_numbers = set() + fill_partitions = set(partition for partition in part_list + if partition.size == 'fill') + requested_numbers = set(partition.number for partition in part_list + if hasattr(partition, 'number')) + + # Get free space and the size of 'fill' partitions + self.extent.filled_sectors = 0 + for part in part_list: + if part.size != 'fill': + extent = Extent(start=1, + length=self.get_length_sectors(part.size)) + part.extent = extent + self.extent.pack(extent) + + # Allocate aligned Extents and process partition numbers + if len(fill_partitions): + fill_size = self.extent.free_sectors() / len(fill_partitions) + # Set size of fill partitions + for part in fill_partitions: + part.size = fill_size * self.device.sector_size + part.extent = Extent(start=1, length=fill_size) + + self.extent.filled_sectors = 0 + for part in part_list: + part.extent = self.extent.pack(part.extent) + + # Find the next unused partition number if not assigned + if hasattr(part, 'number'): + num = part.number + else: + for n in range(1, self.device.max_allowed_partitions + 1): + if n not in used_numbers and n not in requested_numbers: + num = n + break + + part.number = num + used_numbers.add(num) + + self.__cached_list_hash = current_list_hash + self.__cached_list = part_list + return part_list + + def get_length_sectors(self, size_bytes): + """Get a length in sectors, aligned to 4096 byte boundaries""" + return (int(size_bytes) / self.device.sector_size + + ((int(size_bytes) % 4096) != 0) * + (4096 / self.device.sector_size)) + + def __str__(self): + string = '' + for part in self: + string = '%s\n%s\n' % (part, string) + return string.rstrip() + + def __len__(self): + return len(self.__partition_list) + + def __setitem__(self, i, value): + """Update the ith item in the list""" + self.append(partition) + + +class Partition(object): + """ + A class to describe a partition in a disk or image + + The required attributes are loaded via kwargs. + + Required attributes: + size: String describing the size of the partition in bytes + This may also be 'fill' to indicate that this partition should + be expanded to fill all unused space. Where there is more than + one fill partition, unused space is divided equally between the + fill partitions. + fdisk_type: An integer representing the hexadecimal code used by fdisk + to describe the partition type. Any partitions with + fdisk_type='none' create an area of unused space. + + Optional attributes: + **kwargs: A mapping of any keyword arguments + filesystem: A string describing the filesystem format for the + partition, or 'none' to skip filesystem creation. + description: A string describing the partition, for documentation + boot: Boolean string describing whether to set the bootable flag + mountpoint: String describing the mountpoint for the partition + number: Number used to override partition numbering for the + partition (Possible only when using an MBR partition table) + """ + def __init__(self, size=0, fdisk_type=0x81, filesystem='none', **kwargs): + if not size and 'size' not in kwargs: + raise PartitioningError('Partition must have a non-zero size') + + self.filesystem = filesystem + self.fdisk_type = fdisk_type + + self.size = human_size(size) + self.__dict__.update(**kwargs) + + def check(self): + """Check for correctness""" + if self.fdisk_type == 'none': + if self.filesystem != 'none': + raise PartitioningError('Partition: Free space ' + 'cannot have a filesystem') + if hasattr(self, 'mountpoint') and self.mountpoint != 'none': + raise PartitioningError('Partition: Free space ' + 'cannot have a mountpoint') + + def compare(self, other): + """Check for mutually exclusive attributes""" + non_duplicable = ('number', 'mountpoint') + for attrib in non_duplicable: + if hasattr(self, attrib) and hasattr(other, attrib): + if getattr(self, attrib) == getattr(other, attrib): + return attrib + return False + + def __str__(self): + string = ('Partition\n' + ' size: %s\n' + ' fdisk type: %s\n' + ' filesystem: %s' + % (self.size, + hex(self.fdisk_type) if self.fdisk_type != 'none' + else 'none', + self.filesystem)) + if hasattr(self, 'extent'): + string += ( + '\n start: %s' + '\n end: %s' + % (self.extent.start, self.extent.end)) + if hasattr(self, 'number'): + string += '\n number: %s' % self.number + if hasattr(self, 'mountpoint'): + string += '\n mountpoint: %s' % self.mountpoint + if hasattr(self, 'boot'): + string += '\n bootable: %s' % self.boot + + return string + + +class Device(object): + """ + A class to describe a disk or image, and its partition layout + + Attributes are loaded from **kwargs, containing key-value pairs describing + the required attributes. This can be loaded from a YAML file, using the + module function load_yaml(). + + Required attributes: + location: The location of the device or disk image + size: A size in bytes describing the total amount of space the + partition table on the device will occupy, or 'fill' to + automatically fill the available space. + + Optional attributes: + **kwargs: A mapping of any keyword arguments + start_offset: The first 512 byte sector of the first partition + (default: 2048) + partition_table_format: A string describing the type of partition + table used on the device (default: 'gpt') + partitions: A list of mappings for the attributes for each Partition + object. update_partitions() populates the partition list + based on the contents of this attribute. + """ + min_start_bytes = 1024**2 + + def __init__(self, location, size, **kwargs): + + if 'partition_table_format' not in kwargs: + self.partition_table_format = 'gpt' + if 'start_offset' not in kwargs: + self.start_offset = 2048 + + target_size = get_disk_size(location) + if str(size).lower() == 'fill': + self.size = target_size + else: + self.size = human_size(size) + + if self.size > target_size: + raise PartitioningError('Not enough space available on target') + + if self.size <= self.min_start_bytes: + raise PartitioningError('Device size must be greater than %d ' + 'bytes' % self.min_start_bytes) + + # Get sector size + self.sector_size = get_sector_size(location) + self.location = location + + # Populate Device attributes from keyword args + self.__dict__.update(**kwargs) + + if self.partition_table_format.lower() == 'gpt': + self.max_allowed_partitions = 128 + else: + self.max_allowed_partitions = 4 + + # Process Device size + start = (self.start_offset * 512) / self.sector_size + # Sector quantities in the specification are assumed to be 512 bytes + # This converts to the real sector size + if (start * self.sector_size) < self.min_start_bytes: + raise PartitioningError('Start offset should be greater than ' + '%d, for %d byte sectors' % + (min_start_bytes / self.sector_size, + self.sector_size)) + # Check the disk's first partition starts on a 4096 byte boundary + # this ensures alignment, and avoiding a reduction in performance + # on disks which use a 4096 byte physical sector size + if (start * self.sector_size) % 4096 != 0: + print('WARNING: Start sector is not aligned ' + 'to 4096 byte sector boundaries') + + # End sector is one sector less than the disk length + disk_end_sector = (self.size / self.sector_size) - 1 + if self.partition_table_format == 'gpt': + # GPT partition table is duplicated at the end of the device. + # GPT header takes one sector, whatever the sector size, + # with a 16384 byte 'minimum' area for partition entries, + # supporting up to 128 partitions (128 bytes per entry). + # The duplicate GPT does not include the 'protective' MBR + gpt_size = ((16 * 1024) / self.sector_size) + 1 + self.extent = Extent(start=start, + end=(disk_end_sector - gpt_size)) + else: + self.extent = Extent(start=start, end=disk_end_sector) + + self.update_partitions() + + def update_partitions(self, partitions=None): + """ + Reset list, populate with partitions from a list of attributes + + Args: + partitions: A list of partition keyword attributes + """ + + self.partitionlist = PartitionList(self) + if partitions: + self.partitions = partitions + if hasattr(self, 'partitions'): + for partition_args in self.partitions: + self.add_partition(Partition(**partition_args)) + + def add_partition(self, partition): + """ + Add a Partition object to the device's list of partitions + + Args: + partition: a Partition class + """ + + if len(self.partitionlist) < self.max_allowed_partitions: + self.partitionlist.append(partition) + else: + raise PartitioningError('Exceeded maximum number of partitions ' + 'for %s partition table (%d)' % + (self.partition_table_format.upper(), + self.max_allowed_partitions)) + + def get_partition_by_mountpoint(self, mountpoint): + """Return a Partition with a specified mountpoint""" + + try: + return next(r for r in self.partitionlist + if hasattr(r, 'mountpoint') + and r.mountpoint == mountpoint) + except StopIteration: + return False + + def commit(self): + """Write the partition table to the disk or image""" + + pt_format = self.partition_table_format.lower() + print("Creating %s partition table on %s" % + (pt_format.upper(), self.location)) + + # Create a new partition table + if pt_format in ('mbr', 'dos'): + cmd = "o\n" + elif pt_format == 'gpt': + cmd = "g\n" + else: + raise PartitioningError('Unrecognised partition ' + 'table type \'%s\'' % pt_format) + + for partition in self.partitionlist: + # Create partitions + if str(partition.fdisk_type).lower() != 'none': + cmd += "n\n" + if pt_format in ('mbr', 'dos'): + cmd += "p\n" + cmd += (str(partition.number) + "\n" + "" + str(partition.extent.start) + "\n" + "" + str(partition.extent.end) + "\n") + + # Set partition types + cmd += "t\n" + if partition.number > 1: + # fdisk does not ask for a partition + # number when setting the type of the + # first created partition + cmd += str(partition.number) + "\n" + cmd += str(hex(partition.fdisk_type)) + "\n" + + # Set bootable flag + if hasattr(partition, 'boot') and pt_format == 'mbr': + if str(partition.boot).lower() in ('yes', 'true'): + cmd += "a\n" + if partition.number > 1: + cmd += str(partition.number) + "\n" + + # Write changes + cmd += ("w\n" + "q\n") + p = subprocess.Popen(["fdisk", self.location], + stdin=subprocess.PIPE, + stderr=subprocess.PIPE, + stdout=subprocess.PIPE) + output = p.communicate(cmd) + + errors = output[1].split('\n')[1:-1] + if errors: + # Exception handling is done in this way since fdisk will not + # return a failure exit code if it finds problems with its input. + # Note that the message 'disk does not contain a valid partition + # table' is not an error, it's a status message printed to stderr + # when fdisk starts with a blank device. + raise FdiskError('"%s"' % ' '.join(str(x) for x in errors)) + + def get_partition_uuid(self, partition): + """Read a partition's UUID from disk (MBR or GPT)""" + + return get_partition_uuid(self.location, partition.number, + self.partition_table_format) + + def create_filesystems(self, skip=[]): + """Create filesystems on the disk or image + + Args: + skip: An iterable of mountpoints identifying partitions to skip + filesystem creation on, for example if custom settings are + required + """ + + for part in self.partitionlist: + if hasattr(part, 'mountpoint') and part.mountpoint in skip: + continue + if part.filesystem.lower() != 'none': + with create_loopback(self.location, + part.extent.start * self.sector_size, + part.size) as loop: + print ('Creating %s filesystem on partition %s' % + (part.filesystem, part.number)) + subprocess.check_output(['mkfs.' + part.filesystem, loop]) + + def __str__(self): + return ('' % + (self.location, self.size, len(self.partitionlist))) + + +class PartitioningError(Exception): + + def __init__(self, msg=None): + self.msg = msg + + def __str__(self): + return self.msg + + +class FdiskError(Exception): + + def __init__(self, msg=None): + self.msg = msg + + def __str__(self): + return self.msg + + +def load_yaml(location, size, yaml_file): + """ + Load partition data from a yaml specification + + The YAML file describes the attributes documented in the Device + and Partition classes. + + Args: + yaml_file: String path to a YAML file to load + location: Path to the device node or image to use for partitioning + size: The desired device size in bytes (may be 'fill' to occupy the + entire device + + Returns: + A Device object + """ + + with open(yaml_file, 'r') as f: + kwargs = yaml.safe_load(f) + return Device(location, size, **kwargs) + + +def get_sector_size(location): + """Get the logical sector size of a block device or image, in bytes""" + + return int(__filter_fdisk_list_output('Sector size.*?(\d+) bytes', + location)[0]) + +def get_disk_size(location): + """Get the total size of a block device or image, in bytes""" + + return int(__filter_fdisk_list_output('Disk.*?(\d+) bytes', + location)[0]) + +def get_partition_offsets(location): + """Return an array of the partition start sectors in a device or image""" + + return __get_fdisk_list_numeric_column(location, 1) + +def get_partition_sector_sizes(location): + """Return an array of sizes of partitions in a device or image in sectors""" + + return __get_fdisk_list_numeric_column(location, 3) + +def __get_fdisk_list_numeric_column(location, column): + return map(int, __filter_fdisk_list_output('%s(?:\d+[\*\s]+){%d}(\d+)' % + (location, column), location)) + +def __filter_fdisk_list_output(regex, location): + r = re.compile(regex, re.DOTALL) + m = re.findall(r, subprocess.check_output(['fdisk', '-l', location])) + if m: + return m + else: + raise PartitioningError('Error reading information from fdisk') + +def human_size(size_string): + """Parse strings for human readable size factors""" + + facts_of_1024 = ['', 'k', 'm', 'g', 't'] + m = re.match('^(\d+)([kmgtKMGT]?)$', str(size_string)) + if not m: + return size_string + return int(m.group(1)) * (1024 ** facts_of_1024.index(m.group(2).lower())) + +@contextlib.contextmanager +def create_loopback(mount_path, offset=0, size=0): + """ + Create a loopback device for accessing partitions in block devices + + Args: + mount_path: String path to mount + offset: Offset of the start of a partition in bytes (default 0) + size: Limits the size of the partition, in bytes (default 0). This is + important when creating filesystems, otherwise tools often + corrupt areas beyond the desired limits of the partition. + Returns: + The path to a created loopback device node + """ + + try: + base_args = ['losetup', '--show', '-f', '-P', '-o', str(offset)] + if size and offset: + cmd = base_args + ['--sizelimit', str(size), mount_path] + else: + cmd = base_args + [mount_path] + loop_device = subprocess.check_output(cmd).rstrip() + # Allow the system time to see the new device On some systems, mounts + # created on the loopdev too soon after creating the loopback device + # may be unreliable, even though the -P option (--partscan) is passed + # to losetup + time.sleep(1) + except subprocess.CalledProcessError: + PartitioningError('Error creating loopback') + try: + yield loop_device + finally: + subprocess.check_call(['losetup', '-d', loop_device]) + +def get_pt_type(location): + """Read the partition table type from location (device or image)""" + + pt_type = __get_blkid_output('PTTYPE', location).lower() + return 'none' if pt_type == '' else pt_type + +def __get_blkid_output(field, location): + return subprocess.check_output(['blkid', '-p', '-o', 'value', + '-s', field, location]).rstrip() + +def get_partition_uuid(location, part_num, pt_type=None): + """ + Read the partition UUID (MBR or GPT) for location (device or image) + + Args: + location: Path to device or image + part_num: Integer number of the partition + pt_type: The partition table format (MBR or GPT) + """ + + if not pt_type: + pt_type = get_pt_type(location) + if pt_type == 'gpt': + return get_partition_gpt_guid(location, part_num) + elif pt_type == 'mbr': + return get_partition_mbr_uuid(location, part_num) + +def get_partition_mbr_uuid(location, part_num): + """ + Get a partition's UUID in a device using MBR partition table + + In Linux, MBR partition UUIDs are comprised of the NT disk signature, + followed by '-' and a two digit, zero-padded partition number. This is + necessary since the MBR does not provide per-partition GUIDs as GPT + partition tables do. This can be passed to the kernel with + "root=PARTUUID=$UUID" to identify a partition containing a root + filesystem. + + Args: + partition: A partition object + location: Location of the storage device containing the partition - + an image or device node + Returns: + A UUID referring to an MBR partition, e.g. '97478dab-02' + """ + + pt_uuid = __get_blkid_output('PTUUID', location).upper() + return '%s-%02d' % (pt_uuid, part_num) + +def get_partition_gpt_guid(location, part_num): + """ + Get a partition's GUID from a GPT partition table + + This is read directly from the partition table, since current fdisk does + not support reading GPT partition GUIDs. It does not require special tools + (gfdisk). This is the GUID which identifies the partition, created with + the partition table, as opposed to the filesystem UUID, created with the + filesystem. It is particularly useful for specifying the partition which + the Linux kernel can use on boot to find the root filesystem, e.g. when + using the kernel command line "root=PARTUUID=$UUID" + + Args: + part_num: The partition number + location: Location of the storage device containing the partition - + an image path or device node + Returns: + A GUID string, e.g. 'B342D1AB-4B65-4601-97DC-D6DF3FE2E95E' + """ + + sector_size = get_sector_size(location) + # The partition GUID is located two sectors (protective MBR + GPT header) + # plus 128 bytes for each partition entry in the table, plus 16 bytes for + # the location of the partition's GUID + guid_offset = (2 * sector_size) + (128 * (part_num - 1)) + 16 + + with open(location, 'rb') as f: + f.seek(guid_offset) + raw_uuid_bin = f.read(16) + + a = '' + for c in raw_uuid_bin: + a += '%02X' % ord(c) + + return ('%s%s%s%s-%s%s-%s%s-%s-%s' % + (a[6:8], a[4:6], a[2:4], a[0:2], + a[10:12], a[8:10], + a[14:16], a[12:14], + a[16:20], a[20:32])) diff --git a/old/extensions/rawdisk.check b/old/extensions/rawdisk.check new file mode 100755 index 00000000..e7aed390 --- /dev/null +++ b/old/extensions/rawdisk.check @@ -0,0 +1,52 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'rawdisk' write extension''' + +import os + +import writeexts + + +class RawdiskCheckExtension(writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + location = args[0] + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + if not self.is_device(location): + if not os.path.isfile(location): + raise writeexts.ExtensionError( + 'Cannot upgrade %s: it is not an existing disk image' % + location) + + version_label = os.environ.get('VERSION_LABEL') + if version_label is None: + raise writeexts.ExtensionError( + 'VERSION_LABEL was not given. It is required when ' + 'upgrading an existing system.') + else: + if not self.is_device(location): + if os.path.exists(location): + raise writeexts.ExtensionError( + 'Target %s already exists. Use `morph upgrade` if you ' + 'want to update an existing image.' % location) + +RawdiskCheckExtension().run() diff --git a/old/extensions/rawdisk.write b/old/extensions/rawdisk.write new file mode 100755 index 00000000..ad81ca45 --- /dev/null +++ b/old/extensions/rawdisk.write @@ -0,0 +1,122 @@ +#!/usr/bin/python2 +# Copyright (C) 2012-2015 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, see . + + +'''A Morph deployment write extension for raw disk images.''' + + +import contextlib +import os +import pyfdisk +import re +import subprocess +import sys +import time +import tempfile + +import writeexts + + +class RawDiskWriteExtension(writeexts.WriteExtension): + + '''See rawdisk.write.help for documentation''' + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + upgrade = self.get_environment_boolean('UPGRADE') + + if upgrade: + self.upgrade_local_system(location, temp_root) + else: + try: + if not self.is_device(location): + with self.created_disk_image(location): + self.create_baserock_system(temp_root, location) + self.status(msg='Disk image has been created at %s' % + location) + else: + self.create_baserock_system(temp_root, location) + self.status(msg='System deployed to %s' % location) + except Exception: + self.status(msg='Failure to deploy system to %s' % + location) + raise + + def upgrade_local_system(self, location, temp_root): + self.complete_fstab_for_btrfs_layout(temp_root) + + try: + with self.mount(location) as mp: + self.do_upgrade(mp, temp_root) + return + except subprocess.CalledProcessError: + pass + + # At this point, we have failed to mount a raw image, so instead + # search for a Baserock root filesystem in the device's partitions + with self.find_and_mount_rootfs(location) as mp: + self.do_upgrade(mp, temp_root) + + def do_upgrade(self, mp, temp_root): + version_label = self.get_version_label(mp) + self.status(msg='Updating image to a new version with label %s' % + version_label) + + version_root = os.path.join(mp, 'systems', version_label) + os.mkdir(version_root) + + old_orig = os.path.join(mp, 'systems', 'default', 'orig') + new_orig = os.path.join(version_root, 'orig') + subprocess.check_call( + ['btrfs', 'subvolume', 'snapshot', old_orig, new_orig]) + + subprocess.check_call( + ['rsync', '-a', '--checksum', '--numeric-ids', '--delete', + temp_root + os.path.sep, new_orig]) + + self.create_run(version_root) + + default_path = os.path.join(mp, 'systems', 'default') + if os.path.exists(default_path): + os.remove(default_path) + else: + # we are upgrading and old system that does + # not have an updated extlinux config file + if self.bootloader_config_is_wanted(): + self.generate_bootloader_config(mp) + self.install_bootloader(mp) + os.symlink(version_label, default_path) + + if self.bootloader_config_is_wanted(): + self.install_kernel(version_root, temp_root) + + def get_version_label(self, mp): + version_label = os.environ.get('VERSION_LABEL') + + if version_label is None: + raise writeexts.ExtensionError('VERSION_LABEL was not given') + + if os.path.exists(os.path.join(mp, 'systems', version_label)): + raise writeexts.ExtensionError('VERSION_LABEL %s already exists' + % version_label) + + return version_label + + +RawDiskWriteExtension().run() diff --git a/old/extensions/rawdisk.write.help b/old/extensions/rawdisk.write.help new file mode 100644 index 00000000..72e285b7 --- /dev/null +++ b/old/extensions/rawdisk.write.help @@ -0,0 +1,127 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Write a system produced by Morph to a physical disk, or to a file that can + be used as a virtual disk. The target will be formatted as a single Btrfs + partition, with the system image written to a subvolume in /systems, and + other subvolumes created for /home, /opt, /root, /srv and /var. + + When written to a physical drive, the drive can be used as the boot device + for a 'real' machine. + + When written to a file, the file can be used independently of `morph` to + create virtual machines with KVM / libvirt, OpenStack or, after converting + it to VDI format, VirtualBox. + + `morph deploy` will fail if the file specified by `location` already + exists. + + If used in `morph upgrade`, the rootfs produced by 'morph build' is added + to the existing raw disk image or device as an additional btrfs sub-volume. + `morph upgrade` will fail if the file specified by `location` does not + exist, or is not a Baserock raw disk image. (Most users are unlikely to + need or use this functionality: it is useful mainly for developers working + on the Baserock tools.) + + Parameters: + + * location: the pathname of the disk image to be created/upgraded, or the + path to the physical device. + + * VERSION_LABEL=label - should contain only alpha-numeric + characters and the '-' (hyphen) character. Mandatory if being used with + `morph update` + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + * PARTITION_FILE=path: path to a YAML partition specification to use for + producing partitioned disks or devices. The default specification is + 'partitioning/default' in definitions, which specifies a device with a + single partition. This may serve as an example of the format of this + file, or check the pyfdisk.py documentation in pyfdisk.README. + + In addition to the features available in pyfdisk.py, using this + extension, a list of 'raw_files' items can be added at the partition + level, or the top level of the partition specification. This specifies + files to be written directly to the target device or image using `dd` + + start_offset: 2048 + partition_table_format: mbr + partitions: + - description: boot + filesystem: none + ... + raw_files: + - file: boot/uboot.img + raw_files: + - file: boot/uboot-env.img + offset_bytes: 512 + - file: boot/preloader.bin + skip_bytes: 128 + count_bytes: 16K + + * Files are written consecutively in the order they are listed, and + sourced from the unpacked root filesystem image + * Files can be given a specific offset with 'offset_sectors' or + 'offset_bytes' + * With 'raw_files' specified inside a partition, 'offset_sectors' or + 'offset_bytes' is counted from the start of that partition, + otherwise from the start of the device. + * For files without an explicit offset, the next file is written + starting with the next free byte following the previous file + * Providing an offset is optional for all files + * Specifying 'skip_bytes' will set the 'skip=' option for dd, skipping + a number of bytes at the start of the input file + * Specifying 'count_bytes' sets the 'count=' option for dd + * For properties which take an input in bytes, a human-readable + multiplier can be used, e.g. K, M, G (integer multiplicands only) + + * USE_PARTITIONING=boolean (default: no) Use this flag to enable + partitioning functions. + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/old/extensions/recv-hole b/old/extensions/recv-hole new file mode 100755 index 00000000..fe69f304 --- /dev/null +++ b/old/extensions/recv-hole @@ -0,0 +1,158 @@ +#!/bin/sh +# +# Copyright (C) 2014-2015 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, see . +# +# =*= License: GPL-2 =*= + + +# Receive a data stream describing a sparse file, and reproduce it, +# either to a named file or stdout. +# +# The data stream is simple: it's a sequence of DATA or HOLE records: +# +# DATA +# 123 +# <123 bytes of binary data, NOT including newline at the end> +# +# HOLE +# 123 +# +# This shell script can be executed over ssh (given to ssh as an arguemnt, +# with suitable escaping) on a different computer. This allows a large +# sparse file (e.g., disk image) be transferred quickly. +# +# This script should be called in one of the following ways: +# +# recv-hole file FILENAME +# recv-hole vbox FILENAME DISKSIZE +# +# In both cases, FILENAME is the pathname of the disk image on the +# receiving end. DISKSIZE is the size of the disk image in bytes. The +# first form is used when transferring a disk image to become an +# identical file on the receiving end. +# +# The second form is used when the disk image should be converted for +# use by VirtualBox. In this case, we want to avoid writing a +# temporary file on disk, and then calling the VirtualBox VBoxManage +# tool to do the conversion, since that would involve large amounts of +# unnecessary I/O and disk usage. Instead we pipe the file directly to +# VBoxManage, avoiding those issues. The piping is done here in this +# script, instead of in the caller, to make it easier to run things +# over ssh. +# +# However, since it's not possible seek in a Unix pipe, we have to +# explicitly write the zeroes into the pipe. This is not +# super-efficient, but the way to avoid that would be to avoid sending +# a sparse file, and do the conversion to a VDI on the sending end. +# That is out of scope for xfer-hole and recv-hole. + + +set -eu + + +die() +{ + echo "$@" 1>&2 + exit 1 +} + + +recv_hole_to_file() +{ + local n + + read n + truncate --size "+$n" "$1" +} + + +recv_data_to_file() +{ + local n + read n + + local blocksize=1048576 + local blocks=$(($n / $blocksize)) + local extra=$(($n % $blocksize)) + + xfer_data_to_stdout "$blocksize" "$blocks" >> "$1" + xfer_data_to_stdout 1 "$extra" >> "$1" +} + + +recv_hole_to_stdout() +{ + local n + read n + (echo "$n"; cat /dev/zero) | recv_data_to_stdout +} + + +recv_data_to_stdout() +{ + local n + read n + + local blocksize=1048576 + local blocks=$(($n / $blocksize)) + local extra=$(($n % $blocksize)) + + xfer_data_to_stdout "$blocksize" "$blocks" + xfer_data_to_stdout 1 "$extra" +} + + +xfer_data_to_stdout() +{ + local log="$(mktemp)" + if ! dd "bs=$1" count="$2" iflag=fullblock status=noxfer 2> "$log" + then + cat "$log" 1>&2 + rm -f "$log" + exit 1 + else + rm -f "$log" + fi +} + + +type="$1" +case "$type" in + file) + output="$2" + truncate --size=0 "$output" + while read what + do + case "$what" in + DATA) recv_data_to_file "$output" ;; + HOLE) recv_hole_to_file "$output" ;; + *) die "Unknown instruction: $what" ;; + esac + done + ;; + vbox) + output="$2" + disk_size="$3" + while read what + do + case "$what" in + DATA) recv_data_to_stdout ;; + HOLE) recv_hole_to_stdout ;; + *) die "Unknown instruction: $what" ;; + esac + done | + VBoxManage convertfromraw stdin "$output" "$disk_size" + ;; +esac diff --git a/old/extensions/sdk.write b/old/extensions/sdk.write new file mode 100755 index 00000000..8d3d2a63 --- /dev/null +++ b/old/extensions/sdk.write @@ -0,0 +1,284 @@ +#!/bin/sh +# 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. +# +# =*= License: GPL-2 =*= + +set -eu + +die(){ + echo "$@" >&2 + exit 1 +} + +shellescape(){ + echo "'$(echo "$1" | sed -e "s/'/'\\''/g")'" +} + +########################## END OF COMMON HEADER ############################### +# +# The above lines, as well as being part of this script, are copied into the +# self-installing SDK blob's header script, as a means of re-using content. +# + +help(){ + cat <>"$OUTPUT_SCRIPT" <>"$OUTPUT_SCRIPT" <<'EOF' +########################### START OF HEADER SCRIPT ############################ + +usage(){ + cat <&2 + usage >&2 + exit 1 +fi + +TOOLCHAIN_PATH="$(readlink -f \"$1\")" + +sedescape(){ + # Escape the passed in string so it can be safely interpolated into + # a sed expression as a literal value. + echo "$1" | sed -e 's/[\/&]/\\&/g' +} + +prepend_to_path_elements(){ + # Prepend $1 to every entry in the : separated list specified as $2. + local prefix="$1" + ( + # Split path into components + IFS=: + set -- $2 + # Print path back out with new prefix + printf %s "$prefix/$1" + shift + for arg in "$@"; do + printf ":%s" "$prefix/$arg" + done + ) +} + +extract_rootfs(){ + # Extract the bzipped tarball at the end of the script passed as $1 + # to the path specified as $2 + local selfextractor="$1" + local target="$2" + local script_end="$(($(\ + grep -aEn -m1 -e '^#+ END OF HEADER SCRIPT #+$' "$selfextractor" | + cut -d: -f1) + 1 ))" + mkdir -p "$target" + tail -n +"$script_end" "$selfextractor" | tar -xj -C "$target" . +} + +amend_text_file_paths(){ + # Replace all instances of $3 with $4 in the directory specified by $1 + # excluding the subdirectory $2 + local root="$1" + local inner_sysroot="$2" + local old_prefix="$3" + local new_prefix="$4" + find "$root" \( -path "$inner_sysroot" -prune \) -o -type f \ + -exec sh -c 'file "$1" | grep -q text' - {} \; \ + -exec sed -i -e \ + "s/$(sedescape "$old_prefix")/$(sedescape "$new_prefix")/g" {} + +} + +filter_patchelf_errors(){ + # Filter out warnings from patchelf that are acceptable + # The warning that it's making a file bigger is just noise + # The warning about not being an ELF executable just means we got a + # false positive from file that it was an ELF binary + # Failing to find .interp is because for convenience, we set the + # interpreter in the same command as setting the rpath, even though + # we give it both executables and libraries. + grep -v -e 'warning: working around a Linux kernel bug' \ + -e 'not an ELF executable' \ + -e 'cannot find section .interp' +} + +patch_elves(){ + # Set the interpreter and library paths of ELF binaries in $1, + # except for the $2 subdirectory, using the patchelf command in the + # toolchain specified as $3, so that it uses the linker specified + # as $4 as the interpreter, and the runtime path specified by $5. + # + # The patchelf inside the toolchain is used to ensure that it works + # independently of the availability of patchelf on the host. + # + # This is possible by invoking the linker directly and specifying + # --linker-path as the RPATH we want to set the binaries to use. + local root="$1" + local inner_sysroot="$2" + local patchelf="$3" + local linker="$4" + local lib_path="$5" + find "$root" \( -path "$inner_sysroot" -prune \) -o -type f \ + -type f -perm +u=x \ + -exec sh -c 'file "$1" | grep -q "ELF"' - {} \; \ + -exec "$linker" --library-path "$lib_path" \ + "$patchelf" --set-interpreter "$linker" \ + --set-rpath "$lib_path" {} \; 2>&1 \ + | filter_patchelf_errors +} + +generate_environment_setup(){ + local target="$1" + install -m 644 -D /dev/stdin "$target" <>"$OUTPUT_SCRIPT" . diff --git a/old/extensions/set-hostname.configure b/old/extensions/set-hostname.configure new file mode 100755 index 00000000..3c400563 --- /dev/null +++ b/old/extensions/set-hostname.configure @@ -0,0 +1,27 @@ +#!/bin/sh +# Copyright (C) 2013,2015 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, see . + + +# Set hostname on system from HOSTNAME. + + +set -e + +if [ -n "$HOSTNAME" ] +then + mkdir -p "$1/etc" + echo "$HOSTNAME" > "$1/etc/hostname" +fi + diff --git a/old/extensions/simple-network.configure b/old/extensions/simple-network.configure new file mode 100755 index 00000000..67f46bc4 --- /dev/null +++ b/old/extensions/simple-network.configure @@ -0,0 +1,296 @@ +#!/usr/bin/python2 +# Copyright (C) 2013,2015 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, see . + +'''A Morph deployment configuration extension to handle network configutation + +This extension prepares /etc/network/interfaces and networkd .network files +in /etc/systemd/network/ with the interfaces specified during deployment. + +If no network configuration is provided, eth0 will be configured for DHCP +with the hostname of the system in the case of /etc/network/interfaces. +In the case of networkd, any interface starting by e* will be configured +for DHCP +''' + + +import errno +import os +import sys + +import writeexts + + +class SimpleNetworkError(writeexts.ExtensionError): + '''Errors associated with simple network setup''' + pass + + +class SimpleNetworkConfigurationExtension(object): + '''Configure /etc/network/interfaces and generate networkd .network files + + Reading NETWORK_CONFIG, this extension sets up /etc/network/interfaces + and .network files in /etc/systemd/network/. + ''' + + def run(self, args): + network_config = os.environ.get("NETWORK_CONFIG") + + self.rename_networkd_chunk_file(args) + + if network_config is None: + self.generate_default_network_config(args) + else: + self.status(msg="Processing NETWORK_CONFIG=%(nc)s", + nc=network_config) + + stanzas = self.parse_network_stanzas(network_config) + + self.generate_interfaces_file(args, stanzas) + self.generate_networkd_files(args, stanzas) + + def rename_networkd_chunk_file(self, args): + """Rename the 10-dchp.network file generated in the systemd chunk + + The systemd chunk will place something in 10-dhcp.network, which will + have higher precedence than anything added in this extension (we + start at 50-*). + + We should check for that file and rename it instead remove it in + case the file is being used by the user. + + Until both the following happen, we should continue to rename that + default config file: + + 1. simple-network.configure is always run when systemd is included + 2. We've been building systems without systemd including that default + networkd config for long enough that nobody should be including + that config file. + """ + file_path = os.path.join(args[0], "etc", "systemd", "network", + "10-dhcp.network") + + if os.path.isfile(file_path): + try: + os.rename(file_path, file_path + ".morph") + self.status(msg="Renaming networkd file from systemd chunk: \ + %(f)s to %(f)s.morph", f=file_path) + except OSError: + pass + + def generate_default_network_config(self, args): + """Generate default network config: DHCP in all the interfaces""" + + default_network_config_interfaces = "lo:loopback;" \ + "eth0:dhcp,hostname=$(hostname)" + default_network_config_networkd = "e*:dhcp" + + stanzas_interfaces = self.parse_network_stanzas( + default_network_config_interfaces) + stanzas_networkd = self.parse_network_stanzas( + default_network_config_networkd) + + self.generate_interfaces_file(args, stanzas_interfaces) + self.generate_networkd_files(args, stanzas_networkd) + + def generate_interfaces_file(self, args, stanzas): + """Generate /etc/network/interfaces file""" + + iface_file = self.generate_iface_file(stanzas) + + directory_path = os.path.join(args[0], "etc", "network") + self.make_sure_path_exists(directory_path) + file_path = os.path.join(directory_path, "interfaces") + with open(file_path, "w") as f: + f.write(iface_file) + + def generate_iface_file(self, stanzas): + """Generate an interfaces file from the provided stanzas. + + The interfaces will be sorted by name, with loopback sorted first. + """ + + def cmp_iface_names(a, b): + a = a['name'] + b = b['name'] + if a == "lo": + return -1 + elif b == "lo": + return 1 + else: + return cmp(a,b) + + return "\n".join(self.generate_iface_stanza(stanza) + for stanza in sorted(stanzas, cmp=cmp_iface_names)) + + def generate_iface_stanza(self, stanza): + """Generate an interfaces stanza from the provided data.""" + + name = stanza['name'] + itype = stanza['type'] + lines = ["auto %s" % name, "iface %s inet %s" % (name, itype)] + lines += [" %s %s" % elem for elem in stanza['args'].items()] + lines += [""] + return "\n".join(lines) + + def generate_networkd_files(self, args, stanzas): + """Generate .network files""" + + for i, stanza in enumerate(stanzas, 50): + iface_file = self.generate_networkd_file(stanza) + + if iface_file is None: + continue + + directory_path = os.path.join(args[0], "etc", "systemd", "network") + self.make_sure_path_exists(directory_path) + file_path = os.path.join(directory_path, + "%s-%s.network" % (i, stanza['name'])) + + with open(file_path, "w") as f: + f.write(iface_file) + + def generate_networkd_file(self, stanza): + """Generate an .network file from the provided data.""" + + name = stanza['name'] + itype = stanza['type'] + pairs = stanza['args'].items() + + if itype == "loopback": + return + + lines = ["[Match]"] + lines += ["Name=%s\n" % name] + lines += ["[Network]"] + if itype == "dhcp": + lines += ["DHCP=yes"] + else: + lines += self.generate_networkd_entries(pairs) + + return "\n".join(lines) + + def generate_networkd_entries(self, pairs): + """Generate networkd configuration entries with the other parameters""" + + address = None + netmask = None + gateway = None + dns = None + lines = [] + + for pair in pairs: + if pair[0] == 'address': + address = pair[1] + elif pair[0] == 'netmask': + netmask = pair[1] + elif pair[0] == 'gateway': + gateway = pair[1] + elif pair[0] == 'dns': + dns = pair[1] + + if address and netmask: + network_suffix = self.convert_net_mask_to_cidr_suffix (netmask); + address_line = address + '/' + str(network_suffix) + lines += ["Address=%s" % address_line] + elif address or netmask: + raise SimpleNetworkError( + 'address and netmask must be specified together') + + if gateway: + lines += ["Gateway=%s" % gateway] + + if dns: + lines += ["DNS=%s" % dns] + + return lines + + def convert_net_mask_to_cidr_suffix(self, mask): + """Convert dotted decimal form of a subnet mask to CIDR suffix notation + + For example: 255.255.255.0 -> 24 + """ + return sum(bin(int(x)).count('1') for x in mask.split('.')) + + def parse_network_stanzas(self, config): + """Parse a network config environment variable into stanzas. + + Network config stanzas are semi-colon separated. + """ + + return [self.parse_network_stanza(s) for s in config.split(";")] + + def parse_network_stanza(self, stanza): + """Parse a network config stanza into name, type and arguments. + + Each stanza is of the form name:type[,arg=value]... + + For example: + lo:loopback + eth0:dhcp + eth1:static,address=10.0.0.1,netmask=255.255.0.0 + """ + elements = stanza.split(",") + lead = elements.pop(0).split(":") + if len(lead) != 2: + raise SimpleNetworkError("Stanza '%s' is missing its type" % + stanza) + iface = lead[0] + iface_type = lead[1] + + if iface_type not in ['loopback', 'static', 'dhcp']: + raise SimpleNetworkError("Stanza '%s' has unknown interface type" + " '%s'" % (stanza, iface_type)) + + argpairs = [element.split("=", 1) for element in elements] + output_stanza = { "name": iface, + "type": iface_type, + "args": {} } + for argpair in argpairs: + if len(argpair) != 2: + raise SimpleNetworkError("Stanza '%s' has bad argument '%r'" + % (stanza, argpair.pop(0))) + if argpair[0] in output_stanza["args"]: + raise SimpleNetworkError("Stanza '%s' has repeated argument" + " %s" % (stanza, argpair[0])) + output_stanza["args"][argpair[0]] = argpair[1] + + return output_stanza + + def make_sure_path_exists(self, path): + try: + os.makedirs(path) + except OSError as e: + if e.errno == errno.EEXIST and os.path.isdir(path): + pass + else: + raise SimpleNetworkError("Unable to create directory '%s'" + % path) + + def status(self, **kwargs): + '''Provide status output. + + The ``msg`` keyword argument is the actual message, + the rest are values for fields in the message as interpolated + by %. + + ''' + + sys.stdout.write('%s\n' % (kwargs['msg'] % kwargs)) + +try: + SimpleNetworkConfigurationExtension().run(sys.argv[1:]) +except SimpleNetworkError as e: + sys.stdout.write('ERROR: %s\n' % e) + sys.exit(1) diff --git a/old/extensions/ssh-rsync.check b/old/extensions/ssh-rsync.check new file mode 100755 index 00000000..5c2e5507 --- /dev/null +++ b/old/extensions/ssh-rsync.check @@ -0,0 +1,66 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'ssh-rsync' write extension''' + + +import os + +import writeexts + + +class SshRsyncCheckExtension(writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + upgrade = self.get_environment_boolean('UPGRADE') + if not upgrade: + raise writeexts.ExtensionError( + 'The ssh-rsync write is for upgrading existing remote ' + 'Baserock machines. It cannot be used for an initial ' + 'deployment.') + + if os.environ.get('VERSION_LABEL', '') == '': + raise writeexts.ExtensionError( + 'A VERSION_LABEL must be set when deploying an upgrade.') + + location = args[0] + self.check_ssh_connectivity(location) + self.check_is_baserock_system(location) + + # The new system that being deployed as an upgrade must contain + # baserock-system-config-sync and system-version-manager. However, the + # old system simply needs to have SSH and rsync. + self.check_command_exists(location, 'rsync') + + def check_is_baserock_system(self, location): + output = writeexts.ssh_runcmd( + location, + ['sh', '-c', 'test -d /baserock || echo -n dirnotfound']) + if output == 'dirnotfound': + raise writeexts.ExtensionError('%s is not a baserock system' + % location) + + def check_command_exists(self, location, command): + test = 'type %s > /dev/null 2>&1 || echo -n cmdnotfound' % command + output = writeexts.ssh_runcmd(location, ['sh', '-c', test]) + if output == 'cmdnotfound': + raise writeexts.ExtensionError( + "%s does not have %s" % (location, command)) + + +SshRsyncCheckExtension().run() diff --git a/old/extensions/ssh-rsync.write b/old/extensions/ssh-rsync.write new file mode 100755 index 00000000..1045c528 --- /dev/null +++ b/old/extensions/ssh-rsync.write @@ -0,0 +1,175 @@ +#!/usr/bin/python2 +# Copyright (C) 2013-2015 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, see . + + +'''A Morph deployment write extension for upgrading systems over ssh.''' + + +import contextlib +import os +import subprocess +import sys +import tempfile +import time + +import writeexts + + +def ssh_runcmd_ignore_failure(location, command, **kwargs): + try: + return writeexts.ssh_runcmd(location, command, **kwargs) + except writeexts.ExtensionError: + pass + + +class SshRsyncWriteExtension(writeexts.WriteExtension): + + '''See ssh-rsync.write.help for documentation''' + + + def find_root_disk(self, location): + '''Read /proc/mounts on location to find which device contains "/"''' + + self.status(msg='Finding device that contains "/"') + contents = writeexts.ssh_runcmd(location, + ['cat', '/proc/mounts']) + for line in contents.splitlines(): + line_words = line.split() + if (line_words[1] == '/' and line_words[0] != 'rootfs'): + return line_words[0] + + @contextlib.contextmanager + def _remote_mount_point(self, location): + self.status(msg='Creating remote mount point') + remote_mnt = writeexts.ssh_runcmd(location, + ['mktemp', '-d']).strip() + try: + yield remote_mnt + finally: + self.status(msg='Removing remote mount point') + writeexts.ssh_runcmd(location, ['rmdir', remote_mnt]) + + @contextlib.contextmanager + def _remote_mount(self, location, root_disk, mountpoint): + self.status(msg='Mounting root disk') + writeexts.ssh_runcmd(location, ['mount', root_disk, mountpoint]) + try: + yield + finally: + self.status(msg='Unmounting root disk') + writeexts.ssh_runcmd(location, ['umount', mountpoint]) + + @contextlib.contextmanager + def _created_version_root(self, location, remote_mnt, version_label): + version_root = os.path.join(remote_mnt, 'systems', version_label) + self.status(msg='Creating %(root)s', root=version_root) + writeexts.ssh_runcmd(location, ['mkdir', version_root]) + try: + yield version_root + except BaseException as e: + # catch all, we always want to clean up + self.status(msg='Cleaning up %(root)s', root=version_root) + ssh_runcmd_ignore_failure(location, ['rmdir', version_root]) + raise + + def get_old_orig(self, location, remote_mnt): + '''Identify which subvolume to snapshot from''' + + # rawdisk upgrades use 'default' + return os.path.join(remote_mnt, 'systems', 'default', 'orig') + + @contextlib.contextmanager + def _created_orig_subvolume(self, location, remote_mnt, version_root): + self.status(msg='Creating "orig" subvolume') + old_orig = self.get_old_orig(location, remote_mnt) + new_orig = os.path.join(version_root, 'orig') + writeexts.ssh_runcmd(location, ['btrfs', 'subvolume', 'snapshot', + old_orig, new_orig]) + try: + yield new_orig + except BaseException as e: + ssh_runcmd_ignore_failure( + location, ['btrfs', 'subvolume', 'delete', new_orig]) + raise + + def populate_remote_orig(self, location, new_orig, temp_root): + '''Populate the subvolume version_root/orig on location''' + + self.status(msg='Populating "orig" subvolume') + subprocess.check_call(['rsync', '-as', '--checksum', '--numeric-ids', + '--delete', temp_root + os.path.sep, + '%s:%s' % (location, new_orig)]) + + @contextlib.contextmanager + def _deployed_version(self, location, version_label, + system_config_sync, system_version_manager): + self.status(msg='Calling system-version-manager to deploy upgrade') + deployment = os.path.join('/systems', version_label, 'orig') + writeexts.ssh_runcmd(location, + ['env', 'BASEROCK_SYSTEM_CONFIG_SYNC='+system_config_sync, + system_version_manager, 'deploy', deployment]) + try: + yield deployment + except BaseException as e: + self.status(msg='Cleaning up failed version installation') + writeexts.ssh_runcmd(location, + [system_version_manager, 'remove', version_label]) + raise + + def upgrade_remote_system(self, location, temp_root): + root_disk = self.find_root_disk(location) + uuid = writeexts.ssh_runcmd(location, + ['blkid', '-s', 'UUID', '-o', 'value', root_disk]).strip() + + self.complete_fstab_for_btrfs_layout(temp_root, uuid) + + version_label = os.environ['VERSION_LABEL'] + autostart = self.get_environment_boolean('AUTOSTART') + + with self._remote_mount_point(location) as remote_mnt, \ + self._remote_mount(location, root_disk, remote_mnt), \ + self._created_version_root(location, remote_mnt, + version_label) as version_root, \ + self._created_orig_subvolume(location, remote_mnt, + version_root) as orig: + self.populate_remote_orig(location, orig, temp_root) + system_root = os.path.join(remote_mnt, 'systems', + version_label, 'orig') + config_sync = os.path.join(system_root, 'usr', 'bin', + 'baserock-system-config-sync') + version_manager = os.path.join(system_root, 'usr', 'bin', + 'system-version-manager') + with self._deployed_version(location, version_label, + config_sync, version_manager): + self.status(msg='Setting %(v)s as the new default system', + v=version_label) + writeexts.ssh_runcmd(location, + [version_manager, 'set-default', version_label]) + + if autostart: + self.status(msg="Rebooting into new system ...") + ssh_runcmd_ignore_failure(location, ['reboot']) + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + + self.upgrade_remote_system(location, temp_root) + + +SshRsyncWriteExtension().run() diff --git a/old/extensions/ssh-rsync.write.help b/old/extensions/ssh-rsync.write.help new file mode 100644 index 00000000..f3f79ed5 --- /dev/null +++ b/old/extensions/ssh-rsync.write.help @@ -0,0 +1,50 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Upgrade a Baserock system which is already deployed: + - as a KVM/LibVirt, OpenStack or vbox-ssh virtual machine; + - on a Jetson board. + + Copies a binary delta over to the target system and arranges for it + to be bootable. + + The recommended way to use this extension is by calling `morph upgrade`. + Using `morph deploy --upgrade` is deprecated. + + The upgrade will fail if: + - no VM is deployed and running at `location`; + - the target system is not a Baserock system; + - the target's filesystem and its layout are not compatible with that + created by `morph deploy`." + + See also the 'Upgrading a Baserock installation' section of the 'Using + Baserock` page at wiki.baserock.org + http://wiki.baserock.org/devel-with/#index8h2 + + Parameters: + + * location: the 'user@hostname' string that will be used by ssh and rsync. + 'user' will always be `root` and `hostname` the hostname or address of + the system being upgraded. + + * VERSION_LABEL=label - **(MANDATORY)** should contain only alpha-numeric + characters and the '-' (hyphen) character. + + * AUTOSTART=` - boolean. If it is set, the VM will be started when + it has been deployed. + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/old/extensions/sshkeys.configure b/old/extensions/sshkeys.configure new file mode 100755 index 00000000..7a5a8379 --- /dev/null +++ b/old/extensions/sshkeys.configure @@ -0,0 +1,25 @@ +#!/bin/sh +# +# 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. + +set -e + +if [ "$SSHKEYS" ] +then + install -d -m 700 "$1/root/.ssh" + echo Adding Key in "$SSHKEYS" to authorized_keys file + cat $SSHKEYS >> "$1/root/.ssh/authorized_keys" +fi diff --git a/old/extensions/strip-gplv3.configure b/old/extensions/strip-gplv3.configure new file mode 100755 index 00000000..e4e836f4 --- /dev/null +++ b/old/extensions/strip-gplv3.configure @@ -0,0 +1,97 @@ +#!/usr/bin/python2 +# Copyright (C) 2013-2016 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. + +''' A Morph configuration extension for removing gplv3 chunks from a system + +Using a hard-coded list of chunks, it will read the system's /baserock metadata +to find the files created by that chunk, then remove them. + +''' + +import os +import re +import subprocess +import sys + +import writeexts + +import imp +scriptslib = imp.load_source('scriptslib', 'scripts/scriptslib.py') + +class StripGPLv3ConfigureExtension(writeexts.Extension): + gplv3_chunks = [ + ['autoconf', ''], + ['autoconf-tarball', ''], + ['automake', ''], + ['bash', ''], + ['binutils', ''], + ['bison', ''], + ['ccache', ''], + ['cmake', ''], + ['flex', ''], + ['gawk', ''], + ['gcc', r'^.*lib.*\.so(\.\d+)*$'], + ['gdbm', ''], + ['gettext-tarball', ''], + ['gperf', ''], + ['groff', ''], + ['libtool', r'^.*lib.*\.so(\.\d+)*$'], + ['libtool-tarball', r'^.*lib.*\.so(\.\d+)*$'], + ['m4', ''], + ['make', ''], + ['nano', ''], + ['patch', ''], + ['rsync', ''], + ['texinfo-tarball', ''], + ] + + def process_args(self, args): + target_root = args[0] + meta_dir = os.path.join(target_root, 'baserock') + metadata = scriptslib.meta_load_from_dir(meta_dir) + + for chunk in self.gplv3_chunks: + for meta in metadata.get_name(chunk[0]): + self.remove_chunk( + target_root, reversed(meta['contents']), chunk[1]) + + def remove_chunk(self, target_root, chunk_contents, pattern): + updated_contents = [] + for content_entry in chunk_contents: + pat = re.compile(pattern) + if len(pattern) == 0 or not pat.match(content_entry): + self.remove_content_entry(target_root, content_entry) + else: + updated_contents.append(content_entry) + + def remove_content_entry(self, target_root, content_entry): + entry_path = os.path.join(target_root, './' + content_entry) + if not entry_path.startswith(target_root): + raise writeexts.ExtensionError( + '%s is not in %s' % (entry_path, target_root)) + if os.path.exists(entry_path): + if os.path.islink(entry_path): + os.unlink(entry_path) + elif os.path.isfile(entry_path): + os.remove(entry_path) + elif os.path.isdir(entry_path): + if not os.listdir(entry_path): + os.rmdir(entry_path) + else: + raise writeexts.ExtensionError( + '%s is not a link, file or directory' % entry_path) + +StripGPLv3ConfigureExtension().run(sys.argv[1:]) diff --git a/old/extensions/swift-build-rings.yml b/old/extensions/swift-build-rings.yml new file mode 100644 index 00000000..1ffe9c37 --- /dev/null +++ b/old/extensions/swift-build-rings.yml @@ -0,0 +1,34 @@ +--- +- hosts: localhost + vars: + - rings: + - { name: account, port: 6002 } + - { name: container, port: 6001 } + - { name: object, port: 6000 } + remote_user: root + tasks: + - file: path={{ ansible_env.ROOT }}/etc/swift owner=root group=root state=directory + + - name: Create ring + shell: swift-ring-builder {{ item.name }}.builder create {{ ansible_env.SWIFT_PART_POWER }} + {{ ansible_env.SWIFT_REPLICAS }} {{ ansible_env.SWIFT_MIN_PART_HOURS }} + with_items: rings + + - name: Add each storage node to the ring + shell: swift-ring-builder {{ item[0].name }}.builder + add r1z1-{{ item[1].ip }}:{{ item[0].port }}/{{ item[1].device }} {{ item[1].weight }} + with_nested: + - rings + - ansible_env.SWIFT_STORAGE_DEVICES + + - name: Rebalance the ring + shell: swift-ring-builder {{ item.name }}.builder rebalance {{ ansible_env.SWIFT_REBALANCE_SEED }} + with_items: rings + + - name: Copy ring configuration files into place + copy: src={{ item.name }}.ring.gz dest={{ ansible_env.ROOT }}/etc/swift + with_items: rings + + - name: Copy ring builder files into place + copy: src={{ item.name }}.builder dest={{ ansible_env.ROOT }}/etc/swift + with_items: rings diff --git a/old/extensions/swift-storage-devices-validate.py b/old/extensions/swift-storage-devices-validate.py new file mode 100755 index 00000000..57ab23d0 --- /dev/null +++ b/old/extensions/swift-storage-devices-validate.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright © 2015 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, see . +# +# This is used by the openstack-swift.configure extension +# to validate any provided storage device specifiers +# under SWIFT_STORAGE_DEVICES +# + + +''' + This is used by the swift-storage.configure extension + to validate any storage device specifiers specified + in the SWIFT_STORAGE_DEVICES environment variable +''' + +from __future__ import print_function + +import yaml +import sys + +EXAMPLE_DEVSPEC = '{device: sdb1, ip: 127.0.0.1, weight: 100}' +REQUIRED_KEYS = ['ip', 'device', 'weight'] + +def err(msg): + print(msg, file=sys.stderr) + sys.exit(1) + +if len(sys.argv) != 2: + err('usage: %s STRING_TO_BE_VALIDATED' % sys.argv[0]) + +swift_storage_devices = yaml.load(sys.argv[1]) + +if not isinstance(swift_storage_devices, list): + err('Expected list of device specifiers\n' + 'Example: [%s]' % EXAMPLE_DEVSPEC) + +for d in swift_storage_devices: + if not isinstance(d, dict): + err("Invalid device specifier: `%s'\n" + 'Device specifier must be a dictionary\n' + 'Example: %s' % (d, EXAMPLE_DEVSPEC)) + + if set(d.keys()) != set(REQUIRED_KEYS): + err("Invalid device specifier: `%s'\n" + 'Specifier should contain: %s\n' + 'Example: %s' % (d, str(REQUIRED_KEYS)[1:-1], EXAMPLE_DEVSPEC)) diff --git a/old/extensions/swift-storage.configure b/old/extensions/swift-storage.configure new file mode 100644 index 00000000..391b392a --- /dev/null +++ b/old/extensions/swift-storage.configure @@ -0,0 +1,107 @@ +#!/bin/bash +# +# Copyright © 2015 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, see . + +set -e + +# The ansible script needs to know where the rootfs is, so we export it here +export ROOT="$1" + +validate_number() { + local name="$1" + local value="$2" + + local pattern='^[0-9]+$' + if ! [[ $value =~ $pattern ]] + then + echo "'$name' must be a number" >&2 + exit 1 + fi +} + +validate_non_empty() { + local name="$1" + local value="$2" + + if [[ $value = None ]] + then + echo "'$name' cannot be empty" >&2 + exit 1 + fi +} + +MANDATORY_OPTIONS="SWIFT_HASH_PATH_PREFIX \ + SWIFT_HASH_PATH_SUFFIX \ + SWIFT_REBALANCE_SEED \ + SWIFT_PART_POWER \ + SWIFT_REPLICAS \ + SWIFT_MIN_PART_HOURS \ + SWIFT_STORAGE_DEVICES \ + CONTROLLER_HOST_ADDRESS \ + MANAGEMENT_INTERFACE_IP_ADDRESS" + +for option in $MANDATORY_OPTIONS +do + if ! [[ -v $option ]] + then + missing_option=True + echo "Required option $option isn't set!" >&2 + fi +done + +if [[ $missing_option = True ]]; then exit 1; fi + +./swift-storage-devices-validate.py "$SWIFT_STORAGE_DEVICES" + +# Validate SWIFT_PART_POWER, SWIFT_REPLICAS, SWIFT_MIN_PART_HOURS +# just make sure they're numbers + +validate_number "SWIFT_PART_POWER" "$SWIFT_PART_POWER" +validate_number "SWIFT_REPLICAS" "$SWIFT_REPLICAS" +validate_number "SWIFT_MIN_PART_HOURS" "$SWIFT_MIN_PART_HOURS" + +# Make sure these aren't empty +validate_non_empty "SWIFT_HASH_PATH_PREFIX" "$SWIFT_HASH_PATH_PREFIX" +validate_non_empty "SWIFT_HASH_PATH_SUFFIX" "$SWIFT_HASH_PATH_SUFFIX" +validate_non_empty "SWIFT_REBALANCE_SEED" "$SWIFT_REBALANCE_SEED" +validate_non_empty "CONTROLLER_HOST_ADDRESS" "$CONTROLLER_HOST_ADDRESS" +validate_non_empty "MANAGEMENT_INTERFACE_IP_ADDRESS" "$MANAGEMENT_INTERFACE_IP_ADDRESS" + +mkdir -p "$ROOT/usr/lib/systemd/system/multi-user.target.wants" # ensure this exists before we make symlinks + +# A swift controller needs the storage setup service +# but does not want any of the other storage services enabled +ln -s "/usr/lib/systemd/system/swift-storage-setup.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/swift-storage-setup.service" + +SWIFT_CONTROLLER=${SWIFT_CONTROLLER:-False} + +if [[ $SWIFT_CONTROLLER = False ]] +then + ln -s "/usr/lib/systemd/system/rsync.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/rsync.service" + ln -s "/usr/lib/systemd/system/swift-storage.service" \ + "$ROOT/usr/lib/systemd/system/multi-user.target.wants/swift-storage.service" +fi + +# Build swift data structures (the rings) +/usr/bin/ansible-playbook -i hosts swift-build-rings.yml + +cat << EOF > "$ROOT"/usr/share/swift/swift-storage-vars.yml +--- +MANAGEMENT_INTERFACE_IP_ADDRESS: $MANAGEMENT_INTERFACE_IP_ADDRESS +SWIFT_HASH_PATH_PREFIX: $SWIFT_HASH_PATH_PREFIX +SWIFT_HASH_PATH_SUFFIX: $SWIFT_HASH_PATH_SUFFIX +EOF diff --git a/old/extensions/sysroot.check b/old/extensions/sysroot.check new file mode 100755 index 00000000..71b35175 --- /dev/null +++ b/old/extensions/sysroot.check @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright (C) 2015 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, see . + +# Preparatory checks for Morph 'sysroot' write extension + +set -eu + +if [ "$UPGRADE" == "yes" ]; then + echo >&2 "ERROR: Cannot upgrade a sysroot deployment" + exit 1 +fi diff --git a/old/extensions/sysroot.write b/old/extensions/sysroot.write new file mode 100755 index 00000000..46f1a780 --- /dev/null +++ b/old/extensions/sysroot.write @@ -0,0 +1,22 @@ +#!/bin/sh +# Copyright (C) 2014,2015 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, see . + +# A Morph write extension to deploy to another directory + +set -eu + +mkdir -p "$2" + +cp -a "$1"/* "$2" diff --git a/old/extensions/tar.check b/old/extensions/tar.check new file mode 100755 index 00000000..ca5747fd --- /dev/null +++ b/old/extensions/tar.check @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright (C) 2014-2015 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, see . + +# Preparatory checks for Morph 'tar' write extension + +set -eu + +if [ "$UPGRADE" = "yes" ]; then + echo >&2 "ERROR: Cannot upgrade a tar file deployment." + exit 1 +fi diff --git a/old/extensions/tar.write b/old/extensions/tar.write new file mode 100755 index 00000000..01b545b4 --- /dev/null +++ b/old/extensions/tar.write @@ -0,0 +1,20 @@ +#!/bin/sh +# Copyright (C) 2013,2015 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, see . + +# A Morph write extension to deploy to a .tar file + +set -eu + +tar -C "$1" -cf "$2" . diff --git a/old/extensions/tar.write.help b/old/extensions/tar.write.help new file mode 100644 index 00000000..b45c61fa --- /dev/null +++ b/old/extensions/tar.write.help @@ -0,0 +1,19 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + Create a .tar file of the deployed system. + + The `location` argument is a pathname to the .tar file to be + created. diff --git a/old/extensions/trove.configure b/old/extensions/trove.configure new file mode 100755 index 00000000..c1cd8a65 --- /dev/null +++ b/old/extensions/trove.configure @@ -0,0 +1,172 @@ +#!/bin/sh +# +# 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 +# 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 fully configure +# a Trove instance at deployment time. It uses the following variables +# from the environment (run `morph help trove.configure` to see a description +# of them): +# +# * TROVE_ID +# * TROVE_HOSTNAME (optional, defaults to TROVE_ID) +# * TROVE_COMPANY +# * LORRY_SSH_KEY +# * UPSTREAM_TROVE +# * UPSTREAM_TROVE_PROTOCOL +# * TROVE_ADMIN_USER +# * TROVE_ADMIN_EMAIL +# * TROVE_ADMIN_NAME +# * TROVE_ADMIN_SSH_PUBKEY +# * LORRY_CONTROLLER_MINIONS (optional, defaults to 4) +# * TROVE_BACKUP_KEYS - a space-separated list of paths to SSH keys. +# (optional) +# * TROVE_GENERIC (optional) +# +# The configuration of a Trove is slightly tricky: part of it has to +# be run on the configured system after it has booted. We accomplish +# this by copying in all the relevant data to the target system +# (in /var/lib/trove-setup), and creating a systemd unit file that +# runs on the first boot. The first boot will be detected by the +# existence of the /var/lib/trove-setup/needed file. + +set -e + +if [ "$TROVE_GENERIC" ] +then + echo "Not configuring the trove, it will be generic" + exit 0 +fi + + +# Check that all the variables needed are present: + +error_vars=false +if test "x$TROVE_ID" = "x"; then + echo "ERROR: TROVE_ID needs to be defined." + error_vars=true +fi + +if test "x$TROVE_COMPANY" = "x"; then + echo "ERROR: TROVE_COMPANY needs to be defined." + error_vars=true +fi + +if test "x$TROVE_ADMIN_USER" = "x"; then + echo "ERROR: TROVE_ADMIN_USER needs to be defined." + error_vars=true +fi + +if test "x$TROVE_ADMIN_NAME" = "x"; then + echo "ERROR: TROVE_ADMIN_NAME needs to be defined." + error_vars=true +fi + +if test "x$TROVE_ADMIN_EMAIL" = "x"; then + echo "ERROR: TROVE_ADMIN_EMAIL needs to be defined." + error_vars=true +fi + +if ! ssh-keygen -lf $LORRY_SSH_KEY > /dev/null 2>&1 +then + echo "ERROR: LORRY_SSH_KEY is not a vaild ssh key." + error_vars=true +fi + +if ! ssh-keygen -lf $WORKER_SSH_PUBKEY > /dev/null 2>&1 +then + echo "ERROR: WORKER_SSH_PUBKEY is not a vaild ssh key." + error_vars=true +fi + +if ! ssh-keygen -lf $TROVE_ADMIN_SSH_PUBKEY > /dev/null 2>&1 +then + echo "ERROR: TROVE_ADMIN_SSH_PUBKEY is not a vaild ssh key." + error_vars=true +fi + +if "$error_vars"; then + exit 1 +fi + +ROOT="$1" + + +TROVE_DATA="$ROOT/etc/trove" +mkdir -p "$TROVE_DATA" + +# Install mandatory files +install -m 0600 "$LORRY_SSH_KEY" "$TROVE_DATA/lorry.key" +install -m 0644 "${LORRY_SSH_KEY}.pub" "$TROVE_DATA/lorry.key.pub" +install -m 0644 "$TROVE_ADMIN_SSH_PUBKEY" "$TROVE_DATA/admin.key.pub" +install -m 0644 "$WORKER_SSH_PUBKEY" "$TROVE_DATA/worker.key.pub" + + +# Create base configuration file +python <<'EOF' >"$TROVE_DATA/trove.conf" +import os, sys, yaml + +trove_configuration={ + 'TROVE_ID': os.environ['TROVE_ID'], + 'TROVE_COMPANY': os.environ['TROVE_COMPANY'], + 'TROVE_ADMIN_USER': os.environ['TROVE_ADMIN_USER'], + 'TROVE_ADMIN_EMAIL': os.environ['TROVE_ADMIN_EMAIL'], + 'TROVE_ADMIN_NAME': os.environ['TROVE_ADMIN_NAME'], + 'LORRY_SSH_KEY': '/etc/trove/lorry.key', + 'LORRY_SSH_PUBKEY': '/etc/trove/lorry.key.pub', + 'TROVE_ADMIN_SSH_PUBKEY': '/etc/trove/admin.key.pub', + 'WORKER_SSH_PUBKEY': '/etc/trove/worker.key.pub', +} + + + +optional_keys = ('MASON_ID', 'HOSTNAME', 'TROVE_HOSTNAME', + 'LORRY_CONTROLLER_MINIONS', 'TROVE_BACKUP_KEYS', + 'UPSTREAM_TROVE', 'UPSTREAM_TROVE_PROTOCOL') + +for key in optional_keys: + if key in os.environ: + trove_configuration[key]=os.environ[key] + +yaml.dump(trove_configuration, sys.stdout, default_flow_style=False) +EOF + +# Add backups configuration +if [ -n "$TROVE_BACKUP_KEYS" ]; then + mkdir -p "$TROVE_DATA/backup-keys" + cp -- $TROVE_BACKUP_KEYS "$TROVE_DATA/backup-keys" + echo "TROVE_BACKUP_KEYS: /etc/trove/backup-keys/*" >> "$TROVE_DATA/trove.conf" +fi + +# Add SSL configuration +if test "x$TROVE_SSL_PEMFILE" != "x"; then + if test -f "$TROVE_SSL_PEMFILE"; then + install -m 0600 "$TROVE_SSL_PEMFILE" "$TROVE_DATA/trove-ssl-pemfile.pem" + echo "TROVE_SSL_PEMFILE: /etc/trove/trove-ssl-pemfile.pem" >> "$TROVE_DATA/trove.conf" + else + echo "ERROR: $TROVE_SSL_PEMFILE (TROVE_SSL_PEMFILE) doesn't exist." + exit 1 + fi +fi + +if test "x$TROVE_SSL_CA_FILE" != "x"; then + if test -f "$TROVE_SSL_CA_FILE"; then + install -m 0644 "$TROVE_SSL_CA_FILE" "$TROVE_DATA/trove-ssl-ca-file.pem" + echo "TROVE_SSL_CA_FILE: /etc/trove/trove-ssl-ca-file.pem" >> "$TROVE_DATA/trove.conf" + else + echo "ERROR: $TROVE_SSL_CA_FILE (TROVE_SSL_CA_FILE) doesn't exist." + exit 1 + fi +fi diff --git a/old/extensions/trove.configure.help b/old/extensions/trove.configure.help new file mode 100644 index 00000000..2669f693 --- /dev/null +++ b/old/extensions/trove.configure.help @@ -0,0 +1,134 @@ +help: | + This is a "morph deploy" configuration extension to fully configure + a Trove instance at deployment time. It uses the following + configuration variables: + + * `TROVE_ID` + * `TROVE_HOSTNAME` (optional, defaults to `TROVE_ID`) + * `TROVE_COMPANY` + * `LORRY_SSH_KEY` + * `UPSTREAM_TROVE` + * `TROVE_ADMIN_USER` + * `TROVE_ADMIN_EMAIL` + * `TROVE_ADMIN_NAME` + * `TROVE_ADMIN_SSH_PUBKEY` + * `LORRY_CONTROLLER_MINIONS` (optional, defaults to 4) + * `TROVE_BACKUP_KEYS` - a space-separated list of paths to SSH keys. + (optional) + * `TROVE_SSL_PEMFILE` (optional) + * `TROVE_SSL_CA_FILE` (optional) + + The variables are described in more detail below. + + A Trove deployment needs to know the following things: + + * The Trove's ID and public name. + * The Trove's administrator name and access details. + * Private and public SSH keys for the Lorry user on the Trove. + * Which upstream Trove it should be set to mirror upon initial deploy. + + These are specified with the configuration variables described in this + help. + + * `TROVE_GENERIC` -- boolean. If it's true the trove will be generic + and it won't be configured with any of the other variables listed + here. + + * `TROVE_ID` -- the identifier of the Trove. This separates it from + other Troves, and allows mirroring of Troves to happen without local + changes getting overwritten. + + The Trove ID is used in several ways. Any local repositories (those not + mirrored from elsewhere) get created under a prefix that is the ID. + Thus, the local repositories on the `git.baserock.org` Trove, whose + Trove ID is `baserock`, are named + `baserock/baserock/definitions.git` and similar. The ID is used + there twice: first as a prefix and then as a "project name" within + that prefix. There can be more projects under the prefix. For + example, there is a `baserock/local-config/lorries.git` repository, + where `local-config` is a separate project from `baserock`. Projects + here are a concept for the Trove's git access control language. + + The Trove ID also used as the prefix for any branch and tag names + created locally for repositories that are not local. Thus, in the + `delta/linux.git` repository, any local branches would be called + something like `baserock/morph`, instead of just `morph`. The + Trove's git access control prevents normal uses from pushing + branches and tags that do not have the Trove ID as the prefix. + + * `TROVE_HOSTNAME` -- the public name of the Trove. This is an + optional setting, and defaults to `TROVE_ID`. The public name is + typically the domain name of the server (e.g., `git.baserock.org`), + but can also be an IP address. This setting is used when Trove needs + to generate URLs that point to itself, such as the `git://` and + `http://` URLs for each git repository that is viewed via the web + interface. + + Note that this is _not_ the system hostname. That is set separately, + with the `HOSTNAME` configuration setting (see the + `set-hostname.configure` extension). + + * `TROVE_COMPANY` -- a description of the organisation who own the + Trove. This is shown in various parts of the web interface of the + Trove. It is for descriptive purposes only. + + * `LORRY_SSH_KEY` -- ssh key pair that the Trove's Lorry will use to + access an upstream Trove, and to push updates to the Trove's git + server. + + The value is a filename on the system doing the deployment (where + `morph deploy` is run). The file contains the _private_ key, and the + public key is in a file with the `.pub` suffix added to the name. + + The upstream Trove needs to be configured to allow this key to + access it. This configuration does not do that automatically. + + * `UPSTREAM_TROVE` -- public name of the upstream Trove (domain + name or IP address). This is an optional setting. If it's set, + the new Trove will be configured to mirror that Trove. + + * `TROVE_ADMIN_USER`, `TROVE_ADMIN_EMAIL`, `TROVE_ADMIN_NAME`, + `TROVE_ADMIN_SSH_PUBKEY` -- details of the Trove's (initial) + administrator. + + Each Trove needs at least one administrator user, and one is created + upon initial deployment. `TROVE_ADMIN_USER` is the username of the + account to be created, `TROVE_ADMIN_EMAIL` should be the e-mail of + the user, and `TROVE_ADMIN_NAME` is their name. If more + administrators are needed, the initial person should create them + using the usual Gitano commands. + + * `LORRY_CONTROLLER_MINIONS` -- the number of Lorry Controller worker + processes to start. This is an optional setting and defaults to 4. + The more workers are running, the more Lorry jobs can run at the same + time, but the more resources they require. + + * `TROVE_BACKUP_KEYS` -- a space-separated list of paths to SSH keys. + If this is set, the Trove will have a backup user that can be accessed + with rsync using the SSH keys provided. + + * `TROVE_SSL_PEMFILE` -- SSL certificate to use in lighttpd SSL + configuration. + + * `TROVE_SSL_CA_FILE` -- CA chain certificate to use in lighttpd SSL + configuration. + + Example + ------- + + The following set of variables could be to deploy a Trove instance: + + TROVE_ID: my-trove + TROVE_HOSTNAME: my-trove.example.com + TROVE_COMPANY: My Personal Trove for Me, Myself and I + LORRY_SSH_KEY: my-trove/lorry.key + UPSTREAM_TROVE: git.baserock.org + UPSTREAM_TROVE_USER: my-trove + UPSTREAM_TROVE_EMAIL: my-trove@example.com + TROVE_ADMIN_USER: tomjon + TROVE_ADMIN_EMAIL: tomjon@example.com + TROVE_ADMIN_NAME: Tomjon of Lancre + TROVE_ADMIN_SSH_PUBKEY: my-trove/tomjon.key.pub + + These would be put into the cluster morphology used to do the + deployment. diff --git a/old/extensions/vagrant.configure b/old/extensions/vagrant.configure new file mode 100644 index 00000000..abc3ea0c --- /dev/null +++ b/old/extensions/vagrant.configure @@ -0,0 +1,55 @@ +#!/bin/sh +# 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.5 +# +# 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. + +set -e + +ROOT="$1" + +if test "x$VAGRANT" = "x"; then + exit 0 +fi + +for needed in etc/ssh/sshd_config etc/sudoers; do + if ! test -e "$ROOT/$needed"; then + echo >&2 "Unable to find $needed" + echo >&2 "Cannot continue configuring as Vagrant basebox" + exit 1 + fi +done + +# SSH daemon needs to be configured to not use DNS... +sed -i -e's/^(.*[Uu]][Ss][Ee][Dd][Nn][Ss].*)$/#\1/' "$ROOT/etc/ssh/sshd_config" +echo "UseDNS no" >> "$ROOT/etc/ssh/sshd_config" + +# We need to add a vagrant user with "vagrant" as the password We're doing this +# manually because chrooting in to run adduser is not really allowed for +# deployment time since we wouldn't be able to run the adduser necessarily. In +# practice for now we'd be able to because we can't deploy raw disks +# cross-platform and expect extlinux to install but we won't, for good +# practice and to hilight this deficiency. +echo 'vagrant:x:1000:1000:Vagrant User:/home/vagrant:/bin/bash' >> "$ROOT/etc/passwd" +echo 'vagrant:/6PTOoWylhw3w:16198:0:99999:7:::' >> "$ROOT/etc/shadow" +echo 'vagrant:x:1000:' >> "$ROOT/etc/group" +mkdir -p "$ROOT/home/vagrant" +chown -R 1000:1000 "$ROOT/home/vagrant" + +# Next, the vagrant user is meant to have sudo access +echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> "$ROOT/etc/sudoers" + +# And ensure that we get sbin in our path +echo 'PATH="$PATH:/sbin:/usr/sbin"' >> "$ROOT/etc/profile" +echo 'export PATH' >> "$ROOT/etc/profile" + diff --git a/old/extensions/vdaboot.configure b/old/extensions/vdaboot.configure new file mode 100755 index 00000000..60de925b --- /dev/null +++ b/old/extensions/vdaboot.configure @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright (C) 2013,2015 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, see . + + +# Change the "/" mount point to /dev/vda to use virtio disks. + +set -e + +if [ "$OPENSTACK_USER" ] +then + # Modifying fstab + if [ -f "$1/etc/fstab" ] + then + mv "$1/etc/fstab" "$1/etc/fstab.old" + awk 'BEGIN {print "/dev/vda / btrfs defaults,rw,noatime 0 1"}; + $2 != "/" {print $0 };' "$1/etc/fstab.old" > "$1/etc/fstab" + rm "$1/etc/fstab.old" + else + echo "/dev/vda / btrfs defaults,rw,noatime 0 1"> "$1/etc/fstab" + fi +fi diff --git a/old/extensions/virtualbox-ssh.check b/old/extensions/virtualbox-ssh.check new file mode 100755 index 00000000..215c8b30 --- /dev/null +++ b/old/extensions/virtualbox-ssh.check @@ -0,0 +1,36 @@ +#!/usr/bin/python2 +# Copyright (C) 2014-2015 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, see . + +'''Preparatory checks for Morph 'virtualbox-ssh' write extension''' + + +import writeexts + + +class VirtualBoxPlusSshCheckExtension(writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise writeexts.ExtensionError( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + +VirtualBoxPlusSshCheckExtension().run() diff --git a/old/extensions/virtualbox-ssh.write b/old/extensions/virtualbox-ssh.write new file mode 100755 index 00000000..56c0bb57 --- /dev/null +++ b/old/extensions/virtualbox-ssh.write @@ -0,0 +1,219 @@ +#!/usr/bin/python2 +# Copyright (C) 2012-2015 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, see . + + +'''A Morph deployment write extension for deploying to VirtualBox via ssh. + +VirtualBox is assumed to be running on a remote machine, which is +accessed over ssh. The machine gets created, but not started. + +See file virtualbox-ssh.write.help for documentation + +''' + + +import os +import re +import subprocess +import sys +import tempfile +import time +import urlparse + +import writeexts + + +class VirtualBoxPlusSshWriteExtension(writeexts.WriteExtension): + + def process_args(self, args): + if len(args) != 2: + raise writeexts.ExtensionError( + 'Wrong number of command line args') + + temp_root, location = args + ssh_host, vm_name, vdi_path = self.parse_location(location) + autostart = self.get_environment_boolean('AUTOSTART') + + vagrant = self.get_environment_boolean('VAGRANT') + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + + try: + self.transfer_and_convert_to_vdi( + raw_disk, ssh_host, vdi_path) + self.create_virtualbox_guest(ssh_host, vm_name, vdi_path, + autostart, vagrant) + except BaseException: + sys.stderr.write('Error deploying to VirtualBox') + os.remove(raw_disk) + writeexts.ssh_runcmd(ssh_host, ['rm', '-f', vdi_path]) + raise + else: + os.remove(raw_disk) + self.status( + msg='Virtual machine %(vm_name)s has been created', + vm_name=vm_name) + + def parse_location(self, location): + '''Parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + if x.scheme != 'vbox+ssh': + raise writeexts.ExtensionError( + 'URL schema must be vbox+ssh in %s' % location) + m = re.match('^/(?P[^/]+)(?P/.+)$', x.path) + if not m: + raise writeexts.ExtensionError( + 'Cannot parse location %s' % location) + return x.netloc, m.group('guest'), m.group('path') + + def transfer_and_convert_to_vdi(self, raw_disk, ssh_host, vdi_path): + '''Transfer raw disk image to VirtualBox host, and convert to VDI.''' + + self.status(msg='Transfer disk and convert to VDI') + + st = os.lstat(raw_disk) + # TODO: Something! + xfer_hole_path = writeexts.get_data_path('xfer-hole') + recv_hole = writeexts.get_data('recv-hole') + + ssh_remote_cmd = [ + 'sh', '-c', recv_hole, + 'dummy-argv0', 'vbox', vdi_path, str(st.st_size), + ] + + xfer_hole_proc = subprocess.Popen( + ['python', xfer_hole_path, raw_disk], + stdout=subprocess.PIPE) + recv_hole_proc = subprocess.Popen( + ['ssh', ssh_host] + map(writeexts.shell_quote, ssh_remote_cmd), + stdin=xfer_hole_proc.stdout) + xfer_hole_proc.stdout.close() + recv_hole_proc.communicate() + + def virtualbox_version(self, ssh_host): + 'Get the version number of the VirtualBox running on the remote host.' + + # --version gives a build id, which looks something like + # 1.2.3r456789, so we need to strip the suffix off and get a tuple + # of the (major, minor, patch) version, since comparing with a + # tuple is more reliable than a string and more convenient than + # comparing against the major, minor and patch numbers directly + self.status(msg='Checking version of remote VirtualBox') + build_id = writeexts.ssh_runcmd(ssh_host, + ['VBoxManage', '--version']) + version_string = re.match(r"^([0-9\.]+).*$", build_id.strip()).group(1) + return tuple(int(s or '0') for s in version_string.split('.')) + + def create_virtualbox_guest(self, ssh_host, vm_name, vdi_path, autostart, + vagrant): + '''Create the VirtualBox virtual machine.''' + + self.status(msg='Create VirtualBox virtual machine') + + ram_mebibytes = str(self.get_ram_size() / (1024**2)) + + vcpu_count = str(self.get_vcpu_count()) + + if not vagrant: + hostonly_iface = self.get_host_interface(ssh_host) + + if self.virtualbox_version(ssh_host) < (4, 3, 0): + sataportcount_option = '--sataportcount' + else: + sataportcount_option = '--portcount' + + commands = [ + ['createvm', '--name', vm_name, '--ostype', 'Linux26_64', + '--register'], + ['modifyvm', vm_name, '--ioapic', 'on', + '--memory', ram_mebibytes, '--cpus', vcpu_count], + ['storagectl', vm_name, '--name', 'SATA Controller', + '--add', 'sata', '--bootable', 'on', sataportcount_option, '2'], + ['storageattach', vm_name, '--storagectl', 'SATA Controller', + '--port', '0', '--device', '0', '--type', 'hdd', '--medium', + vdi_path], + ] + if vagrant: + commands[1].extend(['--nic1', 'nat', + '--natnet1', 'default']) + else: + commands[1].extend(['--nic1', 'hostonly', + '--hostonlyadapter1', hostonly_iface, + '--nic2', 'nat', '--natnet2', 'default']) + + attach_disks = self.parse_attach_disks() + for device_no, disk in enumerate(attach_disks, 1): + cmd = ['storageattach', vm_name, + '--storagectl', 'SATA Controller', + '--port', str(device_no), + '--device', '0', + '--type', 'hdd', + '--medium', disk] + commands.append(cmd) + + if autostart: + commands.append(['startvm', vm_name]) + + for command in commands: + argv = ['VBoxManage'] + command + writeexts.ssh_runcmd(ssh_host, argv) + + def get_host_interface(self, ssh_host): + host_ipaddr = os.environ.get('HOST_IPADDR') + netmask = os.environ.get('NETMASK') + + if host_ipaddr is None: + raise writeexts.ExtensionError('HOST_IPADDR was not given') + + if netmask is None: + raise writeexts.ExtensionError('NETMASK was not given') + + # 'VBoxManage list hostonlyifs' retrieves a list with the hostonly + # interfaces on the host. For each interface, the following lines + # are shown on top: + # + # Name: vboxnet0 + # GUID: 786f6276-656e-4074-8000-0a0027000000 + # Dhcp: Disabled + # IPAddress: 192.168.100.1 + # + # The following command tries to retrieve the hostonly interface + # name (e.g. vboxnet0) associated with the given ip address. + iface = None + lines = writeexts.ssh_runcmd(ssh_host, + ['VBoxManage', 'list', 'hostonlyifs']).splitlines() + for i, v in enumerate(lines): + if host_ipaddr in v: + iface = lines[i-3].split()[1] + break + + if iface is None: + iface = writeexts.ssh_runcmd(ssh_host, + ['VBoxManage', 'hostonlyif', 'create']) + # 'VBoxManage hostonlyif create' shows the name of the + # created hostonly interface inside single quotes + iface = iface[iface.find("'") + 1 : iface.rfind("'")] + writeexts.ssh_runcmd(ssh_host, + ['VBoxManage', 'hostonlyif', + 'ipconfig', iface, + '--ip', host_ipaddr, + '--netmask', netmask]) + + return iface + +VirtualBoxPlusSshWriteExtension().run() diff --git a/old/extensions/virtualbox-ssh.write.help b/old/extensions/virtualbox-ssh.write.help new file mode 100644 index 00000000..2dbf988c --- /dev/null +++ b/old/extensions/virtualbox-ssh.write.help @@ -0,0 +1,135 @@ +# Copyright (C) 2014, 2015 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, see . + +help: | + + Deploy a Baserock system as a *new* VirtualBox virtual machine. + (Use the `ssh-rsync` write extension to deploy upgrades to an *existing* + VM) + + Connects to HOST via ssh to run VirtualBox's command line management tools. + + Parameters: + + * location: a custom URL scheme of the form `vbox+ssh://HOST/GUEST/PATH`, + where: + * HOST is the name of the host on which VirtualBox is running + * GUEST is the name of the guest VM on that host + * PATH is the path to the disk image that should be created, + on that host. For example, + `vbox+ssh://alice@192.168.122.1/testsys/home/alice/testys.img` where + * `alice@192.168.122.1` is the target host as given to ssh, + **from within the development host** (which may be + different from the target host's normal address); + * `testsys` is the name of the new guest VM'; + * `/home/alice/testys.img` is the pathname of the disk image files + on the target host. + + * HOSTNAME=name: the hostname of the **guest** VM within the network into + which it is being deployed. + + * DISK_SIZE=X: **(MANDATORY)** the size of the VM's primary virtual hard + disk. `X` should use a suffix of `K`, `M`, or `G` (in upper or lower + case) to indicate kilo-, mega-, or gigabytes. For example, + `DISK_SIZE=100G` would create a 100 gigabyte virtual hard disk. + + * RAM_SIZE=X: The amount of RAM that the virtual machine should allocate + for itself from the host. `X` is interpreted in the same as for + DISK_SIZE, and defaults to `1G`. + + * VCPUS=n: the number of virtual CPUs for the VM. Allowed values 1-32. Do + not use more CPU cores than you have available physically (real cores, + no hyperthreads). + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + * AUTOSTART= - boolean. If it is set, the VM will be started when + it has been deployed. + + * VAGRANT= - boolean. If it is set, then networking is configured + so that the VM will work with Vagrant. Otherwise networking is + configured to run directly in VirtualBox. + + * HOST_IPADDR= - the IP address of the VM host. + + * NETMASK= - the netmask of the VM host. + + * NETWORK_CONFIG= - `net_config` is used to set up the VM's + network interfaces. It is a string containing semi-colon separated + 'stanzas' where each stanza provides information about a network + interface. Each stanza is of the form name:type[,arg=value] e.g. + + lo:loopback + eth0:dhcp + eth1:static,address=10.0.0.1,netmask=255.255.0.0 + + An example of the NETWORK_CONFIG parameter (It should be in one line) + + `"lo:loopback;eth0:static,address=192.168.100.2,netmask=255.255.255.0; + eth1:dhcp,hostname=$(hostname)"` + + It is useful to configure one interface to use NAT to give the VM access + to the outside world and another interface to use the Virtual Box host + adapter to allow you to access the Trove from the host machine. + + The NAT interface eth1 is set up to use dhcp, the host-only adapter + interface is configured statically. + + Note: you must give the host-only adapter interface an address that lies + **on the same network** as the host adapter. So if the host adapter has + an IP of 192.168.100.1 eth0 should have an address such as + 192.168.100.42. + + The settings of the host adapter, including its IP can be changed either + in the VirtualBox manager UI + (https://www.virtualbox.org/manual/ch03.html#settings-network) + or via the VBoxManage command line + (https://www.virtualbox.org/manual/ch08.html#idp57572192) + + See Chapter 6 of the VirtualBox User Manual for more information about + virtual networking (https://www.virtualbox.org/manual/ch06.html) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/old/extensions/writeexts.py b/old/extensions/writeexts.py new file mode 100644 index 00000000..5b79093b --- /dev/null +++ b/old/extensions/writeexts.py @@ -0,0 +1,1072 @@ +#!/usr/bin/python2 +# Copyright (C) 2012-2015 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, see . + + +import contextlib +import errno +import logging +import os +import re +import shutil +import stat +import subprocess +import sys +import time +import tempfile + +import partitioning +import pyfdisk +import writeexts + + +if sys.version_info >= (3, 3, 0): + import shlex + shell_quote = shlex.quote +else: + import pipes + shell_quote = pipes.quote + + +def get_data_path(relative_path): + extensions_dir = os.path.dirname(__file__) + return os.path.join(extensions_dir, relative_path) + + +def get_data(relative_path): + with open(get_data_path(relative_path)) as f: + return f.read() + + +def ssh_runcmd(host, args, **kwargs): + '''Run command over ssh''' + command = ['ssh', host, '--'] + [shell_quote(arg) for arg in args] + + feed_stdin = kwargs.get('feed_stdin') + stdin = kwargs.get('stdin', subprocess.PIPE) + stdout = kwargs.get('stdout', subprocess.PIPE) + stderr = kwargs.get('stderr', subprocess.PIPE) + + p = subprocess.Popen(command, stdin=stdin, stdout=stdout, stderr=stderr) + out, err = p.communicate(input=feed_stdin) + if p.returncode != 0: + raise ExtensionError('ssh command `%s` failed' % ' '.join(command)) + return out + + +def write_from_dict(filepath, d, validate=lambda x, y: True): + """Takes a dictionary and appends the contents to a file + + An optional validation callback can be passed to perform validation on + each value in the dictionary. + + e.g. + + def validation_callback(dictionary_key, dictionary_value): + if not dictionary_value.isdigit(): + raise Exception('value contains non-digit character(s)') + + Any callback supplied to this function should raise an exception + if validation fails. + + """ + # Sort items asciibetically + # the output of the deployment should not depend + # on the locale of the machine running the deployment + items = sorted(d.iteritems(), key=lambda (k, v): [ord(c) for c in v]) + + for (k, v) in items: + validate(k, v) + + with open(filepath, 'a') as f: + for (_, v) in items: + f.write('%s\n' % v) + + os.fchown(f.fileno(), 0, 0) + os.fchmod(f.fileno(), 0644) + + +def parse_environment_pairs(env, pairs): + '''Add key=value pairs to the environment dict. + + Given a dict and a list of strings of the form key=value, + set dict[key] = value, unless key is already set in the + environment, at which point raise an exception. + + This does not modify the passed in dict. + + Returns the extended dict. + + ''' + extra_env = dict(p.split('=', 1) for p in pairs) + conflicting = [k for k in extra_env if k in env] + if conflicting: + raise ExtensionError('Environment already set: %s' + % ', '.join(conflicting)) + + # Return a dict that is the union of the two + # This is not the most performant, since it creates + # 3 unnecessary lists, but I felt this was the most + # easy to read. Using itertools.chain may be more efficicent + return dict(env.items() + extra_env.items()) + + +class ExtensionError(Exception): + + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + + +class Fstab(object): + '''Small helper class for parsing and adding lines to /etc/fstab.''' + + # There is an existing Python helper library for editing of /etc/fstab. + # However it is unmaintained and has an incompatible license (GPL3). + # + # https://code.launchpad.net/~computer-janitor-hackers/python-fstab/trunk + + def __init__(self, filepath='/etc/fstab'): + if os.path.exists(filepath): + with open(filepath, 'r') as f: + self.text= f.read() + else: + self.text = '' + self.filepath = filepath + self.lines_added = 0 + + def get_mounts(self): + '''Return list of mount devices and targets in /etc/fstab. + + Return value is a dict of target -> device. + ''' + mounts = dict() + for line in self.text.splitlines(): + words = line.split() + if len(words) >= 2 and not words[0].startswith('#'): + device, target = words[0:2] + mounts[target] = device + return mounts + + def add_line(self, line): + '''Add a new entry to /etc/fstab. + + Lines are appended, and separated from any entries made by configure + extensions with a comment. + + ''' + if self.lines_added == 0: + if len(self.text) == 0 or self.text[-1] is not '\n': + self.text += '\n' + self.text += '# Morph default system layout\n' + self.lines_added += 1 + + self.text += line + '\n' + + def write(self): + '''Rewrite the fstab file to include all new entries.''' + with tempfile.NamedTemporaryFile(delete=False) as f: + f.write(self.text) + tmp = f.name + shutil.move(os.path.abspath(tmp), os.path.abspath(self.filepath)) + + +class Extension(object): + + '''A base class for deployment extensions. + + A subclass should subclass this class, and add a + ``process_args`` method. + + Note that it is not necessary to subclass this class for write + extensions. This class is here just to collect common code for + write extensions. + + ''' + + def setup_logging(self): + '''Direct all logging output to MORPH_LOG_FD, if set. + + This file descriptor is read by Morph and written into its own log + file. + + ''' + log_write_fd = int(os.environ.get('MORPH_LOG_FD', 0)) + + if log_write_fd == 0: + return + + formatter = logging.Formatter('%(message)s') + + handler = logging.StreamHandler(os.fdopen(log_write_fd, 'w')) + handler.setFormatter(formatter) + + logger = logging.getLogger() + logger.addHandler(handler) + logger.setLevel(logging.DEBUG) + + def process_args(self, args): + raise NotImplementedError() + + def run(self, args=None): + if args is None: + args = sys.argv[1:] + try: + self.setup_logging() + self.process_args(args) + except ExtensionError as e: + sys.stdout.write('ERROR: %s\n' % e) + sys.exit(1) + + @staticmethod + def status(**kwargs): + '''Provide status output. + + The ``msg`` keyword argument is the actual message, + the rest are values for fields in the message as interpolated + by %. + + ''' + sys.stdout.write('%s\n' % (kwargs['msg'] % kwargs)) + sys.stdout.flush() + + +class WriteExtension(Extension): + + '''A base class for deployment write extensions. + + A subclass should subclass this class, and add a + ``process_args`` method. + + Note that it is not necessary to subclass this class for write + extensions. This class is here just to collect common code for + write extensions. + + ''' + + def check_for_btrfs_in_deployment_host_kernel(self): + with open('/proc/filesystems') as f: + text = f.read() + return '\tbtrfs\n' in text + + def require_btrfs_in_deployment_host_kernel(self): + if not self.check_for_btrfs_in_deployment_host_kernel(): + raise ExtensionError( + 'Error: Btrfs is required for this deployment, but was not ' + 'detected in the kernel of the machine that is running Morph.') + + def create_local_system(self, temp_root, location): + '''Create a raw system image locally.''' + + with self.created_disk_image(location): + self.create_baserock_system(temp_root, location) + + def create_baserock_system(self, temp_root, location): + if self.get_environment_boolean('USE_PARTITIONING', 'no'): + self.create_partitioned_system(temp_root, location) + else: + self.format_btrfs(location) + self.create_unpartitioned_system(temp_root, location) + + @contextlib.contextmanager + def created_disk_image(self, location): + size = self.get_disk_size() + if not size: + raise ExtensionError('DISK_SIZE is not defined') + self.create_raw_disk_image(location, size) + try: + yield + except BaseException: + os.unlink(location) + raise + + def format_btrfs(self, raw_disk): + try: + self.mkfs_btrfs(raw_disk) + except BaseException: + sys.stderr.write('Error creating disk image') + raise + + def create_unpartitioned_system(self, temp_root, raw_disk): + '''Deploy a bootable Baserock system within a single Btrfs filesystem. + + Called if USE_PARTITIONING=no (the default) is set in the deployment + options. + + ''' + with self.mount(raw_disk) as mp: + try: + self.create_versioned_layout(mp, version_label='factory') + self.create_btrfs_system_rootfs( + temp_root, mp, version_label='factory', + rootfs_uuid=self.get_uuid(raw_disk)) + if self.bootloader_config_is_wanted(): + self.create_bootloader_config( + temp_root, mp, version_label='factory', + rootfs_uuid=self.get_uuid(raw_disk)) + except BaseException: + sys.stderr.write('Error creating Btrfs system layout') + raise + + def _parse_size(self, size): + '''Parse a size from a string. + + Return size in bytes. + + ''' + + m = re.match('^(\d+)([kmgKMG]?)$', size) + if not m: + return None + + factors = { + '': 1, + 'k': 1024, + 'm': 1024**2, + 'g': 1024**3, + } + factor = factors[m.group(2).lower()] + + return int(m.group(1)) * factor + + def _parse_size_from_environment(self, env_var, default): + '''Parse a size from an environment variable.''' + + size = os.environ.get(env_var, default) + if size is None: + return None + bytes = self._parse_size(size) + if bytes is None: + raise ExtensionError('Cannot parse %s value %s' + % (env_var, size)) + return bytes + + def get_disk_size(self): + '''Parse disk size from environment.''' + return self._parse_size_from_environment('DISK_SIZE', None) + + def get_ram_size(self): + '''Parse RAM size from environment.''' + return self._parse_size_from_environment('RAM_SIZE', '1G') + + def get_vcpu_count(self): + '''Parse the virtual cpu count from environment.''' + return self._parse_size_from_environment('VCPUS', '1') + + def create_raw_disk_image(self, filename, size): + '''Create a raw disk image.''' + + self.status(msg='Creating empty disk image') + with open(filename, 'wb') as f: + if size > 0: + f.seek(size-1) + f.write('\0') + + def mkfs_btrfs(self, location): + '''Create a btrfs filesystem on the disk.''' + + self.status(msg='Creating btrfs filesystem') + try: + # The following command disables some new filesystem features. We + # need to do this because at the time of writing, SYSLINUX has not + # been updated to understand these new features and will fail to + # boot if the kernel is on a filesystem where they are enabled. + subprocess.check_output( + ['mkfs.btrfs','-f', '-L', 'baserock', + '--features', '^extref', + '--features', '^skinny-metadata', + '--features', '^mixed-bg', + '--nodesize', '4096', + location], stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + if 'unrecognized option \'--features\'' in e.output: + # Old versions of mkfs.btrfs (including v0.20, present in many + # Baserock releases) don't support the --features option, but + # also don't enable the new features by default. So we can + # still create a bootable system in this situation. + logging.debug( + 'Assuming mkfs.btrfs failure was because the tool is too ' + 'old to have --features flag.') + subprocess.check_call(['mkfs.btrfs','-f', + '-L', 'baserock', location]) + else: + raise + + def get_uuid(self, location, offset=0): + '''Get the filesystem UUID of a block device's file system. + + Requires util-linux blkid; the busybox version ignores options and + lies by exiting successfully. + + Args: + location: Path of device or image to inspect + offset: A byte offset - which should point to the start of a + partition containing a filesystem + ''' + + return subprocess.check_output(['blkid', '-s', 'UUID', '-o', + 'value', '-p', '-O', str(offset), + location]).strip() + + @contextlib.contextmanager + def mount(self, location): + self.status(msg='Mounting filesystem') + try: + mount_point = tempfile.mkdtemp() + if self.is_device(location): + subprocess.check_call(['mount', location, mount_point]) + else: + subprocess.check_call(['mount', '-o', 'loop', + location, mount_point]) + except BaseException: + sys.stderr.write('Error mounting filesystem') + os.rmdir(mount_point) + raise + try: + yield mount_point + finally: + self.status(msg='Unmounting filesystem') + subprocess.check_call(['umount', mount_point]) + os.rmdir(mount_point) + + def create_versioned_layout(self, mountpoint, version_label): + '''Create a versioned directory structure within a partition. + + The Baserock project has defined a 'reference upgrade mechanism'. This + mandates a specific directory layout. It consists of a toplevel + '/systems' directory, containing subdirectories named with a 'version + label'. These subdirectories contain the actual OS content. + + For the root file system, a Btrfs partition must be used. For each + version, two subvolumes are created: 'orig' and 'run'. This is handled + in create_btrfs_system_rootfs(). + + Other partitions (e.g. /boot) can also follow the same layout. In the + case of /boot, content goes directly in the version directory. That + means there are no 'orig' and 'run' subvolumes, which avoids the + need to use Btrfs. + + The `system-version-manager` tool from tbdiff.git is responsible for + deploying live upgrades, and it understands this layout. + + ''' + version_root = os.path.join(mountpoint, 'systems', version_label) + + os.makedirs(version_root) + os.symlink( + version_label, os.path.join(mountpoint, 'systems', 'default')) + + def create_btrfs_system_rootfs(self, temp_root, mountpoint, version_label, + rootfs_uuid, device=None): + '''Separate base OS versions from state using subvolumes. + + The 'device' parameter should be a pyfdisk.Device instance, + as returned by partitioning.do_partitioning(), that describes the + partition layout of the target device. This is used to set up + mountpoints in the root partition for the other partitions. + If no 'device' instance is passed, no mountpoints are set up in the + rootfs. + + ''' + version_root = os.path.join(mountpoint, 'systems', version_label) + state_root = os.path.join(mountpoint, 'state') + os.makedirs(state_root) + + system_dir = self.create_orig(version_root, temp_root) + state_dirs = self.complete_fstab_for_btrfs_layout(system_dir, + rootfs_uuid, device) + + for state_dir in state_dirs: + self.create_state_subvolume(system_dir, mountpoint, state_dir) + + self.create_run(version_root) + + if device: + self.create_partition_mountpoints(device, system_dir) + + def create_bootloader_config(self, temp_root, mountpoint, version_label, + rootfs_uuid, device=None): + '''Setup the bootloader. + + ''' + initramfs = self.find_initramfs(temp_root) + version_root = os.path.join(mountpoint, 'systems', version_label) + + self.install_kernel(version_root, temp_root) + if self.get_dtb_path() != '': + self.install_dtb(version_root, temp_root) + self.install_syslinux_menu(mountpoint, temp_root) + if initramfs is not None: + # Using initramfs - can boot a rootfs with a filesystem UUID + self.install_initramfs(initramfs, version_root) + self.generate_bootloader_config(mountpoint, + rootfs_uuid=rootfs_uuid) + else: + if device: + # A partitioned disk or image - boot with partition UUID + root_part = device.get_partition_by_mountpoint('/') + root_guid = device.get_partition_uuid(root_part) + self.generate_bootloader_config(mountpoint, + root_guid=root_guid) + else: + # Unpartitioned and no initramfs - cannot boot with a UUID + self.generate_bootloader_config(mountpoint) + self.install_bootloader(mountpoint) + + def create_partition_mountpoints(self, device, system_dir): + '''Create (or empty) partition mountpoints in the root filesystem + + Delete contents of partition mountpoints in the rootfs to leave an + empty mount drectory (files are copied to the actual partition in + create_partitioned_system()), or create an empty mount directory in + the rootfs if the mount path doesn't exist. + + Args: + device: A pyfdisk.py Device object describing the partitioning + system_dir: A path to the Baserock rootfs to be modified + ''' + + for part in device.partitionlist: + if hasattr(part, 'mountpoint') and part.mountpoint != '/': + part_mount_dir = os.path.join(system_dir, + re.sub('^/', '', part.mountpoint)) + if os.path.exists(part_mount_dir): + self.status(msg='Deleting files in mountpoint ' + 'for %s partition' % part.mountpoint) + self.empty_dir(part_mount_dir) + else: + self.status(msg='Creating empty mount directory ' + 'for %s partition' % part.mountpoint) + os.mkdir(part_mount_dir) + + def create_orig(self, version_root, temp_root): + '''Create the default "factory" system.''' + + orig = os.path.join(version_root, 'orig') + + self.status(msg='Creating orig subvolume') + subprocess.check_call(['btrfs', 'subvolume', 'create', orig]) + self.status(msg='Copying files to orig subvolume') + subprocess.check_call(['cp', '-a', temp_root + '/.', orig + '/.']) + + return orig + + def create_run(self, version_root): + '''Create the 'run' snapshot.''' + + self.status(msg='Creating run subvolume') + orig = os.path.join(version_root, 'orig') + run = os.path.join(version_root, 'run') + subprocess.check_call( + ['btrfs', 'subvolume', 'snapshot', orig, run]) + + def create_state_subvolume(self, system_dir, mountpoint, state_subdir): + '''Create a shared state subvolume. + + We need to move any files added to the temporary rootfs by the + configure extensions to their correct home. For example, they might + have added keys in `/root/.ssh` which we now need to transfer to + `/state/root/.ssh`. + + ''' + self.status(msg='Creating %s subvolume' % state_subdir) + subvolume = os.path.join(mountpoint, 'state', state_subdir) + subprocess.check_call(['btrfs', 'subvolume', 'create', subvolume]) + os.chmod(subvolume, 0o755) + + existing_state_dir = os.path.join(system_dir, state_subdir) + self.move_dir_contents(existing_state_dir, subvolume) + + def move_dir_contents(self, source_dir, target_dir): + '''Move all files source_dir, to target_dir''' + + n = self.__cmd_files_in_dir(['mv'], source_dir, target_dir) + if n: + self.status(msg='Moved %d files to %s' % (n, target_dir)) + + def copy_dir_contents(self, source_dir, target_dir): + '''Copy all files source_dir, to target_dir''' + + n = self.__cmd_files_in_dir(['cp', '-a', '-r'], source_dir, target_dir) + if n: + self.status(msg='Copied %d files to %s' % (n, target_dir)) + + def empty_dir(self, directory): + '''Empty the contents of a directory, but not the directory itself''' + + n = self.__cmd_files_in_dir(['rm', '-rf'], directory) + if n: + self.status(msg='Deleted %d files in %s' % (n, directory)) + + def __cmd_files_in_dir(self, cmd, source_dir, target_dir=None): + files = [] + if os.path.exists(source_dir): + files = os.listdir(source_dir) + for filename in files: + filepath = os.path.join(source_dir, filename) + add_params = [filepath, target_dir] if target_dir else [filepath] + subprocess.check_call(cmd + add_params) + return len(files) + + def complete_fstab_for_btrfs_layout(self, system_dir, + rootfs_uuid=None, device=None): + '''Fill in /etc/fstab entries for the default Btrfs disk layout. + + In the future we should move this code out of the write extension and + in to a configure extension. To do that, though, we need some way of + informing the configure extension what layout should be used. Right now + a configure extension doesn't know if the system is going to end up as + a Btrfs disk image, a tarfile or something else and so it can't come + up with a sensible default fstab. + + Configuration extensions can already create any /etc/fstab that they + like. This function only fills in entries that are missing, so if for + example the user configured /home to be on a separate partition, that + decision will be honoured and /state/home will not be created. + + ''' + shared_state_dirs = {'home', 'root', 'opt', 'srv', 'var'} + + fstab = Fstab(os.path.join(system_dir, 'etc', 'fstab')) + existing_mounts = fstab.get_mounts() + + if '/' in existing_mounts: + root_device = existing_mounts['/'] + else: + root_device = (self.get_root_device() if rootfs_uuid is None else + 'UUID=%s' % rootfs_uuid) + fstab.add_line('%s / btrfs defaults,rw,noatime 0 1' % root_device) + + # Add fstab entries for partitions + part_mountpoints = set() + if device: + mount_parts = set(p for p in device.partitionlist + if hasattr(p, 'mountpoint') and p.mountpoint != '/') + for part in mount_parts: + if part.mountpoint not in existing_mounts: + # Get filesystem UUID + part_uuid = self.get_uuid(device.location, + part.extent.start * + device.sector_size) + self.status(msg='Adding fstab entry for %s ' + 'partition' % part.mountpoint) + fstab.add_line('UUID=%s %s %s defaults,rw,noatime ' + '0 2' % (part_uuid, part.mountpoint, + part.filesystem)) + part_mountpoints.add(part.mountpoint) + else: + self.status(msg='WARNING: an entry already exists in ' + 'fstab for %s partition, skipping' % + part.mountpoint) + + # Add entries for state dirs + all_mountpoints = set(existing_mounts.keys()) | part_mountpoints + state_dirs_to_create = set() + for state_dir in shared_state_dirs: + mp = '/' + state_dir + if mp not in all_mountpoints: + state_dirs_to_create.add(state_dir) + state_subvol = os.path.join('/state', state_dir) + fstab.add_line( + '%s /%s btrfs subvol=%s,defaults,rw,noatime 0 2' % + (root_device, state_dir, state_subvol)) + + fstab.write() + return state_dirs_to_create + + def find_initramfs(self, temp_root): + '''Check whether the rootfs has an initramfs. + + Uses the INITRAMFS_PATH option to locate it. + ''' + if 'INITRAMFS_PATH' in os.environ: + initramfs = os.path.join(temp_root, os.environ['INITRAMFS_PATH']) + if not os.path.exists(initramfs): + raise ExtensionError('INITRAMFS_PATH specified, ' + 'but file does not exist') + return initramfs + return None + + def install_initramfs(self, initramfs_path, version_root): + '''Install the initramfs outside of 'orig' or 'run' subvolumes. + + This is required because syslinux doesn't traverse subvolumes when + loading the kernel or initramfs. + ''' + self.status(msg='Installing initramfs') + initramfs_dest = os.path.join(version_root, 'initramfs') + subprocess.check_call(['cp', '-a', initramfs_path, initramfs_dest]) + + def install_kernel(self, version_root, temp_root): + '''Install the kernel outside of 'orig' or 'run' subvolumes''' + + self.status(msg='Installing kernel') + image_names = ['vmlinuz', 'zImage', 'uImage'] + kernel_dest = os.path.join(version_root, 'kernel') + for name in image_names: + try_path = os.path.join(temp_root, 'boot', name) + if os.path.exists(try_path): + subprocess.check_call(['cp', '-a', try_path, kernel_dest]) + break + + def install_dtb(self, version_root, temp_root): + '''Install the device tree outside of 'orig' or 'run' subvolumes''' + + self.status(msg='Installing devicetree') + device_tree_path = self.get_dtb_path() + dtb_dest = os.path.join(version_root, 'dtb') + try_path = os.path.join(temp_root, device_tree_path) + if os.path.exists(try_path): + subprocess.check_call(['cp', '-a', try_path, dtb_dest]) + else: + logging.error("Failed to find device tree %s", device_tree_path) + raise ExtensionError( + 'Failed to find device tree %s' % device_tree_path) + + def get_dtb_path(self): + return os.environ.get('DTB_PATH', '') + + def get_bootloader_install(self): + # Do we actually want to install the bootloader? + # Set this to "none" to prevent the install + return os.environ.get('BOOTLOADER_INSTALL', 'extlinux') + + def get_bootloader_config_format(self): + # The config format for the bootloader, + # if not set we default to extlinux for x86 + return os.environ.get('BOOTLOADER_CONFIG_FORMAT', 'extlinux') + + def get_extra_kernel_args(self): + return os.environ.get('KERNEL_ARGS', '') + + def get_root_device(self): + return os.environ.get('ROOT_DEVICE', '/dev/sda') + + def generate_bootloader_config(self, *args, **kwargs): + '''Install extlinux on the newly created disk image.''' + config_function_dict = { + 'extlinux': self.generate_extlinux_config, + } + + config_type = self.get_bootloader_config_format() + if config_type in config_function_dict: + config_function_dict[config_type](*args, **kwargs) + else: + raise ExtensionError( + 'Invalid BOOTLOADER_CONFIG_FORMAT %s' % config_type) + + def generate_extlinux_config(self, real_root, + rootfs_uuid=None, root_guid=None): + '''Generate the extlinux configuration file + + Args: + real_root: Path to the mounted top level of the root filesystem + rootfs_uuid: Specify a filesystem UUID which can be loaded using + an initramfs aware of filesystems + root_guid: Specify a partition GUID, can be used without an + initramfs + ''' + + self.status(msg='Creating extlinux.conf') + # To be compatible with u-boot, create the extlinux.conf file in + # /extlinux/ rather than / + # Syslinux, however, requires this to be in /, so create a symlink + # as well + config_path = os.path.join(real_root, 'extlinux') + os.makedirs(config_path) + config = os.path.join(config_path, 'extlinux.conf') + os.symlink('extlinux/extlinux.conf', os.path.join(real_root, + 'extlinux.conf')) + + ''' Please also update the documentation in the following files + if you change these default kernel args: + - kvm.write.help + - rawdisk.write.help + - virtualbox-ssh.write.help ''' + kernel_args = ( + 'rw ' # ro ought to work, but we don't test that regularly + 'init=/sbin/init ' # default, but it doesn't hurt to be explicit + 'rootfstype=btrfs ' # required when using initramfs, also boots + # faster when specified without initramfs + 'rootflags=subvol=systems/default/run ') # boot runtime subvol + + # See init/do_mounts.c:182 in the kernel source, in the comment above + # function name_to_dev_t(), for an explanation of the available + # options for the kernel parameter 'root', particularly when using + # GUID/UUIDs + if rootfs_uuid: + root_device = 'UUID=%s' % rootfs_uuid + elif root_guid: + root_device = 'PARTUUID=%s' % root_guid + else: + # Fall back to the root partition named in the cluster + root_device = self.get_root_device() + kernel_args += 'root=%s ' % root_device + + kernel_args += self.get_extra_kernel_args() + with open(config, 'w') as f: + f.write('default linux\n') + f.write('timeout 1\n') + f.write('label linux\n') + f.write('kernel /systems/default/kernel\n') + if rootfs_uuid is not None: + f.write('initrd /systems/default/initramfs\n') + if self.get_dtb_path() != '': + f.write('devicetree /systems/default/dtb\n') + f.write('append %s\n' % kernel_args) + + def install_bootloader(self, *args, **kwargs): + install_function_dict = { + 'extlinux': self.install_bootloader_extlinux, + } + + install_type = self.get_bootloader_install() + if install_type in install_function_dict: + install_function_dict[install_type](*args, **kwargs) + elif install_type != 'none': + raise ExtensionError( + 'Invalid BOOTLOADER_INSTALL %s' % install_type) + + def install_bootloader_extlinux(self, real_root): + self.status(msg='Installing extlinux') + subprocess.check_call(['extlinux', '--install', real_root]) + + # FIXME this hack seems to be necessary to let extlinux finish + subprocess.check_call(['sync']) + time.sleep(2) + + def install_syslinux_blob(self, device, orig_root): + '''Install Syslinux MBR blob + + This is the first stage of boot (for partitioned images) on x86 + machines. It is not required where there is no partition table. The + syslinux bootloader is written to the MBR, and is capable of loading + extlinux. This only works when the partition is set as bootable (MBR), + or the legacy boot flag is set (GPT). The blob is built with extlinux, + and found in the rootfs''' + + pt_format = device.partition_table_format.lower() + if pt_format in ('gpb', 'mbr'): + blob = 'mbr.bin' + elif pt_format == 'gpt': + blob = 'gptmbr.bin' + blob_name = 'usr/share/syslinux/' + blob + self.status(msg='Installing syslinux %s blob' % pt_format.upper()) + blob_location = os.path.join(orig_root, blob_name) + if os.path.exists(blob_location): + subprocess.check_call(['dd', 'if=%s' % blob_location, + 'of=%s' % device.location, + 'bs=440', 'count=1', 'conv=notrunc']) + else: + raise ExtensionError('MBR blob not found. Is this the correct' + 'architecture? The MBR blob will only be built for x86' + 'systems. You may wish to configure BOOTLOADER_INSTALL') + + def install_syslinux_menu(self, real_root, temp_root): + '''Make syslinux/extlinux menu binary available. + + The syslinux boot menu is compiled to a file named menu.c32. Extlinux + searches a few places for this file but it does not know to look inside + our subvolume, so we copy it to the filesystem root. + + If the file is not available, the bootloader will still work but will + not be able to show a menu. + + ''' + menu_file = os.path.join(temp_root, 'usr', 'share', 'syslinux', + 'menu.c32') + if os.path.isfile(menu_file): + self.status(msg='Copying menu.c32') + shutil.copy(menu_file, real_root) + + def parse_attach_disks(self): + '''Parse $ATTACH_DISKS into list of disks to attach.''' + + if 'ATTACH_DISKS' in os.environ: + s = os.environ['ATTACH_DISKS'] + return s.split(':') + else: + return [] + + def bootloader_config_is_wanted(self): + '''Does the user want to generate a bootloader config? + + The user may set $BOOTLOADER_CONFIG_FORMAT to the desired + format. 'extlinux' is the only allowed value, and is the default + value for x86-32 and x86-64. + + ''' + + def is_x86(arch): + return (arch == 'x86_64' or + (arch.startswith('i') and arch.endswith('86'))) + + value = os.environ.get('BOOTLOADER_CONFIG_FORMAT', '') + if value == '': + if not is_x86(os.uname()[-1]): + return False + + return True + + def get_environment_boolean(self, variable, default='no'): + '''Parse a yes/no boolean passed through the environment.''' + + value = os.environ.get(variable, default).lower() + if value in ('no', '0', 'false'): + return False + elif value in ('yes', '1', 'true'): + return True + else: + raise ExtensionError('Unexpected value for %s: %s' % + (variable, value)) + + def check_ssh_connectivity(self, ssh_host): + try: + output = ssh_runcmd(ssh_host, ['echo', 'test']) + except ExtensionError as e: + logging.error("Error checking SSH connectivity: %s", str(e)) + raise ExtensionError( + 'Unable to SSH to %s: %s' % (ssh_host, e)) + + if output.strip() != 'test': + raise ExtensionError( + 'Unexpected output from remote machine: %s' % output.strip()) + + def is_device(self, location): + try: + st = os.stat(location) + return stat.S_ISBLK(st.st_mode) + except OSError as e: + if e.errno == errno.ENOENT: + return False + raise + + def create_partitioned_system(self, temp_root, location): + '''Deploy a bootable Baserock system with a custom partition layout. + + Called if USE_PARTITIONING=yes is set in the deployment options. + + ''' + part_spec = os.environ.get('PARTITION_FILE', 'partitioning/default') + + disk_size = self.get_disk_size() + if not disk_size: + raise writeexts.ExtensionError('DISK_SIZE is not defined') + + dev = partitioning.do_partitioning(location, disk_size, + temp_root, part_spec) + boot_partition_available = dev.get_partition_by_mountpoint('/boot') + + for part in dev.partitionlist: + if not hasattr(part, 'mountpoint'): + continue + if part.mountpoint == '/': + # Re-format the rootfs, to include needed extra features + with pyfdisk.create_loopback(location, + part.extent.start * + dev.sector_size, part.size) as l: + self.mkfs_btrfs(l) + + self.status(msg='Mounting partition %d' % part.number) + offset = part.extent.start * dev.sector_size + with self.mount_partition(location, + offset, part.size) as part_mount_dir: + if part.mountpoint == '/': + # Install root filesystem + rfs_uuid = self.get_uuid(location, part.extent.start * + dev.sector_size) + self.create_versioned_layout(part_mount_dir, 'factory') + self.create_btrfs_system_rootfs(temp_root, part_mount_dir, + 'factory', rfs_uuid, dev) + + # If there's no /boot partition, but we do need to generate + # a bootloader configuration file, then it needs to go in + # the root partition. + if (boot_partition_available is False + and self.bootloader_config_is_wanted()): + self.create_bootloader_config( + temp_root, part_mount_dir, 'factory', rfs_uuid, + dev) + + if self.get_bootloader_install() == 'extlinux': + # The extlinux/syslinux MBR blob always needs to be + # installed in the root partition. + self.install_syslinux_blob(dev, temp_root) + else: + # Copy files to partition from unpacked rootfs + src_dir = os.path.join(temp_root, + re.sub('^/', '', part.mountpoint)) + self.status(msg='Copying files to %s partition' % + part.mountpoint) + self.copy_dir_contents(src_dir, part_mount_dir) + + if (part.mountpoint == '/boot' and + self.bootloader_config_is_wanted()): + # We need to mirror the layout of the root partition in the + # /boot partition. Each kernel lives in its own + # systems/$version_label/ directory within the /boot + # partition. + self.create_versioned_layout(part_mount_dir, 'factory') + self.create_bootloader_config(temp_root, part_mount_dir, + 'factory', None, dev) + + # Write raw files to disk with dd + partitioning.process_raw_files(dev, temp_root) + + @contextlib.contextmanager + def mount_partition(self, location, offset_bytes, size_bytes): + '''Mount a partition in a partitioned device or image''' + + with pyfdisk.create_loopback(location, offset=offset_bytes, + size=size_bytes) as loop: + with self.mount(loop) as mountpoint: + yield mountpoint + + @contextlib.contextmanager + def find_and_mount_rootfs(self, location): + ''' + Mount a Baserock rootfs inside a partitioned device or image + + This function searches a disk image or device, with unknown + partitioning scheme, for a Baserock rootfs. This is done by finding + offsets and sizes of partitions in the partition table, mounting each + partition, and checking whether a known path exists in the mount. + + Args: + location: the location of the disk image or device to search + Returns: + A path to the mount point of the mounted Baserock rootfs + ''' + + if pyfdisk.get_pt_type(location) == 'none': + with self.mount(location) as mountpoint: + yield mountpoint + + sector_size = pyfdisk.get_sector_size(location) + partn_sizes = pyfdisk.get_partition_sector_sizes(location) + for i, offset in enumerate(pyfdisk.get_partition_offsets(location)): + try: + with self.mount_partition(location, offset * sector_size, + partn_sizes[i] * sector_size) as mp: + path = os.path.join(mp, 'systems/default/orig/baserock') + if os.path.exists(path): + self.status(msg='Found a Baserock rootfs at ' + 'offset %d sectors/%d bytes' % + (offset, offset * sector_size)) + yield mp + except BaseException: + # Probably a partition without a filesystem, carry on + pass diff --git a/old/extensions/xfer-hole b/old/extensions/xfer-hole new file mode 100755 index 00000000..91f1be01 --- /dev/null +++ b/old/extensions/xfer-hole @@ -0,0 +1,137 @@ +#!/usr/bin/env python +# +# Send a sparse file more space-efficiently. +# See recv-hole for a description of the protocol. +# +# Note that xfer-hole requires a version of Linux with support for +# SEEK_DATA and SEEK_HOLE. +# +# +# Copyright (C) 2014-2015 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, see . +# +# =*= License: GPL-2 =*= + + + +import errno +import os +import sys + + +SEEK_DATA = 3 +SEEK_HOLE = 4 + + +filename = sys.argv[1] +fd = os.open(filename, os.O_RDONLY) +pos = 0 + + +DATA = 'data' +HOLE = 'hole' +EOF = 'eof' + + +def safe_lseek(fd, pos, whence): + try: + return os.lseek(fd, pos, whence) + except OSError as e: + if e.errno == errno.ENXIO: + return -1 + raise + + +def current_data_or_pos(fd, pos): + length = safe_lseek(fd, 0, os.SEEK_END) + next_data = safe_lseek(fd, pos, SEEK_DATA) + next_hole = safe_lseek(fd, pos, SEEK_HOLE) + + if pos == length: + return EOF, pos + elif pos == next_data: + return DATA, pos + elif pos == next_hole: + return HOLE, pos + else: + assert False, \ + ("Do not understand: pos=%d next_data=%d next_hole=%d" % + (pos, next_data, next_hole)) + + +def next_data_or_hole(fd, pos): + length = safe_lseek(fd, 0, os.SEEK_END) + next_data = safe_lseek(fd, pos, SEEK_DATA) + next_hole = safe_lseek(fd, pos, SEEK_HOLE) + + if pos == length: + return EOF, pos + elif pos == next_data: + # We are at data. + if next_hole == -1 or next_hole == length: + return EOF, length + else: + return HOLE, next_hole + elif pos == next_hole: + # We are at a hole. + if next_data == -1 or next_data == length: + return EOF, length + else: + return DATA, next_data + else: + assert False, \ + ("Do not understand: pos=%d next_data=%d next_hole=%d" % + (pos, next_data, next_hole)) + + +def find_data_and_holes(fd): + pos = safe_lseek(fd, 0, os.SEEK_CUR) + + kind, pos = current_data_or_pos(fd, pos) + while kind != EOF: + yield kind, pos + kind, pos = next_data_or_hole(fd, pos) + yield kind, pos + + +def make_xfer_instructions(fd): + prev_kind = None + prev_pos = None + for kind, pos in find_data_and_holes(fd): + if prev_kind == DATA: + yield (DATA, prev_pos, pos) + elif prev_kind == HOLE: + yield (HOLE, prev_pos, pos) + prev_kind = kind + prev_pos = pos + + +def copy_slice_from_file(to, fd, start, end): + safe_lseek(fd, start, os.SEEK_SET) + nbytes = end - start + max_at_a_time = 1024**2 + while nbytes > 0: + data = os.read(fd, min(nbytes, max_at_a_time)) + if not data: + break + to.write(data) + nbytes -= len(data) + + +for kind, start, end in make_xfer_instructions(fd): + if kind == HOLE: + sys.stdout.write('HOLE\n%d\n' % (end - start)) + elif kind == DATA: + sys.stdout.write('DATA\n%d\n' % (end - start)) + copy_slice_from_file(sys.stdout, fd, start, end) diff --git a/old/genivi/clusters/gdp-jetson-upgrade.morph b/old/genivi/clusters/gdp-jetson-upgrade.morph new file mode 100644 index 00000000..57287f4c --- /dev/null +++ b/old/genivi/clusters/gdp-jetson-upgrade.morph @@ -0,0 +1,19 @@ +name: gdp-jetson-upgrade +kind: cluster +systems: +- morph: genivi/systems/genivi-demo-platform-armv7lhf-jetson.morph + deploy-defaults: + BOOT_DEVICE: "/dev/mmcblk0p1" + ROOT_DEVICE: "/dev/mmcblk0p2" + 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 + FSTAB_SRC: LABEL=src /src auto defaults,rw,noatime,nofail 0 2 + GENIVI_WESTON_BACKEND: drm + GENIVI_WESTON_CONFIG: gdp + GENIVI_WESTON_AUTOSTART: True + deploy: + self: + type: extensions/ssh-rsync + location: root@127.0.0.1 diff --git a/old/genivi/clusters/genivi-demo-platform-x86_32-deploy.morph b/old/genivi/clusters/genivi-demo-platform-x86_32-deploy.morph new file mode 100644 index 00000000..d1c5544d --- /dev/null +++ b/old/genivi/clusters/genivi-demo-platform-x86_32-deploy.morph @@ -0,0 +1,22 @@ +name: genivi-demo-platform-x86_32-deploy +kind: cluster +description: | + Deploy GENIVI Demo platform system +systems: +- morph: genivi/systems/genivi-demo-platform-x86_32-generic.morph + deploy: + genivi-demo-platform-x86_32-generic: + type: extensions/rawdisk + location: genivi-demo-platform-x86_32-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + HOSTNAME: genivi-demo-platform-x86-32-generic + GENIVI_WESTON_CONFIG: gdp + GENIVI_WESTON_AUTOSTART: False + subsystems: + - morph: systems/initramfs-x86_32.morph + deploy: + initramfs-genivi-demo-platform-x86_32-generic: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/genivi/clusters/genivi-demo-platform-x86_64-deploy.morph b/old/genivi/clusters/genivi-demo-platform-x86_64-deploy.morph new file mode 100644 index 00000000..4e1005c4 --- /dev/null +++ b/old/genivi/clusters/genivi-demo-platform-x86_64-deploy.morph @@ -0,0 +1,22 @@ +name: genivi-demo-platform-x86_64-deploy +kind: cluster +description: | + Deploy GENIVI Demo platform system +systems: +- morph: genivi/systems/genivi-demo-platform-x86_64-generic.morph + deploy: + genivi-demo-platform-x86_64-generic: + type: extensions/rawdisk + location: genivi-demo-platform-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + HOSTNAME: genivi-demo-platform-x86-64-generic + GENIVI_WESTON_CONFIG: gdp + GENIVI_WESTON_AUTOSTART: False + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs-genivi-demo-platform-x86_64-generic: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/genivi/clusters/release-genivi-baseline.morph b/old/genivi/clusters/release-genivi-baseline.morph new file mode 100644 index 00000000..08a8c622 --- /dev/null +++ b/old/genivi/clusters/release-genivi-baseline.morph @@ -0,0 +1,41 @@ +name: release-genivi-baseline +kind: cluster +description: | + Deploy GENIVI Baseline systems +systems: +- morph: genivi/systems/genivi-baseline-system-x86_64-generic.morph + deploy: + genivi-baseline-system-x86_64-generic: + type: extensions/rawdisk + location: genivi-baseline-system-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + HOSTNAME: genivi-baseline-system-x86-64-generic + GENIVI_WESTON_BACKEND: fbdev + GENIVI_WESTON_CONFIG: baseline + GENIVI_WESTON_AUTOSTART: False + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs-genivi-baseline-system-x86_64-generic: + type: extensions/initramfs + location: boot/initramfs.gz +- morph: genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph + deploy: + genivi-baseline-system-armv7lhf-jetson: + type: extensions/rawdisk + location: genivi-baseline-system-armv7lhf-jetson.img + DISK_SIZE: 4G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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 + HOSTNAME: genivi-baseline-system-armv7lhf-jetson + GENIVI_WESTON_BACKEND: drm + GENIVI_WESTON_CONFIG: baseline + GENIVI_WESTON_AUTOSTART: False + diff --git a/old/genivi/strata/genivi-demo-platform-libs.morph b/old/genivi/strata/genivi-demo-platform-libs.morph new file mode 100644 index 00000000..e45c1abe --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform-libs.morph @@ -0,0 +1,18 @@ +name: genivi-demo-platform-libs +kind: stratum +description: Libraries needed for the GENIVI demo platform. +build-depends: +- morph: strata/foundation.morph +- morph: strata/python-pygobject.morph +- morph: strata/bluetooth.morph +chunks: +- name: dbus-c++ + morph: genivi/strata/genivi-demo-platform-libs/dbus-c++.morph + repo: upstream:dbus-c++ + ref: 8d351eec25430651acbac014e44ec011fac32d57 + unpetrify-ref: baserock/genivi-demo-platform +- name: dbus-python + repo: upstream:dbus-python + ref: d0d5b5be685dc4c16b21c54335becc87ca4d6f58 + unpetrify-ref: dbus-python-1.2.0 + build-system: autotools diff --git a/old/genivi/strata/genivi-demo-platform-libs/dbus-c++.morph b/old/genivi/strata/genivi-demo-platform-libs/dbus-c++.morph new file mode 100644 index 00000000..bd805ebf --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform-libs/dbus-c++.morph @@ -0,0 +1,9 @@ +name: dbus-c++ +kind: chunk +description: libdbus-c++ and dbusxx-xml2cpp tool +build-system: autotools +configure-commands: +- autoreconf -ivf +- ./configure --prefix="$PREFIX" --disable-ecore +post-install-commands: +- install tools/dbusxx-xml2cpp "$DESTDIR/$PREFIX"/bin/dbusxx-xml2cpp diff --git a/old/genivi/strata/genivi-demo-platform.morph b/old/genivi/strata/genivi-demo-platform.morph new file mode 100644 index 00000000..9b5194bb --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform.morph @@ -0,0 +1,42 @@ +name: genivi-demo-platform +kind: stratum +description: Components which make up the GENIVI demo platform. +build-depends: +- morph: genivi/strata/genivi-demo-platform-libs.morph +- morph: strata/qt5-tools.morph +- morph: strata/qt5-tools-qtmultimedia.morph +- morph: strata/qt5-tools-qtwebkit.morph +- morph: genivi/strata/genivi.morph +- morph: strata/wayland-generic.morph +- morph: genivi/strata/weston-genivi.morph +chunks: +- name: browser-poc + morph: genivi/strata/genivi-demo-platform/browser-poc.morph + repo: upstream:genivi/browser-poc + ref: d90501f8bd3edcd35eae72efbfb4583ba8f3cdfc + unpetrify-ref: baserock/genivi/genivi-demo-platform + submodules: + documentation/designdocument/cls: + url: http://github.com/Pelagicore/Pelagicore-LaTeX-Class.git +- name: audiomanager-poc + morph: genivi/strata/genivi-demo-platform/audiomanager-poc.morph + repo: upstream:audiomanager + ref: bb65a4d0a18667baa64e5ba40104dc2cda06b299 + unpetrify-ref: baserock/genivi/genivi-demo-platform +- name: audiomanager@gdp + morph: genivi/strata/genivi-demo-platform/audiomanager@gdp.morph + repo: upstream:audiomanager + ref: ba709ee7d4f9f81af638a3d3c640b7152bbe32bc + unpetrify-ref: baserock/genivi/6.1-3-gba709ee-gdp +- name: audiomanagerdemo + repo: upstream:genivi/audiomanagerdemo + ref: 30b7817bb5c2de17c725d6624d073092d3a821c0 + unpetrify-ref: master + build-system: qmake + build-depends: + - audiomanager@gdp +- name: genivi-demo-platform-hmi + morph: genivi/strata/genivi-demo-platform/genivi-demo-platform-hmi.morph + repo: upstream:genivi/genivi-demo-platform-hmi + ref: fd2c954165b0c0f7f4d9e94e8c9c3c8541a53e79 + unpetrify-ref: master diff --git a/old/genivi/strata/genivi-demo-platform/audiomanager-poc.morph b/old/genivi/strata/genivi-demo-platform/audiomanager-poc.morph new file mode 100644 index 00000000..6974705b --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform/audiomanager-poc.morph @@ -0,0 +1,10 @@ +name: audiomanager-poc +kind: chunk +pre-configure-commands: +- sed 's:/opt/:/usr/lib/:g' $(git grep -l "/opt/") +configure-commands: +- cd AudioManagerPoC && qmake -makefile +build-commands: +- cd AudioManagerPoC && make +install-commands: +- cd AudioManagerPoC && make install INSTALL_ROOT="$DESTDIR" diff --git a/old/genivi/strata/genivi-demo-platform/audiomanager@gdp.morph b/old/genivi/strata/genivi-demo-platform/audiomanager@gdp.morph new file mode 100644 index 00000000..d77d0e68 --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform/audiomanager@gdp.morph @@ -0,0 +1,14 @@ +name: audiomanager@gdp +kind: chunk +configure-commands: +- | + cmake -DWITH_PULSE_ROUTING_PLUGIN=ON \ + -DWITH_PULSE_CONTROL_PLUGIN=ON \ + -DWITH_ENABLED_IPC=DBUS \ + -DWITH_DATABASE_STORAGE=OFF \ + -DWITH_DLT=OFF \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/genivi/strata/genivi-demo-platform/browser-poc.morph b/old/genivi/strata/genivi-demo-platform/browser-poc.morph new file mode 100644 index 00000000..1ca23d40 --- /dev/null +++ b/old/genivi/strata/genivi-demo-platform/browser-poc.morph @@ -0,0 +1,29 @@ +name: browser-poc +kind: chunk +description: The GENIVI browser proof-of-concept for the GENIVI Demo Platform. +configure-commands: +- qmake -d -r browser-poc.pro +build-commands: +- make all +install-commands: +- make INSTALL_ROOT="$DESTDIR" install +- mkdir -p "$DESTDIR/usr/lib/systemd/user" +- | + cat >"$DESTDIR/usr/lib/systemd/user/browser.service" <"$DESTDIR/usr/lib/systemd/user/demoui.service" <"$DESTDIR/usr/lib/systemd/user/gdp-hmi-launcher2.service" <"$DESTDIR/usr/lib/systemd/user/gdp-hmi-background.service" <"$DESTDIR/usr/lib/systemd/user/gdp-hmi-controller.service" <"$DESTDIR/usr/lib/systemd/user/gdp-hmi-panel.service" <"$DESTDIR/usr/lib/systemd/user/EGLWLMockNavigation.service" < "$DESTDIR/usr/lib/systemd/user/EGLWLInputEventExample.service" < "$DESTDIR/usr/lib/systemd/user/qml-example.service" < "$DESTDIR/usr/lib/systemd/user/PowerOff.service" <> ivi-shell/ivi-shell-weston.ini + [ivi-launcher] + workspace-id=0 + icon-id=4001 + icon=/usr/share/weston/icon_ivi_flower.png + path=/usr/bin/weston-flower + + [ivi-launcher] + workspace-id=0 + icon-id=4002 + icon=/usr/share/weston/icon_ivi_clickdot.png + path=/usr/bin/weston-clickdot + + [ivi-launcher] + workspace-id=1 + icon-id=4003 + icon=/usr/share/weston/icon_ivi_simple-egl.png + path=/usr/bin/weston-simple-egl + + [ivi-launcher] + workspace-id=1 + icon-id=4004 + icon=/usr/share/weston/icon_ivi_simple-shm.png + path=/usr/bin/weston-simple-shm + + [ivi-launcher] + workspace-id=2 + icon-id=4005 + icon=/usr/share/weston/icon_ivi_smoke.png + path=/usr/bin/weston-smoke + + [ivi-launcher] + workspace-id=2 + icon-id=4006 + icon=/usr/share/weston/terminal.png + path=/usr/bin/EGLWLMockNavigation + EOF + +# Generate gdp-weston config used for GENIVI Demo Platform +- | + cat < ivi-shell/gdp-weston.ini + [core] + shell=ivi-shell.so + + [ivi-shell] + ivi-module=ivi-controller.so + ivi-input-module=ivi-input-controller.so + + cursor-theme=default + cursor-size=32 + + base-layer-id=1000 + workspace-background-layer-id=2000 + workspace-layer-id=3000 + application-layer-id=4000 + + transition-duration=300 + EOF + +# Install both config files to decide later which one to use +- install -d "$DESTDIR/usr/share/doc/weston" +- install -m 0644 ivi-shell/ivi-shell-weston.ini "$DESTDIR/usr/share/doc/weston/ivi-shell-weston.ini" +- install -m 0644 ivi-shell/gdp-weston.ini "$DESTDIR/usr/share/doc/weston/gdp-weston.ini" diff --git a/old/genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph b/old/genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..e2145b6f --- /dev/null +++ b/old/genivi/systems/genivi-baseline-system-armv7lhf-jetson.morph @@ -0,0 +1,56 @@ +name: genivi-baseline-system-armv7lhf-jetson +kind: system +description: A GENIVI baseline system for a Jetson TK. +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: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: genivi + morph: genivi/strata/genivi.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: mesa-common + morph: strata/mesa-common.morph +- name: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/fstab +- extensions/install-essential-files +- extensions/genivi diff --git a/old/genivi/systems/genivi-baseline-system-armv7lhf-versatile.morph b/old/genivi/systems/genivi-baseline-system-armv7lhf-versatile.morph new file mode 100644 index 00000000..35104513 --- /dev/null +++ b/old/genivi/systems/genivi-baseline-system-armv7lhf-versatile.morph @@ -0,0 +1,54 @@ +name: genivi-baseline-system-armv7lhf-versatile +kind: system +description: A GENIVI baseline system for an ARMv7 system. +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-armv7-versatile + morph: strata/bsp-armv7-versatile.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: genivi + morph: genivi/strata/genivi.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: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/fstab +- extensions/install-essential-files +- extensions/genivi diff --git a/old/genivi/systems/genivi-baseline-system-x86_64-generic.morph b/old/genivi/systems/genivi-baseline-system-x86_64-generic.morph new file mode 100644 index 00000000..ec32952c --- /dev/null +++ b/old/genivi/systems/genivi-baseline-system-x86_64-generic.morph @@ -0,0 +1,57 @@ +name: genivi-baseline-system-x86_64-generic +kind: system +description: A GENIVI baseline 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: foundation + morph: strata/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: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: genivi + morph: genivi/strata/genivi.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: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/install-essential-files +- extensions/genivi diff --git a/old/genivi/systems/genivi-demo-platform-armv7lhf-jetson.morph b/old/genivi/systems/genivi-demo-platform-armv7lhf-jetson.morph new file mode 100644 index 00000000..e729c314 --- /dev/null +++ b/old/genivi/systems/genivi-demo-platform-armv7lhf-jetson.morph @@ -0,0 +1,83 @@ +name: genivi-demo-platform-armv7lhf-jetson +kind: system +description: A GENIVI demo platform for a 64-bit x86 system. +arch: armv7lhf +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: python2-core + morph: strata/python2-core.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: navigation + morph: strata/navigation.morph +- name: genivi + morph: genivi/strata/genivi.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: ivi-common + morph: strata/ivi-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +- name: ruby + morph: strata/ruby.morph +- name: icu-common + morph: strata/icu-common.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebkit + morph: strata/qt5-tools-qtwebkit.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: genivi-demo-platform-libs + morph: genivi/strata/genivi-demo-platform-libs.morph +- name: genivi-demo-platform + morph: genivi/strata/genivi-demo-platform.morph +- name: tools + morph: strata/tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files +- extensions/genivi diff --git a/old/genivi/systems/genivi-demo-platform-x86_32-generic.morph b/old/genivi/systems/genivi-demo-platform-x86_32-generic.morph new file mode 100644 index 00000000..a18bbe28 --- /dev/null +++ b/old/genivi/systems/genivi-demo-platform-x86_32-generic.morph @@ -0,0 +1,85 @@ +name: genivi-demo-platform-x86_32-generic +kind: system +description: A GENIVI demo platform for a 32-bit x86 system. +arch: x86_32 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: python2-core + morph: strata/python2-core.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_32-generic + morph: strata/bsp-x86_32-generic.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: navigation + morph: strata/navigation.morph +- name: genivi + morph: genivi/strata/genivi.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: ivi-common + morph: strata/ivi-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +- name: ruby + morph: strata/ruby.morph +- name: icu-common + morph: strata/icu-common.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebkit + morph: strata/qt5-tools-qtwebkit.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: genivi-demo-platform-libs + morph: genivi/strata/genivi-demo-platform-libs.morph +- name: genivi-demo-platform + morph: genivi/strata/genivi-demo-platform.morph +- name: tools + morph: strata/tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files +- extensions/genivi diff --git a/old/genivi/systems/genivi-demo-platform-x86_64-generic.morph b/old/genivi/systems/genivi-demo-platform-x86_64-generic.morph new file mode 100644 index 00000000..a14216bc --- /dev/null +++ b/old/genivi/systems/genivi-demo-platform-x86_64-generic.morph @@ -0,0 +1,85 @@ +name: genivi-demo-platform-x86_64-generic +kind: system +description: A GENIVI demo platform 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: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: python2-core + morph: strata/python2-core.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.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: connman-common + morph: strata/connman-common.morph +- name: device-management + morph: strata/device-management.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: navigation + morph: strata/navigation.morph +- name: genivi + morph: genivi/strata/genivi.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: ivi-common + morph: strata/ivi-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: x-common + morph: strata/x-common.morph +- name: weston-genivi + morph: genivi/strata/weston-genivi.morph +- name: ruby + morph: strata/ruby.morph +- name: icu-common + morph: strata/icu-common.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebkit + morph: strata/qt5-tools-qtwebkit.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: genivi-demo-platform-libs + morph: genivi/strata/genivi-demo-platform-libs.morph +- name: genivi-demo-platform + morph: genivi/strata/genivi-demo-platform.morph +- name: tools + morph: strata/tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files +- extensions/genivi diff --git a/old/gnome/clusters/gnome-system-armv7lhf-jetson-deploy.morph b/old/gnome/clusters/gnome-system-armv7lhf-jetson-deploy.morph new file mode 100644 index 00000000..4b9739a0 --- /dev/null +++ b/old/gnome/clusters/gnome-system-armv7lhf-jetson-deploy.morph @@ -0,0 +1,17 @@ +name: gnome-system-armv7lhf-jetson-deploy +kind: cluster +description: Deploy a GNOME system. +systems: +- morph: gnome/systems/gnome-system-armv7lhf-jetson.morph + deploy: + gnome-system-armv7lhf-jetson: + type: extensions/rawdisk + location: gnome-system-armv7lhf-jetson.img + DISK_SIZE: 7G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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/old/gnome/clusters/gnome-system-x86_64-deploy.morph b/old/gnome/clusters/gnome-system-x86_64-deploy.morph new file mode 100644 index 00000000..faa036ce --- /dev/null +++ b/old/gnome/clusters/gnome-system-x86_64-deploy.morph @@ -0,0 +1,24 @@ +name: gnome-system-x86_64-deploy +kind: cluster +description: | + Deploy a stock weston system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: gnome/systems/gnome-system-x86_64.morph + deploy: + gnome-system-x86_64: + type: extensions/rawdisk + location: /gnome-system-x86_64.img + DISK_SIZE: 7G + INSTALL_FILES: install-files/gnome/manifest + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz diff --git a/old/gnome/strata/WebKitGtk1-common.morph b/old/gnome/strata/WebKitGtk1-common.morph new file mode 100644 index 00000000..f16e31a2 --- /dev/null +++ b/old/gnome/strata/WebKitGtk1-common.morph @@ -0,0 +1,19 @@ +name: WebKitGtk1-common +kind: stratum +description: WebKitGtk1 stratum (deprecated WebKitGtk API) +build-depends: +- morph: strata/geolocation.morph +- morph: strata/gtk2.morph +- morph: strata/gtk3.morph +- morph: strata/libsoup-common.morph +- morph: strata/multimedia-gstreamer.morph +- morph: strata/mesa-common.morph +- morph: strata/ruby.morph +- morph: strata/secret-service.morph +- morph: strata/spell-checking.morph +chunks: +- name: WebKitGtk1 + morph: gnome/strata/WebKitGtk1-common/WebKitGtk1.morph + repo: upstream:WebKitGtk-tarball + ref: 41386e9cb918eed93b3f13648cbef387e371e451 + unpetrify-ref: webkitgtk-2.4.9 diff --git a/old/gnome/strata/WebKitGtk1-common/WebKitGtk1.morph b/old/gnome/strata/WebKitGtk1-common/WebKitGtk1.morph new file mode 100644 index 00000000..b723248d --- /dev/null +++ b/old/gnome/strata/WebKitGtk1-common/WebKitGtk1.morph @@ -0,0 +1,5 @@ +name: WebKitGtk1 +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --disable-webkit2 --enable-introspection diff --git a/old/gnome/strata/flatpak-common.morph b/old/gnome/strata/flatpak-common.morph new file mode 100644 index 00000000..3afdc352 --- /dev/null +++ b/old/gnome/strata/flatpak-common.morph @@ -0,0 +1,24 @@ +name: flatpak-common +kind: stratum +build-depends: +- morph: strata/ostree-core.morph +- morph: strata/privileges-management.morph +- morph: strata/x-common.morph +chunks: +- name: elfutils + morph: gnome/strata/flatpak-common/elfutils.morph + repo: upstream:elfutils + ref: 9b4bce40709611875754cf4931eb91d394042122 + unpetrify-ref: elfutils-0.165 +- name: flatpak + morph: gnome/strata/flatpak-common/flatpak.morph + repo: upstream:flatpak + ref: 07b342a937ed562a59aa649d793771babee57a09 + unpetrify-ref: 0.6.8 + build-depends: + - elfutils + submodules: + libglnx: + url: upstream:libglnx + bubblewrap: + url: upstream:bubblewrap diff --git a/old/gnome/strata/flatpak-common/elfutils.morph b/old/gnome/strata/flatpak-common/elfutils.morph new file mode 100644 index 00000000..45707250 --- /dev/null +++ b/old/gnome/strata/flatpak-common/elfutils.morph @@ -0,0 +1,7 @@ +name: elfutils +kind: chunk +build-system: autotools +configure-commands: +- autoreconf -fi +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var + --enable-maintainer-mode diff --git a/old/gnome/strata/flatpak-common/flatpak.morph b/old/gnome/strata/flatpak-common/flatpak.morph new file mode 100644 index 00000000..e052c2a3 --- /dev/null +++ b/old/gnome/strata/flatpak-common/flatpak.morph @@ -0,0 +1,5 @@ +name: flatpak +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-documentation diff --git a/old/gnome/strata/gnome.morph b/old/gnome/strata/gnome.morph new file mode 100644 index 00000000..70de390b --- /dev/null +++ b/old/gnome/strata/gnome.morph @@ -0,0 +1,963 @@ +name: gnome +kind: stratum +description: GNOME stratum +build-depends: +- morph: strata/bluetooth.morph +- morph: strata/icu-common.morph +- morph: strata/input-common.morph +- morph: strata/data-indexing-management.morph +- morph: strata/vala-common.morph +- morph: strata/geolocation.morph +- morph: strata/gtk2.morph +- morph: strata/gtk3.morph +- morph: strata/libsoup-common.morph +- morph: strata/NetworkManager-common.morph +- morph: strata/multimedia-gstreamer.morph +- morph: strata/network-security.morph +- morph: strata/privileges-management.morph +- morph: strata/python3-gobject.morph +- morph: strata/wayland-generic.morph +- morph: strata/ruby.morph +- morph: strata/samba.morph +- morph: strata/secret-service.morph +- morph: strata/sound-server-pulseaudio.morph +- morph: strata/spell-checking.morph +- morph: strata/cups.morph +- morph: gnome/strata/WebKitGtk1-common.morph +chunks: +- name: dconf + morph: gnome/strata/gnome/dconf.morph + repo: upstream:dconf + ref: 7c0beccf286a1dbd396fda7d40b438598a6ce7f4 + unpetrify-ref: master +- name: cogl + morph: gnome/strata/gnome/cogl.morph + repo: upstream:gnome/cogl + ref: 85e0b084592e6beef2987b02e34a3909f35708e0 + unpetrify-ref: cogl-1.22 +- name: clutter + morph: gnome/strata/gnome/clutter.morph + repo: upstream:gnome/clutter + ref: 8e52f8c61ef2192eaf7f2208a922d3530df47d9b + unpetrify-ref: master + build-depends: + - cogl +- name: clutter-gtk + repo: upstream:gnome/clutter-gtk + ref: 56b09d02f71aa38f9496226641850e6ecf14ef70 + unpetrify-ref: 1.6.6 + build-system: autotools + build-depends: + - clutter +- name: libchamplain + morph: gnome/strata/gnome/libchamplain.morph + repo: upstream:gnome/libchamplain + ref: c873d9d8116b8e14c1bfa939439d763926a77446 + unpetrify-ref: LIBCHAMPLAIN_0_12_12 + build-depends: + - clutter + - clutter-gtk +- name: gsettings-desktop-schemas + repo: upstream:gnome/gsettings-desktop-schemas + ref: db40812cd79f64c98432efd1b632c5633a27f77e + unpetrify-ref: master + build-system: autotools +- name: itstool + repo: upstream:itstool + ref: 359be5c350fc3d869807f663cee2b028adf1f5d7 + unpetrify-ref: master + build-system: autotools +- name: yelp-xsl + repo: upstream:yelp-xsl + ref: 2dcf168dde754d18152b008473269a803d6e650b + unpetrify-ref: master + build-depends: + - itstool + build-system: autotools +- name: yelp-tools + repo: upstream:yelp-tools + ref: 6df6bf24e385bbc1ac0b800be8a6e878f18a775c + unpetrify-ref: master + build-depends: + - itstool + - yelp-xsl + build-system: autotools +- name: iso-codes + repo: upstream:iso-codes + ref: 18ac112b4b84c8f03743565fde3512a637820761 + unpetrify-ref: master + build-system: autotools +- name: gnome-desktop + repo: upstream:gnome/gnome-desktop + ref: 09d331adeb23aea7ec058dfb39c5224ebe8ae8f6 + unpetrify-ref: 3.18.2 + build-depends: + - gsettings-desktop-schemas + - iso-codes + - yelp-tools + build-system: autotools +- name: libnotify + repo: upstream:gnome/libnotify + ref: 2f2c5649ef210b1dffeb46cddf062d20e1518ccf + unpetrify-ref: master + build-system: autotools +- name: lcms2 + repo: upstream:lcms2 + ref: ff42eeaf932b64af997681f0eed6be3b67ebeb18 + unpetrify-ref: baserock/gnome + build-system: autotools +- name: gconf + morph: gnome/strata/gnome/gconf.morph + repo: upstream:gconf + ref: 4ef012c2a62d9abd759adb3aeb9d3b9cee17f721 + unpetrify-ref: master +- name: ibus + morph: gnome/strata/gnome/ibus.morph + repo: upstream:ibus + ref: 1d678673e18e132ed53df32502b779b0a56314d5 + unpetrify-ref: master + build-depends: + - dconf + - gconf + - iso-codes + - libnotify +- name: libhangul + morph: gnome/strata/gnome/libhangul.morph + repo: upstream:libhangul + ref: 78e9d8926262db423b4cf9181e1c2cb06a120a9b + unpetrify-ref: baserock/libhangul-0.1.0-19-g78e9d89 +- name: ibus-hangul + morph: gnome/strata/gnome/ibus-hangul.morph + repo: upstream:ibus-hangul + ref: 44f41ae5178372a7ff0540a4ce7a4944335525df + unpetrify-ref: baserock/1.5.0-13-g44f41ae + build-depends: + - ibus + - libhangul +- name: berkeleydb + morph: gnome/strata/gnome/berkeleydb.morph + repo: upstream:berkeleydb + ref: 780b92ada9afcf1d58085a83a0b9e6bc982203d1 + unpetrify-ref: db-6.1.23 +- name: libpinyin + repo: upstream:libpinyin + ref: 2e0c23b3ab6c247dd6a683c716e784a371646af4 + unpetrify-ref: baserock/1.2.91 + build-system: autotools + build-depends: + - berkeleydb +- name: ibus-libpinyin + morph: gnome/strata/gnome/ibus-libpinyin.morph + repo: upstream:ibus-libpinyin + ref: 4bb5fc19c0829053acd29619de59a85a73e03676 + unpetrify-ref: baserock/1.7.2-7-g4bb5fc1 + build-depends: + - ibus + - libpinyin +- name: anthy + repo: upstream:anthy + ref: a7a06a7ccfe0af1e134357678b8fa6cf87dff3b0 + unpetrify-ref: anthy-9100h + build-system: autotools +- name: ibus-anthy + morph: gnome/strata/gnome/ibus-anthy.morph + repo: upstream:ibus-anthy + ref: 9ba0a2a1e595fbf6e39c50a15814bb6f9e337769 + unpetrify-ref: baserock/1.5.7-6-g9ba0a2a + build-depends: + - ibus + - anthy +- name: libcanberra + repo: upstream:libcanberra + ref: c0620e432650e81062c1967cc669829dbd29b310 + unpetrify-ref: master + build-system: autotools +- name: upower + morph: gnome/strata/gnome/upower.morph + repo: upstream:upower + ref: 0825c162d3dc909966b10fecabbc2c1da364c1a6 + unpetrify-ref: master +- name: gusb + repo: upstream:gusb + ref: 0c5eb813279c67607e17dfd99087358d34c6c8f5 + unpetrify-ref: master + build-system: autotools +- name: colord + morph: gnome/strata/gnome/colord.morph + repo: upstream:colord + ref: e68f251b753297fcd1fc2bb7356588945bd3e69b + unpetrify-ref: baserock/gnome + build-depends: + - gusb + - lcms2 +- name: colord-gtk + repo: upstream:colord-gtk + ref: eadca143872288e1300303a771efdaab196900e1 + unpetrify-ref: COLORD_GTK_0_1_26 + build-system: autotools + build-depends: + - colord +- name: libgweather + repo: upstream:gnome/libgweather + ref: 5b8aed611f24d03434eed35e438cea213b894b7c + unpetrify-ref: master + build-system: autotools +- name: gnome-settings-daemon + morph: gnome/strata/gnome/gnome-settings-daemon.morph + repo: upstream:gnome-settings-daemon + ref: 8d4904fb35e8aa8b9b0b135b6026464c8e40d254 + unpetrify-ref: baserock/3.18.0/disable_wacom + build-depends: + - colord + - gnome-desktop + - gsettings-desktop-schemas + - ibus + - libcanberra + - libgweather + - libnotify + - lcms2 + - upower + submodules: + plugins/media-keys/gvc: + url: upstream:gnome/libgnome-volume-control +- name: zenity + repo: upstream:zenity + ref: d7135db2bdfdca812c0165f90e4611af9c7c6a50 + unpetrify-ref: master + build-depends: + - yelp-tools + build-system: autotools +- name: mozjs24 + morph: gnome/strata/gnome/mozjs24.morph + repo: upstream:mozilla/mozjs24 + ref: 334066c83de6c96320b63663a35d53159158c9b7 + unpetrify-ref: baserock/gnome +- name: gjs + repo: upstream:gjs + ref: 5d480f519e2b7e95cf1fad2f9f1a8e798fd5fe49 + unpetrify-ref: master + build-depends: + - mozjs24 + build-system: autotools +- name: telepathy-glib + morph: gnome/strata/gnome/telepathy-glib.morph + repo: upstream:telepathy-glib + ref: d27684c488ceee4f2f54f549738adab0e2e8165d + unpetrify-ref: master +- name: telepathy-logger + morph: gnome/strata/gnome/telepathy-logger.morph + repo: upstream:telepathy-logger + ref: 711842911edb15977430c0b6c1803e947619efc3 + unpetrify-ref: master + build-depends: + - telepathy-glib +- name: telepathy-mission-control + repo: upstream:telepathy-mission-control + ref: 84dc7d0fd952a9ef3d200ac5557cdf2daccca145 + unpetrify-ref: telepathy-mission-control-5.16.3 + build-system: autotools + build-depends: + - telepathy-glib +- name: startup-notification + repo: upstream:startup-notification + ref: 07237ff25d6171e1b548118442ddba4259a53ba5 + unpetrify-ref: master + build-system: autotools +- name: libxkbcommon-x11 + repo: upstream:xorg-lib-libxkbcommon + ref: c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28 + unpetrify-ref: xkbcommon-0.5.0 + build-system: autotools +- name: mutter + morph: gnome/strata/gnome/mutter.morph + repo: upstream:mutter + ref: b975676c5ddd9401d4acfc4d0b9317dd8956656b + unpetrify-ref: baserock/3.18.0-25-gb975676 + build-depends: + - clutter + - cogl + - gnome-desktop + - gnome-settings-daemon + - gsettings-desktop-schemas + - libxkbcommon-x11 + - startup-notification + - upower + - zenity +- name: libxklavier + repo: upstream:libxklavier + ref: 65c132a65e90a42e898f07243ef544109ada53c9 + unpetrify-ref: master + build-depends: + - iso-codes + build-system: autotools +- name: caribou + morph: gnome/strata/gnome/caribou.morph + repo: upstream:caribou + ref: e1a7a2488cdf8d0d32f0de67d68a85e9a6ab5fd2 + unpetrify-ref: baserock/CARIBOU_0_4_19-1-ge1a7a24+python3 + build-depends: + - clutter + - libxklavier +- name: librest + morph: gnome/strata/gnome/librest.morph + repo: upstream:gnome/librest + ref: 08f1fc35e3c77aecedacf08aa510e82c91ac7f2a + unpetrify-ref: 0.7.93 +- name: WebKitGtk + morph: gnome/strata/gnome/WebKitGtk.morph + repo: upstream:WebKitGtk-tarball + ref: a4e969f4965059196ca948db781e52f7cfebf19e + unpetrify-ref: webkitgtk-2.12.3 + build-depends: + - libnotify +- name: gnome-online-accounts + morph: gnome/strata/gnome/gnome-online-accounts.morph + repo: upstream:gnome/gnome-online-accounts + ref: d08463aefde22f36898f4e79798d365359e57614 + unpetrify-ref: 3.18.1 + build-depends: + - librest + - telepathy-glib + - WebKitGtk + submodules: + telepathy-account-widgets: + url: upstream:gnome/telepathy-account-widgets +- name: liboauth + repo: upstream:liboauth + ref: 9ff9d2902caf8a85c5019c11214d73e67053ba69 + unpetrify-ref: liboauth-0.9.7 + build-system: autotools +- name: libgdata + morph: gnome/strata/gnome/libgdata.morph + repo: upstream:libgdata + ref: ed52192fcd3cde2c0d7f0ab0d9e300fcdbc373a8 + unpetrify-ref: baserock/LIBGDATA_0_17_3-16-ged52192 + build-depends: + - gnome-online-accounts + - liboauth +- name: krb5 + morph: gnome/strata/gnome/krb5.morph + repo: upstream:krb5 + ref: db2acb6b06e469c6c12476bec68acc7964626523 + unpetrify-ref: master +- name: evolution-data-server + morph: gnome/strata/gnome/evolution-data-server.morph + repo: upstream:evolution-data-server + ref: c7e3eb0e4e773e706ab170b9bfb1089ed1546eda + unpetrify-ref: EVOLUTION_DATA_SERVER_3_18_5 + build-depends: + - gnome-online-accounts + - krb5 + - libgdata + - libgweather +- name: raptor + morph: gnome/strata/gnome/raptor.morph + repo: upstream:raptor + ref: 286452cd786098ce31a002f16e5ec2e0fbdc9041 + unpetrify-ref: raptor2_2_0_15 +- name: isodate + repo: upstream:python-packages/isodate + ref: b99c0bd318991a8a8a9dc0c5273800b9801428f6 + unpetrify-ref: 0.5.4 + build-system: python-distutils +- name: rdflib + repo: upstream:python-packages/rdflib + ref: c2f9725f385a85fd280b4cf30239748b24f5cc06 + unpetrify-ref: 4.2.1 + build-system: python-distutils + build-depends: + - isodate +- name: zeitgeist + morph: gnome/strata/gnome/zeitgeist.morph + repo: upstream:zeitgeist + ref: abc7939806346a563ded2b16456dc7e2fff54fcc + unpetrify-ref: v0.9.16 + build-depends: + - raptor + - rdflib + - telepathy-glib +- name: folks + morph: gnome/strata/gnome/folks.morph + repo: upstream:gnome/folks + ref: 27367f26cd66bb86b745c892db214aa9a136c818 + unpetrify-ref: 0.11.2 + build-depends: + - evolution-data-server + - telepathy-logger + - zeitgeist +- name: libgfbgraph + repo: upstream:gnome/libgfbgraph + ref: 50eabf601310052216e25fa112e688204738f222 + unpetrify-ref: v_0_2_3 + build-system: autotools + build-depends: + - gnome-online-accounts + - librest +- name: network-manager-applet + repo: upstream:gnome/network-manager-applet + ref: bbcc673af29066cfc6f0e12f04c0dd3f9937fb3a + unpetrify-ref: baserock/0.9.10-beta1-344-gbbcc673 + build-system: autotools + build-depends: + - iso-codes + - libnotify +- name: gnome-shell + morph: gnome/strata/gnome/gnome-shell.morph + repo: upstream:gnome/gnome-shell + ref: 4da5b8dd1189e7e628605b2b23efe5db2d88f94b + unpetrify-ref: baserock/3.18.0-71-g4da5b8d + build-depends: + - caribou + - clutter + - evolution-data-server + - gjs + - libcanberra + - mutter + - startup-notification + - telepathy-glib + - network-manager-applet + submodules: + src/gvc: + url: upstream:gnome/libgnome-volume-control + data/theme/gnome-shell-sass: + url: upstream:gnome/gnome-shell-sass +- name: gnome-session + morph: gnome/strata/gnome/gnome-session.morph + repo: upstream:gnome/gnome-session + ref: 4ab09c39738adaaf16116b3bd82e47188b5483cd + unpetrify-ref: 3.18.1.2 + build-depends: + - gnome-desktop +- name: d-feet + morph: gnome/strata/gnome/d-feet.morph + repo: upstream:gnome/d-feet + ref: a526f5325f179482f915216f7781232899be5600 + unpetrify-ref: master + build-depends: + - yelp-tools +- name: accountsservice + morph: gnome/strata/gnome/accountsservice.morph + repo: upstream:accountsservice + ref: 1b91edfe9db81e75d0f08e98c6909cdf34c9e91e + unpetrify-ref: baserock/0.6.40-8-gcad21b1+libsystemd_fix +- name: gdm + morph: gnome/strata/gnome/gdm.morph + repo: upstream:gdm + ref: 494ec8cee5727c37118994d3864c44f36aa454fc + unpetrify-ref: 3.18.0 + build-depends: + - accountsservice + - libcanberra + - dconf +- name: hicolor-icon-theme + morph: gnome/strata/gnome/hicolor-icon-theme.morph + repo: upstream:hicolor-icon-theme + ref: 5954bd6c123aa31c8f35b83d70b73e1f6dcf34b3 + unpetrify-ref: master +- name: gnome-themes-standard + morph: gnome/strata/gnome/gnome-themes-standard.morph + repo: upstream:gnome-themes-standard + ref: 4058c3bced2173c8e6f2a22953327dcc2023e82d + unpetrify-ref: master + build-depends: + - hicolor-icon-theme +- name: adwaita-icon-theme + morph: gnome/strata/gnome/adwaita-icon-theme.morph + repo: upstream:gnome/adwaita-icon-theme + ref: 5e469ae6e664cb0808b6ce9fcfd7bd2ac6fc4216 + unpetrify-ref: gnome-3-18 +- name: gnome-backgrounds + repo: upstream:gnome/gnome-backgrounds + ref: e68462edd35ae3edb4311df90dc4d1a3cdcb175f + unpetrify-ref: baserock/3.18.0-2-ge68462e + build-system: autotools +- name: glib-networking + morph: gnome/strata/gnome/glib-networking.morph + repo: upstream:gnome/glib-networking + ref: 32ee55186d7df497e3d402a1940cddfabd9dbc21 + unpetrify-ref: 2.46.0 +- name: cracklib + morph: gnome/strata/gnome/cracklib.morph + repo: upstream:cracklib + ref: 1dd5ca2114c0dd478b17e68e38d2c9f7094552cc + unpetrify-ref: cracklib-2.9.6 +- name: libpwquality + morph: gnome/strata/gnome/libpwquality.morph + repo: upstream:libpwquality + ref: 24937f6fdcc1673e064c9626407c89f58289957d + unpetrify-ref: libpwquality-1.3.0 + build-depends: + - cracklib +- name: glade + morph: gnome/strata/gnome/glade.morph + repo: upstream:gnome/glade + ref: 4f81f15467ad45c3dddc7ee50ffaca9596d628ee + unpetrify-ref: master + build-depends: + - yelp-tools +- name: vte + morph: gnome/strata/gnome/vte.morph + repo: upstream:gnome/vte + ref: aa7120c2e359bb5d6d0b0ec6c1e0eecf0583be03 + unpetrify-ref: 0.43.0 + build-depends: + - glade +- name: nautilus + morph: gnome/strata/gnome/nautilus.morph + repo: upstream:nautilus + ref: 2efab5ea404077bfb09f543ed2acc8e0940d21c9 + unpetrify-ref: baserock/3.18.1 + build-depends: + - vte + - gnome-desktop + - gsettings-desktop-schemas + submodules: + libgd: + url: upstream:gnome/libgd +- name: desktop-file-utils + morph: gnome/strata/gnome/desktop-file-utils.morph + repo: upstream:desktop-file-utils + ref: 4944725bddcf5821d53d7d648fc53347ce12cc03 + unpetrify-ref: '0.22' +- name: gnome-terminal + morph: gnome/strata/gnome/gnome-terminal.morph + repo: upstream:gnome/gnome-terminal + ref: d52e6beb2df7aedd0c98696ae3be4a36b4c8f0f0 + unpetrify-ref: 3.18.1 + build-depends: + - desktop-file-utils + - dconf + - gconf + - gsettings-desktop-schemas + - nautilus + - yelp-tools +- name: libnice + repo: upstream:libnice + ref: 533ff6c5a03680f300709be4dc999f45659f3a1b + unpetrify-ref: 0.1.13 + build-system: autotools +- name: farstream + repo: upstream:farstream + ref: 01fafe82fbc01f31e76623fbbbe6dd99eb28d6bb + unpetrify-ref: 0.2.7 + build-system: autotools + build-depends: + - libnice + submodules: + common: + url: upstream:gstreamer-common +- name: telepathy-farstream + repo: upstream:telepathy-farstream + ref: 0b1bba79cfe94e7676fe69e9e0d2e3983a3c14c5 + unpetrify-ref: telepathy-farstream-0.6.2 + build-system: autotools + build-depends: + - farstream + - telepathy-glib +- name: telepathy-gabble + morph: gnome/strata/gnome/telepathy-gabble.morph + repo: upstream:telepathy-gabble + ref: f10f557fd67ec11738670828a553496960c0d411 + unpetrify-ref: telepathy-gabble-0.18.3 + build-depends: + - libnice + - telepathy-glib + submodules: + lib/ext/wocky: + url: upstream:wocky +- name: telepathy-salut + morph: gnome/strata/gnome/telepathy-salut.morph + repo: upstream:telepathy-salut + ref: cd32e00a3a461756cbf1f6899a0c2aa5bd5d79ee + unpetrify-ref: telepathy-salut-0.8.1 + build-depends: + - telepathy-glib + submodules: + lib/ext/wocky: + url: upstream:wocky +- name: telepathy-idle + repo: upstream:telepathy-idle + ref: 55e9841a4af51d7f014395475526b700abec4d0b + unpetrify-ref: telepathy-idle-0.2.0 + build-system: autotools + build-depends: + - telepathy-glib +- name: libpurple + morph: gnome/strata/gnome/libpurple.morph + repo: upstream:pidgin + ref: 9273b95bd66893a362cbf6f69bb8bc749db41f04 + unpetrify-ref: baserock/v2.10.11 + build-depends: + - evolution-data-server + - farstream +- name: telepathy-haze + repo: upstream:telepathy-haze + ref: d3d7b7f9342511c0c961e3f2d9fc1f5fb0804142 + unpetrify-ref: telepathy-haze-0.8.0 + build-system: autotools + build-depends: + - libpurple + - telepathy-glib +- name: grilo + repo: upstream:gnome/grilo + ref: e470c0cd72231d2a86f419a584df3d635bc6b62f + unpetrify-ref: baserock/grilo-0.2.14-17-ge470c0c + build-system: autotools +- name: grilo-plugins + repo: upstream:gnome/grilo-plugins + ref: e23b0fa5f6656d53b977693bf55174bd2ccd172d + unpetrify-ref: baserock/grilo-plugins-0.2.16-17-ge23b0fa + build-system: autotools + build-depends: + - gnome-online-accounts + - grilo + - libgdata + - liboauth + - librest + - yelp-tools +- name: libgtop + repo: upstream:gnome/libgtop + ref: ac2aef0f47fd998555abf18003f4c11ffecbf542 + unpetrify-ref: 2.32.0 + build-system: autotools +- name: gnome-bluetooth + repo: upstream:gnome/gnome-bluetooth + ref: eb2558d45518f7c23c20fa7b13639f013810494e + unpetrify-ref: GNOMEBT_V_3_18_0 + build-system: autotools + build-depends: + - libcanberra + - libnotify +- name: gcab + repo: upstream:gnome/gcab + ref: e57dd3d1ddb0da91df9188c2a98d59d1050ac6cb + unpetrify-ref: baserock/v0.6-22-ge57dd3d + build-system: autotools +- name: appstream-glib + repo: upstream:appstream-glib + ref: d3885c325271fee0bed5c5815d41eb788712acb4 + unpetrify-ref: appstream_glib_0_5_0 + # Building 0.5.3 requires absurdly new libsoup + # ref: 2b57a0c407021f2b1efca38eb99a9bf61c1d16b2 + # unpetrify-ref: appstream_glib_0_5_3 + build-system: autotools + build-depends: + - gcab +- name: gnome-color-manager + morph: gnome/strata/gnome/gnome-color-manager.morph + repo: upstream:gnome/gnome-color-manager + ref: 8284cb186e0e7c248fc2a2449735fd24b778ec81 + unpetrify-ref: GNOME_COLOR_MANAGER_3_18_0 + build-depends: + - appstream-glib + - colord-gtk + - gnome-desktop + - lcms2 + - libcanberra + - vte + - yelp-tools +- name: clutter-gst + repo: upstream:gnome/clutter-gst + ref: 395797827a148809a2be0d968c5bf71a6e9c9299 + unpetrify-ref: 3.0.14 + build-system: autotools + build-depends: + - clutter +- name: clutter-gst2 + repo: upstream:gnome/clutter-gst + ref: e9372b1c7d858ae0268d92d0c5e02532a8352b68 + unpetrify-ref: 2.0.16 + build-system: autotools + build-depends: + - clutter +- name: cheese + morph: gnome/strata/gnome/cheese.morph + repo: upstream:gnome/cheese + ref: 61651e03e8346bd0084da7247269e52e2a42190e + unpetrify-ref: gnome-3-18 + build-depends: + - appstream-glib + - clutter + - clutter-gst + - clutter-gtk + - gnome-desktop + - libcanberra + - yelp-tools +- name: gnome-control-center + morph: gnome/strata/gnome/gnome-control-center.morph + repo: upstream:gnome/gnome-control-center + ref: 49da7d8089298ba9e15d8e025db606278802d5ac + unpetrify-ref: GNOME_CONTROL_CENTER_3_18_0 + build-depends: + - accountsservice + - cheese + - clutter + - clutter-gtk + - colord + - colord-gtk + - gnome-bluetooth + - gnome-desktop + - gnome-online-accounts + - gnome-settings-daemon + - grilo + - gsettings-desktop-schemas + - ibus + - iso-codes + - krb5 + - libcanberra + - libgtop + - libpwquality + - network-manager-applet + submodules: + libgd: + url: upstream:gnome/libgd + panels/sound/gvc: + url: upstream:gnome/libgnome-volume-control +- name: gnome-initial-setup + morph: gnome/strata/gnome/gnome-initial-setup.morph + repo: upstream:gnome/gnome-initial-setup + ref: a6ae059a7fab60cae534f78eb485960a7b406be5 + unpetrify-ref: new-user-mode-fixes + build-depends: + - accountsservice + - cheese + - gdm + - gnome-desktop + - gnome-online-accounts + - ibus + - iso-codes + - krb5 + - libgweather + - libpwquality + - network-manager-applet +- name: libgnomekbd + repo: upstream:gnome/libgnomekbd + ref: d8ff867e95e548476c68db12ade3a0a4697a24a1 + unpetrify-ref: master + build-system: autotools + build-depends: + - libxklavier +- name: sound-theme-freedesktop + build-system: autotools + repo: upstream:sound-theme-freedesktop + ref: 9d2ac65a2f88263f0eec8b777ef3bdc023b93c25 + unpetrify-ref: '0.8' +- name: libwnck + morph: gnome/strata/gnome/libwnck.morph + repo: upstream:libwnck + ref: 46bade6f53351f2a63d030e27cbba2e0048d1cde + unpetrify-ref: 3.14.0 +- name: libpeas + morph: gnome/strata/gnome/libpeas.morph + repo: upstream:gnome/libpeas + ref: ede1902bee26dbe36c2c1559b1166035580cdf30 + unpetrify-ref: libpeas-1.16.0 +- name: gtksourceview + morph: gnome/strata/gnome/gtksourceview.morph + repo: upstream:gnome/gtksourceview + ref: eeb6fd40fbbc74515828070fef554ed98ad481e9 + unpetrify-ref: 3.18.1 + build-depends: + - glade +############################################### +# Applications Start Here # +############################################### +- name: epiphany + morph: gnome/strata/gnome/epiphany.morph + repo: upstream:gnome/epiphany + ref: 5483823ae71fc5280e2fda9e85557362debb0c2e + unpetrify-ref: 3.18.1 + build-depends: + - appstream-glib + - gnome-desktop + - iso-codes + - libcanberra + - libnotify + - libwnck + - startup-notification + - WebKitGtk +- name: totem + repo: upstream:gnome/totem + ref: dc21ef2e61f7e8a085a0f98eeec808b6424af988 + unpetrify-ref: V_3_18_1 + build-system: autotools + build-depends: + - appstream-glib + - clutter + - clutter-gst + - clutter-gtk + - gnome-desktop + - grilo + - grilo-plugins + - gsettings-desktop-schemas + - iso-codes + - libpeas + - yelp-tools + submodules: + libgd: + url: upstream:gnome/libgd +- name: yelp + repo: upstream:gnome/yelp + morph: gnome/strata/gnome/yelp.morph + ref: 9932283ce9610f969e023a0dc326c81159c06a15 + unpetrify-ref: 3.18.1 + build-depends: + - WebKitGtk + - yelp-xsl +- name: gnome-user-docs + repo: upstream:gnome/gnome-user-docs + ref: 618fc9644317c55d674ca2e1b00b41d364427fb1 + unpetrify-ref: master + build-system: autotools + build-depends: + - yelp-tools +- name: gnome-getting-started-docs + repo: upstream:gnome/gnome-getting-started-docs + ref: e50ec428ee080513f059a5cab0a41174f99f0413 + unpetrify-ref: 3.18.2 + build-system: autotools + build-depends: + - yelp-tools +- name: gedit + repo: upstream:gnome/gedit + ref: 8156d35a6eb27f3251e1ea454a48cb2a2ae4f87c + unpetrify-ref: 3.18.2 + build-system: autotools + build-depends: + - gsettings-desktop-schemas + - gtksourceview + - iso-codes + - libpeas + - yelp-tools + submodules: + libgd: + url: upstream:gnome/libgd +- name: gnome-calendar + repo: upstream:gnome/gnome-calendar + ref: 5292e9d57442067701ce94eea54b4b12d13b7aa3 + unpetrify-ref: 3.18.1 + build-system: autotools + build-depends: + - appstream-glib + - gnome-online-accounts + - evolution-data-server +- name: gnome-todo + repo: upstream:gnome/gnome-todo + ref: a39ccadf8a659fca8b4503bf4844383f5346f6cb + unpetrify-ref: GNOME_TODO_3_18_1 + build-system: autotools + build-depends: + - appstream-glib + - evolution-data-server + - gnome-online-accounts +- name: empathy + morph: gnome/strata/gnome/empathy.morph + repo: upstream:gnome/empathy + ref: 1245792e78ab67683349d376f4b7b5a2a02a0b9f + unpetrify-ref: EMPATHY_3_12_11 + build-depends: + - cheese + - clutter + - clutter-gst2 + - clutter-gtk + - farstream + - folks + - gnome-online-accounts + - gsettings-desktop-schemas + - iso-codes + - libcanberra + - libchamplain + - libnotify + - telepathy-farstream + - telepathy-glib + - telepathy-logger + - telepathy-mission-control + - yelp-tools + submodules: + telepathy-account-widgets: + url: upstream:gnome/telepathy-account-widgets +- name: gnome-contacts + repo: upstream:gnome/gnome-contacts + ref: fa736997cc7ec8df89458502c0a181090def64e9 + unpetrify-ref: 3.18.0 + build-system: autotools + build-depends: + - cheese + - folks + - gnome-desktop + - gnome-online-accounts + - libchamplain + - libnotify + - telepathy-glib + submodules: + libgd: + url: upstream:gnome/libgd +- name: gnome-maps + repo: upstream:gnome/gnome-maps + ref: 6d6e8afd54735e565a0c81cb761f22bb82d142db + unpetrify-ref: v3.18.1 + build-system: autotools + build-depends: + - folks + - clutter-gtk + - gjs + - gnome-desktop + - gnome-online-accounts + - libchamplain + - libgfbgraph +- name: gnome-dictionary + repo: upstream:gnome/gnome-dictionary + ref: e36fac6ee47a71c46afdd55f2110c36a22521bb6 + unpetrify-ref: 3.18.0 + build-system: autotools + build-depends: + - yelp-tools +- name: eog + repo: upstream:gnome/eog + ref: d05bdd7dfbe13910f903c8678e923ff6d92cbc86 + unpetrify-ref: 3.18.1 + build-system: autotools + build-depends: + - gnome-desktop + - gsettings-desktop-schemas + - lcms2 + - libpeas + - yelp-tools +- name: baobab + repo: upstream:gnome/baobab + ref: 59fa8171d2dfa02be56930f451ae186680074bb6 + unpetrify-ref: 3.18.1 + build-system: autotools + build-depends: + - yelp-tools +- name: gnome-font-viewer + repo: upstream:gnome/gnome-font-viewer + ref: 9af2f35a63f34f87407e784b514cafe1cc772384 + unpetrify-ref: master + build-system: autotools + build-depends: + - gnome-desktop +- name: gnome-screenshot + repo: upstream:gnome/gnome-screenshot + ref: 3a97ad23ff14a0400f12dd3fdf501d1d9dad04d4 + unpetrify-ref: 3.18.0 + build-system: autotools + build-depends: + - libcanberra +- name: evolution + morph: gnome/strata/gnome/evolution.morph + repo: upstream:gnome/evolution + ref: 6a02c7980589cf24de90c29556bc84ee2f57b832 + unpetrify-ref: EVOLUTION_3_18_5_2 + build-depends: + - evolution-data-server + - clutter-gtk + - gnome-desktop + - gnome-online-accounts + - gsettings-desktop-schemas + - libcanberra + - libchamplain + - libgdata + - libgweather + - libnotify + - yelp-tools diff --git a/old/gnome/strata/gnome/WebKitGtk.morph b/old/gnome/strata/gnome/WebKitGtk.morph new file mode 100644 index 00000000..cbe1577c --- /dev/null +++ b/old/gnome/strata/gnome/WebKitGtk.morph @@ -0,0 +1,5 @@ +name: WebKitGtk +kind: chunk +build-system: cmake +configure-commands: +- cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$PREFIX" -DCMAKE_INSTALL_LIBDIR=lib diff --git a/old/gnome/strata/gnome/accountsservice.morph b/old/gnome/strata/gnome/accountsservice.morph new file mode 100644 index 00000000..15ba434d --- /dev/null +++ b/old/gnome/strata/gnome/accountsservice.morph @@ -0,0 +1,9 @@ +name: accountsservice +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-admin-group=adm +system-integration: + accountsservice-misc: + 00-enable-accounts-daemon-unit: + - systemctl enable accounts-daemon diff --git a/old/gnome/strata/gnome/adwaita-icon-theme.morph b/old/gnome/strata/gnome/adwaita-icon-theme.morph new file mode 100644 index 00000000..99ded09c --- /dev/null +++ b/old/gnome/strata/gnome/adwaita-icon-theme.morph @@ -0,0 +1,11 @@ +name: adwaita-icon-theme +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" diff --git a/old/gnome/strata/gnome/autoconf-archive.morph b/old/gnome/strata/gnome/autoconf-archive.morph new file mode 100644 index 00000000..de05f0aa --- /dev/null +++ b/old/gnome/strata/gnome/autoconf-archive.morph @@ -0,0 +1,5 @@ +name: autoconf-archive +kind: chunk +build-system: autotools +pre-configure-commands: +- ./bootstrap.sh diff --git a/old/gnome/strata/gnome/berkeleydb.morph b/old/gnome/strata/gnome/berkeleydb.morph new file mode 100644 index 00000000..e6238e7a --- /dev/null +++ b/old/gnome/strata/gnome/berkeleydb.morph @@ -0,0 +1,18 @@ +name: berkeleydb +kind: chunk +build-system: autotools +configure-commands: +- | + cd build_unix; + ../dist/configure --prefix="$PREFIX" \ + --enable-compat185 \ + --enable-dbm \ + --enable-cxx +build-commands: +- | + cd build_unix; + make +install-commands: +- | + cd build_unix; + make DESTDIR="$DESTDIR" install diff --git a/old/gnome/strata/gnome/caribou.morph b/old/gnome/strata/gnome/caribou.morph new file mode 100644 index 00000000..14827a98 --- /dev/null +++ b/old/gnome/strata/gnome/caribou.morph @@ -0,0 +1,5 @@ +name: caribou +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-gtk2-module diff --git a/old/gnome/strata/gnome/cheese.morph b/old/gnome/strata/gnome/cheese.morph new file mode 100644 index 00000000..5e3671fb --- /dev/null +++ b/old/gnome/strata/gnome/cheese.morph @@ -0,0 +1,11 @@ +name: cheese +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" diff --git a/old/gnome/strata/gnome/clutter.morph b/old/gnome/strata/gnome/clutter.morph new file mode 100644 index 00000000..d454c6e3 --- /dev/null +++ b/old/gnome/strata/gnome/clutter.morph @@ -0,0 +1,6 @@ +name: clutter +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-wayland-backend --enable-wayland-compositor + --enable-egl-backend --enable-evdev-input --enable-x11-backend diff --git a/old/gnome/strata/gnome/cogl.morph b/old/gnome/strata/gnome/cogl.morph new file mode 100644 index 00000000..8c9dca76 --- /dev/null +++ b/old/gnome/strata/gnome/cogl.morph @@ -0,0 +1,6 @@ +name: cogl +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-wayland-egl-platform --enable-wayland-egl-server + --enable-kms-egl-platform --enable-xlib-egl-platform --enable-cogl-gst diff --git a/old/gnome/strata/gnome/colord.morph b/old/gnome/strata/gnome/colord.morph new file mode 100644 index 00000000..d1e14454 --- /dev/null +++ b/old/gnome/strata/gnome/colord.morph @@ -0,0 +1,9 @@ +name: colord +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc +system-integration: + colord-misc: + 00-enable-colord-unit: + - systemctl enable colord diff --git a/old/gnome/strata/gnome/cracklib.morph b/old/gnome/strata/gnome/cracklib.morph new file mode 100644 index 00000000..fe204255 --- /dev/null +++ b/old/gnome/strata/gnome/cracklib.morph @@ -0,0 +1,18 @@ +name: cracklib +kind: chunk +build-system: autotools +configure-commands: +# cracklib has it's own autogen.sh script, but uses curl to download config.sub & config.guess, we just skip it +- cd src && autopoint -f && cd m4 && echo EXTRA_DIST = *.m4 > Makefile.am && cd .. && autoreconf -f -i +- cd src && ./configure --prefix="$PREFIX" --sysconfdir=/etc --with-default-dict=/lib/cracklib/pw_dict +build-commands: +- make -C src +- make -C words cracklib-words.gz +install-commands: +- make -C src install +- install -m644 -D words/cracklib-words.gz $DESTDIR$PREFIX/share/dict/cracklib-words.gz +- install -v -m755 -d $DESTDIR/lib/cracklib +system-integration: + cracklib-misc: + 00-cracklib-create-dict: + - create-cracklib-dict /usr/share/dict/cracklib-words.gz diff --git a/old/gnome/strata/gnome/d-feet.morph b/old/gnome/strata/gnome/d-feet.morph new file mode 100644 index 00000000..df74d3e0 --- /dev/null +++ b/old/gnome/strata/gnome/d-feet.morph @@ -0,0 +1,7 @@ +name: d-feet +kind: chunk +build-system: autotools +configure-commands: +# Workaround upstream bug https://bugzilla.gnome.org/show_bug.cgi?id=757769 +- sed -i 's/AM_PATH_PYTHON(\[2\.7\])/AM_PATH_PYTHON(\[3\.1\])/g' configure.ac +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-tests diff --git a/old/gnome/strata/gnome/dconf.morph b/old/gnome/strata/gnome/dconf.morph new file mode 100644 index 00000000..a49efd36 --- /dev/null +++ b/old/gnome/strata/gnome/dconf.morph @@ -0,0 +1,5 @@ +name: dconf +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-man diff --git a/old/gnome/strata/gnome/desktop-file-utils.morph b/old/gnome/strata/gnome/desktop-file-utils.morph new file mode 100644 index 00000000..df34dad6 --- /dev/null +++ b/old/gnome/strata/gnome/desktop-file-utils.morph @@ -0,0 +1,7 @@ +name: desktop-file-utils +kind: chunk +build-system: autotools +system-integration: + desktop-file-utils-misc: + 01-update-desktop-database: + - update-desktop-database diff --git a/old/gnome/strata/gnome/empathy.morph b/old/gnome/strata/gnome/empathy.morph new file mode 100644 index 00000000..a2a0cbc0 --- /dev/null +++ b/old/gnome/strata/gnome/empathy.morph @@ -0,0 +1,5 @@ +name: empathy +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-Werror diff --git a/old/gnome/strata/gnome/epiphany.morph b/old/gnome/strata/gnome/epiphany.morph new file mode 100644 index 00000000..736d89e0 --- /dev/null +++ b/old/gnome/strata/gnome/epiphany.morph @@ -0,0 +1,5 @@ +name: epiphany +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var --disable-Werror diff --git a/old/gnome/strata/gnome/evolution-data-server.morph b/old/gnome/strata/gnome/evolution-data-server.morph new file mode 100644 index 00000000..bfa8671a --- /dev/null +++ b/old/gnome/strata/gnome/evolution-data-server.morph @@ -0,0 +1,10 @@ +name: evolution-data-server +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc \ + --disable-uoa --with-libdb=no \ + --enable-vala-bindings --with-krb5=yes \ + --with-nss-includes=/usr/include/nss \ + --with-nspr-includes=/usr/include/nspr diff --git a/old/gnome/strata/gnome/evolution.morph b/old/gnome/strata/gnome/evolution.morph new file mode 100644 index 00000000..e0d0b1f6 --- /dev/null +++ b/old/gnome/strata/gnome/evolution.morph @@ -0,0 +1,11 @@ +name: evolution +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc \ + --disable-autoar --disable-libcryptui --disable-pst-import --disable-gtkspell \ + --disable-text-highlight --enable-contact-maps \ + --enable-nss --enable-smime \ + --with-nspr-includes=/usr/include/nspr --with-nspr-libs=/usr/lib \ + --with-nss-includes=/usr/include/nss --with-nss-libs=/usr/lib/nss diff --git a/old/gnome/strata/gnome/folks.morph b/old/gnome/strata/gnome/folks.morph new file mode 100644 index 00000000..132c8f3f --- /dev/null +++ b/old/gnome/strata/gnome/folks.morph @@ -0,0 +1,5 @@ +name: folks +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-fatal-warnings --enable-tracker-backend diff --git a/old/gnome/strata/gnome/gconf.morph b/old/gnome/strata/gnome/gconf.morph new file mode 100644 index 00000000..26930945 --- /dev/null +++ b/old/gnome/strata/gnome/gconf.morph @@ -0,0 +1,5 @@ +name: gconf +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-orbit --disable-documentation diff --git a/old/gnome/strata/gnome/gdm.morph b/old/gnome/strata/gnome/gdm.morph new file mode 100644 index 00000000..73081766 --- /dev/null +++ b/old/gnome/strata/gnome/gdm.morph @@ -0,0 +1,24 @@ +name: gdm +kind: chunk +build-system: autotools +configure-commands: +- | + # GDM includes a few stock PAM configurations, we choose the LFS flavor + # because of it's simplicity over the others, also it does not require + # selinux modules, however we neet to tweak the config a little after install. + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var \ + --with-selinux=no --with-plymouth=no \ + --enable-gdm-xsession --with-x --with-default-pam-config=lfs +post-install-commands: +# Instead of following LFS PAM config to the letter, we redirect the includes +# to use the systemd installed all purpose 'system-auth' file +- sed -i 's/system-account/system-auth/g' "$DESTDIR"/etc/pam.d/gdm* +- sed -i 's/system-password/system-auth/g' "$DESTDIR"/etc/pam.d/gdm* +- sed -i 's/system-session/system-auth/g' "$DESTDIR"/etc/pam.d/gdm* +system-integration: + gdm-misc: + 00-add-gdm-user: + - groupadd -g 21 gdm + - useradd -rM -c "GDM Daemon Owner" -d /var/lib/gdm -u 21 -g gdm -s /bin/false gdm + 00-enable-gdm-unit: + - systemctl enable gdm diff --git a/old/gnome/strata/gnome/glade.morph b/old/gnome/strata/gnome/glade.morph new file mode 100644 index 00000000..9cc3675d --- /dev/null +++ b/old/gnome/strata/gnome/glade.morph @@ -0,0 +1,5 @@ +name: glade +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-man-pages diff --git a/old/gnome/strata/gnome/glib-networking.morph b/old/gnome/strata/gnome/glib-networking.morph new file mode 100644 index 00000000..53380583 --- /dev/null +++ b/old/gnome/strata/gnome/glib-networking.morph @@ -0,0 +1,9 @@ +name: glib-networking +kind: chunk +build-system: autotools +configure-commands: +# +# Tell glib-networking where the system CA certs are found, avoid depending +# on an installed ca-certificates. +# +- ./autogen.sh --prefix="$PREFIX" --with-ca-certificates=/etc/ssl/certs/ca-certificates.crt diff --git a/old/gnome/strata/gnome/gnome-color-manager.morph b/old/gnome/strata/gnome/gnome-color-manager.morph new file mode 100644 index 00000000..90ed1815 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-color-manager.morph @@ -0,0 +1,7 @@ +name: gnome-color-manager +kind: chunk +build-system: autotools +configure-commands: +# There is no justification to disable EXIV, we were just +# too lazy to integrate EXIV +- ./autogen.sh --prefix="$PREFIX" --disable-exiv diff --git a/old/gnome/strata/gnome/gnome-control-center.morph b/old/gnome/strata/gnome/gnome-control-center.morph new file mode 100644 index 00000000..ec2b6409 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-control-center.morph @@ -0,0 +1,5 @@ +name: gnome-control-center +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-documentation diff --git a/old/gnome/strata/gnome/gnome-initial-setup.morph b/old/gnome/strata/gnome/gnome-initial-setup.morph new file mode 100644 index 00000000..47324950 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-initial-setup.morph @@ -0,0 +1,9 @@ +name: gnome-initial-setup +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc +system-integration: + gnome-initial-setup-misc: + 01-add-gnome-initial-setup-user: + - useradd -rM -d /run/gnome-initial-setup/ -c "GNOME Initial Setup Owner" -s /bin/false gnome-initial-setup diff --git a/old/gnome/strata/gnome/gnome-online-accounts.morph b/old/gnome/strata/gnome/gnome-online-accounts.morph new file mode 100644 index 00000000..0dea9543 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-online-accounts.morph @@ -0,0 +1,5 @@ +name: gnome-online-accounts +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-gtk-doc --disable-documentation diff --git a/old/gnome/strata/gnome/gnome-session.morph b/old/gnome/strata/gnome/gnome-session.morph new file mode 100644 index 00000000..e7a4a927 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-session.morph @@ -0,0 +1,5 @@ +name: gnome-session +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-docbook-docs --disable-man --enable-systemd diff --git a/old/gnome/strata/gnome/gnome-settings-daemon.morph b/old/gnome/strata/gnome/gnome-settings-daemon.morph new file mode 100644 index 00000000..3112f778 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-settings-daemon.morph @@ -0,0 +1,5 @@ +name: gnome-settings-daemon +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-man diff --git a/old/gnome/strata/gnome/gnome-shell.morph b/old/gnome/strata/gnome/gnome-shell.morph new file mode 100644 index 00000000..dc58f670 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-shell.morph @@ -0,0 +1,5 @@ +name: gnome-shell +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-man --enable-compile-warnings=maximum diff --git a/old/gnome/strata/gnome/gnome-terminal.morph b/old/gnome/strata/gnome/gnome-terminal.morph new file mode 100644 index 00000000..89ec5964 --- /dev/null +++ b/old/gnome/strata/gnome/gnome-terminal.morph @@ -0,0 +1,5 @@ +name: gnome-terminal +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-search-provider diff --git a/old/gnome/strata/gnome/gnome-themes-standard.morph b/old/gnome/strata/gnome/gnome-themes-standard.morph new file mode 100644 index 00000000..c5b6702c --- /dev/null +++ b/old/gnome/strata/gnome/gnome-themes-standard.morph @@ -0,0 +1,5 @@ +name: gnome-themes-standard +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-gtk2-engine diff --git a/old/gnome/strata/gnome/gtksourceview.morph b/old/gnome/strata/gnome/gtksourceview.morph new file mode 100644 index 00000000..a41c5e9c --- /dev/null +++ b/old/gnome/strata/gnome/gtksourceview.morph @@ -0,0 +1,5 @@ +name: gtksourceview +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-glade-catalog --disable-Werror diff --git a/old/gnome/strata/gnome/hicolor-icon-theme.morph b/old/gnome/strata/gnome/hicolor-icon-theme.morph new file mode 100644 index 00000000..88629b39 --- /dev/null +++ b/old/gnome/strata/gnome/hicolor-icon-theme.morph @@ -0,0 +1,7 @@ +name: hicolor-icon-theme +kind: chunk +build-system: autotools +system-integration: + hicolor-icon-theme-misc: + 00-update-icon-cache: + - gtk-update-icon-cache -f -t /usr/share/icons/hicolor diff --git a/old/gnome/strata/gnome/ibus-anthy.morph b/old/gnome/strata/gnome/ibus-anthy.morph new file mode 100644 index 00000000..bb48e8bb --- /dev/null +++ b/old/gnome/strata/gnome/ibus-anthy.morph @@ -0,0 +1,5 @@ +name: ibus-anthy +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --with-python=python3 --enable-private-png=yes diff --git a/old/gnome/strata/gnome/ibus-hangul.morph b/old/gnome/strata/gnome/ibus-hangul.morph new file mode 100644 index 00000000..a479459b --- /dev/null +++ b/old/gnome/strata/gnome/ibus-hangul.morph @@ -0,0 +1,5 @@ +name: ibus-hangul +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --with-python=python3 diff --git a/old/gnome/strata/gnome/ibus-libpinyin.morph b/old/gnome/strata/gnome/ibus-libpinyin.morph new file mode 100644 index 00000000..7ad8a349 --- /dev/null +++ b/old/gnome/strata/gnome/ibus-libpinyin.morph @@ -0,0 +1,5 @@ +name: ibus-libpinyin +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --with-python=python3 --disable-lua-extension diff --git a/old/gnome/strata/gnome/ibus.morph b/old/gnome/strata/gnome/ibus.morph new file mode 100644 index 00000000..f46a1a71 --- /dev/null +++ b/old/gnome/strata/gnome/ibus.morph @@ -0,0 +1,9 @@ +name: ibus +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc \ + --disable-tests --disable-gconf --enable-dconf \ + --disable-memconf --disable-ui GSETTINGS_SCHEMA_CONVERT=/usr/bin/false \ + --with-python=python3 --enable-wayland diff --git a/old/gnome/strata/gnome/krb5.morph b/old/gnome/strata/gnome/krb5.morph new file mode 100644 index 00000000..d0a4600e --- /dev/null +++ b/old/gnome/strata/gnome/krb5.morph @@ -0,0 +1,10 @@ +name: krb5 +kind: chunk +build-system: autotools +configure-commands: +- cd src && ./util/reconf --force +- cd src && ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var/lib --enable-dns +build-commands: +- make -C src +install-commands: +- make -C src install diff --git a/old/gnome/strata/gnome/libchamplain.morph b/old/gnome/strata/gnome/libchamplain.morph new file mode 100644 index 00000000..e1c902b8 --- /dev/null +++ b/old/gnome/strata/gnome/libchamplain.morph @@ -0,0 +1,5 @@ +name: libchamplain +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-vala=yes diff --git a/old/gnome/strata/gnome/libgdata.morph b/old/gnome/strata/gnome/libgdata.morph new file mode 100644 index 00000000..4ff7c477 --- /dev/null +++ b/old/gnome/strata/gnome/libgdata.morph @@ -0,0 +1,6 @@ +name: libgdata +kind: chunk +build-system: autotools +configure-commands: +# Disable these cause we're too lazy to build libuhttpmock +- ./autogen.sh --prefix="$PREFIX" --disable-installed-tests --disable-always-build-tests diff --git a/old/gnome/strata/gnome/libhangul.morph b/old/gnome/strata/gnome/libhangul.morph new file mode 100644 index 00000000..f3df4601 --- /dev/null +++ b/old/gnome/strata/gnome/libhangul.morph @@ -0,0 +1,6 @@ +name: libhangul +kind: chunk +build-system: autotools +pre-configure-commands: +# Avoid an autotools error at translation build time, simply dont build po directory +- sed -i 's/SUBDIRS = hangul data tools po/SUBDIRS = hangul data tools/g' Makefile.am diff --git a/old/gnome/strata/gnome/libpeas.morph b/old/gnome/strata/gnome/libpeas.morph new file mode 100644 index 00000000..d5193600 --- /dev/null +++ b/old/gnome/strata/gnome/libpeas.morph @@ -0,0 +1,5 @@ +name: libpeas +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-python3 diff --git a/old/gnome/strata/gnome/libpurple.morph b/old/gnome/strata/gnome/libpurple.morph new file mode 100644 index 00000000..9bbe089b --- /dev/null +++ b/old/gnome/strata/gnome/libpurple.morph @@ -0,0 +1,9 @@ +name: libpurple +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc \ + --with-gstreamer=1.0 --disable-gtkui \ + --disable-idn --disable-meanwhile \ + --disable-tcl diff --git a/old/gnome/strata/gnome/libpwquality.morph b/old/gnome/strata/gnome/libpwquality.morph new file mode 100644 index 00000000..aefed50d --- /dev/null +++ b/old/gnome/strata/gnome/libpwquality.morph @@ -0,0 +1,6 @@ +name: libpwquality +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --with-securedir=/lib/security --disable-nls diff --git a/old/gnome/strata/gnome/librest.morph b/old/gnome/strata/gnome/librest.morph new file mode 100644 index 00000000..34503de3 --- /dev/null +++ b/old/gnome/strata/gnome/librest.morph @@ -0,0 +1,9 @@ +name: librest +kind: chunk +build-system: autotools +configure-commands: +# +# Tell librest where the system CA certs are found, avoid depending on +# an installed ca-certificates. +# +- ./autogen.sh --prefix="$PREFIX" --with-ca-certificates=/etc/ssl/certs/ca-certificates.crt diff --git a/old/gnome/strata/gnome/libwnck.morph b/old/gnome/strata/gnome/libwnck.morph new file mode 100644 index 00000000..bb8d7afa --- /dev/null +++ b/old/gnome/strata/gnome/libwnck.morph @@ -0,0 +1,11 @@ +name: libwnck +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" diff --git a/old/gnome/strata/gnome/mozjs24.morph b/old/gnome/strata/gnome/mozjs24.morph new file mode 100644 index 00000000..a3254305 --- /dev/null +++ b/old/gnome/strata/gnome/mozjs24.morph @@ -0,0 +1,18 @@ +name: mozjs24 +kind: chunk +build-system: manual +configure-commands: +- | + cd js/src; + ./configure --prefix="$PREFIX" \ + --sysconfdir=/etc \ + --with-system-nspr \ + --with-system-ffi \ + --enable-threadsafe +build-commands: +- | + cd js/src; + make +install-commands: +- cd js/src; + make DESTDIR="$DESTDIR" install diff --git a/old/gnome/strata/gnome/mutter.morph b/old/gnome/strata/gnome/mutter.morph new file mode 100644 index 00000000..334e3306 --- /dev/null +++ b/old/gnome/strata/gnome/mutter.morph @@ -0,0 +1,5 @@ +name: mutter +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-compile-warnings=no diff --git a/old/gnome/strata/gnome/nautilus.morph b/old/gnome/strata/gnome/nautilus.morph new file mode 100644 index 00000000..3afe7fd7 --- /dev/null +++ b/old/gnome/strata/gnome/nautilus.morph @@ -0,0 +1,5 @@ +name: nautilus +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-xmp diff --git a/old/gnome/strata/gnome/raptor.morph b/old/gnome/strata/gnome/raptor.morph new file mode 100644 index 00000000..fe2d1321 --- /dev/null +++ b/old/gnome/strata/gnome/raptor.morph @@ -0,0 +1,5 @@ +name: raptor +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-gtk-doc diff --git a/old/gnome/strata/gnome/telepathy-gabble.morph b/old/gnome/strata/gnome/telepathy-gabble.morph new file mode 100644 index 00000000..fef9b8d6 --- /dev/null +++ b/old/gnome/strata/gnome/telepathy-gabble.morph @@ -0,0 +1,8 @@ +name: telepathy-gabble +kind: chunk +build-system: autotools +configure-commands: +# +# Tell telepathy-gabble where to load the certificate bundle from. +# +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --with-ca-certificates=/etc/ssl/certs/ca-certificates.crt diff --git a/old/gnome/strata/gnome/telepathy-glib.morph b/old/gnome/strata/gnome/telepathy-glib.morph new file mode 100644 index 00000000..1a262ae8 --- /dev/null +++ b/old/gnome/strata/gnome/telepathy-glib.morph @@ -0,0 +1,6 @@ +name: telepathy-glib +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var + --disable-Werror --enable-vala-bindings --disable-fatal-warnings diff --git a/old/gnome/strata/gnome/telepathy-logger.morph b/old/gnome/strata/gnome/telepathy-logger.morph new file mode 100644 index 00000000..38c90539 --- /dev/null +++ b/old/gnome/strata/gnome/telepathy-logger.morph @@ -0,0 +1,5 @@ +name: telepathy-logger +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc diff --git a/old/gnome/strata/gnome/telepathy-salut.morph b/old/gnome/strata/gnome/telepathy-salut.morph new file mode 100644 index 00000000..bdb50cbd --- /dev/null +++ b/old/gnome/strata/gnome/telepathy-salut.morph @@ -0,0 +1,5 @@ +name: telepathy-salut +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --with-backend=avahi --disable-avahi-tests diff --git a/old/gnome/strata/gnome/upower.morph b/old/gnome/strata/gnome/upower.morph new file mode 100644 index 00000000..00e828bd --- /dev/null +++ b/old/gnome/strata/gnome/upower.morph @@ -0,0 +1,5 @@ +name: upower +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-man-pages diff --git a/old/gnome/strata/gnome/vte.morph b/old/gnome/strata/gnome/vte.morph new file mode 100644 index 00000000..34552c20 --- /dev/null +++ b/old/gnome/strata/gnome/vte.morph @@ -0,0 +1,5 @@ +name: vte +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-introspection=yes --without-pcre2 --enable-glade-catalogue diff --git a/old/gnome/strata/gnome/yelp.morph b/old/gnome/strata/gnome/yelp.morph new file mode 100644 index 00000000..86434a4a --- /dev/null +++ b/old/gnome/strata/gnome/yelp.morph @@ -0,0 +1,5 @@ +name: yelp +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --disable-Werror diff --git a/old/gnome/strata/gnome/zeitgeist.morph b/old/gnome/strata/gnome/zeitgeist.morph new file mode 100644 index 00000000..ec8dc87c --- /dev/null +++ b/old/gnome/strata/gnome/zeitgeist.morph @@ -0,0 +1,5 @@ +name: zeitgeist +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --with-session-bus-services-dir="$PREFIX"/share/dbus-1/services diff --git a/old/gnome/systems/gnome-system-armv7lhf-jetson.morph b/old/gnome/systems/gnome-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..d2fe284a --- /dev/null +++ b/old/gnome/systems/gnome-system-armv7lhf-jetson.morph @@ -0,0 +1,96 @@ +name: gnome-system-armv7lhf-jetson +kind: system +description: A GNOME system system. +arch: armv7lhf +strata: +- name: bluetooth + morph: strata/bluetooth.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: build-essential + morph: strata/build-essential.morph +- name: NetworkManager-common + morph: strata/NetworkManager-common.morph +- name: core + morph: strata/core.morph +- name: data-indexing-management + morph: strata/data-indexing-management.morph +- name: device-management + morph: strata/device-management.morph +- name: dlna-services + morph: strata/dlna-services.morph +- name: foundation + morph: strata/foundation.morph +- name: geolocation + morph: strata/geolocation.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: gnome + morph: gnome/strata/gnome.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: gtk-deps + morph: strata/gtk-deps.morph +- name: gtk2 + morph: strata/gtk2.morph +- name: gtk3 + morph: strata/gtk3.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: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-gobject + morph: strata/python3-gobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: ruby + morph: strata/ruby.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: x-drivers + morph: strata/x-drivers.morph +- name: x-generic + morph: strata/x-generic.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: flatpak-common + morph: gnome/strata/flatpak-common.morph +- name: network-security + morph: strata/network-security.morph +- name: icu-common + morph: strata/icu-common.morph +- name: samba + morph: strata/samba.morph +- name: secret-service + morph: strata/secret-service.morph +- name: spell-checking + morph: strata/spell-checking.morph +- name: storage-management + morph: strata/storage-management.morph +- name: cups + morph: strata/cups.morph +- name: WebKitGtk1-common + morph: gnome/strata/WebKitGtk1-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/install-files +- extensions/install-essential-files diff --git a/old/gnome/systems/gnome-system-x86_64.morph b/old/gnome/systems/gnome-system-x86_64.morph new file mode 100644 index 00000000..da625f84 --- /dev/null +++ b/old/gnome/systems/gnome-system-x86_64.morph @@ -0,0 +1,104 @@ +name: gnome-system-x86_64 +kind: system +description: A GNOME system system. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: NetworkManager-common + morph: strata/NetworkManager-common.morph +- name: core + morph: strata/core.morph +- name: data-indexing-management + morph: strata/data-indexing-management.morph +- name: device-management + morph: strata/device-management.morph +- name: dlna-services + morph: strata/dlna-services.morph +- name: foundation + morph: strata/foundation.morph +- name: geolocation + morph: strata/geolocation.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: gnome + morph: gnome/strata/gnome.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: gtk-deps + morph: strata/gtk-deps.morph +- name: gtk2 + morph: strata/gtk2.morph +- name: gtk3 + morph: strata/gtk3.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: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-hardware-codecs-x86 + morph: strata/multimedia-hardware-codecs-x86.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: multimedia-gstreamer-openmax-generic + morph: strata/multimedia-gstreamer-openmax-generic.morph +- name: privileges-management + morph: strata/privileges-management.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-gobject + morph: strata/python3-gobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: ruby + morph: strata/ruby.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: vala-common + morph: strata/vala-common.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: x-drivers + morph: strata/x-drivers.morph +- name: x-generic + morph: strata/x-generic.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: flatpak-common + morph: gnome/strata/flatpak-common.morph +- name: network-security + morph: strata/network-security.morph +- name: icu-common + morph: strata/icu-common.morph +- name: samba + morph: strata/samba.morph +- name: secret-service + morph: strata/secret-service.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: spell-checking + morph: strata/spell-checking.morph +- name: storage-management + morph: strata/storage-management.morph +- name: cups + morph: strata/cups.morph +- name: WebKitGtk1-common + morph: gnome/strata/WebKitGtk1-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/install-files +- extensions/install-essential-files diff --git a/old/install-files/chef/manifest b/old/install-files/chef/manifest new file mode 100644 index 00000000..de6cc542 --- /dev/null +++ b/old/install-files/chef/manifest @@ -0,0 +1,3 @@ +0040755 0 0 /root +0040700 1000 1000 /root/.ssh +0100600 1000 1000 /root/.ssh/authorized_keys diff --git a/old/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator b/old/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator new file mode 100755 index 00000000..127bc84f --- /dev/null +++ b/old/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator @@ -0,0 +1,16 @@ +#!/bin/sh +read trove_host "$1/srv-distbuild-ccache.mount" < /root/.ssh/id_rsa.pub creates=/root/.ssh/id_rsa.pub + + - name: Add trove's host key + shell: | + trove_key="$(ssh-keyscan -t dsa,ecdsa,rsa {{ TROVE_HOST|quote }})" + if [ -n "$trove_key" ]; then + echo "$trove_key" > /etc/ssh/ssh_known_hosts + fi + creates=/etc/ssh/ssh_known_hosts + + # This is a kludge. We can add the host key for the TROVE_HOST that was + # specified, but users may access the Trove by other names, e.g. IP address + # or domain name. Distbuild is currently not safe to run except on a private + # network where host key checking is not important, so we disable it by + # default to avoid errors when users don't stick to using the exact same + # TROVE_HOST in repo URLs. + - name: Disable strict SSH host key checking + lineinfile: + dest: /etc/ssh/ssh_config + line: StrictHostKeyChecking no + + - name: Enable the morph-cache-server service + service: name=morph-cache-server.service enabled=yes + register: morph_cache_server_service + - name: Restart the morph-cache-server service + service: name=morph-cache-server state=restarted + when: morph_cache_server_service|changed + + - name: Enable the morph-worker service + service: name=morph-worker.service enabled=yes + register: morph_worker_service + when: DISTBUILD_WORKER + - name: Restart the morph-worker service + service: name=morph-worker state=restarted + when: morph_worker_service|changed + + - name: Enable the morph-worker-helper service + service: name=morph-worker-helper.service enabled=yes + register: morph_worker_helper_service + when: DISTBUILD_WORKER + - name: Restart the morph-worker-helper service + service: name=morph-worker-helper state=restarted + when: morph_worker_helper_service|changed + + - name: Enable the morph-controller service + service: name=morph-controller.service enabled=yes + register: morph_controller_service + when: DISTBUILD_CONTROLLER + - name: Restart the morph-controller service + service: name=morph-controller state=restarted + when: morph_controller_service|changed + + - name: Enable the morph-controller-helper service + service: name=morph-controller-helper.service enabled=yes + register: morph_controller_helper_service + when: DISTBUILD_CONTROLLER + - name: Restart the morph-controller-helper service + service: name=morph-controller-helper state=restarted + when: morph_controller_helper_service|changed diff --git a/old/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts b/old/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts new file mode 100644 index 00000000..5b97818d --- /dev/null +++ b/old/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts @@ -0,0 +1 @@ +localhost ansible_connection=local diff --git a/old/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service b/old/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service new file mode 100644 index 00000000..ec5f5a2d --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service @@ -0,0 +1,16 @@ +[Unit] +Description=Run distbuild-setup Ansible scripts +Requires=network.target +After=network.target +Requires=opensshd.service +After=opensshd.service + +# If there's a shared /var subvolume, it must be mounted before this +# unit runs. +Requires=local-fs.target +After=local-fs.target + +ConditionPathExists=/etc/distbuild/distbuild.conf + +[Service] +ExecStart=/usr/bin/ansible-playbook -v -i /usr/lib/distbuild-setup/ansible/hosts /usr/lib/distbuild-setup/ansible/distbuild-setup.yml diff --git a/old/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service b/old/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service new file mode 100644 index 00000000..f55f3b6d --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service @@ -0,0 +1,12 @@ +[Install] +WantedBy=multi-user.target + +[Unit] +Description=Morph cache server +Requires=local-fs.target network.target +After=local-fs.target network.target +ConditionPathExists=/etc/morph-cache-server.conf + +[Service] +ExecStart=/usr/bin/morph-cache-server +Restart=always diff --git a/old/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service b/old/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service new file mode 100644 index 00000000..3f30cbcf --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service @@ -0,0 +1,13 @@ +[Install] +WantedBy=multi-user.target + +[Unit] +Description=Morph distributed build controller helper +Requires=morph-controller.service +After=morph-controller.service +ConditionPathExists=/etc/morph-controller.conf +ConditionPathExists=/etc/morph-controller-helper.conf + +[Service] +ExecStart=/usr/bin/distbuild-helper --config /etc/morph-controller-helper.conf +Restart=always diff --git a/old/install-files/distbuild/usr/lib/systemd/system/morph-controller.service b/old/install-files/distbuild/usr/lib/systemd/system/morph-controller.service new file mode 100644 index 00000000..1556d232 --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/morph-controller.service @@ -0,0 +1,12 @@ +[Install] +WantedBy=multi-user.target + +[Unit] +Description=Morph distributed build controller +Requires=local-fs.target network.target +After=local-fs.target network.target +ConditionPathExists=/etc/morph-controller.conf + +[Service] +ExecStart=/usr/bin/morph controller-daemon --config /etc/morph-controller.conf +Restart=always diff --git a/old/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service b/old/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service new file mode 100644 index 00000000..28400701 --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service @@ -0,0 +1,13 @@ +[Install] +WantedBy=multi-user.target + +[Unit] +Description=Morph distributed build worker helper +Requires=morph-worker.service +After=morph-worker.service +ConditionPathExists=/etc/morph-worker.conf +ConditionPathExists=/etc/morph-worker-helper.conf + +[Service] +ExecStart=/usr/bin/distbuild-helper --config /etc/morph-worker-helper.conf +Restart=always diff --git a/old/install-files/distbuild/usr/lib/systemd/system/morph-worker.service b/old/install-files/distbuild/usr/lib/systemd/system/morph-worker.service new file mode 100644 index 00000000..90fea404 --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/morph-worker.service @@ -0,0 +1,13 @@ +[Install] +WantedBy=multi-user.target + +[Unit] +Description=Morph distributed build worker +Requires=local-fs.target network.target +Wants=srv-distbuild-ccache.mount +After=local-fs.target network.target srv-distbuild-ccache.mount +ConditionPathExists=/etc/morph-worker.conf + +[Service] +ExecStart=/usr/bin/morph worker-daemon --config /etc/morph-worker.conf +Restart=always diff --git a/old/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service b/old/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service new file mode 120000 index 00000000..8f06febd --- /dev/null +++ b/old/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service @@ -0,0 +1 @@ +../distbuild-setup.service \ No newline at end of file diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf new file mode 100644 index 00000000..b9020e7d --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf @@ -0,0 +1,5 @@ +[config] +port = 8080 +artifact-dir = /srv/distbuild/artifacts +direct-mode = True +fcgi-server = False diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf new file mode 100644 index 00000000..99d38739 --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf @@ -0,0 +1,5 @@ +[config] +log = /srv/distbuild/morph-controller-helper.log +log-max = 100M +parent-port = 5656 +parent-address = 127.0.0.1 diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf new file mode 100644 index 00000000..c16c0343 --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf @@ -0,0 +1,6 @@ +[config] +log = /srv/distbuild/morph-controller.log +log-max = 100M +writeable-cache-server = http://{{ ARTIFACT_CACHE_SERVER }}:8081/ +worker = {{ WORKERS }} +controller-helper-address = 127.0.0.1 diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf new file mode 100644 index 00000000..29d4ef3f --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf @@ -0,0 +1,4 @@ +[config] +log = /srv/distbuild/morph-worker-helper.log +log-max = 100M +parent-address = 127.0.0.1 diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf new file mode 100644 index 00000000..fb382bad --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf @@ -0,0 +1,4 @@ +[config] +log = /srv/distbuild/morph-worker.log +log-max = 100M +controller-initiator-address = diff --git a/old/install-files/distbuild/usr/share/distbuild-setup/morph.conf b/old/install-files/distbuild/usr/share/distbuild-setup/morph.conf new file mode 100644 index 00000000..29de684c --- /dev/null +++ b/old/install-files/distbuild/usr/share/distbuild-setup/morph.conf @@ -0,0 +1,13 @@ +[config] +log = /srv/distbuild/morph.log +log-max = 100M +cachedir = /srv/distbuild +tempdir = /srv/distbuild/tmp +trove-host = {{ TROVE_HOST }} +trove-id = {{ TROVE_ID }} +controller-initiator-address = {{ CONTROLLERHOST }} +tempdir-min-space = 4G +cachedir-min-space = 4G +build-ref-prefix = {{ TROVE_ID }} +artifact-cache-server = http://{{ ARTIFACT_CACHE_SERVER }}:8080/ +git-resolve-cache-server = http://{{ TROVE_HOST }}:8080/ diff --git a/old/install-files/essential-files/etc/inputrc b/old/install-files/essential-files/etc/inputrc new file mode 100644 index 00000000..ddee44cd --- /dev/null +++ b/old/install-files/essential-files/etc/inputrc @@ -0,0 +1,38 @@ +# Allow the command prompt to wrap to the next line +set horizontal-scroll-mode Off + +# Enable 8bit input +set meta-flag On +set input-meta On + +# Turns off 8th bit stripping +set convert-meta Off + +# Keep the 8th bit for display +set output-meta On + +# none, visible or audible +set bell-style none + +# for linux console and RH/Debian xterm +"\e[1~": beginning-of-line +"\e[4~": end-of-line +"\e[5~": beginning-of-history +"\e[6~": end-of-history +"\e[7~": beginning-of-line +"\e[3~": delete-char +"\e[2~": quoted-insert +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word +"\e[1;5C": forward-word +"\e[1;5D": backward-word + +# for non RH/Debian xterm, can't hurt for RH/DEbian xterm +"\eOH": beginning-of-line +"\eOF": end-of-line + +# for Konsole and freebsd console +"\e[H": beginning-of-line +"\e[F": end-of-line diff --git a/old/install-files/essential-files/etc/os-release b/old/install-files/essential-files/etc/os-release new file mode 120000 index 00000000..c4c75b41 --- /dev/null +++ b/old/install-files/essential-files/etc/os-release @@ -0,0 +1 @@ +../usr/lib/os-release \ No newline at end of file diff --git a/old/install-files/essential-files/etc/profile b/old/install-files/essential-files/etc/profile new file mode 100644 index 00000000..5c0a1331 --- /dev/null +++ b/old/install-files/essential-files/etc/profile @@ -0,0 +1,13 @@ +# /etc/profile + +# Set our default path +PATH="/usr/local/bin:/usr/bin" +export PATH + +# Source global bash config +if test "$PS1" && test "$BASH" && test -r /etc/bash.bashrc; then + . /etc/bash.bashrc +fi + +# Set default pager to less +export MANPAGER='less -R' diff --git a/old/install-files/essential-files/manifest b/old/install-files/essential-files/manifest new file mode 100644 index 00000000..93095d86 --- /dev/null +++ b/old/install-files/essential-files/manifest @@ -0,0 +1,11 @@ +0040755 0 0 /etc +overwrite 0120000 0 0 /etc/os-release +overwrite 0100644 0 0 /etc/profile +overwrite 0100644 0 0 /etc/inputrc +0040755 0 0 /usr +0040755 0 0 /usr/bin +0100755 0 0 /usr/bin/brpaste +0040755 0 0 /usr/lib +0100644 0 0 /usr/lib/os-release +0040755 0 0 /usr/lib/tmpfiles.d +0100644 0 0 /usr/lib/tmpfiles.d/shutdownramfs.conf diff --git a/old/install-files/essential-files/usr/bin/brpaste b/old/install-files/essential-files/usr/bin/brpaste new file mode 100644 index 00000000..d2f9d867 --- /dev/null +++ b/old/install-files/essential-files/usr/bin/brpaste @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import urllib.request +import os +import json + +URL = 'http://paste.baserock.org/documents' + +def run(*args): + if args: + content = [open(x).read() for x in args] + extensions = [os.path.splitext(x)[1] for x in args] + else: + content = [sys.stdin.read()] + extensions = [None] + + for i, each in enumerate(content): + req = urllib.request.Request(URL, each.encode('utf-8')) + response = urllib.request.urlopen(req) + the_page = response.read().decode('utf-8') + key = json.loads(the_page)['key'] + url = "http://paste.baserock.org/%s" % key + if extensions[i]: + url += extensions[i] + print(url) + +if __name__ == '__main__': + import sys + sys.exit(run(*sys.argv[1:])) diff --git a/old/install-files/essential-files/usr/lib/os-release b/old/install-files/essential-files/usr/lib/os-release new file mode 100644 index 00000000..b729c75f --- /dev/null +++ b/old/install-files/essential-files/usr/lib/os-release @@ -0,0 +1,5 @@ +NAME="Baserock" +ID=baserock +HOME_URL="http://wiki.baserock.org" +SUPPORT_URL="http://wiki.baserock.org/mailinglist" +BUG_REPORT_URL="http://wiki.baserock.org/mailinglist" diff --git a/old/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf b/old/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf new file mode 100644 index 00000000..174f1f03 --- /dev/null +++ b/old/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf @@ -0,0 +1,4 @@ +# If /usr/lib/shutdownramfs has been populated, copy it into /run/initramfs so +# /run/initramfs/shutdown will be executed on shut-down, so that it may unmount +# the rootfs. +C /run/initramfs - - - - /usr/lib/shutdownramfs diff --git a/old/install-files/genivi-devel-system-armv7/etc/morph.conf b/old/install-files/genivi-devel-system-armv7/etc/morph.conf new file mode 120000 index 00000000..8f384049 --- /dev/null +++ b/old/install-files/genivi-devel-system-armv7/etc/morph.conf @@ -0,0 +1 @@ +/src/morph.conf \ No newline at end of file diff --git a/old/install-files/genivi-devel-system-armv7/manifest b/old/install-files/genivi-devel-system-armv7/manifest new file mode 100644 index 00000000..31980633 --- /dev/null +++ b/old/install-files/genivi-devel-system-armv7/manifest @@ -0,0 +1,5 @@ +0040755 0 0 /src +0040755 0 0 /src/tmp +0100666 0 0 /src/morph.conf +0040755 0 0 /etc +0120666 0 0 /etc/morph.conf diff --git a/old/install-files/genivi-devel-system-armv7/src/morph.conf b/old/install-files/genivi-devel-system-armv7/src/morph.conf new file mode 100644 index 00000000..76b6fde9 --- /dev/null +++ b/old/install-files/genivi-devel-system-armv7/src/morph.conf @@ -0,0 +1,5 @@ +[config] +log = /src/morph.log +cachedir = /src/cache +tempdir = /src/tmp +staging-chroot = true diff --git a/old/install-files/gnome/etc/pam.d/gdm b/old/install-files/gnome/etc/pam.d/gdm new file mode 100644 index 00000000..42036102 --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/gdm @@ -0,0 +1,15 @@ +# Baserock customized /etc/pam.d/gdm +# + +auth requisite pam_nologin.so +auth required pam_env.so + +auth required pam_succeed_if.so uid >= 1000 quiet +auth include system-auth + +account include system-auth +password include system-auth + +session optional pam_keyinit.so force revoke +session include system-auth +session required pam_loginuid.so diff --git a/old/install-files/gnome/etc/pam.d/gdm-autologin b/old/install-files/gnome/etc/pam.d/gdm-autologin new file mode 100644 index 00000000..c99449ac --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/gdm-autologin @@ -0,0 +1,17 @@ +# Baserock customized /etc/pam.d/gdm-autologin +# + +auth requisite pam_nologin.so +auth required pam_env.so + +auth required pam_succeed_if.so uid >= 1000 quiet +auth required pam_permit.so +auth optional pam_gnome_keyring.so + +account include system-auth +password include system-auth + +session required pam_loginuid.so +session optional pam_keyinit.so force revoke +session required pam_namespace.so +session include system-auth diff --git a/old/install-files/gnome/etc/pam.d/gdm-launch-environment b/old/install-files/gnome/etc/pam.d/gdm-launch-environment new file mode 100644 index 00000000..f63c80fa --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/gdm-launch-environment @@ -0,0 +1,11 @@ +# Baserock customized /etc/pam.d/gdm-launch-environment +# + +auth required pam_env.so +auth optional pam_permit.so + +account include system-auth +password include system-auth + +session optional pam_keyinit.so force revoke +session include system-auth diff --git a/old/install-files/gnome/etc/pam.d/gdm-password b/old/install-files/gnome/etc/pam.d/gdm-password new file mode 100644 index 00000000..798d40a6 --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/gdm-password @@ -0,0 +1,24 @@ +# Baserock customized /etc/pam.d/gdm-password +# +# This configuration ensures that the default keyring +# is unlocked at gdm login time, and also that the +# authentication token is used to update the keyring +# when the password is set. + +auth requisite pam_nologin.so +auth required pam_env.so + +auth required pam_succeed_if.so uid >= 1000 quiet +auth substack system-auth +auth optional pam_gnome_keyring.so + +account include system-auth +password substack system-auth +password optional pam_gnome_keyring.so use_authtok + +session required pam_limits.so +session required pam_loginuid.so +session optional pam_keyinit.so force revoke +session required pam_namespace.so +session substack system-auth +session optional pam_gnome_keyring.so auto_start diff --git a/old/install-files/gnome/etc/pam.d/passwd b/old/install-files/gnome/etc/pam.d/passwd new file mode 100644 index 00000000..e0c98057 --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/passwd @@ -0,0 +1,10 @@ +# Baserock customized /etc/pam.d/passwd +# +# This configuration ensures authentication token +# is used to update the keyring when the password is set +# using the regular passwd mechanism + +auth include system-auth +account include system-auth +password substack system-auth +password optional pam_gnome_keyring.so use_authtok diff --git a/old/install-files/gnome/etc/pam.d/system-auth b/old/install-files/gnome/etc/pam.d/system-auth new file mode 100644 index 00000000..73d3968c --- /dev/null +++ b/old/install-files/gnome/etc/pam.d/system-auth @@ -0,0 +1,19 @@ +# Baserock customized /etc/pam.d/system-auth +# +# This configuration is modified from the upstream +# systemd provided file mostly because the upstream file +# tries to pass the invalid 'try_authtok' option to the +# pam_unix.so module. + +auth sufficient pam_unix.so nullok try_first_pass +auth requisite pam_deny.so + +account required pam_nologin.so +account sufficient pam_unix.so + +password sufficient pam_unix.so nullok sha512 shadow try_first_pass +password required pam_deny.so + +-session optional pam_loginuid.so +-session optional pam_systemd.so +session sufficient pam_unix.so diff --git a/old/install-files/gnome/etc/securetty b/old/install-files/gnome/etc/securetty new file mode 100644 index 00000000..e3dfb6c4 --- /dev/null +++ b/old/install-files/gnome/etc/securetty @@ -0,0 +1,8 @@ +tty1 +#tty2 +#tty3 +#tty4 +#tty5 +#tty6 +#tty7 +#tty8 diff --git a/old/install-files/gnome/etc/ssh/sshd_config b/old/install-files/gnome/etc/ssh/sshd_config new file mode 100644 index 00000000..aaab3cca --- /dev/null +++ b/old/install-files/gnome/etc/ssh/sshd_config @@ -0,0 +1,135 @@ +# $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +# The default requires explicit activation of protocol 1 +#Protocol 2 + +# HostKey for protocol version 1 +#HostKey /etc/ssh/ssh_host_key +# HostKeys for protocol version 2 +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_dsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Lifetime and size of ephemeral version 1 server key +#KeyRegenerationInterval 1h +#ServerKeyBits 1024 + +# Ciphers and keying +#RekeyLimit default none + +# Logging +# obsoletes QuietMode and FascistLogging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +#PermitRootLogin yes +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#RSAAuthentication yes +#PubkeyAuthentication yes + +# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 +# but this is overridden so installations will only check .ssh/authorized_keys +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#RhostsRSAAuthentication no +# similar for protocol version 2 +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# RhostsRSAAuthentication and HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +#PasswordAuthentication yes +#PermitEmptyPasswords no + +# Change to no to disable s/key passwords +#ChallengeResponseAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and ChallengeResponseAuthentication to 'no'. +UsePAM yes + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +#X11Forwarding no +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +#PrintMotd yes +#PrintLastLog yes +#TCPKeepAlive yes +#UseLogin no +UsePrivilegeSeparation sandbox # Default for new installations. +PermitUserEnvironment yes +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS yes +#PidFile /var/run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# override default of no subsystems +Subsystem sftp /usr/lib/openssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server + +AcceptEnv LANG LC_* diff --git a/old/install-files/gnome/manifest b/old/install-files/gnome/manifest new file mode 100644 index 00000000..d72a5e89 --- /dev/null +++ b/old/install-files/gnome/manifest @@ -0,0 +1,9 @@ +0100644 0 0 /etc/securetty +overwrite 0100644 0 0 /etc/ssh/sshd_config +overwrite 0100644 0 0 /etc/pam.d/passwd +overwrite 0100644 0 0 /etc/pam.d/system-auth +overwrite 0100644 0 0 /etc/pam.d/gdm +overwrite 0100644 0 0 /etc/pam.d/gdm-password +overwrite 0100644 0 0 /etc/pam.d/gdm-autologin +overwrite 0100644 0 0 /etc/pam.d/gdm-launch-environment +0100644 0 0 /usr/share/polkit-1/rules.d/geoclue-2.0.rules diff --git a/old/install-files/gnome/usr/share/polkit-1/rules.d/geoclue-2.0.rules b/old/install-files/gnome/usr/share/polkit-1/rules.d/geoclue-2.0.rules new file mode 100644 index 00000000..aeb42345 --- /dev/null +++ b/old/install-files/gnome/usr/share/polkit-1/rules.d/geoclue-2.0.rules @@ -0,0 +1,7 @@ +polkit.addRule(function(action, subject) { + if ((action.id == "org.freedesktop.ModemManager1.Device.Control" || + action.id == "org.freedesktop.ModemManager1.Location") && + subject.user == "geoclue") { + return polkit.Result.YES; + } +}); diff --git a/old/install-files/moonshot/boot/m400-1003.dtb b/old/install-files/moonshot/boot/m400-1003.dtb new file mode 100644 index 00000000..d6fd83ee Binary files /dev/null and b/old/install-files/moonshot/boot/m400-1003.dtb differ diff --git a/old/install-files/moonshot/manifest b/old/install-files/moonshot/manifest new file mode 100644 index 00000000..dd80fe49 --- /dev/null +++ b/old/install-files/moonshot/manifest @@ -0,0 +1,2 @@ +0040755 0 0 /boot +0100744 0 0 /boot/m400-1003.dtb diff --git a/old/install-files/openstack/etc/horizon/apache-horizon.conf b/old/install-files/openstack/etc/horizon/apache-horizon.conf new file mode 100644 index 00000000..ab3cf0c7 --- /dev/null +++ b/old/install-files/openstack/etc/horizon/apache-horizon.conf @@ -0,0 +1,36 @@ + + WSGIScriptAlias / /var/lib/horizon/openstack_dashboard/wsgi/django.wsgi + WSGIDaemonProcess horizon user=horizon group=horizon processes=3 threads=10 home=/var/lib/horizon display-name=horizon + WSGIApplicationGroup %{GLOBAL} + + SetEnv APACHE_RUN_USER apache + SetEnv APACHE_RUN_GROUP apache + WSGIProcessGroup horizon + + DocumentRoot /var/lib/horizon/.blackhole + Alias /static /var/lib/horizon/static + + + Require all granted + + + + Options Indexes FollowSymLinks MultiViews + AllowOverride None + # Apache 2.4 uses mod_authz_host for access control now (instead of + # "Allow") + + Order allow,deny + Allow from all + + = 2.4> + Require all granted + + + + ErrorLog /var/log/httpd/horizon_error.log + LogLevel warn + CustomLog /var/log/httpd/horizon_access.log combined + + +WSGISocketPrefix /var/run/httpd diff --git a/old/install-files/openstack/etc/neutron/dnsmasq-neutron.conf b/old/install-files/openstack/etc/neutron/dnsmasq-neutron.conf new file mode 100644 index 00000000..d2659481 --- /dev/null +++ b/old/install-files/openstack/etc/neutron/dnsmasq-neutron.conf @@ -0,0 +1,2 @@ +# Provide a MTU (DHCP MTU option 26) +dhcp-option-force=26,1454 diff --git a/old/install-files/openstack/etc/tempest/set_openstack_to_run_tempest.sh b/old/install-files/openstack/etc/tempest/set_openstack_to_run_tempest.sh new file mode 100755 index 00000000..8c0b8da3 --- /dev/null +++ b/old/install-files/openstack/etc/tempest/set_openstack_to_run_tempest.sh @@ -0,0 +1,122 @@ +#!/bin/bash +# +# Copyright ©2015 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, see . +# + + +# This script creates an public image in the admin tenant and +# sets tempest.conf variables for running tests with images involved. +# This is the minimal configuration to run tests for compute (api and services +# tests). +# +# NOTE: the test image will be the following cirros image: +# http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img +# + + +set -e + +# Global variables +admin_filename="admin_env" +admin_test_image="cirros64_img_ref" +image_ref="" + +# Openstack admin credentials +admin_username="admin" +admin_password="veryinsecure" +admin_tenant="admin" + +# Create a file with the environment variables +# required for setting a Openstack admin user in the +# admin tenant. +create_admin_user_env(){ + cat > "$admin_filename" < + +# DEPRECATED. A logging.Formatter log message format string which may +# use any of the available logging.LogRecord attributes. This option +# is deprecated. Please use logging_context_format_string and +# logging_default_format_string instead. (string value) +#log_format = + +# Format string for %%(asctime)s in log records. Default: %(default)s +# . (string value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is set, +# logging will go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative --log-file paths. +# (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Use syslog for logging. Existing syslog format is DEPRECATED during +# I, and will change in J to honor RFC5424. (boolean value) +use_syslog = true + +# (Optional) Enables or disables syslog rfc5424 format for logging. If +# enabled, prefixes the MSG part of the syslog message with APP-NAME +# (RFC5424). The format without the APP-NAME is deprecated in I, and +# will be removed in J. (boolean value) +#use_syslog_rfc_format = false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility = LOG_USER + +# Log output to standard error. (boolean value) +#use_stderr = true + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. (string +# value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string +# value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false + +# The format for an instance that is passed with the log message. +# (string value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. +# (string value) +#instance_uuid_format = "[instance: %(uuid)s] " + + +[auth] + +# +# From tempest.config +# + +# Path to the yaml file that contains the list of credentials to use +# for running tests. If used when running in parallel you have to make +# sure sufficient credentials are provided in the accounts file. For +# example if no tests with roles are being run it requires at least `2 +# * CONC` distinct accounts configured in the `test_accounts_file`, +# with CONC == the number of concurrent test processes. (string value) +#test_accounts_file = + +# Allows test cases to create/destroy tenants and users. This option +# requires that OpenStack Identity API admin credentials are known. If +# false, isolated test cases and parallel execution, can still be +# achieved configuring a list of test accounts (boolean value) +# Deprecated group/name - [compute]/allow_tenant_isolation +# Deprecated group/name - [orchestration]/allow_tenant_isolation +allow_tenant_isolation = true + +# Roles to assign to all users created by tempest (list value) +#tempest_roles = + +# Only applicable when identity.auth_version is v3.Domain within which +# isolated credentials are provisioned.The default "None" means that +# the domain from theadmin user is used instead. (string value) +#tenant_isolation_domain_name = + + +[baremetal] + +# +# From tempest.config +# + +# Catalog type of the baremetal provisioning service (string value) +#catalog_type = baremetal + +# Whether the Ironic nova-compute driver is enabled (boolean value) +#driver_enabled = false + +# Driver name which Ironic uses (string value) +#driver = fake + +# The endpoint type to use for the baremetal provisioning service +# (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +#endpoint_type = publicURL + +# Timeout for Ironic node to completely provision (integer value) +#active_timeout = 300 + +# Timeout for association of Nova instance and Ironic node (integer +# value) +#association_timeout = 30 + +# Timeout for Ironic power transitions. (integer value) +#power_timeout = 60 + +# Timeout for unprovisioning an Ironic node. (integer value) +#unprovision_timeout = 60 + + +[boto] + +# +# From tempest.config +# + +# EC2 URL (string value) +#ec2_url = http://localhost:8773/services/Cloud + +# S3 URL (string value) +#s3_url = http://localhost:8080 + +# AWS Secret Key (string value) +#aws_secret = + +# AWS Access Key (string value) +#aws_access = + +# AWS Zone for EC2 tests (string value) +#aws_zone = nova + +# S3 Materials Path (string value) +#s3_materials_path = /opt/stack/devstack/files/images/s3-materials/cirros-0.3.0 + +# ARI Ramdisk Image manifest (string value) +#ari_manifest = cirros-0.3.0-x86_64-initrd.manifest.xml + +# AMI Machine Image manifest (string value) +#ami_manifest = cirros-0.3.0-x86_64-blank.img.manifest.xml + +# AKI Kernel Image manifest (string value) +#aki_manifest = cirros-0.3.0-x86_64-vmlinuz.manifest.xml + +# Instance type (string value) +#instance_type = m1.tiny + +# boto Http socket timeout (integer value) +#http_socket_timeout = 3 + +# boto num_retries on error (integer value) +#num_retries = 1 + +# Status Change Timeout (integer value) +#build_timeout = 60 + +# Status Change Test Interval (integer value) +#build_interval = 1 + + +[cli] + +# +# From tempest.config +# + +# enable cli tests (boolean value) +enabled = true + +# directory where python client binaries are located (string value) +cli_dir = /usr/bin + +# Whether the tempest run location has access to the *-manage +# commands. In a pure blackbox environment it will not. (boolean +# value) +has_manage = true + +# Number of seconds to wait on a CLI timeout (integer value) +#timeout = 15 + + +[compute] + +# +# From tempest.config +# + +# Valid primary image reference to be used in tests. This is a +# required option (string value) +#image_ref = + +# Valid secondary image reference to be used in tests. This is a +# required option, but if only one image is available duplicate the +# value of image_ref above (string value) +#image_ref_alt = + +# Valid primary flavor to use in tests. (string value) +flavor_ref = 1 + +# Valid secondary flavor to be used in tests. (string value) +flavor_ref_alt = 2 + +# User name used to authenticate to an instance. (string value) +#image_ssh_user = root + +# Password used to authenticate to an instance. (string value) +#image_ssh_password = password + +# User name used to authenticate to an instance using the alternate +# image. (string value) +#image_alt_ssh_user = root + +# Time in seconds between build status checks. (integer value) +build_interval = 1 + +# Timeout in seconds to wait for an instance to build. Other services +# that do not define build_timeout will inherit this value. (integer +# value) +build_timeout = 300 + +# Should the tests ssh to instances? (boolean value) +#run_ssh = false + +# Auth method used for authenticate to the instance. Valid choices +# are: keypair, configured, adminpass and disabled. Keypair: start the +# servers with a ssh keypair. Configured: use the configured user and +# password. Adminpass: use the injected adminPass. Disabled: avoid +# using ssh when it is an option. (string value) +ssh_auth_method = adminpass + +# How to connect to the instance? fixed: using the first ip belongs +# the fixed network floating: creating and using a floating ip. +# (string value) +ssh_connect_method = floating + +# User name used to authenticate to an instance. (string value) +#ssh_user = root + +# Timeout in seconds to wait for ping to succeed. (integer value) +#ping_timeout = 120 + +# The packet size for ping packets originating from remote linux hosts +# (integer value) +#ping_size = 56 + +# The number of ping packets originating from remote linux hosts +# (integer value) +#ping_count = 1 + +# Timeout in seconds to wait for authentication to succeed. (integer +# value) +#ssh_timeout = 300 + +# Additional wait time for clean state, when there is no OS-EXT-STS +# extension available (integer value) +#ready_wait = 0 + +# Timeout in seconds to wait for output from ssh channel. (integer +# value) +#ssh_channel_timeout = 60 + +# Name of the fixed network that is visible to all test tenants. If +# multiple networks are available for a tenant this is the network +# which will be used for creating servers if tempest does not create a +# network or a network is not specified elsewhere. It may be used for +# ssh validation only if floating IPs are disabled. (string value) +#fixed_network_name = + +# Network used for SSH connections. Ignored if +# use_floatingip_for_ssh=true or run_ssh=false. (string value) +#network_for_ssh = public + +# IP version used for SSH connections. (integer value) +ip_version_for_ssh = 4 + +# Does SSH use Floating IPs? (boolean value) +#use_floatingip_for_ssh = true + +# Catalog type of the Compute service. (string value) +catalog_type = compute + +# The compute region name to use. If empty, the value of +# identity.region is used instead. If no such region is found in the +# service catalog, the first found one is used. (string value) +region = regionOne + +# The endpoint type to use for the compute service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# Expected device name when a volume is attached to an instance +# (string value) +volume_device_name = vdb + +# Time in seconds before a shelved instance is eligible for removing +# from a host. -1 never offload, 0 offload when shelved. This time +# should be the same as the time of nova.conf, and some tests will run +# for as long as the time. (integer value) +#shelved_offload_time = 0 + +# Unallocated floating IP range, which will be used to test the +# floating IP bulk feature for CRUD operation. This block must not +# overlap an existing floating IP pool. (string value) +#floating_ip_range = 10.0.0.0/29 + + +[compute-feature-enabled] + +# +# From tempest.config +# + +# If false, skip disk config tests (boolean value) +disk_config = true + +# A list of enabled compute extensions with a special entry all which +# indicates every extension is enabled. Each extension should be +# specified with alias name. Empty list indicates all extensions are +# disabled (list value) +#api_extensions = all + +# Does the test environment support changing the admin password? +# (boolean value) +change_password = false + +# Does the test environment support obtaining instance serial console +# output? (boolean value) +console_output = true + +# Does the test environment support resizing? (boolean value) +resize = false + +# Does the test environment support pausing? (boolean value) +pause = true + +# Does the test environment support shelving/unshelving? (boolean +# value) +shelve = true + +# Does the test environment support suspend/resume? (boolean value) +suspend = true + +# Does the test environment support live migration available? (boolean +# value) +live_migration = false + +# Does the test environment use block devices for live migration +# (boolean value) +block_migration_for_live_migration = false + +# Does the test environment block migration support cinder iSCSI +# volumes. Note, libvirt doesn't support this, see +# https://bugs.launchpad.net/nova/+bug/1398999 (boolean value) +block_migrate_cinder_iscsi = false + +# Enable VNC console. This configuration value should be same as +# [nova.vnc]->vnc_enabled in nova.conf (boolean value) +vnc_console = true + +# Enable Spice console. This configuration value should be same as +# [nova.spice]->enabled in nova.conf (boolean value) +spice_console = false + +# Enable RDP console. This configuration value should be same as +# [nova.rdp]->enabled in nova.conf (boolean value) +rdp_console = false + +# Does the test environment support instance rescue mode? (boolean +# value) +rescue = true + +# Enables returning of the instance password by the relevant server +# API calls such as create, rebuild or rescue. (boolean value) +enable_instance_password = true + +# Does the test environment support dynamic network interface +# attachment? (boolean value) +interface_attach = true + +# Does the test environment support creating snapshot images of +# running instances? (boolean value) +snapshot = true + +# Does the test environment have the ec2 api running? (boolean value) +ec2_api = false + +# Does Nova preserve preexisting ports from Neutron when deleting an +# instance? This should be set to True if testing Kilo+ Nova. (boolean +# value) +preserve_ports = true + + +[dashboard] + +# +# From tempest.config +# + +# Where the dashboard can be found (string value) +dashboard_url = http://{{ CONTROLLER_HOST_ADDRESS }} + +# Login page for the dashboard (string value) +login_url = http://{{ CONTROLLER_HOST_ADDRESS }}/auth/login/ + + +[data_processing] + +# +# From tempest.config +# + +# Catalog type of the data processing service. (string value) +#catalog_type = data_processing + +# The endpoint type to use for the data processing service. (string +# value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +#endpoint_type = publicURL + + +[data_processing-feature-enabled] + +# +# From tempest.config +# + +# List of enabled data processing plugins (list value) +#plugins = vanilla,hdp + + +[database] + +# +# From tempest.config +# + +# Catalog type of the Database service. (string value) +#catalog_type = database + +# Valid primary flavor to use in database tests. (string value) +#db_flavor_ref = 1 + +# Current database version to use in database tests. (string value) +#db_current_version = v1.0 + + +[debug] + +# +# From tempest.config +# + +# A regex to determine which requests should be traced. This is a +# regex to match the caller for rest client requests to be able to +# selectively trace calls out of specific classes and methods. It +# largely exists for test development, and is not expected to be used +# in a real deploy of tempest. This will be matched against the +# discovered ClassName:method in the test environment. Expected +# values for this field are: * ClassName:test_method_name - traces +# one test_method * ClassName:setUp(Class) - traces specific setup +# functions * ClassName:tearDown(Class) - traces specific teardown +# functions * ClassName:_run_cleanups - traces the cleanup functions +# If nothing is specified, this feature is not enabled. To trace +# everything specify .* as the regex. (string value) +#trace_requests = + + +[identity] + +# +# From tempest.config +# + +# Catalog type of the Identity service. (string value) +catalog_type = identity + +# Set to True if using self-signed SSL certificates. (boolean value) +#disable_ssl_certificate_validation = false + +# Specify a CA bundle file to use in verifying a TLS (https) server +# certificate. (string value) +#ca_certificates_file = + +# Full URI of the OpenStack Identity API (Keystone), v2 (string value) +uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0/ + +# Full URI of the OpenStack Identity API (Keystone), v3 (string value) +#uri_v3 = + +# Identity API version to be used for authentication for API tests. +# (string value) +auth_version = v2 + +# The identity region name to use. Also used as the other services' +# region name unless they are set explicitly. If no such region is +# found in the service catalog, the first found one is used. (string +# value) +region = RegionOne + +# The endpoint type to use for the identity service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# Username to use for Nova API requests. (string value) +username = {{ NOVA_SERVICE_USER }} + +# Tenant name to use for Nova API requests. (string value) +tenant_name = service + +# Role required to administrate keystone. (string value) +admin_role = admin + +# API key to use when authenticating. (string value) +password = {{ NOVA_SERVICE_PASSWORD }} + +# Domain name for authentication (Keystone V3).The same domain applies +# to user and project (string value) +#domain_name = + +# Username of alternate user to use for Nova API requests. (string +# value) +#alt_username = + +# Alternate user's Tenant name to use for Nova API requests. (string +# value) +#alt_tenant_name = + +# API key to use when authenticating as alternate user. (string value) +#alt_password = + +# Alternate domain name for authentication (Keystone V3).The same +# domain applies to user and project (string value) +#alt_domain_name = + +# Administrative Username to use for Keystone API requests. (string +# value) +admin_username = admin + +# Administrative Tenant name to use for Keystone API requests. (string +# value) +admin_tenant_name = admin + +# API key to use when authenticating as admin. (string value) +admin_password = {{ KEYSTONE_ADMIN_PASSWORD }} + +# Admin domain name for authentication (Keystone V3).The same domain +# applies to user and project (string value) +#admin_domain_name = + + +[identity-feature-enabled] + +# +# From tempest.config +# + +# Does the identity service have delegation and impersonation enabled +# (boolean value) +trust = false + +# Is the v2 identity API enabled (boolean value) +api_v2 = true + +# Is the v3 identity API enabled (boolean value) +api_v3 = false + + +[image] + +# +# From tempest.config +# + +# Catalog type of the Image service. (string value) +catalog_type = image + +# The image region name to use. If empty, the value of identity.region +# is used instead. If no such region is found in the service catalog, +# the first found one is used. (string value) +region = regionOne + +# The endpoint type to use for the image service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# http accessible image (string value) +http_image = http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz + +# Timeout in seconds to wait for an image to become available. +# (integer value) +build_timeout = 300 + +# Time in seconds between image operation status checks. (integer +# value) +build_interval = 1 + + +[image-feature-enabled] + +# +# From tempest.config +# + +# Is the v2 image API enabled (boolean value) +api_v2 = true + +# Is the v1 image API enabled (boolean value) +api_v1 = true + + +[input-scenario] + +# +# From tempest.config +# + +# Matching images become parameters for scenario tests (string value) +image_regex = ^cirros-0.3.1-x86_64-uec$ + +# Matching flavors become parameters for scenario tests (string value) +flavor_regex = ^m1.nano$ + +# SSH verification in tests is skippedfor matching images (string +# value) +#non_ssh_image_regex = ^.*[Ww]in.*$ + +# List of user mapped to regex to matching image names. (string value) +#ssh_user_regex = [["^.*[Cc]irros.*$", "cirros"]] + + +[messaging] + +# +# From tempest.config +# + +# Catalog type of the Messaging service. (string value) +catalog_type = messaging + +# The maximum number of queue records per page when listing queues +# (integer value) +max_queues_per_page = 20 + +# The maximum metadata size for a queue (integer value) +max_queue_metadata = 65536 + +# The maximum number of queue message per page when listing (or) +# posting messages (integer value) +max_messages_per_page = 20 + +# The maximum size of a message body (integer value) +max_message_size = 262144 + +# The maximum number of messages per claim (integer value) +max_messages_per_claim = 20 + +# The maximum ttl for a message (integer value) +max_message_ttl = 1209600 + +# The maximum ttl for a claim (integer value) +max_claim_ttl = 43200 + +# The maximum grace period for a claim (integer value) +max_claim_grace = 43200 + + +[negative] + +# +# From tempest.config +# + +# Test generator class for all negative tests (string value) +test_generator = tempest.common.generator.negative_generator.NegativeTestGenerator + + +[network] + +# +# From tempest.config +# + +# Catalog type of the Neutron service. (string value) +catalog_type = network + +# The network region name to use. If empty, the value of +# identity.region is used instead. If no such region is found in the +# service catalog, the first found one is used. (string value) +region = regionOne + +# The endpoint type to use for the network service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# The cidr block to allocate tenant ipv4 subnets from (string value) +tenant_network_cidr = 192.168.1.0/24 + +# The mask bits for tenant ipv4 subnets (integer value) +tenant_network_mask_bits = 28 + +# The cidr block to allocate tenant ipv6 subnets from (string value) +#tenant_network_v6_cidr = 2003::/48 + +# The mask bits for tenant ipv6 subnets (integer value) +#tenant_network_v6_mask_bits = 64 + +# Whether tenant networks can be reached directly from the test +# client. This must be set to True when the 'fixed' ssh_connect_method +# is selected. (boolean value) +#tenant_networks_reachable = false + +# Id of the public network that provides external connectivity (string +# value) +#public_network_id = + +# Default floating network name. Used to allocate floating IPs when +# neutron is enabled. (string value) +#floating_network_name = + +# Id of the public router that provides external connectivity. This +# should only be used when Neutron's 'allow_overlapping_ips' is set to +# 'False' in neutron.conf. usually not needed past 'Grizzly' release +# (string value) +#public_router_id = + +# Timeout in seconds to wait for network operation to complete. +# (integer value) +build_timeout = 300 + +# Time in seconds between network operation status checks. (integer +# value) +build_interval = 1 + +# List of dns servers which should be used for subnet creation (list +# value) +dns_servers = 8.8.8.8,8.8.4.4 + +# vnic_type to use when Launching instances with pre-configured ports. +# Supported ports are: ['normal','direct','macvtap'] (string value) +# Allowed values: , normal, direct, macvtap +#port_vnic_type = + + +[network-feature-enabled] + +# +# From tempest.config +# + +# Allow the execution of IPv6 tests (boolean value) +ipv6 = false + +# A list of enabled network extensions with a special entry all which +# indicates every extension is enabled. Empty list indicates all +# extensions are disabled (list value) +api_extensions = router + +# Allow the execution of IPv6 subnet tests that use the extended IPv6 +# attributes ipv6_ra_mode and ipv6_address_mode (boolean value) +#ipv6_subnet_attributes = false + +# Does the test environment support changing port admin state (boolean +# value) +#port_admin_state_change = true + + +[object-storage] + +# +# From tempest.config +# + +# Catalog type of the Object-Storage service. (string value) +#catalog_type = object-store + +# The object-storage region name to use. If empty, the value of +# identity.region is used instead. If no such region is found in the +# service catalog, the first found one is used. (string value) +#region = + +# The endpoint type to use for the object-store service. (string +# value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +#endpoint_type = publicURL + +# Number of seconds to time on waiting for a container to container +# synchronization complete. (integer value) +#container_sync_timeout = 600 + +# Number of seconds to wait while looping to check the status of a +# container to container synchronization (integer value) +#container_sync_interval = 5 + +# Role to add to users created for swift tests to enable creating +# containers (string value) +#operator_role = Member + +# User role that has reseller admin (string value) +#reseller_admin_role = ResellerAdmin + +# Name of sync realm. A sync realm is a set of clusters that have +# agreed to allow container syncing with each other. Set the same +# realm name as Swift's container-sync-realms.conf (string value) +#realm_name = realm1 + +# One name of cluster which is set in the realm whose name is set in +# 'realm_name' item in this file. Set the same cluster name as Swift's +# container-sync-realms.conf (string value) +#cluster_name = name1 + + +[object-storage-feature-enabled] + +# +# From tempest.config +# + +# A list of the enabled optional discoverable apis. A single entry, +# all, indicates that all of these features are expected to be enabled +# (list value) +#discoverable_apis = all + +# Execute (old style) container-sync tests (boolean value) +#container_sync = true + +# Execute object-versioning tests (boolean value) +#object_versioning = true + +# Execute discoverability tests (boolean value) +#discoverability = true + + +[orchestration] + +# +# From tempest.config +# + +# Catalog type of the Orchestration service. (string value) +#catalog_type = orchestration + +# The orchestration region name to use. If empty, the value of +# identity.region is used instead. If no such region is found in the +# service catalog, the first found one is used. (string value) +#region = + +# The endpoint type to use for the orchestration service. (string +# value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +#endpoint_type = publicURL + +# Role required for users to be able to manage stacks (string value) +#stack_owner_role = heat_stack_owner + +# Time in seconds between build status checks. (integer value) +#build_interval = 1 + +# Timeout in seconds to wait for a stack to build. (integer value) +#build_timeout = 1200 + +# Instance type for tests. Needs to be big enough for a full OS plus +# the test workload (string value) +#instance_type = m1.micro + +# Name of existing keypair to launch servers with. (string value) +#keypair_name = + +# Value must match heat configuration of the same name. (integer +# value) +#max_template_size = 524288 + +# Value must match heat configuration of the same name. (integer +# value) +#max_resources_per_stack = 1000 + + +[oslo_concurrency] + +# +# From oslo.concurrency +# + +# Enables or disables inter-process locks. (boolean value) +# Deprecated group/name - [DEFAULT]/disable_process_locking +disable_process_locking = false + +# Directory to use for lock files. For security, the specified +# directory should only be writable by the user running the processes +# that need locking. Defaults to environment variable OSLO_LOCK_PATH. +# If external locks are used, a lock path must be set. (string value) +# Deprecated group/name - [DEFAULT]/lock_path +lock_path = /run/lock + + +[scenario] + +# +# From tempest.config +# + +# Directory containing image files (string value) +img_dir = /opt/openstack/images/ + +# Image file name (string value) +# Deprecated group/name - [DEFAULT]/qcow2_img_file +img_file = cirros-0.3.1-x86_64-disk.img + +# Image disk format (string value) +img_disk_format = qcow2 + +# Image container format (string value) +img_container_format = bare + +# AMI image file name (string value) +ami_img_file = cirros-0.3.1-x86_64-blank.img + +# ARI image file name (string value) +ari_img_file = cirros-0.3.1-x86_64-initrd + +# AKI image file name (string value) +aki_img_file = cirros-0.3.1-x86_64-vmlinuz + +# ssh username for the image file (string value) +ssh_user = cirros + +# specifies how many resources to request at once. Used for large +# operations testing. (integer value) +#large_ops_number = 0 + +# DHCP client used by images to renew DCHP lease. If left empty, +# update operation will be skipped. Supported clients: "udhcpc", +# "dhclient" (string value) +# Allowed values: udhcpc, dhclient +#dhcp_client = udhcpc + + +[service_available] + +# +# From tempest.config +# + +# Whether or not cinder is expected to be available (boolean value) +cinder = true + +# Whether or not neutron is expected to be available (boolean value) +neutron = true + +# Whether or not glance is expected to be available (boolean value) +glance = true + +# Whether or not swift is expected to be available (boolean value) +swift = false + +# Whether or not nova is expected to be available (boolean value) +nova = true + +# Whether or not Heat is expected to be available (boolean value) +heat = false + +# Whether or not Ceilometer is expected to be available (boolean +# value) +ceilometer = true + +# Whether or not Horizon is expected to be available (boolean value) +horizon = true + +# Whether or not Sahara is expected to be available (boolean value) +sahara = false + +# Whether or not Ironic is expected to be available (boolean value) +ironic = false + +# Whether or not Trove is expected to be available (boolean value) +trove = false + +# Whether or not Zaqar is expected to be available (boolean value) +zaqar = false + + +[stress] + +# +# From tempest.config +# + +# Directory containing log files on the compute nodes (string value) +#nova_logdir = + +# Maximum number of instances to create during test. (integer value) +#max_instances = 16 + +# Controller host. (string value) +#controller = + +# Controller host. (string value) +#target_controller = + +# ssh user. (string value) +#target_ssh_user = + +# Path to private key. (string value) +#target_private_key_path = + +# regexp for list of log files. (string value) +#target_logfiles = + +# time (in seconds) between log file error checks. (integer value) +#log_check_interval = 60 + +# The number of threads created while stress test. (integer value) +#default_thread_number_per_action = 4 + +# Prevent the cleaning (tearDownClass()) between each stress test run +# if an exception occurs during this run. (boolean value) +#leave_dirty_stack = false + +# Allows a full cleaning process after a stress test. Caution : this +# cleanup will remove every objects of every tenant. (boolean value) +#full_clean_stack = false + + +[telemetry] + +# +# From tempest.config +# + +# Catalog type of the Telemetry service. (string value) +catalog_type = metering + +# The endpoint type to use for the telemetry service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# This variable is used as flag to enable notification tests (boolean +# value) +too_slow_to_test = true + + +[validation] + +# +# From tempest.config +# + +# Default IP type used for validation: -fixed: uses the first IP +# belonging to the fixed network -floating: creates and uses a +# floating IP (string value) +# Allowed values: fixed, floating +connect_method = floating + +# Default authentication method to the instance. Only ssh via keypair +# is supported for now. Additional methods will be handled in a +# separate spec. (string value) +# Allowed values: keypair +auth_method = keypair + +# Default IP version for ssh connections. (integer value) +ip_version_for_ssh = 4 + +# Timeout in seconds to wait for ping to succeed. (integer value) +ping_timeout = 120 + +# Timeout in seconds to wait for the TCP connection to be successful. +# (integer value) +connect_timeout = 60 + +# Timeout in seconds to wait for the ssh banner. (integer value) +ssh_timeout = 300 + + +[volume] + +# +# From tempest.config +# + +# Time in seconds between volume availability checks. (integer value) +#build_interval = 1 + +# Timeout in seconds to wait for a volume to become available. +# (integer value) +#build_timeout = 300 + +# Catalog type of the Volume Service (string value) +catalog_type = volume + +# The volume region name to use. If empty, the value of +# identity.region is used instead. If no such region is found in the +# service catalog, the first found one is used. (string value) +region = regionOne + +# The endpoint type to use for the volume service. (string value) +# Allowed values: public, admin, internal, publicURL, adminURL, internalURL +endpoint_type = publicURL + +# Name of the backend1 (must be declared in cinder.conf) (string +# value) +backend1_name = LVM_iSCSI + +# Name of the backend2 (must be declared in cinder.conf) (string +# value) +#backend2_name = BACKEND_2 + +# Backend protocol to target when creating volume types (string value) +storage_protocol = iSCSI + +# Backend vendor to target when creating volume types (string value) +#vendor_name = Open Source + +# Disk format to use when copying a volume to image (string value) +disk_format = raw + +# Default size in GB for volumes created by volumes tests (integer +# value) +volume_size = 1 + + +[volume-feature-enabled] + +# +# From tempest.config +# + +# Runs Cinder multi-backend test (requires 2 backends) (boolean value) +multi_backend = false + +# Runs Cinder volumes backup test (boolean value) +backup = false + +# Runs Cinder volume snapshot test (boolean value) +snapshot = true + +# A list of enabled volume extensions with a special entry all which +# indicates every extension is enabled. Empty list indicates all +# extensions are disabled (list value) +api_extensions = all + +# Is the v1 volume API enabled (boolean value) +api_v1 = true + +# Is the v2 volume API enabled (boolean value) +api_v2 = true + diff --git a/old/install-files/openstack/manifest b/old/install-files/openstack/manifest new file mode 100644 index 00000000..3d9ea2dd --- /dev/null +++ b/old/install-files/openstack/manifest @@ -0,0 +1,117 @@ +0040755 0 0 /etc/neutron +0100644 0 0 /etc/neutron/dnsmasq-neutron.conf +0040755 0 0 /etc/horizon +0100644 0 0 /etc/horizon/apache-horizon.conf +template 0100644 0 0 /etc/tempest/tempest.conf +0100755 0 0 /etc/tempest/set_openstack_to_run_tempest.sh +0040755 0 0 /usr/share/openstack +0100644 0 0 /usr/share/openstack/hosts +0040755 0 0 /usr/share/openstack/ceilometer +0100644 0 0 /usr/share/openstack/ceilometer-config.yml +0100644 0 0 /usr/share/openstack/ceilometer-db.yml +0100644 0 0 /usr/share/openstack/ceilometer/ceilometer.conf +0040755 0 0 /usr/share/openstack/cinder +0100644 0 0 /usr/share/openstack/cinder-config.yml +0100644 0 0 /usr/share/openstack/cinder-db.yml +0100644 0 0 /usr/share/openstack/cinder-lvs.yml +0100644 0 0 /usr/share/openstack/cinder/cinder.conf +0040755 0 0 /usr/share/openstack/extras +0100644 0 0 /usr/share/openstack/extras/00-disable-device.network +0100644 0 0 /usr/share/openstack/extras/60-device-dhcp.network +0100644 0 0 /usr/share/openstack/glance.yml +0040755 0 0 /usr/share/openstack/glance +0100644 0 0 /usr/share/openstack/glance/glance-api.conf +0100644 0 0 /usr/share/openstack/glance/glance-registry.conf +0100644 0 0 /usr/share/openstack/horizon.yml +0040755 0 0 /usr/share/openstack/ironic +0100644 0 0 /usr/share/openstack/ironic.yml +0100644 0 0 /usr/share/openstack/ironic/ironic.conf +0100644 0 0 /usr/share/openstack/iscsi.yml +0100644 0 0 /usr/share/openstack/keystone.yml +0040755 0 0 /usr/share/openstack/keystone +0100644 0 0 /usr/share/openstack/keystone/keystone.conf +0100644 0 0 /usr/share/openstack/network.yml +0040755 0 0 /usr/share/openstack/neutron +0100644 0 0 /usr/share/openstack/neutron-config.yml +0100644 0 0 /usr/share/openstack/neutron-db.yml +0100644 0 0 /usr/share/openstack/neutron/dhcp_agent.ini +0100644 0 0 /usr/share/openstack/neutron/l3_agent.ini +0100644 0 0 /usr/share/openstack/neutron/neutron.conf +0100644 0 0 /usr/share/openstack/neutron/metadata_agent.ini +0040755 0 0 /usr/share/openstack/neutron/plugins/ +0040755 0 0 /usr/share/openstack/neutron/plugins/ml2 +0100644 0 0 /usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini +0040755 0 0 /usr/share/openstack/nova +0100644 0 0 /usr/share/openstack/nova-config.yml +0100644 0 0 /usr/share/openstack/nova-db.yml +0100644 0 0 /usr/share/openstack/nova/nova.conf +0100644 0 0 /usr/share/openstack/nova/nova-compute.conf +0100644 0 0 /usr/share/openstack/openvswitch.yml +0040755 0 0 /usr/share/openstack/postgres +0100644 0 0 /usr/share/openstack/postgres.yml +0100644 0 0 /usr/share/openstack/postgres/pg_hba.conf +0100644 0 0 /usr/share/openstack/postgres/postgresql.conf +0040755 0 0 /usr/share/openstack/rabbitmq +0100644 0 0 /usr/share/openstack/rabbitmq/rabbitmq-env.conf +0100644 0 0 /usr/share/openstack/rabbitmq/rabbitmq.config +0040755 0 0 /usr/lib/sysctl.d +0100644 0 0 /usr/lib/sysctl.d/neutron.conf +0100644 0 0 /usr/lib/systemd/system/apache-httpd.service +0100644 0 0 /usr/lib/systemd/system/iscsi-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-keystone.service +0100644 0 0 /usr/lib/systemd/system/openstack-keystone-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-glance-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-glance-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-glance-registry.service +0100644 0 0 /usr/lib/systemd/system/openstack-horizon-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ironic-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ironic-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-ironic-conductor.service +0100644 0 0 /usr/lib/systemd/system/openstack-network-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-config-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-db-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-server.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-metadata-agent.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-dhcp-agent.service +0100644 0 0 /usr/lib/systemd/system/openstack-neutron-l3-agent.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-config-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-db-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-compute.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-conductor.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-scheduler.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-consoleauth.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-novncproxy.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-cert.service +0100644 0 0 /usr/lib/systemd/system/openstack-nova-serialproxy.service +0100644 0 0 /usr/lib/systemd/system/rabbitmq-server.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-config-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-db-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-lv-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-scheduler.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-volume.service +0100644 0 0 /usr/lib/systemd/system/openstack-cinder-backup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-config-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-db-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-central.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-collector.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-compute.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-notification.service +0100644 0 0 /usr/lib/systemd/system/openvswitch-setup.service +0100644 0 0 /usr/lib/systemd/system/openvswitch-db-server.service +0100644 0 0 /usr/lib/systemd/system/openvswitch.service +0100644 0 0 /usr/lib/systemd/system/postgres-server.service +0100644 0 0 /usr/lib/systemd/system/postgres-server-setup.service +0100644 0 0 /usr/share/openstack/swift-controller.yml +0100644 0 0 /usr/lib/systemd/system/swift-controller-setup.service +0100644 0 0 /usr/lib/systemd/system/swift-proxy.service +0040755 0 0 /usr/share/swift +0040755 0 0 /usr/share/swift/etc +0040755 0 0 /usr/share/swift/etc/swift +0100644 0 0 /usr/share/swift/etc/swift/proxy-server.j2 diff --git a/old/install-files/openstack/usr/lib/sysctl.d/neutron.conf b/old/install-files/openstack/usr/lib/sysctl.d/neutron.conf new file mode 100644 index 00000000..644ca116 --- /dev/null +++ b/old/install-files/openstack/usr/lib/sysctl.d/neutron.conf @@ -0,0 +1,3 @@ +# Disable rp filtering, enabling forwarding is handled by networkd +net.ipv4.conf.all.rp_filter=0 +net.ipv4.conf.default.rp_filter=0 diff --git a/old/install-files/openstack/usr/lib/systemd/system/apache-httpd.service b/old/install-files/openstack/usr/lib/systemd/system/apache-httpd.service new file mode 100644 index 00000000..e2a840c6 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/apache-httpd.service @@ -0,0 +1,16 @@ +[Unit] +Description=Apache Web Server +After=network.target remote-fs.target nss-lookup.target +Wants=network.target + +[Service] +Type=forking +PIDFile=/var/run/httpd.pid +ExecStart=/usr/sbin/apachectl start +ExecStop=/usr/sbin/apachectl graceful-stop +ExecReload=/usr/sbin/apachectl graceful +PrivateTmp=true +LimitNOFILE=infinity + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service b/old/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service new file mode 100644 index 00000000..4cb10045 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run iscsi-setup Ansible scripts +Before=iscsid.service target.service +Wants=iscsid.service target.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/iscsi.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service new file mode 100644 index 00000000..6e3ada59 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer alarm evaluation service +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-alarm-evaluator --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service new file mode 100644 index 00000000..7a3e1c91 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer alarm notification service +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-alarm-notifier --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service new file mode 100644 index 00000000..eb0293bf --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer API service +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-api --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service new file mode 100644 index 00000000..a1bc11ee --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer central agent +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service openstack-ceilometer-collector.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-agent-central --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service new file mode 100644 index 00000000..dafc3ac7 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer collection service +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-collector --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service new file mode 100644 index 00000000..9fe8a1e6 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer compute agent +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-agent-compute --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service new file mode 100644 index 00000000..c3e809d7 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run ceilometer-config-setup Ansible scripts +ConditionPathExists=/etc/openstack/ceilometer.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer-config.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service new file mode 100644 index 00000000..7a785227 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run ceilometer-db-setup Ansible scripts +ConditionPathExists=/etc/openstack/ceilometer.conf +After=network-online.target postgres-server-setup.service openstack-keystone-setup.service openstack-ceilometer-config-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer-db.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service new file mode 100644 index 00000000..6696116e --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack ceilometer notification agent +ConditionPathExists=/etc/ceilometer/ceilometer.conf +After=network-online.target openstack-ceilometer-config-setup.service openstack-ceilometer-db-setup.service openstack-ceilometer-collector.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ceilometer-agent-notification --config-file /etc/ceilometer/ceilometer.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service new file mode 100644 index 00000000..a284f31d --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Volume Service (code-named Cinder) API server +ConditionPathExists=/etc/cinder/cinder.conf +After=network-online.target openstack-cinder-config-setup.service openstack-cinder-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=cinder +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/cinder-api --config-file /etc/cinder/cinder.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service new file mode 100644 index 00000000..c14e13aa --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Cinder backup server +ConditionPathExists=/etc/cinder/cinder.conf +After=network-online.target openstack-cinder-config-setup.service openstack-cinder-db-setup.service openstack-cinder-volume.service +Wants=network-online.target + +[Service] +Type=simple +User=cinder +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/cinder-backup --config-file /etc/cinder/cinder.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service new file mode 100644 index 00000000..1c966933 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run cinder-config-setup Ansible scripts +ConditionPathExists=/etc/openstack/cinder.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/cinder-config.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service new file mode 100644 index 00000000..a3c66d67 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run cinder-db-setup Ansible scripts +ConditionPathExists=/etc/openstack/cinder.conf +After=network-online.target postgres-server-setup.service openstack-keystone-setup.service openstack-cinder-config-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/cinder-db.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service new file mode 100644 index 00000000..82e9b08d --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run cinder-lvs-setup Ansible scripts +ConditionPathExists=/etc/openstack/cinder.conf +Wants=lvm2-lvmetad.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/cinder-lvs.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service new file mode 100644 index 00000000..f205aaff --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Cinder scheduler server +ConditionPathExists=/etc/cinder/cinder.conf +After=network-online.target openstack-cinder-config-setup.service openstack-cinder-db-setup.service openstack-cinder-volume.service +Wants=network-online.target + +[Service] +Type=simple +User=cinder +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/cinder-scheduler --config-file /etc/cinder/cinder.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service new file mode 100644 index 00000000..a5b7fe85 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Cinder volume server +ConditionPathExists=/etc/cinder/cinder.conf +After=network-online.target openstack-cinder-config-setup.service openstack-cinder-db-setup.service openstack-cinder-lv-setup.service lvm2-lvmetad.service iscsid.service target.service +Requisite=openstack-cinder-lv-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=cinder +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/cinder-volume --config-file /etc/cinder/cinder.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service new file mode 100644 index 00000000..4c34ff10 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Image Service (code-named Glance) API server +ConditionPathExists=/etc/glance/glance-api.conf +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=glance +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/glance-api --config-file /etc/glance/glance-api.conf + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service new file mode 100644 index 00000000..d53c8b33 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Image Service (code-named Glance) Registry server +ConditionPathExists=/etc/glance/glance-registry.conf +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=glance +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/glance-registry --config-file /etc/glance/glance-registry.conf + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service new file mode 100644 index 00000000..43810797 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run glance-setup Ansible scripts +ConditionPathExists=/etc/openstack/glance.conf +After=local-fs.target network-online.target postgres-server-setup.service openstack-keystone-setup.service +Wants=network-online.target + +[Service] +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/glance.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service new file mode 100644 index 00000000..9ec3197a --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service @@ -0,0 +1,10 @@ +[Unit] +Description=Run horizon-setup Ansible scripts +After=local-fs.target +Before=apache-httpd.service + +[Service] +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/horizon.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service new file mode 100644 index 00000000..5a286a95 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Bare Metal Provisioning Service (code-named Ironic) API server +ConditionPathExists=/etc/ironic/ironic.conf +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=ironic +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ironic-api --config-file /etc/ironic/ironic.conf + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service new file mode 100644 index 00000000..b3b226e0 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Bare Metal Provisioning Service (code-named Ironic) Conductor server +ConditionPathExists=/etc/ironic/ironic.conf +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=ironic +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/ironic-conductor --config-file /etc/ironic/ironic.conf + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service new file mode 100644 index 00000000..e3a58eb5 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run ironic-setup Ansible scripts +ConditionPathExists=/etc/openstack/ironic.conf +After=local-fs.target network-online.target postgres-server-setup.service openstack-keystone-setup.service +Wants=network-online.target + +[Service] +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ironic.yml + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service new file mode 100644 index 00000000..db9d0b2b --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service @@ -0,0 +1,14 @@ +[Unit] +Description=Run keystone-setup Ansible scripts +ConditionPathExists=/etc/openstack/keystone.conf +After=local-fs.target network-online.target postgres-server-setup.service +Wants=network-online.target + +[Service] +# Oneshot, since others setup have to wait until this service finishes +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/keystone.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service new file mode 100644 index 00000000..6f6ff644 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Identity Service (code-named Keystone) +ConditionPathExists=/etc/keystone/keystone.conf +After=network-online.target +Wants=network-online.target + +[Service] +Type=notify +Restart=always +User=keystone +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/keystone-all --config-file /etc/keystone/keystone.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service new file mode 100644 index 00000000..021370d9 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run Ansible scripts to configure internal network for OpenStack +After=openvswitch-setup.service openvswitch.service +Before=systemd-networkd.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/network.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service new file mode 100644 index 00000000..b74f44ab --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run neutron-config-setup Ansible scripts +ConditionPathExists=/etc/openstack/neutron.conf +After=network-online.target openstack-keystone-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/neutron-config.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service new file mode 100644 index 00000000..5d07da2e --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run neutron-db-setup Ansible scripts +ConditionPathExists=/etc/openstack/neutron.conf +After=network-online.target postgres-server-setup.service openstack-keystone-setup.service openstack-neutron-config-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/neutron-db.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service new file mode 100644 index 00000000..9080f3c1 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Neutron DHCP Agent +ConditionPathExists=/etc/neutron/neutron.conf +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service openstack-neutron-ovs-cleanup.service +Wants=network-online.target + +[Service] +Type=simple +User=neutron +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/neutron-dhcp-agent \ + --config-file=/etc/neutron/neutron.conf \ + --config-file=/etc/neutron/dhcp_agent.ini + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service new file mode 100644 index 00000000..72cd1651 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Neutron Layer 3 Agent +ConditionPathExists=/etc/neutron/neutron.conf +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service openstack-neutron-ovs-cleanup.service +Wants=network-online.target + +[Service] +Type=simple +User=neutron +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/neutron-l3-agent \ + --config-file=/etc/neutron/neutron.conf \ + --config-file=/etc/neutron/l3_agent.ini + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service new file mode 100644 index 00000000..20540e4c --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Neutron Metadata Plugin Agent +ConditionPathExists=/etc/neutron/neutron.conf +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=neutron +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/neutron-metadata-agent \ + --config-file=/etc/neutron/neutron.conf \ + --config-file=/etc/neutron/metadata_agent.ini + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service new file mode 100644 index 00000000..f5709028 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service @@ -0,0 +1,18 @@ +[Unit] +Description=Neutron OVS cleanup +ConditionPathExists=/etc/neutron/neutron.conf +ConditionFileIsExecutable=/usr/bin/neutron-ovs-cleanup +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service openvswitch.service +Before=openstack-neutron-plugin-openvswitch-agent.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +StandardOutput=null +StandardError=null +User=neutron +ExecStart=/usr/bin/neutron-ovs-cleanup --config-file /etc/neutron/neutron.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service new file mode 100644 index 00000000..6c579a62 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Neutron OpenvSwitch Plugin Agent +ConditionPathExists=/etc/neutron/neutron.conf +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=neutron +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/neutron-openvswitch-agent \ + --config-file=/etc/neutron/neutron.conf \ + --config-file=/etc/neutron/plugins/ml2/ml2_conf.ini + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service new file mode 100644 index 00000000..6376c3d8 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service @@ -0,0 +1,17 @@ +[Unit] +Description=Neutron Api Server +ConditionPathExists=/etc/neutron/neutron.conf +After=network-online.target openstack-neutron-config-setup.service openstack-neutron-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=neutron +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/neutron-server \ + --config-file=/etc/neutron/neutron.conf \ + --config-file=/etc/neutron/plugins/ml2/ml2_conf.ini + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service new file mode 100644 index 00000000..521353db --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Compute Service (code-named Nova) API server +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-api --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service new file mode 100644 index 00000000..b3733816 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Nova Cert +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-cert --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service new file mode 100644 index 00000000..4f9b8196 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenStack Compute Service (code-named Nova) compute server +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service libvirtd.service +Wants=network-online.target +Requires=libvirtd.service + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-compute --config-file /etc/nova/nova.conf --config-file /etc/nova/nova-compute.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service new file mode 100644 index 00000000..4c0d7d43 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service @@ -0,0 +1,16 @@ +[Unit] +Description=Database-access support for Compute nodes (nova-conductor) +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service libvirtd.service +Wants=network-online.target +Requires=libvirtd.service + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-conductor --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service new file mode 100644 index 00000000..df669aa9 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run nova-config-setup Ansible scripts +ConditionPathExists=/etc/openstack/nova.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/nova-config.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service new file mode 100644 index 00000000..e22780a9 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service @@ -0,0 +1,15 @@ +[Unit] +Description=Openstack Console Auth (nova-consoleauth) +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-consoleauth --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service new file mode 100644 index 00000000..8e004327 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run nova-db-setup Ansible scripts +ConditionPathExists=/etc/openstack/nova.conf +After=network-online.target postgres-server-setup.service openstack-keystone-setup.service openstack-nova-config-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/nova-db.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service new file mode 100644 index 00000000..8cbb20fd --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Nova NoVNC proxy +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-novncproxy --config-file /etc/nova/nova.conf --web /usr/share/novnc + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service new file mode 100644 index 00000000..e89f0d3e --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Nova Scheduler +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-scheduler --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service new file mode 100644 index 00000000..30af8305 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenStack Nova Serial Proxy +ConditionPathExists=/etc/nova/nova.conf +After=network-online.target openstack-nova-config-setup.service openstack-nova-db-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=nova +StandardOutput=null +StandardError=null +ExecStart=/usr/bin/nova-serialproxy --config-file /etc/nova/nova.conf + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service b/old/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service new file mode 100644 index 00000000..34a7c812 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service @@ -0,0 +1,12 @@ +[Unit] +Description=Open vSwitch Database Server Daemon +After=local-fs.target + +[Service] +Type=forking +ExecStartPre=-/usr/bin/mkdir -p /var/run/openvswitch +ExecStart=/usr/sbin/ovsdb-server --remote=punix:/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach + +[Install] +WantedBy=multi-user.target + diff --git a/old/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service b/old/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service new file mode 100644 index 00000000..8393ebbc --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run openvswitch-setup Ansible scripts +After=local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -i /usr/share/openstack/hosts /usr/share/openstack/openvswitch.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/openvswitch.service b/old/install-files/openstack/usr/lib/systemd/system/openvswitch.service new file mode 100644 index 00000000..113911f6 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/openvswitch.service @@ -0,0 +1,12 @@ +[Unit] +Description=Open vSwitch Daemon +Before=network-pre.target +Wants=network-pre.target + +[Service] +Type=forking +ExecStartPre=-/usr/bin/mkdir -p /var/run/openvswitch +ExecStart=/usr/sbin/ovs-vswitchd --pidfile --detach + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service b/old/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service new file mode 100644 index 00000000..202c0636 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run postgres-setup Ansible scripts +ConditionPathExists=/etc/openstack/postgres.conf +After=local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -i /usr/share/openstack/hosts /usr/share/openstack/postgres.yml + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/postgres-server.service b/old/install-files/openstack/usr/lib/systemd/system/postgres-server.service new file mode 100644 index 00000000..9e11f26d --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/postgres-server.service @@ -0,0 +1,26 @@ +[Unit] +Description=PostgreSQL database server +After=network-online.target +Wants=network-online.target + +[Service] +Type=forking +TimeoutSec=120 +User=postgres +Group=postgres + +Environment=PGROOT=/var/lib/pgsql + +SyslogIdentifier=postgres +PIDFile=/var/lib/pgsql/data/postmaster.pid + +ExecStart=/usr/bin/pg_ctl -s -D ${PGROOT}/data start -w -t 120 +ExecReload=/usr/bin/pg_ctl -s -D ${PGROOT}/data reload +ExecStop=/usr/bin/pg_ctl -s -D ${PGROOT}/data stop -m fast + +# Due to PostgreSQL's use of shared memory, OOM killer is often overzealous in +# killing Postgres, so adjust it downward +OOMScoreAdjust=-200 + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service b/old/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service new file mode 100644 index 00000000..1a20f3e4 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service @@ -0,0 +1,16 @@ +[Unit] +Description=RabbitMQ broker +After=network-online.target +Wants=network-online.target + +[Service] +Type=notify +User=rabbitmq +Group=rabbitmq +Environment=HOME=/var/lib/rabbitmq +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/rabbitmq-server +ExecStop=/usr/sbin/rabbitmqctl stop + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service b/old/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service new file mode 100644 index 00000000..ccfbcbe6 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service @@ -0,0 +1,13 @@ +[Unit] +Description=Run swift-controller-setup (once) +After=local-fs.target network-online.target postgres-server-setup.service openstack-keystone-setup.service +Wants=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/swift-controller.yml +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/lib/systemd/system/swift-proxy.service b/old/install-files/openstack/usr/lib/systemd/system/swift-proxy.service new file mode 100644 index 00000000..7b0a2e17 --- /dev/null +++ b/old/install-files/openstack/usr/lib/systemd/system/swift-proxy.service @@ -0,0 +1,14 @@ +[Unit] +Description=OpenStack Swift Proxy Server +After=network-online.target swift-controller-setup.service memcached.service +Wants=network-online.target + +[Service] +Type=forking +PIDFile=/var/run/swift/proxy-server.pid +Restart=on-failure +ExecStart=/usr/bin/swift-init proxy-server start +ExecStop=/usr/bin/swift-init proxy-server stop + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/openstack/usr/share/openstack/ceilometer-config.yml b/old/install-files/openstack/usr/share/openstack/ceilometer-config.yml new file mode 100644 index 00000000..9850d84d --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/ceilometer-config.yml @@ -0,0 +1,36 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/ceilometer.conf" + tasks: +# Configure ceilometer + - name: Create the ceilometer user. + user: + name: ceilometer + comment: Openstack Ceilometer Daemons + shell: /sbin/nologin + home: /var/lib/ceilometer + + - name: Create the /var folders for ceilometer + file: + path: "{{ item }}" + state: directory + owner: ceilometer + group: ceilometer + with_items: + - /var/run/ceilometer + - /var/lock/ceilometer + - /var/log/ceilometer + - /var/lib/ceilometer + + - name: Create /etc/ceilometer directory + file: + path: /etc/ceilometer + state: directory + + - name: Add the configuration needed for ceilometer in /etc/ceilometer using templates + template: + src: /usr/share/openstack/ceilometer/{{ item }} + dest: /etc/ceilometer/{{ item }} + with_lines: + - cd /usr/share/openstack/ceilometer && find -type f diff --git a/old/install-files/openstack/usr/share/openstack/ceilometer-db.yml b/old/install-files/openstack/usr/share/openstack/ceilometer-db.yml new file mode 100644 index 00000000..46a929bc --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/ceilometer-db.yml @@ -0,0 +1,50 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/ceilometer.conf" + tasks: + - name: Create ceilometer service user in service tenant + keystone_user: + user: "{{ CEILOMETER_SERVICE_USER }}" + password: "{{ CEILOMETER_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to ceilometers service user in the service tenant + keystone_user: + role: admin + user: "{{ CEILOMETER_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add ceilometer endpoint + keystone_service: + name: ceilometer + type: metering + description: Openstack Metering Service + publicurl: http://{{ ansible_hostname }}:8777 + internalurl: http://{{ CONTROLLER_HOST_ADDRESS }}:8777 + adminurl: http://{{ CONTROLLER_HOST_ADDRESS }}:8777 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for ceilometer + postgresql_user: + name: "{{ CEILOMETER_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + password: "{{ CEILOMETER_DB_PASSWORD }}" + sudo: yes + sudo_user: ceilometer + + - name: Create database for ceilometer services + postgresql_db: + name: ceilometer + owner: "{{ CEILOMETER_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + sudo: yes + sudo_user: ceilometer + + - name: Initiate ceilometer database + command: ceilometer-dbsync + sudo: yes + sudo_user: ceilometer diff --git a/old/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf b/old/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf new file mode 100644 index 00000000..b1ad2f47 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf @@ -0,0 +1,1330 @@ +[DEFAULT] + +# +# From ceilometer +# + +auth_strategy = keystone + +# To reduce large requests at same time to Nova or other components +# from different compute agents, shuffle start time of polling task. +# (integer value) +#shuffle_time_before_polling_task = 0 + +# Configuration file for WSGI definition of API. (string value) +api_paste_config = api_paste.ini + +# Number of workers for Ceilometer API server. (integer value) +#api_workers = 1 + +# Polling namespace(s) to be used while resource polling (unknown +# type) +#polling_namespaces = ['compute', 'central'] + +# List of pollsters (or wildcard templates) to be used while polling +# (unknown type) +#pollster_list = [] + +# Exchange name for Nova notifications. (string value) +nova_control_exchange = nova + +# List of metadata prefixes reserved for metering use. (list value) +reserved_metadata_namespace = metering. + +# Limit on length of reserved metadata values. (integer value) +#reserved_metadata_length = 256 + +# List of metadata keys reserved for metering use. And these keys are +# additional to the ones included in the namespace. (list value) +#reserved_metadata_keys = + +# Inspector to use for inspecting the hypervisor layer. (string value) +hypervisor_inspector = libvirt + +# Libvirt domain type. (string value) +# Allowed values: kvm, lxc, qemu, uml, xen +libvirt_type = {{ NOVA_VIRT_TYPE }} + +# Override the default libvirt URI (which is dependent on +# libvirt_type). (string value) +#libvirt_uri = + +# Exchange name for Data Processing notifications. (string value) +#sahara_control_exchange = sahara + +# Dispatcher to process data. (multi valued) +# Deprecated group/name - [collector]/dispatcher +#dispatcher = database + +# Exchange name for Keystone notifications. (string value) +keystone_control_exchange = keystone + +# Number of items to request in each paginated Glance API request +# (parameter used by glancecelient). If this is less than or equal to +# 0, page size is not specified (default value in glanceclient is +# used). (integer value) +#glance_page_size = 0 + +# Exchange name for Glance notifications. (string value) +glance_control_exchange = glance + +# Exchange name for Ironic notifications. (string value) +ironic_exchange = ironic + +# Exchanges name to listen for notifications. (multi valued) +#http_control_exchanges = nova +#http_control_exchanges = glance +#http_control_exchanges = neutron +#http_control_exchanges = cinder + +# Exchange name for Neutron notifications. (string value) +# Deprecated group/name - [DEFAULT]/quantum_control_exchange +neutron_control_exchange = neutron + +# Allow novaclient's debug log output. (boolean value) +#nova_http_log_debug = false + +# Swift reseller prefix. Must be on par with reseller_prefix in proxy- +# server.conf. (string value) +#reseller_prefix = AUTH_ + +# Enable eventlet backdoor. Acceptable values are 0, , and +# :, where 0 results in listening on a random tcp port +# number; results in listening on the specified port number +# (and not enabling backdoor if that port is in use); and +# : results in listening on the smallest unused port +# number within the specified range of port numbers. The chosen port +# is displayed in the service's log file. (string value) +#backdoor_port = + +# Print debugging output (set logging level to DEBUG instead of +# default WARNING level). (boolean value) +#debug = false + +# Print more verbose output (set logging level to INFO instead of +# default WARNING level). (boolean value) +#verbose = false + +# Log output to standard error. (boolean value) +#use_stderr = true + +# The name of a logging configuration file. This file is appended to +# any existing logging configuration files. For details about logging +# configuration files, see the Python logging module documentation. +# (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append = + +# DEPRECATED. A logging.Formatter log message format string which may +# use any of the available logging.LogRecord attributes. This option +# is deprecated. Please use logging_context_format_string and +# logging_default_format_string instead. (string value) +#log_format = + +# Format string for %%(asctime)s in log records. Default: %(default)s +# . (string value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is set, +# logging will go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative --log-file paths. +# (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Use syslog for logging. Existing syslog format is DEPRECATED during +# I, and will change in J to honor RFC5424. (boolean value) +use_syslog = True + +# (Optional) Enables or disables syslog rfc5424 format for logging. If +# enabled, prefixes the MSG part of the syslog message with APP-NAME +# (RFC5424). The format without the APP-NAME is deprecated in I, and +# will be removed in J. (boolean value) +#use_syslog_rfc_format = false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility = LOG_USER + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. (string +# value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string +# value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false + +# The format for an instance that is passed with the log message. +# (string value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. +# (string value) +#instance_uuid_format = "[instance: %(uuid)s] " + +# Exchange name for Heat notifications (string value) +#heat_control_exchange = heat + +# Configuration file for pipeline definition. (string value) +pipeline_cfg_file = pipeline.yaml + +# Configuration file for event pipeline definition. (string value) +event_pipeline_cfg_file = event_pipeline.yaml + +# Exchange name for DBaaS notifications. (string value) +#trove_control_exchange = trove + +# Exchange name for Messaging service notifications. (string value) +#zaqar_control_exchange = zaqar + +# Source for samples emitted on this instance. (string value) +# Deprecated group/name - [DEFAULT]/counter_source +#sample_source = openstack + +# Name of this node, which must be valid in an AMQP key. Can be an +# opaque identifier. For ZeroMQ only, must be a valid host name, FQDN, +# or IP address. (string value) +#host = noisecell + +# Number of workers for collector service. A single collector is +# enabled by default. (integer value) +#collector_workers = 1 + +# Number of workers for notification service. A single notification +# agent is enabled by default. (integer value) +#notification_workers = 1 + +# Timeout seconds for HTTP requests. Set it to None to disable +# timeout. (integer value) +#http_timeout = 600 + +# DEPRECATED - Database connection string. (string value) +#database_connection = + +# Path to the rootwrap configuration file touse for running commands +# as root (string value) +rootwrap_config = /etc/ceilometer/rootwrap.conf + +# Exchange name for Cinder notifications. (string value) +cinder_control_exchange = cinder + +# +# From oslo.messaging +# + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve to this +# address. (string value) +#rpc_zmq_bind_address = * + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker = local + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port = 9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts = 1 + +# Maximum number of ingress messages to locally buffer per topic. +# Default is unlimited. (integer value) +#rpc_zmq_topic_backlog = + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir = /var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP address. +# Must match "host" option, if running Nova. (string value) +#rpc_zmq_host = localhost + +# Seconds to wait before a cast expires (TTL). Only supported by +# impl_zmq. (integer value) +#rpc_cast_timeout = 30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq = 300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl = 600 + +# Size of RPC thread pool. (integer value) +#rpc_thread_pool_size = 64 + +# Driver or drivers to handle sending notifications. (multi valued) +#notification_driver = + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics = notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout = 60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend option +# and driver specific configuration. (string value) +#transport_url = + +# The messaging driver to use, defaults to rabbit. Other drivers +# include qpid and zmq. (string value) +rpc_backend = rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the transport_url +# option. (string value) +#control_exchange = openstack + + +[alarm] + +# +# From ceilometer +# + +# SSL Client certificate for REST notifier. (string value) +#rest_notifier_certificate_file = + +# SSL Client private key for REST notifier. (string value) +#rest_notifier_certificate_key = + +# Whether to verify the SSL Server certificate when calling alarm +# action. (boolean value) +#rest_notifier_ssl_verify = true + +# Number of retries for REST notifier (integer value) +#rest_notifier_max_retries = 0 + +# Period of evaluation cycle, should be >= than configured pipeline +# interval for collection of underlying metrics. (integer value) +# Deprecated group/name - [alarm]/threshold_evaluation_interval +#evaluation_interval = 60 + +# The topic that ceilometer uses for alarm notifier messages. (string +# value) +notifier_rpc_topic = alarm_notifier + +# The topic that ceilometer uses for alarm partition coordination +# messages. DEPRECATED: RPC-based partitionedalarm evaluation service +# will be removed in Kilo in favour of the default alarm evaluation +# service using tooz for partitioning. (string value) +#partition_rpc_topic = alarm_partition_coordination + +# URL to Gnocchi. (string value) +#gnocchi_url = http://localhost:8041 + +# Record alarm change events. (boolean value) +#record_history = true + +# Maximum number of alarms defined for a user. (integer value) +#user_alarm_quota = + +# Maximum number of alarms defined for a project. (integer value) +#project_alarm_quota = + +# Driver to use for alarm evaluation service. DEPRECATED: "singleton" +# and "partitioned" alarm evaluator services will be removed in Kilo +# in favour of the default alarm evaluation service using tooz for +# partitioning. (string value) +#evaluation_service = default + + +[api] + +# +# From ceilometer +# + +# The port for the ceilometer API server. (integer value) +# Deprecated group/name - [DEFAULT]/metering_api_port +port = 8777 + +# The listen IP for the ceilometer API server. (string value) +host = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Toggle Pecan Debug Middleware. (boolean value) +#pecan_debug = false + + +[central] + +# +# From ceilometer +# + +# Work-load partitioning group prefix. Use only if you want to run +# multiple polling agents with different config files. For each sub- +# group of the agent pool with the same partitioning_group_prefix a +# disjoint subset of pollsters should be loaded. (string value) +# Deprecated group/name - [central]/partitioning_group_prefix +#partitioning_group_prefix = + + +[collector] + +# +# From ceilometer +# + +# Address to which the UDP socket is bound. Set to an empty string to +# disable. (string value) +#udp_address = 0.0.0.0 + +# Port to which the UDP socket is bound. (integer value) +#udp_port = 4952 + +# Requeue the sample on the collector sample queue when the collector +# fails to dispatch it. This is only valid if the sample come from the +# notifier publisher. (boolean value) +#requeue_sample_on_dispatcher_error = false + +# Requeue the event on the collector event queue when the collector +# fails to dispatch it. (boolean value) +#requeue_event_on_dispatcher_error = false + + +[compute] + +# +# From ceilometer +# + +# Enable work-load partitioning, allowing multiple compute agents to +# be run simultaneously. (boolean value) +#workload_partitioning = false + + +[coordination] + +# +# From ceilometer +# + +# The backend URL to use for distributed coordination. If left empty, +# per-deployment central agent and per-host compute agent won't do +# workload partitioning and will only function correctly if a single +# instance of that service is running. (string value) +#backend_url = + +# Number of seconds between heartbeats for distributed coordination. +# (floating point value) +#heartbeat = 1.0 + +# Number of seconds between checks to see if group membership has +# changed (floating point value) +#check_watchers = 10.0 + + +[database] + +# +# From ceilometer +# + +# Number of seconds that samples are kept in the database for (<= 0 +# means forever). (integer value) +# Deprecated group/name - [database]/time_to_live +#metering_time_to_live = -1 + +# Number of seconds that events are kept in the database for (<= 0 +# means forever). (integer value) +#event_time_to_live = -1 + +# The connection string used to connect to the metering database. (if +# unset, connection is used) (string value) +#metering_connection = + +# The connection string used to connect to the alarm database. (if +# unset, connection is used) (string value) +#alarm_connection = + +# The connection string used to connect to the event database. (if +# unset, connection is used) (string value) +#event_connection = + +# The name of the replica set which is used to connect to MongoDB +# database. If it is set, MongoReplicaSetClient will be used instead +# of MongoClient. (string value) +#mongodb_replica_set = + +# The max length of resources id in DB2 nosql, the value should be +# larger than len(hostname) * 2 as compute node's resource id is +# _. (integer value) +#db2nosql_resource_id_maxlen = 512 + +# +# From oslo.db +# + +# The file name to use with SQLite. (string value) +# Deprecated group/name - [DEFAULT]/sqlite_db +#sqlite_db = oslo.sqlite + +# If True, SQLite uses synchronous mode. (boolean value) +# Deprecated group/name - [DEFAULT]/sqlite_synchronous +#sqlite_synchronous = true + +# The back end to use for the database. (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend = sqlalchemy + +# The SQLAlchemy connection string to use to connect to the database. +# (string value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +#connection = +connection=postgresql://{{ CEILOMETER_DB_USER }}:{{ CEILOMETER_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/ceilometer + +# The SQLAlchemy connection string to use to connect to the slave +# database. (string value) +#slave_connection = + +# The SQL mode to be used for MySQL sessions. This option, including +# the default, overrides any server-set SQL mode. To use whatever SQL +# mode is set by the server configuration, set this to no value. +# Example: mysql_sql_mode= (string value) +#mysql_sql_mode = TRADITIONAL + +# Timeout before idle SQL connections are reaped. (integer value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout = 3600 + +# Minimum number of SQL connections to keep open in a pool. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size = + +# Maximum number of database connection retries during startup. Set to +# -1 to specify an infinite retry count. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries = 10 + +# Interval between retries of opening a SQL connection. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval = 10 + +# If set, use this value for max_overflow with SQLAlchemy. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow = + +# Verbosity of SQL debugging information: 0=None, 100=Everything. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug = 0 + +# Add Python stack traces to SQL as comment strings. (boolean value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace = false + +# If set, use this value for pool_timeout with SQLAlchemy. (integer +# value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout = + +# Enable the experimental use of database reconnect on connection +# lost. (boolean value) +#use_db_reconnect = false + +# Seconds between retries of a database transaction. (integer value) +#db_retry_interval = 1 + +# If True, increases the interval between retries of a database +# operation up to db_max_retry_interval. (boolean value) +#db_inc_retry_interval = true + +# If db_inc_retry_interval is set, the maximum seconds between retries +# of a database operation. (integer value) +#db_max_retry_interval = 10 + +# Maximum retries in case of connection error or deadlock error before +# error is raised. Set to -1 to specify an infinite retry count. +# (integer value) +#db_max_retries = 20 + + +[dispatcher_file] + +# +# From ceilometer +# + +# Name and the location of the file to record meters. (string value) +#file_path = + +# The max size of the file. (integer value) +#max_bytes = 0 + +# The max number of the files to keep. (integer value) +#backup_count = 0 + + +[event] + +# +# From ceilometer +# + +# Configuration file for event definitions. (string value) +definitions_cfg_file = event_definitions.yaml + +# Drop notifications if no event definition matches. (Otherwise, we +# convert them with just the default traits) (boolean value) +#drop_unmatched_notifications = false + +# Store the raw notification for select priority levels (info and/or +# error). By default, raw details are not captured. (multi valued) +#store_raw = + + +[hardware] + +# +# From ceilometer +# + +# URL scheme to use for hardware nodes. (string value) +#url_scheme = snmp:// + +# SNMPd user name of all nodes running in the cloud. (string value) +#readonly_user_name = ro_snmp_user + +# SNMPd password of all the nodes running in the cloud. (string value) +#readonly_user_password = password + + +[ipmi] + +# +# From ceilometer +# + +# Number of retries upon Intel Node Manager initialization failure +# (integer value) +#node_manager_init_retry = 3 + +# Tolerance of IPMI/NM polling failures before disable this pollster. +# Negative indicates retrying forever. (integer value) +#polling_retry = 3 + + +[keystone_authtoken] + +# +# From keystonemiddleware.auth_token +# + +# Complete public Identity API endpoint. (string value) +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + +# API version of the admin Identity API endpoint. (string value) +#auth_version = + +# Do not handle authorization requests within the middleware, but +# delegate the authorization decision to downstream WSGI components. +# (boolean value) +#delay_auth_decision = false + +# Request timeout value for communicating with Identity API server. +# (integer value) +#http_connect_timeout = + +# How many times are we trying to reconnect when communicating with +# Identity API Server. (integer value) +#http_request_max_retries = 3 + +# Env key for the swift cache. (string value) +#cache = + +# Required if identity server requires client certificate (string +# value) +#certfile = + +# Required if identity server requires client certificate (string +# value) +#keyfile = + +# A PEM encoded Certificate Authority to use when verifying HTTPs +# connections. Defaults to system CAs. (string value) +#cafile = + +# Verify HTTPS connections. (boolean value) +#insecure = false + +# Directory used to cache files related to PKI tokens. (string value) +#signing_dir = + +# Optionally specify a list of memcached server(s) to use for caching. +# If left undefined, tokens will instead be cached in-process. (list +# value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers = + +# In order to prevent excessive effort spent validating tokens, the +# middleware caches previously-seen tokens for a configurable duration +# (in seconds). Set to -1 to disable caching completely. (integer +# value) +#token_cache_time = 300 + +# Determines the frequency at which the list of revoked tokens is +# retrieved from the Identity service (in seconds). A high number of +# revocation events combined with a low cache duration may +# significantly reduce performance. (integer value) +#revocation_cache_time = 10 + +# (Optional) If defined, indicate whether token data should be +# authenticated or authenticated and encrypted. Acceptable values are +# MAC or ENCRYPT. If MAC, token data is authenticated (with HMAC) in +# the cache. If ENCRYPT, token data is encrypted and authenticated in +# the cache. If the value is not one of these options or empty, +# auth_token will raise an exception on initialization. (string value) +#memcache_security_strategy = + +# (Optional, mandatory if memcache_security_strategy is defined) This +# string is used for key derivation. (string value) +#memcache_secret_key = + +# (Optional) Number of seconds memcached server is considered dead +# before it is tried again. (integer value) +#memcache_pool_dead_retry = 300 + +# (Optional) Maximum total number of open connections to every +# memcached server. (integer value) +#memcache_pool_maxsize = 10 + +# (Optional) Socket timeout in seconds for communicating with a +# memcache server. (integer value) +#memcache_pool_socket_timeout = 3 + +# (Optional) Number of seconds a connection to memcached is held +# unused in the pool before it is closed. (integer value) +#memcache_pool_unused_timeout = 60 + +# (Optional) Number of seconds that an operation will wait to get a +# memcache client connection from the pool. (integer value) +#memcache_pool_conn_get_timeout = 10 + +# (Optional) Use the advanced (eventlet safe) memcache client pool. +# The advanced pool will only work under python 2.x. (boolean value) +#memcache_use_advanced_pool = false + +# (Optional) Indicate whether to set the X-Service-Catalog header. If +# False, middleware will not ask for service catalog on token +# validation and will not set the X-Service-Catalog header. (boolean +# value) +#include_service_catalog = true + +# Used to control the use and type of token binding. Can be set to: +# "disabled" to not check token binding. "permissive" (default) to +# validate binding information if the bind type is of a form known to +# the server and ignore it if not. "strict" like "permissive" but if +# the bind type is unknown the token will be rejected. "required" any +# form of token binding is needed to be allowed. Finally the name of a +# binding method that must be present in tokens. (string value) +#enforce_token_bind = permissive + +# If true, the revocation list will be checked for cached tokens. This +# requires that PKI tokens are configured on the identity server. +# (boolean value) +#check_revocations_for_cached = false + +# Hash algorithms to use for hashing PKI tokens. This may be a single +# algorithm or multiple. The algorithms are those supported by Python +# standard hashlib.new(). The hashes will be tried in the order given, +# so put the preferred one first for performance. The result of the +# first hash will be stored in the cache. This will typically be set +# to multiple values only while migrating from a less secure algorithm +# to a more secure one. Once all the old tokens are expired this +# option should be set to a single value for better performance. (list +# value) +#hash_algorithms = md5 + +# Prefix to prepend at the beginning of the path. Deprecated, use +# identity_uri. (string value) +#auth_admin_prefix = + +# Host providing the admin Identity API endpoint. Deprecated, use +# identity_uri. (string value) +#auth_host = 127.0.0.1 + +# Port of the admin Identity API endpoint. Deprecated, use +# identity_uri. (integer value) +#auth_port = 35357 + +# Protocol of the admin Identity API endpoint (http or https). +# Deprecated, use identity_uri. (string value) +#auth_protocol = https + +# Complete admin Identity API endpoint. This should specify the +# unversioned root endpoint e.g. https://localhost:35357/ (string +# value) +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 + +# This option is deprecated and may be removed in a future release. +# Single shared secret with the Keystone configuration used for +# bootstrapping a Keystone installation, or otherwise bypassing the +# normal authentication process. This option should not be used, use +# `admin_user` and `admin_password` instead. (string value) +#admin_token = + +# Service username. (string value) +admin_user = {{ CEILOMETER_SERVICE_USER }} + +# Service user password. (string value) +admin_password = {{ CEILOMETER_SERVICE_PASSWORD }} + +# Service tenant name. (string value) +admin_tenant_name = service + + +[matchmaker_redis] + +# +# From oslo.messaging +# + +# Host to locate redis. (string value) +#host = 127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port = 6379 + +# Password for Redis server (optional). (string value) +#password = + + +[matchmaker_ring] + +# +# From oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile = /etc/oslo/matchmaker_ring.json + + +[notification] + +# +# From ceilometer +# + +# Acknowledge message when event persistence fails. (boolean value) +# Deprecated group/name - [collector]/ack_on_event_error +#ack_on_event_error = true + +# Save event details. (boolean value) +# Deprecated group/name - [collector]/store_events +#store_events = false + +# WARNING: Ceilometer historically offered the ability to store events +# as meters. This usage is NOT advised as it can flood the metering +# database and cause performance degradation. This option disables the +# collection of non-metric meters and will be the default behavior in +# Liberty. (boolean value) +#disable_non_metric_meters = false + +# Enable workload partitioning, allowing multiple notification agents +# to be run simultaneously. (boolean value) +#workload_partitioning = false + +# Messaging URLs to listen for notifications. Example: +# transport://user:pass@host1:port[,hostN:portN]/virtual_host +# (DEFAULT/transport_url is used if empty) (multi valued) +#messaging_urls = + + +[oslo_concurrency] + +# +# From oslo.concurrency +# + +# Enables or disables inter-process locks. (boolean value) +# Deprecated group/name - [DEFAULT]/disable_process_locking +#disable_process_locking = false + +# Directory to use for lock files. For security, the specified +# directory should only be writable by the user running the processes +# that need locking. Defaults to environment variable OSLO_LOCK_PATH. +# If external locks are used, a lock path must be set. (string value) +# Deprecated group/name - [DEFAULT]/lock_path +#lock_path = + + +[oslo_messaging_amqp] + +# +# From oslo.messaging +# + +# address prefix used when sending to a specific server (string value) +# Deprecated group/name - [amqp1]/server_request_prefix +#server_request_prefix = exclusive + +# address prefix used when broadcasting to all servers (string value) +# Deprecated group/name - [amqp1]/broadcast_prefix +#broadcast_prefix = broadcast + +# address prefix when sending to any server in group (string value) +# Deprecated group/name - [amqp1]/group_request_prefix +#group_request_prefix = unicast + +# Name for the AMQP container (string value) +# Deprecated group/name - [amqp1]/container_name +#container_name = + +# Timeout for inactive connections (in seconds) (integer value) +# Deprecated group/name - [amqp1]/idle_timeout +#idle_timeout = 0 + +# Debug: dump AMQP frames to stdout (boolean value) +# Deprecated group/name - [amqp1]/trace +#trace = false + +# CA certificate PEM file for verifing server certificate (string +# value) +# Deprecated group/name - [amqp1]/ssl_ca_file +#ssl_ca_file = + +# Identifying certificate PEM file to present to clients (string +# value) +# Deprecated group/name - [amqp1]/ssl_cert_file +#ssl_cert_file = + +# Private key PEM file used to sign cert_file certificate (string +# value) +# Deprecated group/name - [amqp1]/ssl_key_file +#ssl_key_file = + +# Password for decrypting ssl_key_file (if encrypted) (string value) +# Deprecated group/name - [amqp1]/ssl_key_password +#ssl_key_password = + +# Accept clients using either SSL or plain TCP (boolean value) +# Deprecated group/name - [amqp1]/allow_insecure_clients +#allow_insecure_clients = false + + +[oslo_messaging_qpid] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# Qpid broker hostname. (string value) +# Deprecated group/name - [DEFAULT]/qpid_hostname +#qpid_hostname = localhost + +# Qpid broker port. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_port +#qpid_port = 5672 + +# Qpid HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/qpid_hosts +#qpid_hosts = $qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_username +#qpid_username = + +# Password for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_password +#qpid_password = + +# Space separated list of SASL mechanisms to use for auth. (string +# value) +# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms +#qpid_sasl_mechanisms = + +# Seconds between connection keepalive heartbeats. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_heartbeat +#qpid_heartbeat = 60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +# Deprecated group/name - [DEFAULT]/qpid_protocol +#qpid_protocol = tcp + +# Whether to disable the Nagle algorithm. (boolean value) +# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay +#qpid_tcp_nodelay = true + +# The number of prefetched messages held by receiver. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity +#qpid_receiver_capacity = 1 + +# The qpid topology version to use. Version 1 is what was originally +# used by impl_qpid. Version 2 includes some backwards-incompatible +# changes that allow broker federation to work. Users should update +# to version 2 when they are able to take everything down, as it +# requires a clean break. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_topology_version +#qpid_topology_version = 1 + + +[oslo_messaging_rabbit] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# SSL version to use (valid only if SSL enabled). Valid values are +# TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be +# available on some distributions. (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_version +#kombu_ssl_version = + +# SSL key file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile +#kombu_ssl_keyfile = + +# SSL cert file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile +#kombu_ssl_certfile = + +# SSL certification authority file (valid only if SSL enabled). +# (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs +#kombu_ssl_ca_certs = + +# How long to wait before reconnecting in response to an AMQP consumer +# cancel notification. (floating point value) +# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay +#kombu_reconnect_delay = 1.0 + +# The RabbitMQ broker address where a single node is used. (string +# value) +# Deprecated group/name - [DEFAULT]/rabbit_host +rabbit_host = {{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. (integer +# value) +# Deprecated group/name - [DEFAULT]/rabbit_port +rabbit_port = {{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/rabbit_hosts +#rabbit_hosts = $rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_use_ssl +rabbit_use_ssl = false + +# The RabbitMQ userid. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_userid +rabbit_userid = {{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_password +rabbit_password = {{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_login_method +#rabbit_login_method = AMQPLAIN + +# The RabbitMQ virtual host. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_virtual_host +rabbit_virtual_host = / + +# How frequently to retry connecting with RabbitMQ. (integer value) +#rabbit_retry_interval = 1 + +# How long to backoff for between retries when connecting to RabbitMQ. +# (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff +#rabbit_retry_backoff = 2 + +# Maximum number of RabbitMQ connection retries. Default is 0 +# (infinite retry count). (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_max_retries +#rabbit_max_retries = 0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this +# option, you must wipe the RabbitMQ database. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_ha_queues +#rabbit_ha_queues = false + +# Number of seconds after which the Rabbit broker is considered down +# if heartbeat's keep-alive fails (0 disables the heartbeat, >0 +# enables it. Enabling heartbeats requires kombu>=3.0.7 and +# amqp>=1.4.0). EXPERIMENTAL (integer value) +#heartbeat_timeout_threshold = 0 + +# How often times during the heartbeat_timeout_threshold we check the +# heartbeat. (integer value) +#heartbeat_rate = 2 + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake +# (boolean value) +# Deprecated group/name - [DEFAULT]/fake_rabbit +#fake_rabbit = false + + +[oslo_policy] + +# +# From oslo.policy +# + +# The JSON file that defines policies. (string value) +# Deprecated group/name - [DEFAULT]/policy_file +policy_file = policy.json + +# Default rule. Enforced when a requested rule is not found. (string +# value) +# Deprecated group/name - [DEFAULT]/policy_default_rule +policy_default_rule = default + +# Directories where policy configuration files are stored. They can be +# relative to any directory in the search path defined by the +# config_dir option, or absolute paths. The file defined by +# policy_file must exist for these directories to be searched. +# Missing or empty directories are ignored. (multi valued) +# Deprecated group/name - [DEFAULT]/policy_dirs +#policy_dirs = policy.d + + +[polling] + +# +# From ceilometer +# + +# Work-load partitioning group prefix. Use only if you want to run +# multiple polling agents with different config files. For each sub- +# group of the agent pool with the same partitioning_group_prefix a +# disjoint subset of pollsters should be loaded. (string value) +# Deprecated group/name - [central]/partitioning_group_prefix +#partitioning_group_prefix = + + +[publisher] + +# +# From ceilometer +# + +# Secret value for signing messages. Set value empty if signing is not +# required to avoid computational overhead. (string value) +# Deprecated group/name - [DEFAULT]/metering_secret +# Deprecated group/name - [publisher_rpc]/metering_secret +# Deprecated group/name - [publisher]/metering_secret +#telemetry_secret = change this for valid signing + + +[publisher_notifier] + +# +# From ceilometer +# + +# The topic that ceilometer uses for metering notifications. (string +# value) +#metering_topic = metering + +# The topic that ceilometer uses for event notifications. (string +# value) +#event_topic = event + +# The driver that ceilometer uses for metering notifications. (string +# value) +# Deprecated group/name - [DEFAULT]/metering_driver +#telemetry_driver = messagingv2 + + +[publisher_rpc] + +# +# From ceilometer +# + +# The topic that ceilometer uses for metering messages. (string value) +# Deprecated group/name - [DEFAULT]/metering_topic +#metering_topic = metering + + +[rgw_admin_credentials] + +# +# From ceilometer +# + +# Access key for Radosgw Admin. (string value) +#access_key = + +# Secret key for Radosgw Admin. (string value) +#secret_key = + + +[service_credentials] + +# +# From ceilometer +# + +# User name to use for OpenStack service access. (string value) +# Deprecated group/name - [DEFAULT]/os_username +os_username = {{ CEILOMETER_SERVICE_USER }} + +# Password to use for OpenStack service access. (string value) +# Deprecated group/name - [DEFAULT]/os_password +os_password = {{ CEILOMETER_SERVICE_PASSWORD }} + +# Tenant ID to use for OpenStack service access. (string value) +# Deprecated group/name - [DEFAULT]/os_tenant_id +#os_tenant_id = + +# Tenant name to use for OpenStack service access. (string value) +# Deprecated group/name - [DEFAULT]/os_tenant_name +os_tenant_name = service + +# Certificate chain for SSL validation. (string value) +#os_cacert = + +# Auth URL to use for OpenStack service access. (string value) +# Deprecated group/name - [DEFAULT]/os_auth_url +os_auth_url = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + +# Region name to use for OpenStack service endpoints. (string value) +# Deprecated group/name - [DEFAULT]/os_region_name +os_region_name = regionOne + +# Type of endpoint in Identity service catalog to use for +# communication with OpenStack services. (string value) +os_endpoint_type = internalURL + +# Disables X.509 certificate validation when an SSL connection to +# Identity Service is established. (boolean value) +#insecure = false + + +[service_types] + +# +# From ceilometer +# + +# Kwapi service type. (string value) +#kwapi = energy + +# Glance service type. (string value) +glance = image + +# Neutron service type. (string value) +neutron = network + +# Nova service type. (string value) +nova = compute + +# Radosgw service type. (string value) +#radosgw = object-store + +# Swift service type. (string value) +#swift = object-store + + +[vmware] + +# +# From ceilometer +# + +# IP address of the VMware Vsphere host. (string value) +#host_ip = + +# Port of the VMware Vsphere host. (integer value) +#host_port = 443 + +# Username of VMware Vsphere. (string value) +#host_username = + +# Password of VMware Vsphere. (string value) +#host_password = + +# Number of times a VMware Vsphere API may be retried. (integer value) +#api_retry_count = 10 + +# Sleep time in seconds for polling an ongoing async task. (floating +# point value) +#task_poll_interval = 0.5 + +# Optional vim service WSDL location e.g +# http:///vimService.wsdl. Optional over-ride to default +# location for bug work-arounds. (string value) +#wsdl_location = + + +[xenapi] + +# +# From ceilometer +# + +# URL for connection to XenServer/Xen Cloud Platform. (string value) +#connection_url = + +# Username for connection to XenServer/Xen Cloud Platform. (string +# value) +#connection_username = root + +# Password for connection to XenServer/Xen Cloud Platform. (string +# value) +#connection_password = + +# Timeout in seconds for XenAPI login. (integer value) +#login_timeout = 10 diff --git a/old/install-files/openstack/usr/share/openstack/cinder-config.yml b/old/install-files/openstack/usr/share/openstack/cinder-config.yml new file mode 100644 index 00000000..fd3e2cd0 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/cinder-config.yml @@ -0,0 +1,37 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/cinder.conf" + tasks: +# Configure cinder + - name: Create the cinder user. + user: + name: cinder + comment: Openstack Cinder Daemons + shell: /sbin/nologin + home: /var/lib/cinder + + - name: Create the /var folders for cinder + file: + path: "{{ item }}" + state: directory + owner: cinder + group: cinder + with_items: + - /var/run/cinder + - /var/lock/cinder + - /var/log/cinder + - /var/lib/cinder + - /var/lib/cinder/volumes + + - name: Create /etc/cinder directory + file: + path: /etc/cinder + state: directory + + - name: Add the configuration needed for cinder in /etc/cinder using templates + template: + src: /usr/share/openstack/cinder/{{ item }} + dest: /etc/cinder/{{ item }} + with_lines: + - cd /usr/share/openstack/cinder && find -type f diff --git a/old/install-files/openstack/usr/share/openstack/cinder-db.yml b/old/install-files/openstack/usr/share/openstack/cinder-db.yml new file mode 100644 index 00000000..24e4980f --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/cinder-db.yml @@ -0,0 +1,59 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/cinder.conf" + tasks: + - name: Create cinder service user in service tenant + keystone_user: + user: "{{ CINDER_SERVICE_USER }}" + password: "{{ CINDER_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to cinder service user in the service tenant + keystone_user: + role: admin + user: "{{ CINDER_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add cinder endpoint + keystone_service: + name: cinder + type: volume + description: Openstack Block Storage + publicurl: 'http://{{ ansible_hostname }}:8776/v1/%(tenant_id)s' + internalurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8776/v1/%(tenant_id)s' + adminurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8776/v1/%(tenant_id)s' + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add cinderv2 endpoint + keystone_service: + name: cinderv2 + type: volumev2 + description: Openstack Block Storage + publicurl: 'http://{{ ansible_hostname }}:8776/v2/%(tenant_id)s' + internalurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8776/v2/%(tenant_id)s' + adminurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8776/v2/%(tenant_id)s' + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for cinder + postgresql_user: + name: "{{ CINDER_DB_USER }}" + password: "{{ CINDER_DB_PASSWORD }}" + sudo: yes + sudo_user: cinder + + - name: Create database for cinder services + postgresql_db: + name: cinder + owner: "{{ CINDER_DB_USER }}" + sudo: yes + sudo_user: cinder + + - name: Initiate cinder database + command: cinder-manage db sync + sudo: yes + sudo_user: cinder diff --git a/old/install-files/openstack/usr/share/openstack/cinder-lvs.yml b/old/install-files/openstack/usr/share/openstack/cinder-lvs.yml new file mode 100644 index 00000000..7a91a306 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/cinder-lvs.yml @@ -0,0 +1,21 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/cinder.conf" + tasks: + - name: Check that CINDER_DEVICE exists + stat: + path: "{{ CINDER_DEVICE }}" + register: cinder_device_stats + failed_when: cinder_device_stats.stat.exists == false + + - name: Configure LVM group for cinder + lvg: + vg: cinder-volumes + pvs: "{{ CINDER_DEVICE }}" + + - lineinfile: + dest: /etc/lvm/lvm.conf + regexp: '# filter = \[ \"a\/\.\*/\" \]' + line: ' filter = [ "a|{{ CINDER_DEVICE }}|", "r/.*/" ]' + backrefs: yes diff --git a/old/install-files/openstack/usr/share/openstack/cinder/cinder.conf b/old/install-files/openstack/usr/share/openstack/cinder/cinder.conf new file mode 100644 index 00000000..f3e4f11c --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/cinder/cinder.conf @@ -0,0 +1,2991 @@ +[DEFAULT] + +use_syslog = True + +# +# Options defined in oslo.messaging +# + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve +# to this address. (string value) +#rpc_zmq_bind_address=* + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker=local + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port=9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts=1 + +# Maximum number of ingress messages to locally buffer per +# topic. Default is unlimited. (integer value) +#rpc_zmq_topic_backlog= + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir=/var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP +# address. Must match "host" option, if running Nova. (string +# value) +#rpc_zmq_host=cinder + +# Seconds to wait before a cast expires (TTL). Only supported +# by impl_zmq. (integer value) +#rpc_cast_timeout=30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq=300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl=600 + +# Size of RPC thread pool. (integer value) +#rpc_thread_pool_size=64 + +# Driver or drivers to handle sending notifications. (multi +# valued) +notification_driver=messagingv2 + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics=notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout=60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend +# option and driver specific configuration. (string value) +#transport_url= + +# The messaging driver to use, defaults to rabbit. Other +# drivers include qpid and zmq. (string value) +rpc_backend=rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the +# transport_url option. (string value) +control_exchange=cinder + + +# +# Options defined in cinder.exception +# + +# Make exception message format errors fatal. (boolean value) +#fatal_exception_format_errors=false + + +# +# Options defined in cinder.quota +# + +# Number of volumes allowed per project (integer value) +#quota_volumes=10 + +# Number of volume snapshots allowed per project (integer +# value) +#quota_snapshots=10 + +# Number of consistencygroups allowed per project (integer +# value) +#quota_consistencygroups=10 + +# Total amount of storage, in gigabytes, allowed for volumes +# and snapshots per project (integer value) +#quota_gigabytes=1000 + +# Number of volume backups allowed per project (integer value) +#quota_backups=10 + +# Total amount of storage, in gigabytes, allowed for backups +# per project (integer value) +#quota_backup_gigabytes=1000 + +# Number of seconds until a reservation expires (integer +# value) +#reservation_expire=86400 + +# Count of reservations until usage is refreshed (integer +# value) +#until_refresh=0 + +# Number of seconds between subsequent usage refreshes +# (integer value) +#max_age=0 + +# Default driver to use for quota checks (string value) +#quota_driver=cinder.quota.DbQuotaDriver + +# Enables or disables use of default quota class with default +# quota. (boolean value) +#use_default_quota_class=true + + +# +# Options defined in cinder.service +# + +# Interval, in seconds, between nodes reporting state to +# datastore (integer value) +#report_interval=10 + +# Interval, in seconds, between running periodic tasks +# (integer value) +#periodic_interval=60 + +# Range, in seconds, to randomly delay when starting the +# periodic task scheduler to reduce stampeding. (Disable by +# setting to 0) (integer value) +#periodic_fuzzy_delay=60 + +# IP address on which OpenStack Volume API listens (string +# value) +#osapi_volume_listen=0.0.0.0 + +# Port on which OpenStack Volume API listens (integer value) +#osapi_volume_listen_port=8776 + +# Number of workers for OpenStack Volume API service. The +# default is equal to the number of CPUs available. (integer +# value) +#osapi_volume_workers= + + +# +# Options defined in cinder.ssh_utils +# + +# Option to enable strict host key checking. When set to +# "True" Cinder will only connect to systems with a host key +# present in the configured "ssh_hosts_key_file". When set to +# "False" the host key will be saved upon first connection and +# used for subsequent connections. Default=False (boolean +# value) +#strict_ssh_host_key_policy=false + +# File containing SSH host keys for the systems with which +# Cinder needs to communicate. OPTIONAL: +# Default=$state_path/ssh_known_hosts (string value) +#ssh_hosts_key_file=$state_path/ssh_known_hosts + + +# +# Options defined in cinder.test +# + +# File name of clean sqlite db (string value) +#sqlite_clean_db=clean.sqlite + + +# +# Options defined in cinder.wsgi +# + +# Maximum line size of message headers to be accepted. +# max_header_line may need to be increased when using large +# tokens (typically those generated by the Keystone v3 API +# with big service catalogs). (integer value) +#max_header_line=16384 + +# Timeout for client connections' socket operations. If an +# incoming connection is idle for this number of seconds it +# will be closed. A value of '0' means wait forever. (integer +# value) +#client_socket_timeout=900 + +# If False, closes the client socket connection explicitly. +# Setting it to True to maintain backward compatibility. +# Recommended setting is set it to False. (boolean value) +#wsgi_keep_alive=true + +# Sets the value of TCP_KEEPALIVE (True/False) for each server +# socket. (boolean value) +#tcp_keepalive=true + +# Sets the value of TCP_KEEPIDLE in seconds for each server +# socket. Not supported on OS X. (integer value) +#tcp_keepidle=600 + +# Sets the value of TCP_KEEPINTVL in seconds for each server +# socket. Not supported on OS X. (integer value) +#tcp_keepalive_interval= + +# Sets the value of TCP_KEEPCNT for each server socket. Not +# supported on OS X. (integer value) +#tcp_keepalive_count= + +# CA certificate file to use to verify connecting clients +# (string value) +#ssl_ca_file= + +# Certificate file to use when starting the server securely +# (string value) +#ssl_cert_file= + +# Private key file to use when starting the server securely +# (string value) +#ssl_key_file= + + +# +# Options defined in cinder.api.common +# + +# The maximum number of items that a collection resource +# returns in a single response (integer value) +#osapi_max_limit=1000 + +# Base URL that will be presented to users in links to the +# OpenStack Volume API (string value) +# Deprecated group/name - [DEFAULT]/osapi_compute_link_prefix +#osapi_volume_base_URL= + + +# +# Options defined in cinder.api.middleware.auth +# + +# Treat X-Forwarded-For as the canonical remote address. Only +# enable this if you have a sanitizing proxy. (boolean value) +#use_forwarded_for=false + + +# +# Options defined in cinder.api.middleware.sizelimit +# + +# Max size for body of a request (integer value) +#osapi_max_request_body_size=114688 + + +# +# Options defined in cinder.api.views.versions +# + +# Public url to use for versions endpoint. The default is +# None, which will use the request's host_url attribute to +# populate the URL base. If Cinder is operating behind a +# proxy, you will want to change this to represent the proxy's +# URL. (string value) +#public_endpoint= + + +# +# Options defined in cinder.backup.chunkeddriver +# + +# Compression algorithm (None to disable) (string value) +#backup_compression_algorithm=zlib + + +# +# Options defined in cinder.backup.driver +# + +# Backup metadata version to be used when backing up volume +# metadata. If this number is bumped, make sure the service +# doing the restore supports the new version. (integer value) +#backup_metadata_version=2 + +# The number of chunks or objects, for which one Ceilometer +# notification will be sent (integer value) +#backup_object_number_per_notification=10 + +# Interval, in seconds, between two progress notifications +# reporting the backup status (integer value) +#backup_timer_interval=120 + + +# +# Options defined in cinder.backup.drivers.ceph +# + +# Ceph configuration file to use. (string value) +#backup_ceph_conf=/etc/ceph/ceph.conf + +# The Ceph user to connect with. Default here is to use the +# same user as for Cinder volumes. If not using cephx this +# should be set to None. (string value) +#backup_ceph_user=cinder + +# The chunk size, in bytes, that a backup is broken into +# before transfer to the Ceph object store. (integer value) +#backup_ceph_chunk_size=134217728 + +# The Ceph pool where volume backups are stored. (string +# value) +#backup_ceph_pool=backups + +# RBD stripe unit to use when creating a backup image. +# (integer value) +#backup_ceph_stripe_unit=0 + +# RBD stripe count to use when creating a backup image. +# (integer value) +#backup_ceph_stripe_count=0 + +# If True, always discard excess bytes when restoring volumes +# i.e. pad with zeroes. (boolean value) +#restore_discard_excess_bytes=true + + +# +# Options defined in cinder.backup.drivers.nfs +# + +# The maximum size in bytes of the files used to hold backups. +# If the volume being backed up exceeds this size, then it +# will be backed up into multiple files. (integer value) +#backup_file_size=1999994880 + +# The size in bytes that changes are tracked for incremental +# backups. backup_swift_object_size has to be multiple of +# backup_swift_block_size. (integer value) +#backup_sha_block_size_bytes=32768 + +# Enable or Disable the timer to send the periodic progress +# notifications to Ceilometer when backing up the volume to +# the backend storage. The default value is True to enable the +# timer. (boolean value) +#backup_enable_progress_timer=true + +# Base dir containing mount point for NFS share. (string +# value) +#backup_mount_point_base=$state_path/backup_mount + +# NFS share in fqdn:path, ipv4addr:path, or "[ipv6addr]:path" +# format. (string value) +#backup_share= + +# Mount options passed to the NFS client. See NFS man page for +# details. (string value) +#backup_mount_options= + +# Custom container to use for backups. (string value) +#backup_container= + + +# +# Options defined in cinder.backup.drivers.swift +# + +# The URL of the Swift endpoint (string value) +#backup_swift_url= + +# Info to match when looking for swift in the service catalog. +# Format is: separated values of the form: +# :: - Only used if +# backup_swift_url is unset (string value) +#swift_catalog_info=object-store:swift:publicURL + +# Swift authentication mechanism (string value) +#backup_swift_auth=per_user + +# Swift authentication version. Specify "1" for auth 1.0, or +# "2" for auth 2.0 (string value) +#backup_swift_auth_version=1 + +# Swift tenant/account name. Required when connecting to an +# auth 2.0 system (string value) +#backup_swift_tenant= + +# Swift user name (string value) +#backup_swift_user= + +# Swift key for authentication (string value) +#backup_swift_key= + +# The default Swift container to use (string value) +#backup_swift_container=volumebackups + +# The size in bytes of Swift backup objects (integer value) +#backup_swift_object_size=52428800 + +# The size in bytes that changes are tracked for incremental +# backups. backup_swift_object_size has to be multiple of +# backup_swift_block_size. (integer value) +#backup_swift_block_size=32768 + +# The number of retries to make for Swift operations (integer +# value) +#backup_swift_retry_attempts=3 + +# The backoff time in seconds between Swift retries (integer +# value) +#backup_swift_retry_backoff=2 + +# Enable or Disable the timer to send the periodic progress +# notifications to Ceilometer when backing up the volume to +# the Swift backend storage. The default value is True to +# enable the timer. (boolean value) +#backup_swift_enable_progress_timer=true + + +# +# Options defined in cinder.backup.drivers.tsm +# + +# Volume prefix for the backup id when backing up to TSM +# (string value) +#backup_tsm_volume_prefix=backup + +# TSM password for the running username (string value) +#backup_tsm_password=password + +# Enable or Disable compression for backups (boolean value) +#backup_tsm_compression=true + + +# +# Options defined in cinder.backup.manager +# + +# Driver to use for backups. (string value) +# Deprecated group/name - [DEFAULT]/backup_service +#backup_driver=cinder.backup.drivers.swift + + +# +# Options defined in cinder.cmd.volume +# + +# Backend override of host value. (string value) +# Deprecated group/name - [DEFAULT]/host +#backend_host= + + +# +# Options defined in cinder.cmd.volume_usage_audit +# + +# If this option is specified then the start time specified is +# used instead of the start time of the last completed audit +# period. (string value) +#start_time= + +# If this option is specified then the end time specified is +# used instead of the end time of the last completed audit +# period. (string value) +#end_time= + +# Send the volume and snapshot create and delete notifications +# generated in the specified period. (boolean value) +#send_actions=false + + +# +# Options defined in cinder.common.config +# + +# File name for the paste.deploy config for cinder-api (string +# value) +api_paste_config=api-paste.ini + +# Top-level directory for maintaining cinder's state (string +# value) +# Deprecated group/name - [DEFAULT]/pybasedir +state_path=/var/lib/cinder + +# IP address of this host (string value) +my_ip={{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Default glance host name or IP (string value) +glance_host={{ CONTROLLER_HOST_ADDRESS }} + +# Default glance port (integer value) +#glance_port=9292 + +# A list of the glance API servers available to cinder +# ([hostname|ip]:port) (list value) +#glance_api_servers=$glance_host:$glance_port + +# Version of the glance API to use (integer value) +#glance_api_version=1 + +# Number retries when downloading an image from glance +# (integer value) +#glance_num_retries=0 + +# Allow to perform insecure SSL (https) requests to glance +# (boolean value) +#glance_api_insecure=false + +# Enables or disables negotiation of SSL layer compression. In +# some cases disabling compression can improve data +# throughput, such as when high network bandwidth is available +# and you use compressed image formats like qcow2. (boolean +# value) +#glance_api_ssl_compression=false + +# Location of ca certificates file to use for glance client +# requests. (string value) +#glance_ca_certificates_file= + +# http/https timeout value for glance operations. If no value +# (None) is supplied here, the glanceclient default value is +# used. (integer value) +#glance_request_timeout= + +# The topic that scheduler nodes listen on (string value) +#scheduler_topic=cinder-scheduler + +# The topic that volume nodes listen on (string value) +#volume_topic=cinder-volume + +# The topic that volume backup nodes listen on (string value) +#backup_topic=cinder-backup + +# DEPRECATED: Deploy v1 of the Cinder API. (boolean value) +#enable_v1_api=true + +# Deploy v2 of the Cinder API. (boolean value) +#enable_v2_api=true + +# Enables or disables rate limit of the API. (boolean value) +#api_rate_limit=true + +# Specify list of extensions to load when using +# osapi_volume_extension option with +# cinder.api.contrib.select_extensions (list value) +#osapi_volume_ext_list= + +# osapi volume extension to load (multi valued) +#osapi_volume_extension=cinder.api.contrib.standard_extensions + +# Full class name for the Manager for volume (string value) +#volume_manager=cinder.volume.manager.VolumeManager + +# Full class name for the Manager for volume backup (string +# value) +#backup_manager=cinder.backup.manager.BackupManager + +# Full class name for the Manager for scheduler (string value) +#scheduler_manager=cinder.scheduler.manager.SchedulerManager + +# Name of this node. This can be an opaque identifier. It is +# not necessarily a host name, FQDN, or IP address. (string +# value) +#host=cinder + +# Availability zone of this node (string value) +#storage_availability_zone=nova + +# Default availability zone for new volumes. If not set, the +# storage_availability_zone option value is used as the +# default for new volumes. (string value) +#default_availability_zone= + +# Default volume type to use (string value) +#default_volume_type= + +# Time period for which to generate volume usages. The options +# are hour, day, month, or year. (string value) +#volume_usage_audit_period=month + +# Path to the rootwrap configuration file to use for running +# commands as root (string value) +rootwrap_config=/etc/cinder/rootwrap.conf + +# Enable monkey patching (boolean value) +#monkey_patch=false + +# List of modules/decorators to monkey patch (list value) +#monkey_patch_modules= + +# Maximum time since last check-in for a service to be +# considered up (integer value) +#service_down_time=60 + +# The full class name of the volume API class to use (string +# value) +#volume_api_class=cinder.volume.api.API + +# The full class name of the volume backup API class (string +# value) +#backup_api_class=cinder.backup.api.API + +# The strategy to use for auth. Supports noauth, keystone, and +# deprecated. (string value) +auth_strategy=keystone + +# A list of backend names to use. These backend names should +# be backed by a unique [CONFIG] group with its options (list +# value) +#enabled_backends= + +# Whether snapshots count against gigabyte quota (boolean +# value) +#no_snapshot_gb_quota=false + +# The full class name of the volume transfer API class (string +# value) +#transfer_api_class=cinder.transfer.api.API + +# The full class name of the volume replication API class +# (string value) +#replication_api_class=cinder.replication.api.API + +# The full class name of the consistencygroup API class +# (string value) +#consistencygroup_api_class=cinder.consistencygroup.api.API + +# OpenStack privileged account username. Used for requests to +# other services (such as Nova) that require an account with +# special rights. (string value) +#os_privileged_user_name= + +# Password associated with the OpenStack privileged account. +# (string value) +#os_privileged_user_password= + +# Tenant name associated with the OpenStack privileged +# account. (string value) +#os_privileged_user_tenant= + + +# +# Options defined in cinder.compute +# + +# The full class name of the compute API class to use (string +# value) +#compute_api_class=cinder.compute.nova.API + + +# +# Options defined in cinder.compute.nova +# + +# Match this value when searching for nova in the service +# catalog. Format is: separated values of the form: +# :: (string value) +#nova_catalog_info=compute:Compute Service:publicURL + +# Same as nova_catalog_info, but for admin endpoint. (string +# value) +#nova_catalog_admin_info=compute:Compute Service:adminURL + +# Override service catalog lookup with template for nova +# endpoint e.g. http://localhost:8774/v2/%(project_id)s +# (string value) +#nova_endpoint_template= + +# Same as nova_endpoint_template, but for admin endpoint. +# (string value) +#nova_endpoint_admin_template= + +# Region name of this node (string value) +#os_region_name= + +# Location of ca certificates file to use for nova client +# requests. (string value) +#nova_ca_certificates_file= + +# Allow to perform insecure SSL requests to nova (boolean +# value) +#nova_api_insecure=false + + +# +# Options defined in cinder.db.api +# + +# Services to be added to the available pool on create +# (boolean value) +#enable_new_services=true + +# Template string to be used to generate volume names (string +# value) +volume_name_template=volume-%s + +# Template string to be used to generate snapshot names +# (string value) +snapshot_name_template=snapshot-%s + +# Template string to be used to generate backup names (string +# value) +backup_name_template=backup-%s + + +# +# Options defined in cinder.db.base +# + +# Driver to use for database access (string value) +#db_driver=cinder.db + + +# +# Options defined in cinder.image.glance +# + +# Default core properties of image (list value) +#glance_core_properties=checksum,container_format,disk_format,image_name,image_id,min_disk,min_ram,name,size + +# A list of url schemes that can be downloaded directly via +# the direct_url. Currently supported schemes: [file]. (list +# value) +#allowed_direct_url_schemes= + + +# +# Options defined in cinder.image.image_utils +# + +# Directory used for temporary storage during image conversion +# (string value) +#image_conversion_dir=$state_path/conversion + + +# +# Options defined in cinder.openstack.common.eventlet_backdoor +# + +# Enable eventlet backdoor. Acceptable values are 0, , +# and :, where 0 results in listening on a random +# tcp port number; results in listening on the +# specified port number (and not enabling backdoor if that +# port is in use); and : results in listening on +# the smallest unused port number within the specified range +# of port numbers. The chosen port is displayed in the +# service's log file. (string value) +#backdoor_port= + + +# +# Options defined in cinder.openstack.common.periodic_task +# + +# Some periodic tasks can be run in a separate process. Should +# we run them here? (boolean value) +#run_external_periodic_tasks=true + + +# +# Options defined in cinder.openstack.common.policy +# + +# The JSON file that defines policies. (string value) +#policy_file=policy.json + +# Default rule. Enforced when a requested rule is not found. +# (string value) +#policy_default_rule=default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path +# defined by the config_dir option, or absolute paths. The +# file defined by policy_file must exist for these directories +# to be searched. Missing or empty directories are ignored. +# (multi valued) +#policy_dirs=policy.d + + +# +# Options defined in cinder.openstack.common.versionutils +# + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + + +# +# Options defined in cinder.scheduler.driver +# + +# The scheduler host manager class to use (string value) +#scheduler_host_manager=cinder.scheduler.host_manager.HostManager + +# Maximum number of attempts to schedule an volume (integer +# value) +#scheduler_max_attempts=3 + + +# +# Options defined in cinder.scheduler.host_manager +# + +# Which filter class names to use for filtering hosts when not +# specified in the request. (list value) +#scheduler_default_filters=AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter + +# Which weigher class names to use for weighing hosts. (list +# value) +#scheduler_default_weighers=CapacityWeigher + + +# +# Options defined in cinder.scheduler.manager +# + +# Default scheduler driver to use (string value) +#scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler + + +# +# Options defined in cinder.scheduler.scheduler_options +# + +# Absolute path to scheduler configuration JSON file. (string +# value) +#scheduler_json_config_location= + + +# +# Options defined in cinder.scheduler.simple +# + +# This configure option has been deprecated along with the +# SimpleScheduler. New scheduler is able to gather capacity +# information for each host, thus setting the maximum number +# of volume gigabytes for host is no longer needed. It's safe +# to remove this configure from cinder.conf. (integer value) +#max_gigabytes=10000 + + +# +# Options defined in cinder.scheduler.weights.capacity +# + +# Multiplier used for weighing volume capacity. Negative +# numbers mean to stack vs spread. (floating point value) +#capacity_weight_multiplier=1.0 + +# Multiplier used for weighing volume capacity. Negative +# numbers mean to stack vs spread. (floating point value) +#allocated_capacity_weight_multiplier=-1.0 + + +# +# Options defined in cinder.scheduler.weights.volume_number +# + +# Multiplier used for weighing volume number. Negative numbers +# mean to spread vs stack. (floating point value) +#volume_number_multiplier=-1.0 + + +# +# Options defined in cinder.transfer.api +# + +# The number of characters in the salt. (integer value) +#volume_transfer_salt_length=8 + +# The number of characters in the autogenerated auth key. +# (integer value) +#volume_transfer_key_length=16 + + +# +# Options defined in cinder.volume.api +# + +# Cache volume availability zones in memory for the provided +# duration in seconds (integer value) +#az_cache_duration=3600 + +# Create volume from snapshot at the host where snapshot +# resides (boolean value) +#snapshot_same_host=true + +# Ensure that the new volumes are the same AZ as snapshot or +# source volume (boolean value) +#cloned_volume_same_az=true + + +# +# Options defined in cinder.volume.driver +# + +# The maximum number of times to rescan iSER targetto find +# volume (integer value) +#num_iser_scan_tries=3 + +# This option is deprecated and unused. It will be removed in +# the Liberty release. (integer value) +#iser_num_targets= + +# Prefix for iSER volumes (string value) +#iser_target_prefix=iqn.2010-10.org.openstack: + +# The IP address that the iSER daemon is listening on (string +# value) +#iser_ip_address=$my_ip + +# The port that the iSER daemon is listening on (integer +# value) +#iser_port=3260 + +# The name of the iSER target user-land tool to use (string +# value) +#iser_helper=tgtadm + +# Number of times to attempt to run flakey shell commands +# (integer value) +#num_shell_tries=3 + +# The percentage of backend capacity is reserved (integer +# value) +#reserved_percentage=0 + +# This option is deprecated and unused. It will be removed in +# the Liberty release. (integer value) +#iscsi_num_targets= + +# Prefix for iSCSI volumes (string value) +#iscsi_target_prefix=iqn.2010-10.org.openstack: + +# The IP address that the iSCSI daemon is listening on (string +# value) +iscsi_ip_address={{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# The list of secondary IP addresses of the iSCSI daemon (list +# value) +#iscsi_secondary_ip_addresses= + +# The port that the iSCSI daemon is listening on (integer +# value) +iscsi_port=3260 + +# The maximum number of times to rescan targets to find volume +# (integer value) +# Deprecated group/name - [DEFAULT]/num_iscsi_scan_tries +#num_volume_device_scan_tries=3 + +# The backend name for a given driver implementation (string +# value) +volume_backend_name=LVM_iSCSI + +# Do we attach/detach volumes in cinder using multipath for +# volume to image and image to volume transfers? (boolean +# value) +#use_multipath_for_image_xfer=false + +# If this is set to True, attachment of volumes for image +# transfer will be aborted when multipathd is not running. +# Otherwise, it will fallback to single path. (boolean value) +#enforce_multipath_for_image_xfer=false + +# Method used to wipe old volumes (string value) +volume_clear=zero + +# Size in MiB to wipe at start of old volumes. 0 => all +# (integer value) +volume_clear_size=50 + +# The flag to pass to ionice to alter the i/o priority of the +# process used to zero a volume after deletion, for example +# "-c3" for idle only priority. (string value) +#volume_clear_ionice= + +# iSCSI target user-land tool to use. tgtadm is default, use +# lioadm for LIO iSCSI support, scstadmin for SCST target +# support, iseradm for the ISER protocol, ietadm for iSCSI +# Enterprise Target, iscsictl for Chelsio iSCSI Target or fake +# for testing. (string value) +iscsi_helper=lioadm + +# Volume configuration file storage directory (string value) +volumes_dir=$state_path/volumes + +# IET configuration file (string value) +#iet_conf=/etc/iet/ietd.conf + +# Chiscsi (CXT) global defaults configuration file (string +# value) +#chiscsi_conf=/etc/chelsio-iscsi/chiscsi.conf + +# This option is deprecated and unused. It will be removed in +# the next release. (string value) +#lio_initiator_iqns= + +# Sets the behavior of the iSCSI target to either perform +# blockio or fileio optionally, auto can be set and Cinder +# will autodetect type of backing device (string value) +#iscsi_iotype=fileio + +# The default block size used when copying/clearing volumes +# (string value) +#volume_dd_blocksize=1M + +# The blkio cgroup name to be used to limit bandwidth of +# volume copy (string value) +#volume_copy_blkio_cgroup_name=cinder-volume-copy + +# The upper limit of bandwidth of volume copy. 0 => unlimited +# (integer value) +#volume_copy_bps_limit=0 + +# Sets the behavior of the iSCSI target to either perform +# write-back(on) or write-through(off). This parameter is +# valid if iscsi_helper is set to tgtadm or iseradm. (string +# value) +#iscsi_write_cache=on + +# Determines the iSCSI protocol for new iSCSI volumes, created +# with tgtadm or lioadm target helpers. In order to enable +# RDMA, this parameter should be set with the value "iser". +# The supported iSCSI protocol values are "iscsi" and "iser". +# (string value) +#iscsi_protocol=iscsi + +# The path to the client certificate key for verification, if +# the driver supports it. (string value) +#driver_client_cert_key= + +# The path to the client certificate for verification, if the +# driver supports it. (string value) +#driver_client_cert= + +# Tell driver to use SSL for connection to backend storage if +# the driver supports it. (boolean value) +#driver_use_ssl=false + +# Float representation of the over subscription ratio when +# thin provisioning is involved. Default ratio is 20.0, +# meaning provisioned capacity can be 20 times of the total +# physical capacity. If the ratio is 10.5, it means +# provisioned capacity can be 10.5 times of the total physical +# capacity. A ratio of 1.0 means provisioned capacity cannot +# exceed the total physical capacity. A ratio lower than 1.0 +# will be ignored and the default value will be used instead. +# (floating point value) +#max_over_subscription_ratio=20.0 + +# Certain ISCSI targets have predefined target names, SCST +# target driver uses this name. (string value) +#scst_target_iqn_name= + +# SCST target implementation can choose from multiple SCST +# target drivers. (string value) +#scst_target_driver=iscsi + +# Option to enable/disable CHAP authentication for targets. +# (boolean value) +# Deprecated group/name - [DEFAULT]/eqlx_use_chap +#use_chap_auth=false + +# CHAP user name. (string value) +# Deprecated group/name - [DEFAULT]/eqlx_chap_login +#chap_username= + +# Password for specified CHAP account name. (string value) +# Deprecated group/name - [DEFAULT]/eqlx_chap_password +#chap_password= + +# Namespace for driver private data values to be saved in. +# (string value) +#driver_data_namespace= + +# String representation for an equation that will be used to +# filter hosts. Only used when the driver filter is set to be +# used by the Cinder scheduler. (string value) +#filter_function= + +# String representation for an equation that will be used to +# determine the goodness of a host. Only used when using the +# goodness weigher is set to be used by the Cinder scheduler. +# (string value) +#goodness_function= + + +# +# Options defined in cinder.volume.drivers.block_device +# + +# List of all available devices (list value) +#available_devices= + + +# +# Options defined in cinder.volume.drivers.cloudbyte.options +# + +# These values will be used for CloudByte storage's addQos API +# call. (dict value) +#cb_add_qosgroup=latency:15,iops:10,graceallowed:false,iopscontrol:true,memlimit:0,throughput:0,tpcontrol:false,networkspeed:0 + +# Driver will use this API key to authenticate against the +# CloudByte storage's management interface. (string value) +#cb_apikey=None + +# CloudByte storage specific account name. This maps to a +# project name in OpenStack. (string value) +#cb_account_name=None + +# This corresponds to the name of Tenant Storage Machine (TSM) +# in CloudByte storage. A volume will be created in this TSM. +# (string value) +#cb_tsm_name=None + +# A retry value in seconds. Will be used by the driver to +# check if volume creation was successful in CloudByte +# storage. (integer value) +#cb_confirm_volume_create_retry_interval=5 + +# Will confirm a successful volume creation in CloudByte +# storage by making this many number of attempts. (integer +# value) +#cb_confirm_volume_create_retries=3 + +# These values will be used for CloudByte storage's +# createVolume API call. (dict value) +#cb_create_volume=compression:off,deduplication:off,blocklength:512B,sync:always,protocoltype:ISCSI,recordsize:16k + + +# +# Options defined in cinder.volume.drivers.datera +# + +# DEPRECATED: This will be removed in the Liberty release. Use +# san_login and san_password instead. This directly sets the +# Datera API token. (string value) +#datera_api_token= + +# Datera API port. (string value) +#datera_api_port=7717 + +# Datera API version. (string value) +#datera_api_version=1 + +# Number of replicas to create of an inode. (string value) +#datera_num_replicas=3 + + +# +# Options defined in cinder.volume.drivers.dell.dell_storagecenter_common +# + +# Storage Center System Serial Number (integer value) +#dell_sc_ssn=64702 + +# Dell API port (integer value) +#dell_sc_api_port=3033 + +# Name of the server folder to use on the Storage Center +# (string value) +#dell_sc_server_folder=openstack + +# Name of the volume folder to use on the Storage Center +# (string value) +#dell_sc_volume_folder=openstack + + +# +# Options defined in cinder.volume.drivers.emc.emc_vmax_common +# + +# use this file for cinder emc plugin config data (string +# value) +#cinder_emc_config_file=/etc/cinder/cinder_emc_config.xml + + +# +# Options defined in cinder.volume.drivers.emc.emc_vnx_cli +# + +# VNX authentication scope type. (string value) +#storage_vnx_authentication_type=global + +# Directory path that contains the VNX security file. Make +# sure the security file is generated first. (string value) +#storage_vnx_security_file_dir= + +# Naviseccli Path. (string value) +#naviseccli_path= + +# Storage pool name. (string value) +#storage_vnx_pool_name= + +# VNX secondary SP IP Address. (string value) +#san_secondary_ip= + +# Default timeout for CLI operations in minutes. For example, +# LUN migration is a typical long running operation, which +# depends on the LUN size and the load of the array. An upper +# bound in the specific deployment can be set to avoid +# unnecessary long wait. By default, it is 365 days long. +# (integer value) +#default_timeout=525600 + +# Default max number of LUNs in a storage group. By default, +# the value is 255. (integer value) +#max_luns_per_storage_group=255 + +# To destroy storage group when the last LUN is removed from +# it. By default, the value is False. (boolean value) +#destroy_empty_storage_group=false + +# Mapping between hostname and its iSCSI initiator IP +# addresses. (string value) +#iscsi_initiators= + +# Automatically register initiators. By default, the value is +# False. (boolean value) +#initiator_auto_registration=false + +# Automatically deregister initiators after the related +# storage group is destroyed. By default, the value is False. +# (boolean value) +#initiator_auto_deregistration=false + +# Report free_capacity_gb as 0 when the limit to maximum +# number of pool LUNs is reached. By default, the value is +# False. (boolean value) +#check_max_pool_luns_threshold=false + +# Delete a LUN even if it is in Storage Groups. (boolean +# value) +#force_delete_lun_in_storagegroup=false + + +# +# Options defined in cinder.volume.drivers.emc.xtremio +# + +# XMS cluster id in multi-cluster environment (string value) +#xtremio_cluster_name= + + +# +# Options defined in cinder.volume.drivers.eqlx +# + +# Group name to use for creating volumes. Defaults to +# "group-0". (string value) +#eqlx_group_name=group-0 + +# Timeout for the Group Manager cli command execution. Default +# is 30. (integer value) +#eqlx_cli_timeout=30 + +# Maximum retry count for reconnection. Default is 5. (integer +# value) +#eqlx_cli_max_retries=5 + +# Use CHAP authentication for targets. Note that this option +# is deprecated in favour of "use_chap_auth" as specified in +# cinder/volume/driver.py and will be removed in next release. +# (boolean value) +#eqlx_use_chap=false + +# Existing CHAP account name. Note that this option is +# deprecated in favour of "chap_username" as specified in +# cinder/volume/driver.py and will be removed in next release. +# (string value) +#eqlx_chap_login=admin + +# Password for specified CHAP account name. Note that this +# option is deprecated in favour of "chap_password" as +# specified in cinder/volume/driver.py and will be removed in +# the next release (string value) +#eqlx_chap_password=password + +# Pool in which volumes will be created. Defaults to +# "default". (string value) +#eqlx_pool=default + + +# +# Options defined in cinder.volume.drivers.glusterfs +# + +# File with the list of available gluster shares (string +# value) +#glusterfs_shares_config=/etc/cinder/glusterfs_shares + +# Create volumes as sparsed files which take no space.If set +# to False volume is created as regular file.In such case +# volume creation takes a lot of time. (boolean value) +#glusterfs_sparsed_volumes=true + +# Create volumes as QCOW2 files rather than raw files. +# (boolean value) +#glusterfs_qcow2_volumes=false + +# Base dir containing mount points for gluster shares. (string +# value) +#glusterfs_mount_point_base=$state_path/mnt + + +# +# Options defined in cinder.volume.drivers.hds.hds +# + +# The configuration file for the Cinder HDS driver for HUS +# (string value) +#hds_cinder_config_file=/opt/hds/hus/cinder_hus_conf.xml + + +# +# Options defined in cinder.volume.drivers.hds.iscsi +# + +# Configuration file for HDS iSCSI cinder plugin (string +# value) +#hds_hnas_iscsi_config_file=/opt/hds/hnas/cinder_iscsi_conf.xml + + +# +# Options defined in cinder.volume.drivers.hds.nfs +# + +# Configuration file for HDS NFS cinder plugin (string value) +#hds_hnas_nfs_config_file=/opt/hds/hnas/cinder_nfs_conf.xml + + +# +# Options defined in cinder.volume.drivers.hitachi.hbsd_common +# + +# Serial number of storage system (string value) +#hitachi_serial_number= + +# Name of an array unit (string value) +#hitachi_unit_name= + +# Pool ID of storage system (integer value) +#hitachi_pool_id= + +# Thin pool ID of storage system (integer value) +#hitachi_thin_pool_id= + +# Range of logical device of storage system (string value) +#hitachi_ldev_range= + +# Default copy method of storage system (string value) +#hitachi_default_copy_method=FULL + +# Copy speed of storage system (integer value) +#hitachi_copy_speed=3 + +# Interval to check copy (integer value) +#hitachi_copy_check_interval=3 + +# Interval to check copy asynchronously (integer value) +#hitachi_async_copy_check_interval=10 + +# Control port names for HostGroup or iSCSI Target (string +# value) +#hitachi_target_ports= + +# Range of group number (string value) +#hitachi_group_range= + +# Request for creating HostGroup or iSCSI Target (boolean +# value) +#hitachi_group_request=false + + +# +# Options defined in cinder.volume.drivers.hitachi.hbsd_fc +# + +# Request for FC Zone creating HostGroup (boolean value) +#hitachi_zoning_request=false + + +# +# Options defined in cinder.volume.drivers.hitachi.hbsd_horcm +# + +# Instance numbers for HORCM (string value) +#hitachi_horcm_numbers=200,201 + +# Username of storage system for HORCM (string value) +#hitachi_horcm_user= + +# Password of storage system for HORCM (string value) +#hitachi_horcm_password= + +# Add to HORCM configuration (boolean value) +#hitachi_horcm_add_conf=true + + +# +# Options defined in cinder.volume.drivers.hitachi.hbsd_iscsi +# + +# Add CHAP user (boolean value) +#hitachi_add_chap_user=false + +# iSCSI authentication method (string value) +#hitachi_auth_method= + +# iSCSI authentication username (string value) +#hitachi_auth_user=HBSD-CHAP-user + +# iSCSI authentication password (string value) +#hitachi_auth_password=HBSD-CHAP-password + + +# +# Options defined in cinder.volume.drivers.huawei +# + +# The configuration file for the Cinder Huawei driver (string +# value) +#cinder_huawei_conf_file=/etc/cinder/cinder_huawei_conf.xml + + +# +# Options defined in cinder.volume.drivers.ibm.flashsystem +# + +# Connection protocol should be FC. (string value) +#flashsystem_connection_protocol=FC + +# Connect with multipath (FC only). (boolean value) +#flashsystem_multipath_enabled=false + +# Allows vdisk to multi host mapping. (boolean value) +#flashsystem_multihostmap_enabled=true + + +# +# Options defined in cinder.volume.drivers.ibm.gpfs +# + +# Specifies the path of the GPFS directory where Block Storage +# volume and snapshot files are stored. (string value) +#gpfs_mount_point_base= + +# Specifies the path of the Image service repository in GPFS. +# Leave undefined if not storing images in GPFS. (string +# value) +#gpfs_images_dir= + +# Specifies the type of image copy to be used. Set this when +# the Image service repository also uses GPFS so that image +# files can be transferred efficiently from the Image service +# to the Block Storage service. There are two valid values: +# "copy" specifies that a full copy of the image is made; +# "copy_on_write" specifies that copy-on-write optimization +# strategy is used and unmodified blocks of the image file are +# shared efficiently. (string value) +#gpfs_images_share_mode= + +# Specifies an upper limit on the number of indirections +# required to reach a specific block due to snapshots or +# clones. A lengthy chain of copy-on-write snapshots or +# clones can have a negative impact on performance, but +# improves space utilization. 0 indicates unlimited clone +# depth. (integer value) +#gpfs_max_clone_depth=0 + +# Specifies that volumes are created as sparse files which +# initially consume no space. If set to False, the volume is +# created as a fully allocated file, in which case, creation +# may take a significantly longer time. (boolean value) +#gpfs_sparse_volumes=true + +# Specifies the storage pool that volumes are assigned to. By +# default, the system storage pool is used. (string value) +#gpfs_storage_pool=system + + +# +# Options defined in cinder.volume.drivers.ibm.ibmnas +# + +# IBMNAS platform type to be used as backend storage; valid +# values are - v7ku : for using IBM Storwize V7000 Unified, +# sonas : for using IBM Scale Out NAS, gpfs-nas : for using +# NFS based IBM GPFS deployments. (string value) +#ibmnas_platform_type=v7ku + + +# +# Options defined in cinder.volume.drivers.ibm.storwize_svc +# + +# Storage system storage pool for volumes (string value) +#storwize_svc_volpool_name=volpool + +# Storage system space-efficiency parameter for volumes +# (percentage) (integer value) +#storwize_svc_vol_rsize=2 + +# Storage system threshold for volume capacity warnings +# (percentage) (integer value) +#storwize_svc_vol_warning=0 + +# Storage system autoexpand parameter for volumes (True/False) +# (boolean value) +#storwize_svc_vol_autoexpand=true + +# Storage system grain size parameter for volumes +# (32/64/128/256) (integer value) +#storwize_svc_vol_grainsize=256 + +# Storage system compression option for volumes (boolean +# value) +#storwize_svc_vol_compression=false + +# Enable Easy Tier for volumes (boolean value) +#storwize_svc_vol_easytier=true + +# The I/O group in which to allocate volumes (integer value) +#storwize_svc_vol_iogrp=0 + +# Maximum number of seconds to wait for FlashCopy to be +# prepared. Maximum value is 600 seconds (10 minutes) (integer +# value) +#storwize_svc_flashcopy_timeout=120 + +# Connection protocol (iSCSI/FC) (string value) +#storwize_svc_connection_protocol=iSCSI + +# Configure CHAP authentication for iSCSI connections +# (Default: Enabled) (boolean value) +#storwize_svc_iscsi_chap_enabled=true + +# Connect with multipath (FC only; iSCSI multipath is +# controlled by Nova) (boolean value) +#storwize_svc_multipath_enabled=false + +# Allows vdisk to multi host mapping (boolean value) +#storwize_svc_multihostmap_enabled=true + +# Indicate whether svc driver is compatible for NPIV setup. If +# it is compatible, it will allow no wwpns being returned on +# get_conn_fc_wwpns during initialize_connection (boolean +# value) +#storwize_svc_npiv_compatibility_mode=false + +# Allow tenants to specify QOS on create (boolean value) +#storwize_svc_allow_tenant_qos=false + +# If operating in stretched cluster mode, specify the name of +# the pool in which mirrored copies are stored.Example: +# "pool2" (string value) +#storwize_svc_stretched_cluster_partner= + + +# +# Options defined in cinder.volume.drivers.ibm.xiv_ds8k +# + +# Proxy driver that connects to the IBM Storage Array (string +# value) +#xiv_ds8k_proxy=xiv_ds8k_openstack.nova_proxy.XIVDS8KNovaProxy + +# Connection type to the IBM Storage Array (string value) +#xiv_ds8k_connection_type=iscsi + +# CHAP authentication mode, effective only for iscsi +# (disabled|enabled) (string value) +#xiv_chap=disabled + + +# +# Options defined in cinder.volume.drivers.lvm +# + +# Name for the VG that will contain exported volumes (string +# value) +volume_group=cinder-volumes + +# If >0, create LVs with multiple mirrors. Note that this +# requires lvm_mirrors + 2 PVs with available space (integer +# value) +#lvm_mirrors=0 + +# Type of LVM volumes to deploy (string value) +#lvm_type=default + +# LVM conf file to use for the LVM driver in Cinder; this +# setting is ignored if the specified file does not exist (You +# can also specify 'None' to not use a conf file even if one +# exists). (string value) +#lvm_conf_file=/etc/cinder/lvm.conf + + +# +# Options defined in cinder.volume.drivers.netapp.options +# + +# The vFiler unit on which provisioning of block storage +# volumes will be done. This option is only used by the driver +# when connecting to an instance with a storage family of Data +# ONTAP operating in 7-Mode. Only use this option when +# utilizing the MultiStore feature on the NetApp storage +# system. (string value) +#netapp_vfiler= + +# The name of the config.conf stanza for a Data ONTAP (7-mode) +# HA partner. This option is only used by the driver when +# connecting to an instance with a storage family of Data +# ONTAP operating in 7-Mode, and it is required if the storage +# protocol selected is FC. (string value) +#netapp_partner_backend_name= + +# Administrative user account name used to access the storage +# system or proxy server. (string value) +#netapp_login= + +# Password for the administrative user account specified in +# the netapp_login option. (string value) +#netapp_password= + +# This option specifies the virtual storage server (Vserver) +# name on the storage cluster on which provisioning of block +# storage volumes should occur. (string value) +#netapp_vserver= + +# The hostname (or IP address) for the storage system or proxy +# server. (string value) +#netapp_server_hostname= + +# The TCP port to use for communication with the storage +# system or proxy server. If not specified, Data ONTAP drivers +# will use 80 for HTTP and 443 for HTTPS; E-Series will use +# 8080 for HTTP and 8443 for HTTPS. (integer value) +#netapp_server_port= + +# This option is used to specify the path to the E-Series +# proxy application on a proxy server. The value is combined +# with the value of the netapp_transport_type, +# netapp_server_hostname, and netapp_server_port options to +# create the URL used by the driver to connect to the proxy +# application. (string value) +#netapp_webservice_path=/devmgr/v2 + +# This option is only utilized when the storage family is +# configured to eseries. This option is used to restrict +# provisioning to the specified controllers. Specify the value +# of this option to be a comma separated list of controller +# hostnames or IP addresses to be used for provisioning. +# (string value) +#netapp_controller_ips= + +# Password for the NetApp E-Series storage array. (string +# value) +#netapp_sa_password= + +# This option is used to restrict provisioning to the +# specified storage pools. Only dynamic disk pools are +# currently supported. Specify the value of this option to be +# a comma separated list of disk pool names to be used for +# provisioning. (string value) +#netapp_storage_pools= + +# This option is used to define how the controllers in the +# E-Series storage array will work with the particular +# operating system on the hosts that are connected to it. +# (string value) +#netapp_eseries_host_type=linux_dm_mp + +# If the percentage of available space for an NFS share has +# dropped below the value specified by this option, the NFS +# image cache will be cleaned. (integer value) +#thres_avl_size_perc_start=20 + +# When the percentage of available space on an NFS share has +# reached the percentage specified by this option, the driver +# will stop clearing files from the NFS image cache that have +# not been accessed in the last M minutes, where M is the +# value of the expiry_thres_minutes configuration option. +# (integer value) +#thres_avl_size_perc_stop=60 + +# This option specifies the threshold for last access time for +# images in the NFS image cache. When a cache cleaning cycle +# begins, images in the cache that have not been accessed in +# the last M minutes, where M is the value of this parameter, +# will be deleted from the cache to create free space on the +# NFS share. (integer value) +#expiry_thres_minutes=720 + +# This option specifies the path of the NetApp copy offload +# tool binary. Ensure that the binary has execute permissions +# set which allow the effective user of the cinder-volume +# process to execute the file. (string value) +#netapp_copyoffload_tool_path= + +# The quantity to be multiplied by the requested volume size +# to ensure enough space is available on the virtual storage +# server (Vserver) to fulfill the volume creation request. +# (floating point value) +#netapp_size_multiplier=1.2 + +# This option is only utilized when the storage protocol is +# configured to use iSCSI or FC. This option is used to +# restrict provisioning to the specified controller volumes. +# Specify the value of this option to be a comma separated +# list of NetApp controller volume names to be used for +# provisioning. (string value) +#netapp_volume_list= + +# The storage family type used on the storage system; valid +# values are ontap_7mode for using Data ONTAP operating in +# 7-Mode, ontap_cluster for using clustered Data ONTAP, or +# eseries for using E-Series. (string value) +#netapp_storage_family=ontap_cluster + +# The storage protocol to be used on the data path with the +# storage system. (string value) +#netapp_storage_protocol= + +# The transport protocol used when communicating with the +# storage system or proxy server. (string value) +#netapp_transport_type=http + + +# +# Options defined in cinder.volume.drivers.nfs +# + +# File with the list of available nfs shares (string value) +#nfs_shares_config=/etc/cinder/nfs_shares + +# Create volumes as sparsed files which take no space.If set +# to False volume is created as regular file.In such case +# volume creation takes a lot of time. (boolean value) +#nfs_sparsed_volumes=true + +# Percent of ACTUAL usage of the underlying volume before no +# new volumes can be allocated to the volume destination. +# (floating point value) +#nfs_used_ratio=0.95 + +# This will compare the allocated to available space on the +# volume destination. If the ratio exceeds this number, the +# destination will no longer be valid. (floating point value) +#nfs_oversub_ratio=1.0 + +# Base dir containing mount points for nfs shares. (string +# value) +#nfs_mount_point_base=$state_path/mnt + +# Mount options passed to the nfs client. See section of the +# nfs man page for details. (string value) +#nfs_mount_options= + +# The number of attempts to mount nfs shares before raising an +# error. At least one attempt will be made to mount an nfs +# share, regardless of the value specified. (integer value) +#nfs_mount_attempts=3 + + +# +# Options defined in cinder.volume.drivers.nimble +# + +# Nimble Controller pool name (string value) +#nimble_pool_name=default + +# Nimble Subnet Label (string value) +#nimble_subnet_label=* + + +# +# Options defined in cinder.volume.drivers.openvstorage +# + +# Vpool to use for volumes - backend is defined by vpool not +# by us. (string value) +#vpool_name= + + +# +# Options defined in cinder.volume.drivers.prophetstor.options +# + +# DPL pool uuid in which DPL volumes are stored. (string +# value) +#dpl_pool= + +# DPL port number. (integer value) +#dpl_port=8357 + + +# +# Options defined in cinder.volume.drivers.pure +# + +# REST API authorization token. (string value) +#pure_api_token= + + +# +# Options defined in cinder.volume.drivers.quobyte +# + +# URL to the Quobyte volume e.g., quobyte:/// (string value) +#quobyte_volume_url= + +# Path to a Quobyte Client configuration file. (string value) +#quobyte_client_cfg= + +# Create volumes as sparse files which take no space. If set +# to False, volume is created as regular file.In such case +# volume creation takes a lot of time. (boolean value) +#quobyte_sparsed_volumes=true + +# Create volumes as QCOW2 files rather than raw files. +# (boolean value) +#quobyte_qcow2_volumes=true + +# Base dir containing the mount point for the Quobyte volume. +# (string value) +#quobyte_mount_point_base=$state_path/mnt + + +# +# Options defined in cinder.volume.drivers.rbd +# + +# The RADOS pool where rbd volumes are stored (string value) +#rbd_pool=rbd + +# The RADOS client name for accessing rbd volumes - only set +# when using cephx authentication (string value) +#rbd_user= + +# Path to the ceph configuration file (string value) +#rbd_ceph_conf= + +# Flatten volumes created from snapshots to remove dependency +# from volume to snapshot (boolean value) +#rbd_flatten_volume_from_snapshot=false + +# The libvirt uuid of the secret for the rbd_user volumes +# (string value) +#rbd_secret_uuid= + +# Directory where temporary image files are stored when the +# volume driver does not write them directly to the volume. +# Warning: this option is now deprecated, please use +# image_conversion_dir instead. (string value) +#volume_tmp_dir= + +# Maximum number of nested volume clones that are taken before +# a flatten occurs. Set to 0 to disable cloning. (integer +# value) +#rbd_max_clone_depth=5 + +# Volumes will be chunked into objects of this size (in +# megabytes). (integer value) +#rbd_store_chunk_size=4 + +# Timeout value (in seconds) used when connecting to ceph +# cluster. If value < 0, no timeout is set and default +# librados value is used. (integer value) +#rados_connect_timeout=-1 + + +# +# Options defined in cinder.volume.drivers.remotefs +# + +# IP address or Hostname of NAS system. (string value) +#nas_ip= + +# User name to connect to NAS system. (string value) +#nas_login=admin + +# Password to connect to NAS system. (string value) +#nas_password= + +# SSH port to use to connect to NAS system. (integer value) +#nas_ssh_port=22 + +# Filename of private key to use for SSH authentication. +# (string value) +#nas_private_key= + +# Allow network-attached storage systems to operate in a +# secure environment where root level access is not permitted. +# If set to False, access is as the root user and insecure. If +# set to True, access is not as root. If set to auto, a check +# is done to determine if this is a new installation: True is +# used if so, otherwise False. Default is auto. (string value) +#nas_secure_file_operations=auto + +# Set more secure file permissions on network-attached storage +# volume files to restrict broad other/world access. If set to +# False, volumes are created with open permissions. If set to +# True, volumes are created with permissions for the cinder +# user and group (660). If set to auto, a check is done to +# determine if this is a new installation: True is used if so, +# otherwise False. Default is auto. (string value) +#nas_secure_file_permissions=auto + +# Path to the share to use for storing Cinder volumes. For +# example: "/srv/export1" for an NFS server export available +# at 10.0.5.10:/srv/export1 . (string value) +#nas_share_path= + +# Options used to mount the storage backend file system where +# Cinder volumes are stored. (string value) +#nas_mount_options= + + +# +# Options defined in cinder.volume.drivers.san.hp.hp_3par_common +# + +# 3PAR WSAPI Server Url like https://<3par ip>:8080/api/v1 +# (string value) +#hp3par_api_url= + +# 3PAR Super user username (string value) +#hp3par_username= + +# 3PAR Super user password (string value) +#hp3par_password= + +# List of the CPG(s) to use for volume creation (list value) +#hp3par_cpg=OpenStack + +# The CPG to use for Snapshots for volumes. If empty the +# userCPG will be used. (string value) +#hp3par_cpg_snap= + +# The time in hours to retain a snapshot. You can't delete it +# before this expires. (string value) +#hp3par_snapshot_retention= + +# The time in hours when a snapshot expires and is deleted. +# This must be larger than expiration (string value) +#hp3par_snapshot_expiration= + +# Enable HTTP debugging to 3PAR (boolean value) +#hp3par_debug=false + +# List of target iSCSI addresses to use. (list value) +#hp3par_iscsi_ips= + +# Enable CHAP authentication for iSCSI connections. (boolean +# value) +#hp3par_iscsi_chap_enabled=false + + +# +# Options defined in cinder.volume.drivers.san.hp.hp_lefthand_rest_proxy +# + +# HP LeftHand WSAPI Server Url like https://:8081/lhos (string value) +#hplefthand_api_url= + +# HP LeftHand Super user username (string value) +#hplefthand_username= + +# HP LeftHand Super user password (string value) +#hplefthand_password= + +# HP LeftHand cluster name (string value) +#hplefthand_clustername= + +# Configure CHAP authentication for iSCSI connections +# (Default: Disabled) (boolean value) +#hplefthand_iscsi_chap_enabled=false + +# Enable HTTP debugging to LeftHand (boolean value) +#hplefthand_debug=false + + +# +# Options defined in cinder.volume.drivers.san.san +# + +# Use thin provisioning for SAN volumes? (boolean value) +#san_thin_provision=true + +# IP address of SAN controller (string value) +#san_ip= + +# Username for SAN controller (string value) +#san_login=admin + +# Password for SAN controller (string value) +#san_password= + +# Filename of private key to use for SSH authentication +# (string value) +#san_private_key= + +# Cluster name to use for creating volumes (string value) +#san_clustername= + +# SSH port to use with SAN (integer value) +#san_ssh_port=22 + +# Execute commands locally instead of over SSH; use if the +# volume service is running on the SAN device (boolean value) +#san_is_local=false + +# SSH connection timeout in seconds (integer value) +#ssh_conn_timeout=30 + +# Minimum ssh connections in the pool (integer value) +#ssh_min_pool_conn=1 + +# Maximum ssh connections in the pool (integer value) +#ssh_max_pool_conn=5 + + +# +# Options defined in cinder.volume.drivers.scality +# + +# Path or URL to Scality SOFS configuration file (string +# value) +#scality_sofs_config= + +# Base dir where Scality SOFS shall be mounted (string value) +#scality_sofs_mount_point=$state_path/scality + +# Path from Scality SOFS root to volume dir (string value) +#scality_sofs_volume_dir=cinder/volumes + + +# +# Options defined in cinder.volume.drivers.smbfs +# + +# File with the list of available smbfs shares. (string value) +#smbfs_shares_config=/etc/cinder/smbfs_shares + +# Default format that will be used when creating volumes if no +# volume format is specified. (string value) +#smbfs_default_volume_format=qcow2 + +# Create volumes as sparsed files which take no space rather +# than regular files when using raw format, in which case +# volume creation takes lot of time. (boolean value) +#smbfs_sparsed_volumes=true + +# Percent of ACTUAL usage of the underlying volume before no +# new volumes can be allocated to the volume destination. +# (floating point value) +#smbfs_used_ratio=0.95 + +# This will compare the allocated to available space on the +# volume destination. If the ratio exceeds this number, the +# destination will no longer be valid. (floating point value) +#smbfs_oversub_ratio=1.0 + +# Base dir containing mount points for smbfs shares. (string +# value) +#smbfs_mount_point_base=$state_path/mnt + +# Mount options passed to the smbfs client. See mount.cifs man +# page for details. (string value) +#smbfs_mount_options=noperm,file_mode=0775,dir_mode=0775 + + +# +# Options defined in cinder.volume.drivers.solidfire +# + +# Set 512 byte emulation on volume creation; (boolean value) +#sf_emulate_512=true + +# Allow tenants to specify QOS on create (boolean value) +#sf_allow_tenant_qos=false + +# Create SolidFire accounts with this prefix. Any string can +# be used here, but the string "hostname" is special and will +# create a prefix using the cinder node hostsname (previous +# default behavior). The default is NO prefix. (string value) +#sf_account_prefix= + +# Account name on the SolidFire Cluster to use as owner of +# template/cache volumes (created if does not exist). (string +# value) +#sf_template_account_name=openstack-vtemplate + +# Create an internal cache of copy of images when a bootable +# volume is created to eliminate fetch from glance and qemu- +# conversion on subsequent calls. (boolean value) +#sf_allow_template_caching=true + +# SolidFire API port. Useful if the device api is behind a +# proxy on a different port. (integer value) +#sf_api_port=443 + + +# +# Options defined in cinder.volume.drivers.srb +# + +# Comma-separated list of REST servers IP to connect to. (eg +# http://IP1/,http://IP2:81/path (string value) +#srb_base_urls= + + +# +# Options defined in cinder.volume.drivers.violin.v6000_common +# + +# IP address or hostname of mg-a (string value) +#gateway_mga= + +# IP address or hostname of mg-b (string value) +#gateway_mgb= + +# Use igroups to manage targets and initiators (boolean value) +#use_igroups=false + +# Global backend request timeout, in seconds (integer value) +#request_timeout=300 + + +# +# Options defined in cinder.volume.drivers.vmware.vmdk +# + +# IP address for connecting to VMware ESX/VC server. (string +# value) +#vmware_host_ip= + +# Username for authenticating with VMware ESX/VC server. +# (string value) +#vmware_host_username= + +# Password for authenticating with VMware ESX/VC server. +# (string value) +#vmware_host_password= + +# Optional VIM service WSDL Location e.g +# http:///vimService.wsdl. Optional over-ride to +# default location for bug work-arounds. (string value) +#vmware_wsdl_location= + +# Number of times VMware ESX/VC server API must be retried +# upon connection related issues. (integer value) +#vmware_api_retry_count=10 + +# The interval (in seconds) for polling remote tasks invoked +# on VMware ESX/VC server. (floating point value) +#vmware_task_poll_interval=0.5 + +# Name for the folder in the VC datacenter that will contain +# cinder volumes. (string value) +#vmware_volume_folder=cinder-volumes + +# Timeout in seconds for VMDK volume transfer between Cinder +# and Glance. (integer value) +#vmware_image_transfer_timeout_secs=7200 + +# Max number of objects to be retrieved per batch. Query +# results will be obtained in batches from the server and not +# in one shot. Server may still limit the count to something +# less than the configured value. (integer value) +#vmware_max_objects_retrieval=100 + +# Optional string specifying the VMware VC server version. The +# driver attempts to retrieve the version from VMware VC +# server. Set this configuration only if you want to override +# the VC server version. (string value) +#vmware_host_version= + +# Directory where virtual disks are stored during volume +# backup and restore. (string value) +#vmware_tmp_dir=/tmp + + +# +# Options defined in cinder.volume.drivers.windows.windows +# + +# Path to store VHD backed volumes (string value) +#windows_iscsi_lun_path=C:\iSCSIVirtualDisks + + +# +# Options defined in cinder.volume.drivers.xio +# + +# Default storage pool for volumes. (integer value) +#ise_storage_pool=1 + +# Raid level for ISE volumes. (integer value) +#ise_raid=1 + +# Number of retries (per port) when establishing connection to +# ISE management port. (integer value) +#ise_connection_retries=5 + +# Interval (secs) between retries. (integer value) +#ise_retry_interval=1 + +# Number on retries to get completion status after issuing a +# command to ISE. (integer value) +#ise_completion_retries=30 + + +# +# Options defined in cinder.volume.drivers.zfssa.zfssanfs +# + +# Data path IP address (string value) +#zfssa_data_ip= + +# HTTPS port number (string value) +#zfssa_https_port=443 + +# Options to be passed while mounting share over nfs (string +# value) +#zfssa_nfs_mount_options= + +# Storage pool name. (string value) +#zfssa_nfs_pool= + +# Project name. (string value) +#zfssa_nfs_project=NFSProject + +# Share name. (string value) +#zfssa_nfs_share=nfs_share + +# Data compression. (string value) +#zfssa_nfs_share_compression=off + +# Synchronous write bias-latency, throughput. (string value) +#zfssa_nfs_share_logbias=latency + +# REST connection timeout. (seconds) (integer value) +#zfssa_rest_timeout= + + +# +# Options defined in cinder.volume.manager +# + +# Driver to use for volume creation (string value) +volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver + +# Timeout for creating the volume to migrate to when +# performing volume migration (seconds) (integer value) +#migration_create_volume_timeout_secs=300 + +# Offload pending volume delete during volume service startup +# (boolean value) +#volume_service_inithost_offload=false + +# FC Zoning mode configured (string value) +#zoning_mode=none + +# User defined capabilities, a JSON formatted string +# specifying key/value pairs. The key/value pairs can be used +# by the CapabilitiesFilter to select between backends when +# requests specify volume types. For example, specifying a +# service level or the geographical location of a backend, +# then creating a volume type to allow the user to select by +# these different properties. (string value) +#extra_capabilities={} + + +[BRCD_FABRIC_EXAMPLE] + +# +# Options defined in cinder.zonemanager.drivers.brocade.brcd_fabric_opts +# + +# Management IP of fabric (string value) +#fc_fabric_address= + +# Fabric user ID (string value) +#fc_fabric_user= + +# Password for user (string value) +#fc_fabric_password= + +# Connecting port (integer value) +#fc_fabric_port=22 + +# overridden zoning policy (string value) +#zoning_policy=initiator-target + +# overridden zoning activation state (boolean value) +#zone_activate=true + +# overridden zone name prefix (string value) +#zone_name_prefix= + +# Principal switch WWN of the fabric (string value) +#principal_switch_wwn= + + +[CISCO_FABRIC_EXAMPLE] + +# +# Options defined in cinder.zonemanager.drivers.cisco.cisco_fabric_opts +# + +# Management IP of fabric (string value) +#cisco_fc_fabric_address= + +# Fabric user ID (string value) +#cisco_fc_fabric_user= + +# Password for user (string value) +#cisco_fc_fabric_password= + +# Connecting port (integer value) +#cisco_fc_fabric_port=22 + +# overridden zoning policy (string value) +#cisco_zoning_policy=initiator-target + +# overridden zoning activation state (boolean value) +#cisco_zone_activate=true + +# overridden zone name prefix (string value) +#cisco_zone_name_prefix= + +# VSAN of the Fabric (string value) +#cisco_zoning_vsan= + + +[database] + +# +# Options defined in oslo.db.concurrency +# + +# Enable the experimental use of thread pooling for all DB API +# calls (boolean value) +# Deprecated group/name - [DEFAULT]/dbapi_use_tpool +#use_tpool=false + +# The SQLAlchemy connection string to use to connect to the +# database. (string value) +connection=postgresql://{{ CINDER_DB_USER }}:{{ CINDER_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/cinder + + +[fc-zone-manager] + +# +# Options defined in cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver +# + +# Southbound connector for zoning operation (string value) +#brcd_sb_connector=cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI + + +# +# Options defined in cinder.zonemanager.drivers.cisco.cisco_fc_zone_driver +# + +# Southbound connector for zoning operation (string value) +#cisco_sb_connector=cinder.zonemanager.drivers.cisco.cisco_fc_zone_client_cli.CiscoFCZoneClientCLI + + +# +# Options defined in cinder.zonemanager.fc_zone_manager +# + +# FC Zone Driver responsible for zone management (string +# value) +#zone_driver=cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver + +# Zoning policy configured by user; valid values include +# "initiator-target" or "initiator" (string value) +#zoning_policy=initiator-target + +# Comma separated list of Fibre Channel fabric names. This +# list of names is used to retrieve other SAN credentials for +# connecting to each SAN fabric (string value) +#fc_fabric_names= + +# FC SAN Lookup Service (string value) +#fc_san_lookup_service=cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService + + +[keymgr] + +# +# Options defined in cinder.keymgr +# + +# The full class name of the key manager API class (string +# value) +#api_class=cinder.keymgr.conf_key_mgr.ConfKeyManager + + +# +# Options defined in cinder.keymgr.conf_key_mgr +# + +# Fixed key returned by key manager, specified in hex (string +# value) +#fixed_key= + + +# +# Options defined in cinder.keymgr.key_mgr +# + +# Authentication url for encryption service. (string value) +#encryption_auth_url=http://localhost:5000/v3 + +# Url for encryption service. (string value) +#encryption_api_url=http://localhost:9311/v1 + + +[oslo_concurrency] + +lock_path = /var/lock/cinder + +[keystone_authtoken] + +# +# Options defined in keystonemiddleware.auth_token +# + +# Complete public Identity API endpoint. (string value) +auth_uri=http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + +# API version of the admin Identity API endpoint. (string +# value) +#auth_version= + +# Do not handle authorization requests within the middleware, +# but delegate the authorization decision to downstream WSGI +# components. (boolean value) +#delay_auth_decision=false + +# Request timeout value for communicating with Identity API +# server. (integer value) +#http_connect_timeout= + +# How many times are we trying to reconnect when communicating +# with Identity API Server. (integer value) +#http_request_max_retries=3 + +# Env key for the swift cache. (string value) +#cache= + +# Required if identity server requires client certificate +# (string value) +#certfile= + +# Required if identity server requires client certificate +# (string value) +#keyfile= + +# A PEM encoded Certificate Authority to use when verifying +# HTTPs connections. Defaults to system CAs. (string value) +#cafile= + +# Verify HTTPS connections. (boolean value) +#insecure=false + +# Directory used to cache files related to PKI tokens. (string +# value) +#signing_dir= + +# Optionally specify a list of memcached server(s) to use for +# caching. If left undefined, tokens will instead be cached +# in-process. (list value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers= + +# In order to prevent excessive effort spent validating +# tokens, the middleware caches previously-seen tokens for a +# configurable duration (in seconds). Set to -1 to disable +# caching completely. (integer value) +#token_cache_time=300 + +# Determines the frequency at which the list of revoked tokens +# is retrieved from the Identity service (in seconds). A high +# number of revocation events combined with a low cache +# duration may significantly reduce performance. (integer +# value) +#revocation_cache_time=10 + +# (Optional) If defined, indicate whether token data should be +# authenticated or authenticated and encrypted. Acceptable +# values are MAC or ENCRYPT. If MAC, token data is +# authenticated (with HMAC) in the cache. If ENCRYPT, token +# data is encrypted and authenticated in the cache. If the +# value is not one of these options or empty, auth_token will +# raise an exception on initialization. (string value) +#memcache_security_strategy= + +# (Optional, mandatory if memcache_security_strategy is +# defined) This string is used for key derivation. (string +# value) +#memcache_secret_key= + +# (Optional) Number of seconds memcached server is considered +# dead before it is tried again. (integer value) +#memcache_pool_dead_retry=300 + +# (Optional) Maximum total number of open connections to every +# memcached server. (integer value) +#memcache_pool_maxsize=10 + +# (Optional) Socket timeout in seconds for communicating with +# a memcache server. (integer value) +#memcache_pool_socket_timeout=3 + +# (Optional) Number of seconds a connection to memcached is +# held unused in the pool before it is closed. (integer value) +#memcache_pool_unused_timeout=60 + +# (Optional) Number of seconds that an operation will wait to +# get a memcache client connection from the pool. (integer +# value) +#memcache_pool_conn_get_timeout=10 + +# (Optional) Use the advanced (eventlet safe) memcache client +# pool. The advanced pool will only work under python 2.x. +# (boolean value) +#memcache_use_advanced_pool=false + +# (Optional) Indicate whether to set the X-Service-Catalog +# header. If False, middleware will not ask for service +# catalog on token validation and will not set the X-Service- +# Catalog header. (boolean value) +#include_service_catalog=true + +# Used to control the use and type of token binding. Can be +# set to: "disabled" to not check token binding. "permissive" +# (default) to validate binding information if the bind type +# is of a form known to the server and ignore it if not. +# "strict" like "permissive" but if the bind type is unknown +# the token will be rejected. "required" any form of token +# binding is needed to be allowed. Finally the name of a +# binding method that must be present in tokens. (string +# value) +#enforce_token_bind=permissive + +# If true, the revocation list will be checked for cached +# tokens. This requires that PKI tokens are configured on the +# identity server. (boolean value) +#check_revocations_for_cached=false + +# Hash algorithms to use for hashing PKI tokens. This may be a +# single algorithm or multiple. The algorithms are those +# supported by Python standard hashlib.new(). The hashes will +# be tried in the order given, so put the preferred one first +# for performance. The result of the first hash will be stored +# in the cache. This will typically be set to multiple values +# only while migrating from a less secure algorithm to a more +# secure one. Once all the old tokens are expired this option +# should be set to a single value for better performance. +# (list value) +#hash_algorithms=md5 + + +[matchmaker_redis] + +# +# Options defined in oslo.messaging +# + +# Host to locate redis. (string value) +#host=127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port=6379 + +# Password for Redis server (optional). (string value) +#password= + + +[matchmaker_ring] + +# +# Options defined in oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile=/etc/oslo/matchmaker_ring.json + + +[oslo_messaging_amqp] + +# +# Options defined in oslo.messaging +# + +# address prefix used when sending to a specific server +# (string value) +#server_request_prefix=exclusive + +# address prefix used when broadcasting to all servers (string +# value) +#broadcast_prefix=broadcast + +# address prefix when sending to any server in group (string +# value) +#group_request_prefix=unicast + +# Name for the AMQP container (string value) +#container_name= + +# Timeout for inactive connections (in seconds) (integer +# value) +#idle_timeout=0 + +# Debug: dump AMQP frames to stdout (boolean value) +#trace=false + +# CA certificate PEM file for verifing server certificate +# (string value) +#ssl_ca_file= + +# Identifying certificate PEM file to present to clients +# (string value) +#ssl_cert_file= + +# Private key PEM file used to sign cert_file certificate +# (string value) +#ssl_key_file= + +# Password for decrypting ssl_key_file (if encrypted) (string +# value) +#ssl_key_password= + +# Accept clients using either SSL or plain TCP (boolean value) +#allow_insecure_clients=false + + +[oslo_messaging_qpid] + +# +# Options defined in oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues=false + +# Auto-delete queues in AMQP. (boolean value) +#amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +#rpc_conn_pool_size=30 + +# Qpid broker hostname. (string value) +#qpid_hostname=localhost + +# Qpid broker port. (integer value) +#qpid_port=5672 + +# Qpid HA cluster host:port pairs. (list value) +#qpid_hosts=$qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +#qpid_username= + +# Password for Qpid connection. (string value) +#qpid_password= + +# Space separated list of SASL mechanisms to use for auth. +# (string value) +#qpid_sasl_mechanisms= + +# Seconds between connection keepalive heartbeats. (integer +# value) +#qpid_heartbeat=60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +#qpid_protocol=tcp + +# Whether to disable the Nagle algorithm. (boolean value) +#qpid_tcp_nodelay=true + +# The number of prefetched messages held by receiver. (integer +# value) +#qpid_receiver_capacity=1 + +# The qpid topology version to use. Version 1 is what was +# originally used by impl_qpid. Version 2 includes some +# backwards-incompatible changes that allow broker federation +# to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. +# (integer value) +#qpid_topology_version=1 + + +[oslo_messaging_rabbit] + +# +# Options defined in oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues=false + +# Auto-delete queues in AMQP. (boolean value) +#amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +#rpc_conn_pool_size=30 + +# SSL version to use (valid only if SSL enabled). Valid values +# are TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may +# be available on some distributions. (string value) +#kombu_ssl_version= + +# SSL key file (valid only if SSL enabled). (string value) +#kombu_ssl_keyfile= + +# SSL cert file (valid only if SSL enabled). (string value) +#kombu_ssl_certfile= + +# SSL certification authority file (valid only if SSL +# enabled). (string value) +#kombu_ssl_ca_certs= + +# How long to wait before reconnecting in response to an AMQP +# consumer cancel notification. (floating point value) +#kombu_reconnect_delay=1.0 + +# The RabbitMQ broker address where a single node is used. +# (string value) +rabbit_host={{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. +# (integer value) +rabbit_port={{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +rabbit_hosts=$rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +#rabbit_use_ssl=false + +# The RabbitMQ userid. (string value) +rabbit_userid={{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +rabbit_password={{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +#rabbit_login_method=AMQPLAIN + +# The RabbitMQ virtual host. (string value) +#rabbit_virtual_host=/ + +# How frequently to retry connecting with RabbitMQ. (integer +# value) +#rabbit_retry_interval=1 + +# How long to backoff for between retries when connecting to +# RabbitMQ. (integer value) +#rabbit_retry_backoff=2 + +# Maximum number of RabbitMQ connection retries. Default is 0 +# (infinite retry count). (integer value) +#rabbit_max_retries=0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change +# this option, you must wipe the RabbitMQ database. (boolean +# value) +#rabbit_ha_queues=false + +# Number of seconds after which the Rabbit broker is +# considered down if heartbeat's keep-alive fails (0 disables +# the heartbeat, >0 enables it. Enabling heartbeats requires +# kombu>=3.0.7 and amqp>=1.4.0). EXPERIMENTAL (integer value) +#heartbeat_timeout_threshold=0 + +# How often times during the heartbeat_timeout_threshold we +# check the heartbeat. (integer value) +#heartbeat_rate=2 + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake +# (boolean value) +#fake_rabbit=false + + +[profiler] + +# +# Options defined in cinder.service +# + +# If False fully disable profiling feature. (boolean value) +#profiler_enabled=false + +# If False doesn't trace SQL requests. (boolean value) +#trace_sqlalchemy=false + + +[DEFAULT] + + +[keystone_authtoken] + +# +# From keystonemiddleware.auth_token +# + +# Complete public Identity API endpoint. (string value) +#auth_uri = + +# API version of the admin Identity API endpoint. (string value) +#auth_version = + +# Do not handle authorization requests within the middleware, but +# delegate the authorization decision to downstream WSGI components. +# (boolean value) +#delay_auth_decision = false + +# Request timeout value for communicating with Identity API server. +# (integer value) +#http_connect_timeout = + +# How many times are we trying to reconnect when communicating with +# Identity API Server. (integer value) +#http_request_max_retries = 3 + +# Env key for the swift cache. (string value) +#cache = + +# Required if identity server requires client certificate (string +# value) +#certfile = + +# Required if identity server requires client certificate (string +# value) +#keyfile = + +# A PEM encoded Certificate Authority to use when verifying HTTPs +# connections. Defaults to system CAs. (string value) +#cafile = + +# Verify HTTPS connections. (boolean value) +#insecure = false + +# Directory used to cache files related to PKI tokens. (string value) +#signing_dir = + +# Optionally specify a list of memcached server(s) to use for caching. +# If left undefined, tokens will instead be cached in-process. (list +# value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers = + +# In order to prevent excessive effort spent validating tokens, the +# middleware caches previously-seen tokens for a configurable duration +# (in seconds). Set to -1 to disable caching completely. (integer +# value) +#token_cache_time = 300 + +# Determines the frequency at which the list of revoked tokens is +# retrieved from the Identity service (in seconds). A high number of +# revocation events combined with a low cache duration may +# significantly reduce performance. (integer value) +#revocation_cache_time = 10 + +# (Optional) If defined, indicate whether token data should be +# authenticated or authenticated and encrypted. Acceptable values are +# MAC or ENCRYPT. If MAC, token data is authenticated (with HMAC) in +# the cache. If ENCRYPT, token data is encrypted and authenticated in +# the cache. If the value is not one of these options or empty, +# auth_token will raise an exception on initialization. (string value) +#memcache_security_strategy = + +# (Optional, mandatory if memcache_security_strategy is defined) This +# string is used for key derivation. (string value) +#memcache_secret_key = + +# (Optional) Number of seconds memcached server is considered dead +# before it is tried again. (integer value) +#memcache_pool_dead_retry = 300 + +# (Optional) Maximum total number of open connections to every +# memcached server. (integer value) +#memcache_pool_maxsize = 10 + +# (Optional) Socket timeout in seconds for communicating with a +# memcache server. (integer value) +#memcache_pool_socket_timeout = 3 + +# (Optional) Number of seconds a connection to memcached is held +# unused in the pool before it is closed. (integer value) +#memcache_pool_unused_timeout = 60 + +# (Optional) Number of seconds that an operation will wait to get a +# memcache client connection from the pool. (integer value) +#memcache_pool_conn_get_timeout = 10 + +# (Optional) Use the advanced (eventlet safe) memcache client pool. +# The advanced pool will only work under python 2.x. (boolean value) +#memcache_use_advanced_pool = false + +# (Optional) Indicate whether to set the X-Service-Catalog header. If +# False, middleware will not ask for service catalog on token +# validation and will not set the X-Service-Catalog header. (boolean +# value) +#include_service_catalog = true + +# Used to control the use and type of token binding. Can be set to: +# "disabled" to not check token binding. "permissive" (default) to +# validate binding information if the bind type is of a form known to +# the server and ignore it if not. "strict" like "permissive" but if +# the bind type is unknown the token will be rejected. "required" any +# form of token binding is needed to be allowed. Finally the name of a +# binding method that must be present in tokens. (string value) +#enforce_token_bind = permissive + +# If true, the revocation list will be checked for cached tokens. This +# requires that PKI tokens are configured on the identity server. +# (boolean value) +#check_revocations_for_cached = false + +# Hash algorithms to use for hashing PKI tokens. This may be a single +# algorithm or multiple. The algorithms are those supported by Python +# standard hashlib.new(). The hashes will be tried in the order given, +# so put the preferred one first for performance. The result of the +# first hash will be stored in the cache. This will typically be set +# to multiple values only while migrating from a less secure algorithm +# to a more secure one. Once all the old tokens are expired this +# option should be set to a single value for better performance. (list +# value) +#hash_algorithms = md5 + +# Prefix to prepend at the beginning of the path. Deprecated, use +# identity_uri. (string value) +#auth_admin_prefix = + +# Host providing the admin Identity API endpoint. Deprecated, use +# identity_uri. (string value) +#auth_host = 127.0.0.1 + +# Port of the admin Identity API endpoint. Deprecated, use +# identity_uri. (integer value) +#auth_port = 35357 + +# Protocol of the admin Identity API endpoint (http or https). +# Deprecated, use identity_uri. (string value) +#auth_protocol = https + +# Complete admin Identity API endpoint. This should specify the +# unversioned root endpoint e.g. https://localhost:35357/ (string +# value) +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 + +# This option is deprecated and may be removed in a future release. +# Single shared secret with the Keystone configuration used for +# bootstrapping a Keystone installation, or otherwise bypassing the +# normal authentication process. This option should not be used, use +# `admin_user` and `admin_password` instead. (string value) +#admin_token = + +# Service username. (string value) +admin_user = {{ CINDER_SERVICE_USER }} + +# Service user password. (string value) +admin_password = {{ CINDER_SERVICE_PASSWORD }} + +# Service tenant name. (string value) +admin_tenant_name = service diff --git a/old/install-files/openstack/usr/share/openstack/extras/00-disable-device.network b/old/install-files/openstack/usr/share/openstack/extras/00-disable-device.network new file mode 100644 index 00000000..8e2532d0 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/extras/00-disable-device.network @@ -0,0 +1,2 @@ +[Match] +Name={{ item }} diff --git a/old/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network b/old/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network new file mode 100644 index 00000000..6fdbfd8d --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network @@ -0,0 +1,5 @@ +[Match] +Name={{ item }} + +[Network] +DHCP=yes diff --git a/old/install-files/openstack/usr/share/openstack/glance.yml b/old/install-files/openstack/usr/share/openstack/glance.yml new file mode 100644 index 00000000..4d642b6c --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/glance.yml @@ -0,0 +1,92 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/glance.conf" + tasks: + - name: Create the glance user. + user: + name: glance + comment: Openstack Glance Daemons + shell: /sbin/nologin + home: /var/lib/glance + + - name: Create the /var folders for glance + file: + path: "{{ item }}" + state: directory + owner: glance + group: glance + with_items: + - /var/run/glance + - /var/lock/glance + - /var/log/glance + - /var/lib/glance + - /var/lib/glance/images + - /var/lib/glance/image-cache + + - name: Create /etc/glance directory + file: + path: /etc/glance + state: directory + + - name: Add the configuration needed for glance in /etc/glance using templates + template: + src: /usr/share/openstack/glance/{{ item }} + dest: /etc/glance/{{ item }} + with_lines: + - cd /usr/share/openstack/glance && find -type f + + - name: Create glance service user in service tenant + keystone_user: + user: "{{ GLANCE_SERVICE_USER }}" + password: "{{ GLANCE_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to glances service user in the service tenant + keystone_user: + role: admin + user: "{{ GLANCE_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add glance endpoint + keystone_service: + name: glance + type: image + description: Openstack Image Service + publicurl: http://{{ ansible_hostname }}:9292 + internalurl: http://{{ CONTROLLER_HOST_ADDRESS }}:9292 + adminurl: http://{{ CONTROLLER_HOST_ADDRESS }}:9292 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for glance + postgresql_user: + name: "{{ GLANCE_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + password: "{{ GLANCE_DB_PASSWORD }}" + sudo: yes + sudo_user: glance + + - name: Create database for glance services + postgresql_db: + name: glance + owner: "{{ GLANCE_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + sudo: yes + sudo_user: glance + + - name: Initiate glance database + command: glance-manage db_sync + sudo: yes + sudo_user: glance + + - name: Enable and start openstack-glance services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - openstack-glance-api.service + - openstack-glance-registry.service diff --git a/old/install-files/openstack/usr/share/openstack/glance/glance-api.conf b/old/install-files/openstack/usr/share/openstack/glance/glance-api.conf new file mode 100644 index 00000000..b6a4723d --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/glance/glance-api.conf @@ -0,0 +1,813 @@ +[DEFAULT] +# Show more verbose log output (sets INFO log level output) +#verbose = False + +# Show debugging output in logs (sets DEBUG log level output) +#debug = False + +# Maximum image size (in bytes) that may be uploaded through the +# Glance API server. Defaults to 1 TB. +# WARNING: this value should only be increased after careful consideration +# and must be set to a value under 8 EB (9223372036854775808). +#image_size_cap = 1099511627776 + +# Address to bind the API server +bind_host = 0.0.0.0 + +# Port the bind the API server to +bind_port = 9292 + +# Log to this file. Make sure you do not set the same log file for both the API +# and registry servers! +# +# If `log_file` is omitted and `use_syslog` is false, then log messages are +# sent to stdout as a fallback. +# log_file = /var/log/glance/api.log + +# Backlog requests when creating socket +backlog = 4096 + +# TCP_KEEPIDLE value in seconds when creating socket. +# Not supported on OS X. +#tcp_keepidle = 600 + +# API to use for accessing data. Default value points to sqlalchemy +# package, it is also possible to use: glance.db.registry.api +# data_api = glance.db.sqlalchemy.api + +# The number of child process workers that will be +# created to service API requests. The default will be +# equal to the number of CPUs available. (integer value) +#workers = 4 + +# Maximum line size of message headers to be accepted. +# max_header_line may need to be increased when using large tokens +# (typically those generated by the Keystone v3 API with big service +# catalogs) +# max_header_line = 16384 + +# Role used to identify an authenticated user as administrator +#admin_role = admin + +# Allow unauthenticated users to access the API with read-only +# privileges. This only applies when using ContextMiddleware. +#allow_anonymous_access = False + +# Allow access to version 1 of glance api +#enable_v1_api = True + +# Allow access to version 2 of glance api +#enable_v2_api = True + +# Return the URL that references where the data is stored on +# the backend storage system. For example, if using the +# file system store a URL of 'file:///path/to/image' will +# be returned to the user in the 'direct_url' meta-data field. +# The default value is false. +#show_image_direct_url = False + +# Send headers containing user and tenant information when making requests to +# the v1 glance registry. This allows the registry to function as if a user is +# authenticated without the need to authenticate a user itself using the +# auth_token middleware. +# The default value is false. +#send_identity_headers = False + +# Supported values for the 'container_format' image attribute +#container_formats=ami,ari,aki,bare,ovf,ova + +# Supported values for the 'disk_format' image attribute +#disk_formats=ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso + +# Property Protections config file +# This file contains the rules for property protections and the roles/policies +# associated with it. +# If this config value is not specified, by default, property protections +# won't be enforced. +# If a value is specified and the file is not found, then the glance-api +# service will not start. +#property_protection_file = + +# Specify whether 'roles' or 'policies' are used in the +# property_protection_file. +# The default value for property_protection_rule_format is 'roles'. +#property_protection_rule_format = roles + +# This value sets what strategy will be used to determine the image location +# order. Currently two strategies are packaged with Glance 'location_order' +# and 'store_type'. +#location_strategy = location_order + + +# Public url to use for versions endpoint. The default is None, +# which will use the request's host_url attribute to populate the URL base. +# If Glance is operating behind a proxy, you will want to change this to +# represent the proxy's URL. +#public_endpoint= + +# http_keepalive option. If False, server will return the header +# "Connection: close", If True, server will return "Connection: Keep-Alive" +# in its responses. In order to close the client socket connection +# explicitly after the response is sent and read successfully by the client, +# you simply have to set this option to False when you create a wsgi server. +#http_keepalive = True + +# ================= Syslog Options ============================ + +# Send logs to syslog (/dev/log) instead of to file specified +# by `log_file` +use_syslog = True + +# Facility to use. If unset defaults to LOG_USER. +#syslog_log_facility = LOG_LOCAL0 + +# ================= SSL Options =============================== + +# Certificate file to use when starting API server securely +#cert_file = /path/to/certfile + +# Private key file to use when starting API server securely +#key_file = /path/to/keyfile + +# CA certificate file to use to verify connecting clients +#ca_file = /path/to/cafile + +# ================= Security Options ========================== + +# AES key for encrypting store 'location' metadata, including +# -- if used -- Swift or S3 credentials +# Should be set to a random string of length 16, 24 or 32 bytes +#metadata_encryption_key = <16, 24 or 32 char registry metadata key> + + +# Digest algorithm which will be used for digital signature, the default is +# sha1 in Kilo for a smooth upgrade process, and it will be updated with +# sha256 in next release(L). Use command +# "openssl list-message-digest-algorithms" to get the available algorithms +# supported by the version of OpenSSL on the platform. Examples are 'sha1', +# 'sha256', 'sha512', etc. +#digest_algorithm = sha1 + +# ============ Registry Options =============================== + +# Address to find the registry server +registry_host = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Port the registry server is listening on +registry_port = 9191 + +# What protocol to use when connecting to the registry server? +# Set to https for secure HTTP communication +registry_client_protocol = http + +# The path to the key file to use in SSL connections to the +# registry server, if any. Alternately, you may set the +# GLANCE_CLIENT_KEY_FILE environ variable to a filepath of the key file +#registry_client_key_file = /path/to/key/file + +# The path to the cert file to use in SSL connections to the +# registry server, if any. Alternately, you may set the +# GLANCE_CLIENT_CERT_FILE environ variable to a filepath of the cert file +#registry_client_cert_file = /path/to/cert/file + +# The path to the certifying authority cert file to use in SSL connections +# to the registry server, if any. Alternately, you may set the +# GLANCE_CLIENT_CA_FILE environ variable to a filepath of the CA cert file +#registry_client_ca_file = /path/to/ca/file + +# When using SSL in connections to the registry server, do not require +# validation via a certifying authority. This is the registry's equivalent of +# specifying --insecure on the command line using glanceclient for the API +# Default: False +#registry_client_insecure = False + +# The period of time, in seconds, that the API server will wait for a registry +# request to complete. A value of '0' implies no timeout. +# Default: 600 +#registry_client_timeout = 600 + +# Enable DEBUG log messages from sqlalchemy which prints every database +# query and response. +# Default: False +#sqlalchemy_debug = True + +# Pass the user's token through for API requests to the registry. +# Default: True +#use_user_token = True + +# If 'use_user_token' is not in effect then admin credentials +# can be specified. Requests to the registry on behalf of +# the API will use these credentials. +# Admin user name +#admin_user = None +# Admin password +#admin_password = None +# Admin tenant name +#admin_tenant_name = None +# Keystone endpoint +#auth_url = None +# Keystone region +#auth_region = None +# Auth strategy +#auth_strategy = keystone + +# ============ Notification System Options ===================== + +# Driver or drivers to handle sending notifications. Set to +# 'messaging' to send notifications to a message queue. +notification_driver = messagingv2 + +# Default publisher_id for outgoing notifications. +# default_publisher_id = image.localhost + +# List of disabled notifications. A notification can be given either as a +# notification type to disable a single event, or as a notification group +# prefix to disable all events within a group. +# Example: if this config option is set to +# ["image.create", "metadef_namespace"], then "image.create" notification will +# not be sent after image is created and none of the notifications for +# metadefinition namespaces will be sent. +# disabled_notifications = [] + +# Messaging driver used for 'messaging' notifications driver +rpc_backend = 'rabbit' + +# Configuration options if sending notifications via rabbitmq (these are +# the defaults) +rabbit_host = {{ RABBITMQ_HOST }} +rabbit_port = {{ RABBITMQ_PORT }} +rabbit_use_ssl = false +rabbit_userid = {{ RABBITMQ_USER }} +rabbit_password = {{ RABBITMQ_PASSWORD }} +rabbit_virtual_host = / +rabbit_notification_exchange = glance +rabbit_notification_topic = notifications +rabbit_durable_queues = False + +# Configuration options if sending notifications via Qpid (these are +# the defaults) +#qpid_notification_exchange = glance +#qpid_notification_topic = notifications +#qpid_hostname = localhost +#qpid_port = 5672 +#qpid_username = +#qpid_password = +#qpid_sasl_mechanisms = +#qpid_reconnect_timeout = 0 +#qpid_reconnect_limit = 0 +#qpid_reconnect_interval_min = 0 +#qpid_reconnect_interval_max = 0 +#qpid_reconnect_interval = 0 +#qpid_heartbeat = 5 +# Set to 'ssl' to enable SSL +#qpid_protocol = tcp +#qpid_tcp_nodelay = True + +# ============ Delayed Delete Options ============================= + +# Turn on/off delayed delete +delayed_delete = False + +# Delayed delete time in seconds +scrub_time = 43200 + +# Directory that the scrubber will use to remind itself of what to delete +# Make sure this is also set in glance-scrubber.conf +scrubber_datadir = /var/lib/glance/scrubber + +# =============== Quota Options ================================== + +# The maximum number of image members allowed per image +#image_member_quota = 128 + +# The maximum number of image properties allowed per image +#image_property_quota = 128 + +# The maximum number of tags allowed per image +#image_tag_quota = 128 + +# The maximum number of locations allowed per image +#image_location_quota = 10 + +# Set a system wide quota for every user. This value is the total number +# of bytes that a user can use across all storage systems. A value of +# 0 means unlimited. +#user_storage_quota = 0 + +# =============== Image Cache Options ============================= + +# Base directory that the Image Cache uses +image_cache_dir = /var/lib/glance/image-cache/ + +# =============== Policy Options ================================== + +[oslo_policy] +# The JSON file that defines policies. +# Deprecated group/name - [DEFAULT]/policy_file +#policy_file = policy.json + +# Default rule. Enforced when a requested rule is not found. +# Deprecated group/name - [DEFAULT]/policy_default_rule +#policy_default_rule = default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path +# defined by the config_dir option, or absolute paths. +# The file defined by policy_file must exist for these +# directories to be searched. +# Deprecated group/name - [DEFAULT]/policy_dirs +#policy_dirs = policy.d + +# =============== Database Options ================================= + +[database] +# The file name to use with SQLite (string value) +#sqlite_db = oslo.sqlite + +# If True, SQLite uses synchronous mode (boolean value) +#sqlite_synchronous = True + +# The backend to use for db (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend = sqlalchemy + +# The SQLAlchemy connection string used to connect to the +# database (string value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +#connection = +connection=postgresql://{{ GLANCE_DB_USER }}:{{ GLANCE_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/glance + +# The SQL mode to be used for MySQL sessions. This option, +# including the default, overrides any server-set SQL mode. To +# use whatever SQL mode is set by the server configuration, +# set this to no value. Example: mysql_sql_mode= (string +# value) +#mysql_sql_mode = TRADITIONAL + +# Timeout before idle sql connections are reaped (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout = 3600 + +# Minimum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size = + +# Maximum db connection retries during startup. (setting -1 +# implies an infinite retry count) (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries = 10 + +# Interval between retries of opening a sql connection +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval = 10 + +# If set, use this value for max_overflow with sqlalchemy +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow = + +# Verbosity of SQL debugging information. 0=None, +# 100=Everything (integer value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug = 0 + +# Add python stack traces to SQL as comment strings (boolean +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace = False + +# If set, use this value for pool_timeout with sqlalchemy +# (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout = + +# Enable the experimental use of database reconnect on +# connection lost (boolean value) +#use_db_reconnect = False + +# seconds between db connection retries (integer value) +#db_retry_interval = 1 + +# Whether to increase interval between db connection retries, +# up to db_max_retry_interval (boolean value) +#db_inc_retry_interval = True + +# max seconds between db connection retries, if +# db_inc_retry_interval is enabled (integer value) +#db_max_retry_interval = 10 + +# maximum db connection retries before error is raised. +# (setting -1 implies an infinite retry count) (integer value) +#db_max_retries = 20 + +[oslo_concurrency] + +# Enables or disables inter-process locks. (boolean value) +# Deprecated group/name - [DEFAULT]/disable_process_locking +#disable_process_locking = false + +# Directory to use for lock files. For security, the specified +# directory should only be writable by the user running the processes +# that need locking. It could be read from environment variable +# OSLO_LOCK_PATH. This setting needs to be the same for both +# glance-scrubber and glance-api service. Default to a temp directory. +# Deprecated group/name - [DEFAULT]/lock_path (string value) +#lock_path = /tmp + +[keystone_authtoken] +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 +admin_tenant_name = service +admin_user = {{ GLANCE_SERVICE_USER }} +admin_password = {{ GLANCE_SERVICE_PASSWORD }} +revocation_cache_time = 10 + +[paste_deploy] +# Name of the paste configuration file that defines the available pipelines +#config_file = glance-api-paste.ini + +# Partial name of a pipeline in your paste configuration file with the +# service name removed. For example, if your paste section name is +# [pipeline:glance-api-keystone], you would configure the flavor below +# as 'keystone'. +flavor=keystone + +[store_type_location_strategy] +# The scheme list to use to get store preference order. The scheme must be +# registered by one of the stores defined by the 'stores' config option. +# This option will be applied when you using 'store_type' option as image +# location strategy defined by the 'location_strategy' config option. +#store_type_preference = + +[profiler] +# If False fully disable profiling feature. +#enabled = False + +# If False doesn't trace SQL requests. +#trace_sqlalchemy = False + +[task] +# ================= Glance Tasks Options ============================ + +# Specifies how long (in hours) a task is supposed to live in the tasks DB +# after succeeding or failing before getting soft-deleted. +# The default value for task_time_to_live is 48 hours. +# task_time_to_live = 48 + +# Specifies which task executor to be used to run the task scripts. +# The default value for task_executor is taskflow. +# task_executor = taskflow + +# Work dir for asynchronous task operations. The directory set here +# will be used to operate over images - normally before they are +# imported in the destination store. When providing work dir, make sure +# enough space is provided for concurrent tasks to run efficiently +# without running out of space. A rough estimation can be done by +# multiplying the number of `max_workers` - or the N of workers running +# - by an average image size (e.g 500MB). The image size estimation +# should be done based on the average size in your deployment. Note that +# depending on the tasks running you may need to multiply this number by +# some factor depending on what the task does. For example, you may want +# to double the available size if image conversion is enabled. All this +# being said, remember these are just estimations and you should do them +# based on the worst case scenario and be prepared to act in case they +# were wrong. +# work_dir=None + +# Specifies the maximum number of eventlet threads which can be spun up by +# the eventlet based task executor to perform execution of Glance tasks. +# DEPRECATED: Use [taskflow_executor]/max_workers instead. +# eventlet_executor_pool_size = 1000 + +[taskflow_executor] +# The mode in which the engine will run. Can be 'default', 'serial', +# 'parallel' or 'worker-based' +#engine_mode = serial + +# The number of parallel activities executed at the same time by +# the engine. The value can be greater than one when the engine mode is +# 'parallel' or 'worker-based', otherwise this value will be ignored. +#max_workers = 10 + +[glance_store] +# List of which store classes and store class locations are +# currently known to glance at startup. +# Deprecated group/name - [DEFAULT]/known_stores +# Existing but disabled stores: +# glance.store.rbd.Store, +# glance.store.s3.Store, +# glance.store.swift.Store, +# glance.store.sheepdog.Store, +# glance.store.cinder.Store, +# glance.store.gridfs.Store, +# glance.store.vmware_datastore.Store, +#stores = glance.store.filesystem.Store, +# glance.store.http.Store + +# Which backend scheme should Glance use by default is not specified +# in a request to add a new image to Glance? Known schemes are determined +# by the stores option. +# Deprecated group/name - [DEFAULT]/default_store +# Default: 'file' +default_store = file + +# ============ Filesystem Store Options ======================== + +# Directory that the Filesystem backend store +# writes image data to +filesystem_store_datadir = /var/lib/glance/images/ + +# A list of directories where image data can be stored. +# This option may be specified multiple times for specifying multiple store +# directories. Either one of filesystem_store_datadirs or +# filesystem_store_datadir option is required. A priority number may be given +# after each directory entry, separated by a ":". +# When adding an image, the highest priority directory will be selected, unless +# there is not enough space available in cases where the image size is already +# known. If no priority is given, it is assumed to be zero and the directory +# will be considered for selection last. If multiple directories have the same +# priority, then the one with the most free space available is selected. +# If same store is specified multiple times then BadStoreConfiguration +# exception will be raised. +#filesystem_store_datadirs = /var/lib/glance/images/:1 + +# A path to a JSON file that contains metadata describing the storage +# system. When show_multiple_locations is True the information in this +# file will be returned with any location that is contained in this +# store. +#filesystem_store_metadata_file = None + +# ============ Swift Store Options ============================= + +# Version of the authentication service to use +# Valid versions are '2' for keystone and '1' for swauth and rackspace +swift_store_auth_version = 2 + +# Address where the Swift authentication service lives +# Valid schemes are 'http://' and 'https://' +# If no scheme specified, default to 'https://' +# For swauth, use something like '127.0.0.1:8080/v1.0/' +swift_store_auth_address = 127.0.0.1:5000/v2.0/ + +# User to authenticate against the Swift authentication service +# If you use Swift authentication service, set it to 'account':'user' +# where 'account' is a Swift storage account and 'user' +# is a user in that account +swift_store_user = jdoe:jdoe + +# Auth key for the user authenticating against the +# Swift authentication service +swift_store_key = a86850deb2742ec3cb41518e26aa2d89 + +# Container within the account that the account should use +# for storing images in Swift +swift_store_container = glance + +# Do we create the container if it does not exist? +swift_store_create_container_on_put = False + +# What size, in MB, should Glance start chunking image files +# and do a large object manifest in Swift? By default, this is +# the maximum object size in Swift, which is 5GB +swift_store_large_object_size = 5120 + +# swift_store_config_file = glance-swift.conf +# This file contains references for each of the configured +# Swift accounts/backing stores. If used, this option can prevent +# credentials being stored in the database. Using Swift references +# is disabled if this config is left blank. + +# The reference to the default Swift parameters to use for adding new images. +# default_swift_reference = 'ref1' + +# When doing a large object manifest, what size, in MB, should +# Glance write chunks to Swift? This amount of data is written +# to a temporary disk buffer during the process of chunking +# the image file, and the default is 200MB +swift_store_large_object_chunk_size = 200 + +# If set, the configured endpoint will be used. If None, the storage URL +# from the auth response will be used. The location of an object is +# obtained by appending the container and object to the configured URL. +# +# swift_store_endpoint = https://www.example.com/v1/not_a_container +#swift_store_endpoint = + +# If set to True enables multi-tenant storage mode which causes Glance images +# to be stored in tenant specific Swift accounts. +#swift_store_multi_tenant = False + +# If set to an integer value between 1 and 32, a single-tenant store will +# use multiple containers to store images. If set to the default value of 0, +# only a single container will be used. Multi-tenant stores are not affected +# by this option. The max number of containers that will be used to store +# images is approximately 16^N where N is the value of this option. Discuss +# the impact of this with your swift deployment team, as this option is only +# beneficial in the largest of deployments where swift rate limiting can lead +# to unwanted throttling on a single container. +#swift_store_multiple_containers_seed = 0 + +# A list of swift ACL strings that will be applied as both read and +# write ACLs to the containers created by Glance in multi-tenant +# mode. This grants the specified tenants/users read and write access +# to all newly created image objects. The standard swift ACL string +# formats are allowed, including: +# : +# : +# *: +# Multiple ACLs can be combined using a comma separated list, for +# example: swift_store_admin_tenants = service:glance,*:admin +#swift_store_admin_tenants = + +# The region of the swift endpoint to be used for single tenant. This setting +# is only necessary if the tenant has multiple swift endpoints. +#swift_store_region = + +# If set to False, disables SSL layer compression of https swift requests. +# Setting to 'False' may improve performance for images which are already +# in a compressed format, eg qcow2. If set to True, enables SSL layer +# compression (provided it is supported by the target swift proxy). +#swift_store_ssl_compression = True + +# The number of times a Swift download will be retried before the +# request fails +#swift_store_retry_get_count = 0 + +# Bypass SSL verification for Swift +#swift_store_auth_insecure = False + +# The path to a CA certificate bundle file to use for SSL verification when +# communicating with Swift. +#swift_store_cacert = + +# ============ S3 Store Options ============================= + +# Address where the S3 authentication service lives +# Valid schemes are 'http://' and 'https://' +# If no scheme specified, default to 'http://' +s3_store_host = s3.amazonaws.com + +# User to authenticate against the S3 authentication service +s3_store_access_key = <20-char AWS access key> + +# Auth key for the user authenticating against the +# S3 authentication service +s3_store_secret_key = <40-char AWS secret key> + +# Container within the account that the account should use +# for storing images in S3. Note that S3 has a flat namespace, +# so you need a unique bucket name for your glance images. An +# easy way to do this is append your AWS access key to "glance". +# S3 buckets in AWS *must* be lowercased, so remember to lowercase +# your AWS access key if you use it in your bucket name below! +s3_store_bucket = glance + +# Do we create the bucket if it does not exist? +s3_store_create_bucket_on_put = False + +# When sending images to S3, the data will first be written to a +# temporary buffer on disk. By default the platform's temporary directory +# will be used. If required, an alternative directory can be specified here. +#s3_store_object_buffer_dir = /path/to/dir + +# When forming a bucket url, boto will either set the bucket name as the +# subdomain or as the first token of the path. Amazon's S3 service will +# accept it as the subdomain, but Swift's S3 middleware requires it be +# in the path. Set this to 'path' or 'subdomain' - defaults to 'subdomain'. +#s3_store_bucket_url_format = subdomain + +# Size, in MB, should S3 start chunking image files +# and do a multipart upload in S3. The default is 100MB. +#s3_store_large_object_size = 100 + +# Multipart upload part size, in MB, should S3 use when uploading +# parts. The size must be greater than or equal to +# 5MB. The default is 10MB. +#s3_store_large_object_chunk_size = 10 + +# The number of thread pools to perform a multipart upload +# in S3. The default is 10. +#s3_store_thread_pools = 10 + +# ============ RBD Store Options ============================= + +# Ceph configuration file path +# If using cephx authentication, this file should +# include a reference to the right keyring +# in a client. section +#rbd_store_ceph_conf = /etc/ceph/ceph.conf + +# RADOS user to authenticate as (only applicable if using cephx) +# If , a default will be chosen based on the client. section +# in rbd_store_ceph_conf +#rbd_store_user = + +# RADOS pool in which images are stored +#rbd_store_pool = images + +# RADOS images will be chunked into objects of this size (in megabytes). +# For best performance, this should be a power of two +#rbd_store_chunk_size = 8 + +# ============ Sheepdog Store Options ============================= + +sheepdog_store_address = localhost + +sheepdog_store_port = 7000 + +# Images will be chunked into objects of this size (in megabytes). +# For best performance, this should be a power of two +sheepdog_store_chunk_size = 64 + +# ============ Cinder Store Options =============================== + +# Info to match when looking for cinder in the service catalog +# Format is : separated values of the form: +# :: (string value) +#cinder_catalog_info = volume:cinder:publicURL + +# Override service catalog lookup with template for cinder endpoint +# e.g. http://localhost:8776/v1/%(project_id)s (string value) +#cinder_endpoint_template = + +# Region name of this node (string value) +#os_region_name = + +# Location of ca certicates file to use for cinder client requests +# (string value) +#cinder_ca_certificates_file = + +# Number of cinderclient retries on failed http calls (integer value) +#cinder_http_retries = 3 + +# Allow to perform insecure SSL requests to cinder (boolean value) +#cinder_api_insecure = False + +# ============ VMware Datastore Store Options ===================== + +# ESX/ESXi or vCenter Server target system. +# The server value can be an IP address or a DNS name +# e.g. 127.0.0.1, 127.0.0.1:443, www.vmware-infra.com +#vmware_server_host = + +# Server username (string value) +#vmware_server_username = + +# Server password (string value) +#vmware_server_password = + +# Inventory path to a datacenter (string value) +# Value optional when vmware_server_ip is an ESX/ESXi host: if specified +# should be `ha-datacenter`. +# Deprecated in favor of vmware_datastores. +#vmware_datacenter_path = + +# Datastore associated with the datacenter (string value) +# Deprecated in favor of vmware_datastores. +#vmware_datastore_name = + +# A list of datastores where the image can be stored. +# This option may be specified multiple times for specifying multiple +# datastores. Either one of vmware_datastore_name or vmware_datastores is +# required. The datastore name should be specified after its datacenter +# path, separated by ":". An optional weight may be given after the datastore +# name, separated again by ":". Thus, the required format becomes +# ::. +# When adding an image, the datastore with highest weight will be selected, +# unless there is not enough free space available in cases where the image size +# is already known. If no weight is given, it is assumed to be zero and the +# directory will be considered for selection last. If multiple datastores have +# the same weight, then the one with the most free space available is selected. +#vmware_datastores = + +# The number of times we retry on failures +# e.g., socket error, etc (integer value) +#vmware_api_retry_count = 10 + +# The interval used for polling remote tasks +# invoked on VMware ESX/VC server in seconds (integer value) +#vmware_task_poll_interval = 5 + +# Absolute path of the folder containing the images in the datastore +# (string value) +#vmware_store_image_dir = /openstack_glance + +# Allow to perform insecure SSL requests to the target system (boolean value) +#vmware_api_insecure = False diff --git a/old/install-files/openstack/usr/share/openstack/glance/glance-registry.conf b/old/install-files/openstack/usr/share/openstack/glance/glance-registry.conf new file mode 100644 index 00000000..40993d8d --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/glance/glance-registry.conf @@ -0,0 +1,268 @@ +[DEFAULT] +# Show more verbose log output (sets INFO log level output) +#verbose = False + +# Show debugging output in logs (sets DEBUG log level output) +#debug = False + +# Address to bind the registry server +bind_host = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Port the bind the registry server to +bind_port = 9191 + +# Log to this file. Make sure you do not set the same log file for both the API +# and registry servers! +# +# If `log_file` is omitted and `use_syslog` is false, then log messages are +# sent to stdout as a fallback. +# log_file = /var/log/glance/registry.log + +# Backlog requests when creating socket +backlog = 4096 + +# TCP_KEEPIDLE value in seconds when creating socket. +# Not supported on OS X. +#tcp_keepidle = 600 + +# API to use for accessing data. Default value points to sqlalchemy +# package. +#data_api = glance.db.sqlalchemy.api + +# The number of child process workers that will be +# created to service Registry requests. The default will be +# equal to the number of CPUs available. (integer value) +#workers = None + +# Enable Registry API versions individually or simultaneously +#enable_v1_registry = True +#enable_v2_registry = True + +# Limit the api to return `param_limit_max` items in a call to a container. If +# a larger `limit` query param is provided, it will be reduced to this value. +api_limit_max = 1000 + +# If a `limit` query param is not provided in an api request, it will +# default to `limit_param_default` +limit_param_default = 25 + +# Role used to identify an authenticated user as administrator +#admin_role = admin + +# Enable DEBUG log messages from sqlalchemy which prints every database +# query and response. +# Default: False +#sqlalchemy_debug = True + +# http_keepalive option. If False, server will return the header +# "Connection: close", If True, server will return "Connection: Keep-Alive" +# in its responses. In order to close the client socket connection +# explicitly after the response is sent and read successfully by the client, +# you simply have to set this option to False when you create a wsgi server. +#http_keepalive = True + +# ================= Syslog Options ============================ + +# Send logs to syslog (/dev/log) instead of to file specified +# by `log_file` +use_syslog = True + +# Facility to use. If unset defaults to LOG_USER. +#syslog_log_facility = LOG_LOCAL1 + +# ================= SSL Options =============================== + +# Certificate file to use when starting registry server securely +#cert_file = /path/to/certfile + +# Private key file to use when starting registry server securely +#key_file = /path/to/keyfile + +# CA certificate file to use to verify connecting clients +#ca_file = /path/to/cafile + +# ============ Notification System Options ===================== + +# Driver or drivers to handle sending notifications. Set to +# 'messaging' to send notifications to a message queue. +notification_driver = messagingv2 + +# Default publisher_id for outgoing notifications. +# default_publisher_id = image.localhost + +# Messaging driver used for 'messaging' notifications driver +rpc_backend = 'rabbit' + +# Configuration options if sending notifications via rabbitmq (these are +# the defaults) +rabbit_host = {{ RABBITMQ_HOST }} +rabbit_port = {{ RABBITMQ_PORT }} +rabbit_use_ssl = false +rabbit_userid = {{ RABBITMQ_USER }} +rabbit_password = {{ RABBITMQ_PASSWORD }} +rabbit_virtual_host = / +rabbit_notification_exchange = glance +rabbit_notification_topic = notifications +rabbit_durable_queues = False + +# Configuration options if sending notifications via Qpid (these are +# the defaults) +#qpid_notification_exchange = glance +#qpid_notification_topic = notifications +#qpid_hostname = localhost +#qpid_port = 5672 +#qpid_username = +#qpid_password = +#qpid_sasl_mechanisms = +#qpid_reconnect_timeout = 0 +#qpid_reconnect_limit = 0 +#qpid_reconnect_interval_min = 0 +#qpid_reconnect_interval_max = 0 +#qpid_reconnect_interval = 0 +#qpid_heartbeat = 5 +# Set to 'ssl' to enable SSL +#qpid_protocol = tcp +#qpid_tcp_nodelay = True + + +# =============== Policy Options ============================== + +[oslo_policy] +# The JSON file that defines policies. +# Deprecated group/name - [DEFAULT]/policy_file +#policy_file = policy.json + +# Default rule. Enforced when a requested rule is not found. +# Deprecated group/name - [DEFAULT]/policy_default_rule +#policy_default_rule = default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path +# defined by the config_dir option, or absolute paths. +# The file defined by policy_file must exist for these +# directories to be searched. +# Deprecated group/name - [DEFAULT]/policy_dirs +#policy_dirs = policy.d + +# ================= Database Options ========================== + +[database] +# The file name to use with SQLite (string value) +#sqlite_db = glance.sqlite + +# If True, SQLite uses synchronous mode (boolean value) +#sqlite_synchronous = True + +# The backend to use for db (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend = sqlalchemy + +# The SQLAlchemy connection string used to connect to the +# database (string value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +#connection = +connection=postgresql://{{ GLANCE_DB_USER }}:{{ GLANCE_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/glance + +# The SQL mode to be used for MySQL sessions. This option, +# including the default, overrides any server-set SQL mode. To +# use whatever SQL mode is set by the server configuration, +# set this to no value. Example: mysql_sql_mode= (string +# value) +#mysql_sql_mode = TRADITIONAL + +# Timeout before idle sql connections are reaped (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout = 3600 + +# Minimum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size = + +# Maximum db connection retries during startup. (setting -1 +# implies an infinite retry count) (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries = 10 + +# Interval between retries of opening a sql connection +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval = 10 + +# If set, use this value for max_overflow with sqlalchemy +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow = + +# Verbosity of SQL debugging information. 0=None, +# 100=Everything (integer value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug = 0 + +# Add python stack traces to SQL as comment strings (boolean +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace = False + +# If set, use this value for pool_timeout with sqlalchemy +# (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout = + +# Enable the experimental use of database reconnect on +# connection lost (boolean value) +#use_db_reconnect = False + +# seconds between db connection retries (integer value) +#db_retry_interval = 1 + +# Whether to increase interval between db connection retries, +# up to db_max_retry_interval (boolean value) +#db_inc_retry_interval = True + +# max seconds between db connection retries, if +# db_inc_retry_interval is enabled (integer value) +#db_max_retry_interval = 10 + +# maximum db connection retries before error is raised. +# (setting -1 implies an infinite retry count) (integer value) +#db_max_retries = 20 + +[keystone_authtoken] +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 +admin_tenant_name = service +admin_user = {{ GLANCE_SERVICE_USER }} +admin_password = {{ GLANCE_SERVICE_PASSWORD }} + +[paste_deploy] +# Name of the paste configuration file that defines the available pipelines +#config_file = glance-registry-paste.ini + +# Partial name of a pipeline in your paste configuration file with the +# service name removed. For example, if your paste section name is +# [pipeline:glance-registry-keystone], you would configure the flavor below +# as 'keystone'. +flavor=keystone + +[profiler] +# If False fully disable profiling feature. +#enabled = False + +# If False doesn't trace SQL requests. +#trace_sqlalchemy = False diff --git a/old/install-files/openstack/usr/share/openstack/horizon.yml b/old/install-files/openstack/usr/share/openstack/horizon.yml new file mode 100644 index 00000000..1fec4ab0 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/horizon.yml @@ -0,0 +1,46 @@ +--- +- hosts: localhost + tasks: + +# Setup apache, this may end up in apache.yml + - name: Create the apache user. + user: + name: apache + comment: Apache Server + shell: /sbin/nologin + home: /var/www + + - file: + path: /usr/sbin/suexec + group: apache + mode: 4750 + +# Setup horizon + - name: Create the horizon user. + user: + name: horizon + comment: Openstack Horizon User + shell: /sbin/nologin + home: /var/lib/horizon + + - name: Fix permissions in /var/lib/horizon + file: + path: /var/lib/horizon + state: directory + owner: horizon + group: horizon + recurse: yes + + - name: Link horizon apache configuration + file: + src: /etc/horizon/apache-horizon.conf + dest: /etc/httpd/conf.d/apache-horizon.conf + state: link + + - name: Enable and start apache services needed by horizon + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - apache-httpd.service diff --git a/old/install-files/openstack/usr/share/openstack/hosts b/old/install-files/openstack/usr/share/openstack/hosts new file mode 100644 index 00000000..5b97818d --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/hosts @@ -0,0 +1 @@ +localhost ansible_connection=local diff --git a/old/install-files/openstack/usr/share/openstack/ironic.yml b/old/install-files/openstack/usr/share/openstack/ironic.yml new file mode 100644 index 00000000..19906b04 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/ironic.yml @@ -0,0 +1,104 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/ironic.conf" + tasks: + - name: Create the ironic user + user: + name: ironic + comment: Openstack Ironic Daemons + shell: /sbin/nologin + home: /var/lib/ironic + + - name: Create the /var folders for Ironic + file: + path: "{{ item }}" + state: directory + owner: ironic + group: ironic + with_items: + - /var/run/ironic + - /var/lock/ironic + - /var/log/ironic + - /var/lib/ironic + + - file: path=/etc/ironic state=directory + - name: Add the configuration needed for ironic in /etc/ironic using templates + template: + src: /usr/share/openstack/ironic/{{ item }} + dest: /etc/ironic/{{ item }} + with_lines: + - cd /usr/share/openstack/ironic && find -type f + + - name: Create Ironic service user in service tenant + keystone_user: + user: "{{ IRONIC_SERVICE_USER }}" + password: "{{ IRONIC_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to Ironic service user in the service tenant + keystone_user: + role: admin + user: "{{ IRONIC_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add Ironic endpoint + keystone_service: + name: ironic + type: baremetal + description: Openstack Ironic Service + publicurl: 'http://{{ ansible_hostname }}:6385' + internalurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:6385' + adminurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:6385' + region: 'regionOne' + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for Ironic + postgresql_user: + name: "{{ IRONIC_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + password: "{{ IRONIC_DB_PASSWORD }}" + sudo: yes + sudo_user: ironic + + - name: Create database for Ironic services + postgresql_db: + name: ironic + owner: "{{ IRONIC_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + sudo: yes + sudo_user: ironic + + - name: Initiate Ironic database + # Use 'upgrade' instead of 'create_schema' to make the operation + # idempotent + shell: | + ironic-dbsync \ + --config-file /etc/ironic/ironic.conf upgrade + sudo: yes + sudo_user: ironic + + - name: Enable and start openstack-ironic services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - openstack-ironic-conductor.service + - openstack-ironic-api.service + + - name: Set owner and group for the tftp root directory + file: + path: "/srv/tftp_root/" + state: directory + owner: ironic + group: ironic + recurse: yes + + - name: Enable and start tftp-hpa + service: + name: tftp-hpa.socket + enabled: yes + state: started diff --git a/old/install-files/openstack/usr/share/openstack/ironic/ironic.conf b/old/install-files/openstack/usr/share/openstack/ironic/ironic.conf new file mode 100644 index 00000000..a5b5d2e3 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/ironic/ironic.conf @@ -0,0 +1,1568 @@ +[DEFAULT] + +# +# Options defined in oslo.messaging +# + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve +# to this address. (string value) +#rpc_zmq_bind_address=* + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker=oslo_messaging._drivers.matchmaker.MatchMakerLocalhost + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port=9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts=1 + +# Maximum number of ingress messages to locally buffer per +# topic. Default is unlimited. (integer value) +#rpc_zmq_topic_backlog= + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir=/var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP +# address. Must match "host" option, if running Nova. (string +# value) +#rpc_zmq_host=ironic + +# Seconds to wait before a cast expires (TTL). Only supported +# by impl_zmq. (integer value) +#rpc_cast_timeout=30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq=300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl=600 + +# Size of RPC thread pool. (integer value) +#rpc_thread_pool_size=64 + +# Driver or drivers to handle sending notifications. (multi +# valued) +#notification_driver= + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics=notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout=60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend +# option and driver specific configuration. (string value) +#transport_url= + +# The messaging driver to use, defaults to rabbit. Other +# drivers include qpid and zmq. (string value) +#rpc_backend=rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the +# transport_url option. (string value) +#control_exchange=openstack + + +# +# Options defined in ironic.netconf +# + +# IP address of this host. (string value) +my_ip = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + + +# +# Options defined in ironic.api.app +# + +# Method to use for authentication: noauth or keystone. +# (string value) +#auth_strategy=keystone + +# Enable pecan debug mode. WARNING: this is insecure and +# should not be used in production. (boolean value) +#pecan_debug=false + + +# +# Options defined in ironic.common.driver_factory +# + +# Specify the list of drivers to load during service +# initialization. Missing drivers, or drivers which fail to +# initialize, will prevent the conductor service from +# starting. The option default is a recommended set of +# production-oriented drivers. A complete list of drivers +# present on your system may be found by enumerating the +# "ironic.drivers" entrypoint. An example may be found in the +# developer documentation online. (list value) +enabled_drivers=pxe_ipmitool,pxe_ssh + + +# +# Options defined in ironic.common.exception +# + +# Make exception message format errors fatal. (boolean value) +#fatal_exception_format_errors=false + + +# +# Options defined in ironic.common.hash_ring +# + +# Exponent to determine number of hash partitions to use when +# distributing load across conductors. Larger values will +# result in more even distribution of load and less load when +# rebalancing the ring, but more memory usage. Number of +# partitions per conductor is (2^hash_partition_exponent). +# This determines the granularity of rebalancing: given 10 +# hosts, and an exponent of the 2, there are 40 partitions in +# the ring.A few thousand partitions should make rebalancing +# smooth in most cases. The default is suitable for up to a +# few hundred conductors. Too many partitions has a CPU +# impact. (integer value) +#hash_partition_exponent=5 + +# [Experimental Feature] Number of hosts to map onto each hash +# partition. Setting this to more than one will cause +# additional conductor services to prepare deployment +# environments and potentially allow the Ironic cluster to +# recover more quickly if a conductor instance is terminated. +# (integer value) +#hash_distribution_replicas=1 + + +# +# Options defined in ironic.common.images +# + +# Force backing images to raw format. (boolean value) +#force_raw_images=true + +# Path to isolinux binary file. (string value) +#isolinux_bin=/usr/lib/syslinux/isolinux.bin + +# Template file for isolinux configuration file. (string +# value) +#isolinux_config_template=$pybasedir/common/isolinux_config.template + +# Template file for grub configuration file. (string value) +#grub_config_template=$pybasedir/common/grub_conf.template + + +# +# Options defined in ironic.common.paths +# + +# Directory where the ironic python module is installed. +# (string value) +#pybasedir=/usr/lib/python/site-packages/ironic + +# Directory where ironic binaries are installed. (string +# value) +#bindir=$pybasedir/bin + +# Top-level directory for maintaining ironic's state. (string +# value) +#state_path=$pybasedir + + +# +# Options defined in ironic.common.service +# + +# Seconds between running periodic tasks. (integer value) +#periodic_interval=60 + +# Name of this node. This can be an opaque identifier. It is +# not necessarily a hostname, FQDN, or IP address. However, +# the node name must be valid within an AMQP key, and if using +# ZeroMQ, a valid hostname, FQDN, or IP address. (string +# value) +#host=ironic + + +# +# Options defined in ironic.common.utils +# + +# Path to the rootwrap configuration file to use for running +# commands as root. (string value) +#rootwrap_config=/etc/ironic/rootwrap.conf + +# Explicitly specify the temporary working directory. (string +# value) +#tempdir= + + +# +# Options defined in ironic.drivers.modules.image_cache +# + +# Run image downloads and raw format conversions in parallel. +# (boolean value) +#parallel_image_downloads=false + + +# +# Options defined in ironic.openstack.common.eventlet_backdoor +# + +# Enable eventlet backdoor. Acceptable values are 0, , +# and :, where 0 results in listening on a random +# tcp port number; results in listening on the +# specified port number (and not enabling backdoor if that +# port is in use); and : results in listening on +# the smallest unused port number within the specified range +# of port numbers. The chosen port is displayed in the +# service's log file. (string value) +#backdoor_port= + + +# +# Options defined in ironic.openstack.common.log +# + +# Print debugging output (set logging level to DEBUG instead +# of default WARNING level). (boolean value) +#debug=false + +# Print more verbose output (set logging level to INFO instead +# of default WARNING level). (boolean value) +#verbose=false + +# Log output to standard error. (boolean value) +#use_stderr=true + +# Format string to use for log messages with context. (string +# value) +#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. +# (string value) +#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string +# value) +#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. +# (string value) +#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean +# value) +#publish_errors=false + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + +# The format for an instance that is passed with the log +# message. (string value) +#instance_format="[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log +# message. (string value) +#instance_uuid_format="[instance: %(uuid)s] " + +# The name of a logging configuration file. This file is +# appended to any existing logging configuration files. For +# details about logging configuration files, see the Python +# logging module documentation. (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append= + +# DEPRECATED. A logging.Formatter log message format string +# which may use any of the available logging.LogRecord +# attributes. This option is deprecated. Please use +# logging_context_format_string and +# logging_default_format_string instead. (string value) +#log_format= + +# Format string for %%(asctime)s in log records. Default: +# %(default)s . (string value) +#log_date_format=%Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is +# set, logging will go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file= + +# (Optional) The base directory used for relative --log-file +# paths. (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir= + +# Use syslog for logging. Existing syslog format is DEPRECATED +# during I, and will change in J to honor RFC5424. (boolean +# value) +use_syslog=true + +# (Optional) Enables or disables syslog rfc5424 format for +# logging. If enabled, prefixes the MSG part of the syslog +# message with APP-NAME (RFC5424). The format without the APP- +# NAME is deprecated in I, and will be removed in J. (boolean +# value) +#use_syslog_rfc_format=false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility=LOG_USER + + +# +# Options defined in ironic.openstack.common.periodic_task +# + +# Some periodic tasks can be run in a separate process. Should +# we run them here? (boolean value) +#run_external_periodic_tasks=true + + +# +# Options defined in ironic.openstack.common.versionutils +# + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + + +[agent] + +# +# Options defined in ironic.drivers.modules.agent +# + +# Additional append parameters for baremetal PXE boot. (string +# value) +#agent_pxe_append_params=nofb nomodeset vga=normal + +# Template file for PXE configuration. (string value) +#agent_pxe_config_template=$pybasedir/drivers/modules/agent_config.template + +# Neutron bootfile DHCP parameter. (string value) +#agent_pxe_bootfile_name=pxelinux.0 + +# Priority to run in-band erase devices via the Ironic Python +# Agent ramdisk. If unset, will use the priority set in the +# ramdisk (defaults to 10 for the GenericHardwareManager). If +# set to 0, will not run during cleaning. (integer value) +#agent_erase_devices_priority= + +# Whether Ironic will manage TFTP files for the deploy +# ramdisks. If set to False, you will need to configure your +# own TFTP server that allows booting the deploy ramdisks. +# (boolean value) +#manage_tftp=true + +# +# Options defined in ironic.drivers.modules.agent_base_vendor +# + +# Maximum interval (in seconds) for agent heartbeats. (integer +# value) +#heartbeat_timeout=300 + + +# +# Options defined in ironic.drivers.modules.agent_client +# + +# API version to use for communicating with the ramdisk agent. +# (string value) +#agent_api_version=v1 + + +[amt] + +# +# Options defined in ironic.drivers.modules.amt.common +# + +# Protocol used for AMT endpoint, support http/https (string +# value) +#protocol=http + + +# +# Options defined in ironic.drivers.modules.amt.power +# + +# Maximum number of times to attempt an AMT operation, before +# failing (integer value) +#max_attempts=3 + +# Amount of time (in seconds) to wait, before retrying an AMT +# operation (integer value) +#action_wait=10 + + +[api] + +# +# Options defined in ironic.api +# + +# The listen IP for the Ironic API server. (string value) +#host_ip=0.0.0.0 + +# The port for the Ironic API server. (integer value) +#port=6385 + +# The maximum number of items returned in a single response +# from a collection resource. (integer value) +#max_limit=1000 + + +[conductor] + +# +# Options defined in ironic.conductor.manager +# + +# URL of Ironic API service. If not set ironic can get the +# current value from the keystone service catalog. (string +# value) +api_url = http://{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}:6385 + +# Seconds between conductor heart beats. (integer value) +#heartbeat_interval=10 + +# Maximum time (in seconds) since the last check-in of a +# conductor. (integer value) +#heartbeat_timeout=60 + +# Interval between syncing the node power state to the +# database, in seconds. (integer value) +#sync_power_state_interval=60 + +# Interval between checks of provision timeouts, in seconds. +# (integer value) +#check_provision_state_interval=60 + +# Timeout (seconds) for waiting callback from deploy ramdisk. +# 0 - unlimited. (integer value) +#deploy_callback_timeout=1800 + +# During sync_power_state, should the hardware power state be +# set to the state recorded in the database (True) or should +# the database be updated based on the hardware state (False). +# (boolean value) +#force_power_state_during_sync=true + +# During sync_power_state failures, limit the number of times +# Ironic should try syncing the hardware node power state with +# the node power state in DB (integer value) +#power_state_sync_max_retries=3 + +# Maximum number of worker threads that can be started +# simultaneously by a periodic task. Should be less than RPC +# thread pool size. (integer value) +#periodic_max_workers=8 + +# The size of the workers greenthread pool. (integer value) +#workers_pool_size=100 + +# Number of attempts to grab a node lock. (integer value) +#node_locked_retry_attempts=3 + +# Seconds to sleep between node lock attempts. (integer value) +#node_locked_retry_interval=1 + +# Enable sending sensor data message via the notification bus +# (boolean value) +#send_sensor_data=false + +# Seconds between conductor sending sensor data message to +# ceilometer via the notification bus. (integer value) +#send_sensor_data_interval=600 + +# List of comma separated metric types which need to be sent +# to Ceilometer. The default value, "ALL", is a special value +# meaning send all the sensor data. (list value) +#send_sensor_data_types=ALL + +# When conductors join or leave the cluster, existing +# conductors may need to update any persistent local state as +# nodes are moved around the cluster. This option controls how +# often, in seconds, each conductor will check for nodes that +# it should "take over". Set it to a negative value to disable +# the check entirely. (integer value) +#sync_local_state_interval=180 + +# Whether to upload the config drive to Swift. (boolean value) +#configdrive_use_swift=false + +# Name of the Swift container to store config drive data. Used +# when configdrive_use_swift is True. (string value) +#configdrive_swift_container=ironic_configdrive_container + +# Timeout (seconds) for waiting for node inspection. 0 - +# unlimited. (integer value) +#inspect_timeout=1800 + +# Cleaning is a configurable set of steps, such as erasing +# disk drives, that are performed on the node to ensure it is +# in a baseline state and ready to be deployed to. This is +# done after instance deletion, and during the transition from +# a "managed" to "available" state. When enabled, the +# particular steps performed to clean a node depend on which +# driver that node is managed by; see the individual driver's +# documentation for details. NOTE: The introduction of the +# cleaning operation causes instance deletion to take +# significantly longer. In an environment where all tenants +# are trusted (eg, because there is only one tenant), this +# option could be safely disabled. (boolean value) +#clean_nodes=true + + +[console] + +# +# Options defined in ironic.drivers.modules.console_utils +# + +# Path to serial console terminal program (string value) +#terminal=shellinaboxd + +# Directory containing the terminal SSL cert(PEM) for serial +# console access (string value) +#terminal_cert_dir= + +# Directory for holding terminal pid files. If not specified, +# the temporary directory will be used. (string value) +#terminal_pid_dir= + +# Time interval (in seconds) for checking the status of +# console subprocess. (integer value) +#subprocess_checking_interval=1 + +# Time (in seconds) to wait for the console subprocess to +# start. (integer value) +#subprocess_timeout=10 + + +[database] + +# +# Options defined in oslo.db +# + +# The file name to use with SQLite. (string value) +#sqlite_db=oslo.sqlite + +# If True, SQLite uses synchronous mode. (boolean value) +#sqlite_synchronous=true + +# The back end to use for the database. (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend=sqlalchemy + +# The SQLAlchemy connection string to use to connect to the +# database. (string value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +connection = postgresql://{{ IRONIC_DB_USER}}:{{ IRONIC_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/ironic + +# The SQLAlchemy connection string to use to connect to the +# slave database. (string value) +#slave_connection= + +# The SQL mode to be used for MySQL sessions. This option, +# including the default, overrides any server-set SQL mode. To +# use whatever SQL mode is set by the server configuration, +# set this to no value. Example: mysql_sql_mode= (string +# value) +#mysql_sql_mode=TRADITIONAL + +# Timeout before idle SQL connections are reaped. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout=3600 + +# Minimum number of SQL connections to keep open in a pool. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size=1 + +# Maximum number of SQL connections to keep open in a pool. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size= + +# Maximum number of database connection retries during +# startup. Set to -1 to specify an infinite retry count. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries=10 + +# Interval between retries of opening a SQL connection. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval=10 + +# If set, use this value for max_overflow with SQLAlchemy. +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow= + +# Verbosity of SQL debugging information: 0=None, +# 100=Everything. (integer value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug=0 + +# Add Python stack traces to SQL as comment strings. (boolean +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace=false + +# If set, use this value for pool_timeout with SQLAlchemy. +# (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout= + +# Enable the experimental use of database reconnect on +# connection lost. (boolean value) +#use_db_reconnect=false + +# Seconds between retries of a database transaction. (integer +# value) +#db_retry_interval=1 + +# If True, increases the interval between retries of a +# database operation up to db_max_retry_interval. (boolean +# value) +#db_inc_retry_interval=true + +# If db_inc_retry_interval is set, the maximum seconds between +# retries of a database operation. (integer value) +#db_max_retry_interval=10 + +# Maximum retries in case of connection error or deadlock +# error before error is raised. Set to -1 to specify an +# infinite retry count. (integer value) +#db_max_retries=20 + + +# +# Options defined in ironic.db.sqlalchemy.models +# + +# MySQL engine to use. (string value) +#mysql_engine=InnoDB + + +[deploy] + +# +# Options defined in ironic.drivers.modules.deploy_utils +# + +# Size of EFI system partition in MiB when configuring UEFI +# systems for local boot. (integer value) +#efi_system_partition_size=200 + +# Block size to use when writing to the nodes disk. (string +# value) +#dd_block_size=1M + +# Maximum attempts to verify an iSCSI connection is active, +# sleeping 1 second between attempts. (integer value) +#iscsi_verify_attempts=3 + + +[dhcp] + +# +# Options defined in ironic.common.dhcp_factory +# + +# DHCP provider to use. "neutron" uses Neutron, and "none" +# uses a no-op provider. (string value) +#dhcp_provider=neutron + + +[discoverd] + +# +# Options defined in ironic.drivers.modules.discoverd +# + +# whether to enable inspection using ironic-discoverd (boolean +# value) +#enabled=false + +# ironic-discoverd HTTP endpoint. If this is not set, the +# ironic-discoverd client default (http://127.0.0.1:5050) will +# be used. (string value) +#service_url= + +# period (in seconds) to check status of nodes on inspection +# (integer value) +#status_check_period=60 + + +[disk_partitioner] + +# +# Options defined in ironic.common.disk_partitioner +# + +# After Ironic has completed creating the partition table, it +# continues to check for activity on the attached iSCSI device +# status at this interval prior to copying the image to the +# node, in seconds (integer value) +#check_device_interval=1 + +# The maximum number of times to check that the device is not +# accessed by another process. If the device is still busy +# after that, the disk partitioning will be treated as having +# failed. (integer value) +#check_device_max_retries=20 + + +[glance] + +# +# Options defined in ironic.common.glance_service.v2.image_service +# + +# A list of URL schemes that can be downloaded directly via +# the direct_url. Currently supported schemes: [file]. (list +# value) +#allowed_direct_url_schemes= + +# The secret token given to Swift to allow temporary URL +# downloads. Required for temporary URLs. (string value) +#swift_temp_url_key= + +# The length of time in seconds that the temporary URL will be +# valid for. Defaults to 20 minutes. If some deploys get a 401 +# response code when trying to download from the temporary +# URL, try raising this duration. (integer value) +#swift_temp_url_duration=1200 + +# The "endpoint" (scheme, hostname, optional port) for the +# Swift URL of the form +# "endpoint_url/api_version/account/container/object_id". Do +# not include trailing "/". For example, use +# "https://swift.example.com". Required for temporary URLs. +# (string value) +#swift_endpoint_url= + +# The Swift API version to create a temporary URL for. +# Defaults to "v1". Swift temporary URL format: +# "endpoint_url/api_version/account/container/object_id" +# (string value) +#swift_api_version=v1 + +# The account that Glance uses to communicate with Swift. The +# format is "AUTH_uuid". "uuid" is the UUID for the account +# configured in the glance-api.conf. Required for temporary +# URLs. For example: +# "AUTH_a422b2-91f3-2f46-74b7-d7c9e8958f5d30". Swift temporary +# URL format: +# "endpoint_url/api_version/account/container/object_id" +# (string value) +#swift_account= + +# The Swift container Glance is configured to store its images +# in. Defaults to "glance", which is the default in glance- +# api.conf. Swift temporary URL format: +# "endpoint_url/api_version/account/container/object_id" +# (string value) +#swift_container=glance + +# This should match a config by the same name in the Glance +# configuration file. When set to 0, a single-tenant store +# will only use one container to store all images. When set to +# an integer value between 1 and 32, a single-tenant store +# will use multiple containers to store images, and this value +# will determine how many containers are created. (integer +# value) +#swift_store_multiple_containers_seed=0 + + +# +# Options defined in ironic.common.image_service +# + +# Default glance hostname or IP address. (string value) +glance_host = {{ CONTROLLER_HOST_ADDRESS }} + +# Default glance port. (integer value) +#glance_port=9292 + +# Default protocol to use when connecting to glance. Set to +# https for SSL. (string value) +#glance_protocol=http + +# A list of the glance api servers available to ironic. Prefix +# with https:// for SSL-based glance API servers. Format is +# [hostname|IP]:port. (list value) +#glance_api_servers= + +# Allow to perform insecure SSL (https) requests to glance. +# (boolean value) +#glance_api_insecure=false + +# Number of retries when downloading an image from glance. +# (integer value) +#glance_num_retries=0 + +# Authentication strategy to use when connecting to glance. +# Only "keystone" and "noauth" are currently supported by +# ironic. (string value) +#auth_strategy=keystone + + +[ilo] + +# +# Options defined in ironic.drivers.modules.ilo.common +# + +# Timeout (in seconds) for iLO operations (integer value) +#client_timeout=60 + +# Port to be used for iLO operations (integer value) +#client_port=443 + +# The Swift iLO container to store data. (string value) +#swift_ilo_container=ironic_ilo_container + +# Amount of time in seconds for Swift objects to auto-expire. +# (integer value) +#swift_object_expiry_timeout=900 + + +# +# Options defined in ironic.drivers.modules.ilo.deploy +# + +# Priority for erase devices clean step. If unset, it defaults +# to 10. If set to 0, the step will be disabled and will not +# run during cleaning. (integer value) +#clean_priority_erase_devices= + + +# +# Options defined in ironic.drivers.modules.ilo.management +# + +# Priority for reset_ilo clean step. (integer value) +#clean_priority_reset_ilo=1 + +# Priority for reset_bios_to_default clean step. (integer +# value) +#clean_priority_reset_bios_to_default=10 + +# Priority for reset_secure_boot_keys clean step. This step +# will reset the secure boot keys to manufacturing defaults. +# (integer value) +#clean_priority_reset_secure_boot_keys_to_default=20 + +# Priority for clear_secure_boot_keys clean step. This step is +# not enabled by default. It can be enabled to to clear all +# secure boot keys enrolled with iLO. (integer value) +#clean_priority_clear_secure_boot_keys=0 + +# Priority for reset_ilo_credential clean step. This step +# requires "ilo_change_password" parameter to be updated in +# nodes's driver_info with the new password. (integer value) +#clean_priority_reset_ilo_credential=30 + + +# +# Options defined in ironic.drivers.modules.ilo.power +# + +# Number of times a power operation needs to be retried +# (integer value) +#power_retry=6 + +# Amount of time in seconds to wait in between power +# operations (integer value) +#power_wait=2 + + +[ipmi] + +# +# Options defined in ironic.drivers.modules.ipminative +# + +# Maximum time in seconds to retry IPMI operations. There is a +# tradeoff when setting this value. Setting this too low may +# cause older BMCs to crash and require a hard reset. However, +# setting too high can cause the sync power state periodic +# task to hang when there are slow or unresponsive BMCs. +# (integer value) +#retry_timeout=60 + +# Minimum time, in seconds, between IPMI operations sent to a +# server. There is a risk with some hardware that setting this +# too low may cause the BMC to crash. Recommended setting is 5 +# seconds. (integer value) +#min_command_interval=5 + + +[irmc] + +# +# Options defined in ironic.drivers.modules.irmc.common +# + +# Port to be used for iRMC operations, either 80 or 443 +# (integer value) +#port=443 + +# Authentication method to be used for iRMC operations, either +# "basic" or "digest" (string value) +#auth_method=basic + +# Timeout (in seconds) for iRMC operations (integer value) +#client_timeout=60 + +# Sensor data retrieval method, either "ipmitool" or "scci" +# (string value) +#sensor_method=ipmitool + + +[keystone] + +# +# Options defined in ironic.common.keystone +# + +# The region used for getting endpoints of OpenStackservices. +# (string value) +#region_name= + + +[keystone_authtoken] + +# +# Options defined in keystonemiddleware.auth_token +# + +# Complete public Identity API endpoint. (string value) +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + +# API version of the admin Identity API endpoint. (string +# value) +#auth_version= + +# Do not handle authorization requests within the middleware, +# but delegate the authorization decision to downstream WSGI +# components. (boolean value) +#delay_auth_decision=false + +# Request timeout value for communicating with Identity API +# server. (integer value) +#http_connect_timeout= + +# How many times are we trying to reconnect when communicating +# with Identity API Server. (integer value) +#http_request_max_retries=3 + +# Env key for the swift cache. (string value) +#cache= + +# Required if identity server requires client certificate +# (string value) +#certfile= + +# Required if identity server requires client certificate +# (string value) +#keyfile= + +# A PEM encoded Certificate Authority to use when verifying +# HTTPs connections. Defaults to system CAs. (string value) +#cafile= + +# Verify HTTPS connections. (boolean value) +#insecure=false + +# Directory used to cache files related to PKI tokens. (string +# value) +#signing_dir= + +# Optionally specify a list of memcached server(s) to use for +# caching. If left undefined, tokens will instead be cached +# in-process. (list value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers= + +# In order to prevent excessive effort spent validating +# tokens, the middleware caches previously-seen tokens for a +# configurable duration (in seconds). Set to -1 to disable +# caching completely. (integer value) +#token_cache_time=300 + +# Determines the frequency at which the list of revoked tokens +# is retrieved from the Identity service (in seconds). A high +# number of revocation events combined with a low cache +# duration may significantly reduce performance. (integer +# value) +#revocation_cache_time=10 + +# (Optional) If defined, indicate whether token data should be +# authenticated or authenticated and encrypted. Acceptable +# values are MAC or ENCRYPT. If MAC, token data is +# authenticated (with HMAC) in the cache. If ENCRYPT, token +# data is encrypted and authenticated in the cache. If the +# value is not one of these options or empty, auth_token will +# raise an exception on initialization. (string value) +#memcache_security_strategy= + +# (Optional, mandatory if memcache_security_strategy is +# defined) This string is used for key derivation. (string +# value) +#memcache_secret_key= + +# (Optional) Number of seconds memcached server is considered +# dead before it is tried again. (integer value) +#memcache_pool_dead_retry=300 + +# (Optional) Maximum total number of open connections to every +# memcached server. (integer value) +#memcache_pool_maxsize=10 + +# (Optional) Socket timeout in seconds for communicating with +# a memcache server. (integer value) +#memcache_pool_socket_timeout=3 + +# (Optional) Number of seconds a connection to memcached is +# held unused in the pool before it is closed. (integer value) +#memcache_pool_unused_timeout=60 + +# (Optional) Number of seconds that an operation will wait to +# get a memcache client connection from the pool. (integer +# value) +#memcache_pool_conn_get_timeout=10 + +# (Optional) Use the advanced (eventlet safe) memcache client +# pool. The advanced pool will only work under python 2.x. +# (boolean value) +#memcache_use_advanced_pool=false + +# (Optional) Indicate whether to set the X-Service-Catalog +# header. If False, middleware will not ask for service +# catalog on token validation and will not set the X-Service- +# Catalog header. (boolean value) +#include_service_catalog=true + +# Used to control the use and type of token binding. Can be +# set to: "disabled" to not check token binding. "permissive" +# (default) to validate binding information if the bind type +# is of a form known to the server and ignore it if not. +# "strict" like "permissive" but if the bind type is unknown +# the token will be rejected. "required" any form of token +# binding is needed to be allowed. Finally the name of a +# binding method that must be present in tokens. (string +# value) +#enforce_token_bind=permissive + +# If true, the revocation list will be checked for cached +# tokens. This requires that PKI tokens are configured on the +# identity server. (boolean value) +#check_revocations_for_cached=false + +# Hash algorithms to use for hashing PKI tokens. This may be a +# single algorithm or multiple. The algorithms are those +# supported by Python standard hashlib.new(). The hashes will +# be tried in the order given, so put the preferred one first +# for performance. The result of the first hash will be stored +# in the cache. This will typically be set to multiple values +# only while migrating from a less secure algorithm to a more +# secure one. Once all the old tokens are expired this option +# should be set to a single value for better performance. +# (list value) +#hash_algorithms=md5 + +# Prefix to prepend at the beginning of the path. Deprecated, +# use identity_uri. (string value) +#auth_admin_prefix= + +# Host providing the admin Identity API endpoint. Deprecated, +# use identity_uri. (string value) +#auth_host=127.0.0.1 + +# Port of the admin Identity API endpoint. Deprecated, use +# identity_uri. (integer value) +#auth_port=35357 + +# Protocol of the admin Identity API endpoint (http or https). +# Deprecated, use identity_uri. (string value) +#auth_protocol=https + +# Complete admin Identity API endpoint. This should specify +# the unversioned root endpoint e.g. https://localhost:35357/ +# (string value) +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 + +# This option is deprecated and may be removed in a future +# release. Single shared secret with the Keystone +# configuration used for bootstrapping a Keystone +# installation, or otherwise bypassing the normal +# authentication process. This option should not be used, use +# `admin_user` and `admin_password` instead. (string value) +#admin_token= + +# Service username. (string value) +admin_user = {{ IRONIC_SERVICE_USER }} + +# Service user password. (string value) +admin_password = {{ IRONIC_SERVICE_PASSWORD }} + +# Service tenant name. (string value) +admin_tenant_name=service + + +[matchmaker_redis] + +# +# Options defined in oslo.messaging +# + +# Host to locate redis. (string value) +#host=127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port=6379 + +# Password for Redis server (optional). (string value) +#password= + + +[matchmaker_ring] + +# +# Options defined in oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile=/etc/oslo/matchmaker_ring.json + + +[neutron] + +# +# Options defined in ironic.dhcp.neutron +# + +# URL for connecting to neutron. (string value) +url = http://{{ CONTROLLER_HOST_ADDRESS }}:9696 + +# Timeout value for connecting to neutron in seconds. (integer +# value) +#url_timeout=30 + +# Client retries in the case of a failed request. (integer +# value) +#retries=3 + +# Default authentication strategy to use when connecting to +# neutron. Can be either "keystone" or "noauth". Running +# neutron in noauth mode (related to but not affected by this +# setting) is insecure and should only be used for testing. +# (string value) +#auth_strategy=keystone + +# UUID of the network to create Neutron ports on when booting +# to a ramdisk for cleaning/zapping using Neutron DHCP (string +# value) +#cleaning_network_uuid= + + +[oslo_concurrency] + +# +# Options defined in oslo.concurrency +# + +# Enables or disables inter-process locks. (boolean value) +#disable_process_locking=false + +# Directory to use for lock files. For security, the +# specified directory should only be writable by the user +# running the processes that need locking. Defaults to +# environment variable OSLO_LOCK_PATH. If external locks are +# used, a lock path must be set. (string value) +#lock_path= + + +[oslo_messaging_amqp] + +# +# Options defined in oslo.messaging +# + +# address prefix used when sending to a specific server +# (string value) +#server_request_prefix=exclusive + +# address prefix used when broadcasting to all servers (string +# value) +#broadcast_prefix=broadcast + +# address prefix when sending to any server in group (string +# value) +#group_request_prefix=unicast + +# Name for the AMQP container (string value) +#container_name= + +# Timeout for inactive connections (in seconds) (integer +# value) +#idle_timeout=0 + +# Debug: dump AMQP frames to stdout (boolean value) +#trace=false + +# CA certificate PEM file for verifing server certificate +# (string value) +#ssl_ca_file= + +# Identifying certificate PEM file to present to clients +# (string value) +#ssl_cert_file= + +# Private key PEM file used to sign cert_file certificate +# (string value) +#ssl_key_file= + +# Password for decrypting ssl_key_file (if encrypted) (string +# value) +#ssl_key_password= + +# Accept clients using either SSL or plain TCP (boolean value) +#allow_insecure_clients=false + + +[oslo_messaging_qpid] + +# +# Options defined in oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues=false + +# Auto-delete queues in AMQP. (boolean value) +#amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +#rpc_conn_pool_size=30 + +# Qpid broker hostname. (string value) +#qpid_hostname=localhost + +# Qpid broker port. (integer value) +#qpid_port=5672 + +# Qpid HA cluster host:port pairs. (list value) +#qpid_hosts=$qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +#qpid_username= + +# Password for Qpid connection. (string value) +#qpid_password= + +# Space separated list of SASL mechanisms to use for auth. +# (string value) +#qpid_sasl_mechanisms= + +# Seconds between connection keepalive heartbeats. (integer +# value) +#qpid_heartbeat=60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +#qpid_protocol=tcp + +# Whether to disable the Nagle algorithm. (boolean value) +#qpid_tcp_nodelay=true + +# The number of prefetched messages held by receiver. (integer +# value) +#qpid_receiver_capacity=1 + +# The qpid topology version to use. Version 1 is what was +# originally used by impl_qpid. Version 2 includes some +# backwards-incompatible changes that allow broker federation +# to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. +# (integer value) +#qpid_topology_version=1 + + +[oslo_messaging_rabbit] + +# +# Options defined in oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues=false + +# Auto-delete queues in AMQP. (boolean value) +#amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +#rpc_conn_pool_size=30 + +# SSL version to use (valid only if SSL enabled). Valid values +# are TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may +# be available on some distributions. (string value) +#kombu_ssl_version= + +# SSL key file (valid only if SSL enabled). (string value) +#kombu_ssl_keyfile= + +# SSL cert file (valid only if SSL enabled). (string value) +#kombu_ssl_certfile= + +# SSL certification authority file (valid only if SSL +# enabled). (string value) +#kombu_ssl_ca_certs= + +# How long to wait before reconnecting in response to an AMQP +# consumer cancel notification. (floating point value) +#kombu_reconnect_delay=1.0 + +# The RabbitMQ broker address where a single node is used. +# (string value) +rabbit_host = {{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. +# (integer value) +rabbit_port = {{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +#rabbit_hosts=$rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +#rabbit_use_ssl=false + +# The RabbitMQ userid. (string value) +rabbit_userid = {{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +rabbit_password = {{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +#rabbit_login_method=AMQPLAIN + +# The RabbitMQ virtual host. (string value) +#rabbit_virtual_host=/ + +# How frequently to retry connecting with RabbitMQ. (integer +# value) +#rabbit_retry_interval=1 + +# How long to backoff for between retries when connecting to +# RabbitMQ. (integer value) +#rabbit_retry_backoff=2 + +# Maximum number of RabbitMQ connection retries. Default is 0 +# (infinite retry count). (integer value) +#rabbit_max_retries=0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change +# this option, you must wipe the RabbitMQ database. (boolean +# value) +#rabbit_ha_queues=false + +# Number of seconds after which the Rabbit broker is +# considered down if heartbeat's keep-alive fails (0 disable +# the heartbeat). (integer value) +#heartbeat_timeout_threshold=60 + +# How often times during the heartbeat_timeout_threshold we +# check the heartbeat. (integer value) +#heartbeat_rate=2 + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake +# (boolean value) +#fake_rabbit=false + + +[oslo_policy] + +# +# Options defined in oslo.policy +# + +# The JSON file that defines policies. (string value) +#policy_file=policy.json + +# Default rule. Enforced when a requested rule is not found. +# (string value) +#policy_default_rule=default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path +# defined by the config_dir option, or absolute paths. The +# file defined by policy_file must exist for these directories +# to be searched. Missing or empty directories are ignored. +# (multi valued) +#policy_dirs=policy.d + + +[pxe] + +# +# Options defined in ironic.drivers.modules.iscsi_deploy +# + +# Additional append parameters for baremetal PXE boot. (string +# value) +#pxe_append_params=nofb nomodeset vga=normal + +# Default file system format for ephemeral partition, if one +# is created. (string value) +#default_ephemeral_format=ext4 + +# Directory where images are stored on disk. (string value) +#images_path=/var/lib/ironic/images/ + +# Directory where master instance images are stored on disk. +# (string value) +#instance_master_path=/var/lib/ironic/master_images + +# Maximum size (in MiB) of cache for master images, including +# those in use. (integer value) +#image_cache_size=20480 + +# Maximum TTL (in minutes) for old master images in cache. +# (integer value) +#image_cache_ttl=10080 + +# The disk devices to scan while doing the deploy. (string +# value) +#disk_devices=cciss/c0d0,sda,hda,vda + + +# +# Options defined in ironic.drivers.modules.pxe +# + +# Template file for PXE configuration. (string value) +#pxe_config_template=$pybasedir/drivers/modules/pxe_config.template + +# Template file for PXE configuration for UEFI boot loader. +# (string value) +#uefi_pxe_config_template=$pybasedir/drivers/modules/elilo_efi_pxe_config.template + +# IP address of Ironic compute node's tftp server. (string +# value) +#tftp_server=$my_ip + +# Ironic compute node's tftp root path. (string value) +tftp_root=/srv/tftp_root/ + +# Directory where master tftp images are stored on disk. +# (string value) +tftp_master_path=/srv/tftp_root/master_images + +# Bootfile DHCP parameter. (string value) +#pxe_bootfile_name=pxelinux.0 + +# Bootfile DHCP parameter for UEFI boot mode. (string value) +#uefi_pxe_bootfile_name=elilo.efi + +# Ironic compute node's HTTP server URL. Example: +# http://192.1.2.3:8080 (string value) +#http_url= + +# Ironic compute node's HTTP root path. (string value) +#http_root=/httpboot + +# Enable iPXE boot. (boolean value) +#ipxe_enabled=false + +# The path to the main iPXE script file. (string value) +#ipxe_boot_script=$pybasedir/drivers/modules/boot.ipxe + + +[seamicro] + +# +# Options defined in ironic.drivers.modules.seamicro +# + +# Maximum retries for SeaMicro operations (integer value) +#max_retry=3 + +# Seconds to wait for power action to be completed (integer +# value) +#action_timeout=10 + + +[snmp] + +# +# Options defined in ironic.drivers.modules.snmp +# + +# Seconds to wait for power action to be completed (integer +# value) +#power_timeout=10 + + +[ssh] + +# +# Options defined in ironic.drivers.modules.ssh +# + +# libvirt uri (string value) +#libvirt_uri=qemu:///system + + +[swift] + +# +# Options defined in ironic.common.swift +# + +# Maximum number of times to retry a Swift request, before +# failing. (integer value) +#swift_max_retries=2 + + +[virtualbox] + +# +# Options defined in ironic.drivers.modules.virtualbox +# + +# Port on which VirtualBox web service is listening. (integer +# value) +#port=18083 + + diff --git a/old/install-files/openstack/usr/share/openstack/iscsi.yml b/old/install-files/openstack/usr/share/openstack/iscsi.yml new file mode 100644 index 00000000..b80377ae --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/iscsi.yml @@ -0,0 +1,15 @@ +--- +- hosts: localhost + tasks: + - name: Update kernel module dependencies + command: depmod -a + + - name: generate InitiatorName for iscsi + shell: iscsi-iname + register: initiator_name + + - lineinfile: + dest: /etc/iscsi/initiatorname.iscsi + regexp: '^InitiatorName=$' + line: 'InitiatorName={{ initiator_name.stdout }}' + backrefs: yes diff --git a/old/install-files/openstack/usr/share/openstack/keystone.yml b/old/install-files/openstack/usr/share/openstack/keystone.yml new file mode 100644 index 00000000..2fae4e98 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/keystone.yml @@ -0,0 +1,142 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/keystone.conf" + tasks: + + # RabbitMQ configuration, this may end up in a different playbook + - name: Create rabbitmq user + user: + name: rabbitmq + comment: Rabbitmq server daemon + shell: /sbin/nologin + home: /var/lib/rabbitmq + + - name: Create the rabbitmq directories + file: + path: "{{ item }}" + state: directory + owner: rabbitmq + group: rabbitmq + with_items: + - /var/run/rabbitmq + - /var/log/rabbitmq + - /etc/rabbitmq + + - name: Add the configuration needed for rabbitmq in /etc/rabbitmq using templates + template: + src: /usr/share/openstack/rabbitmq/{{ item }} + dest: /etc/rabbitmq/{{ item }} + owner: rabbitmq + group: rabbitmq + mode: 0644 + with_items: + - rabbitmq.config + - rabbitmq-env.conf + + - name: Enable and start rabbitmq services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - rabbitmq-server + + # Keystone configuration + - name: Create the keystone user. + user: + name: keystone + comment: Openstack Keystone Daemons + shell: /sbin/nologin + home: /var/lib/keystone + + - name: Create the /var folders for keystone + file: + path: "{{ item }}" + state: directory + owner: keystone + group: keystone + with_items: + - /var/run/keystone + - /var/lock/keystone + - /var/log/keystone + - /var/lib/keystone + + - name: Create /etc/keystone directory + file: + path: /etc/keystone + state: directory + + - name: Add the configuration needed for keystone in /etc using templates + template: + src: /usr/share/openstack/keystone/{{ item }} + dest: /etc/keystone/{{ item }} + with_lines: + - cd /usr/share/openstack/keystone && find -type f + + - name: Create postgresql user for keystone + postgresql_user: + name: "{{ KEYSTONE_DB_USER }}" + password: "{{ KEYSTONE_DB_PASSWORD }}" + sudo: yes + sudo_user: keystone + + - name: Create database for keystone services + postgresql_db: + name: keystone + owner: "{{ KEYSTONE_DB_USER }}" + sudo: yes + sudo_user: keystone + + - name: Initiate keystone database + command: keystone-manage db_sync + sudo: yes + sudo_user: keystone + + - name: Enable and start openstack-keystone service + service: + name: openstack-keystone.service + enabled: yes + state: started + + - name: Create admin tenant + keystone_user: + tenant: admin + tenant_description: Admin Tenant + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + endpoint: http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + + - name: Create admin user for the admin tenant + keystone_user: + user: admin + tenant: admin + password: "{{ KEYSTONE_ADMIN_PASSWORD }}" + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + endpoint: http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + + - name: Create admin role for admin user in the admin tenant + keystone_user: + role: admin + user: admin + tenant: admin + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + endpoint: http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + + - name: Create service tenant + keystone_user: + tenant: service + tenant_description: Service Tenant + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + endpoint: http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + + - name: Add keystone endpoint + keystone_service: + name: keystone + type: identity + description: Keystone Identity Service + publicurl: http://{{ ansible_hostname }}:5000/v2.0 + internalurl: http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + adminurl: http://{{ ansible_hostname }}:35357/v2.0 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + endpoint: http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 diff --git a/old/install-files/openstack/usr/share/openstack/keystone/keystone.conf b/old/install-files/openstack/usr/share/openstack/keystone/keystone.conf new file mode 100644 index 00000000..1a082601 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/keystone/keystone.conf @@ -0,0 +1,1733 @@ +[DEFAULT] + +# +# From keystone +# + +# A "shared secret" that can be used to bootstrap Keystone. This "token" does +# not represent a user, and carries no explicit authorization. To disable in +# production (highly recommended), remove AdminTokenAuthMiddleware from your +# paste application pipelines (for example, in keystone-paste.ini). (string +# value) +admin_token = {{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }} + +# (Deprecated) The port which the OpenStack Compute service listens on. This +# option was only used for string replacement in the templated catalog backend. +# Templated catalogs should replace the "$(compute_port)s" substitution with +# the static port of the compute service. As of Juno, this option is deprecated +# and will be removed in the L release. (integer value) +#compute_port = 8774 + +# The base public endpoint URL for Keystone that is advertised to clients +# (NOTE: this does NOT affect how Keystone listens for connections). Defaults +# to the base host URL of the request. E.g. a request to +# http://server:5000/v3/users will default to http://server:5000. You should +# only need to set this value if the base URL contains a path (e.g. /prefix/v3) +# or the endpoint should be found on a different server. (string value) +#public_endpoint = + +# The base admin endpoint URL for Keystone that is advertised to clients (NOTE: +# this does NOT affect how Keystone listens for connections). Defaults to the +# base host URL of the request. E.g. a request to http://server:35357/v3/users +# will default to http://server:35357. You should only need to set this value +# if the base URL contains a path (e.g. /prefix/v3) or the endpoint should be +# found on a different server. (string value) +#admin_endpoint = + +# Maximum depth of the project hierarchy. WARNING: setting it to a large value +# may adversely impact performance. (integer value) +#max_project_tree_depth = 5 + +# Limit the sizes of user & project ID/names. (integer value) +#max_param_size = 64 + +# Similar to max_param_size, but provides an exception for token values. +# (integer value) +#max_token_size = 8192 + +# Similar to the member_role_name option, this represents the default role ID +# used to associate users with their default projects in the v2 API. This will +# be used as the explicit role where one is not specified by the v2 API. +# (string value) +#member_role_id = 9fe2ff9ee4384b1894a90878d3e92bab + +# This is the role name used in combination with the member_role_id option; see +# that option for more detail. (string value) +#member_role_name = _member_ + +# The value passed as the keyword "rounds" to passlib's encrypt method. +# (integer value) +#crypt_strength = 40000 + +# The maximum number of entities that will be returned in a collection, with no +# limit set by default. This global limit may be then overridden for a specific +# driver, by specifying a list_limit in the appropriate section (e.g. +# [assignment]). (integer value) +#list_limit = + +# Set this to false if you want to enable the ability for user, group and +# project entities to be moved between domains by updating their domain_id. +# Allowing such movement is not recommended if the scope of a domain admin is +# being restricted by use of an appropriate policy file (see +# policy.v3cloudsample as an example). (boolean value) +#domain_id_immutable = true + +# If set to true, strict password length checking is performed for password +# manipulation. If a password exceeds the maximum length, the operation will +# fail with an HTTP 403 Forbidden error. If set to false, passwords are +# automatically truncated to the maximum length. (boolean value) +#strict_password_check = false + +# The HTTP header used to determine the scheme for the original request, even +# if it was removed by an SSL terminating proxy. Typical value is +# "HTTP_X_FORWARDED_PROTO". (string value) +#secure_proxy_ssl_header = + +# +# From keystone.notifications +# + +# Default publisher_id for outgoing notifications (string value) +#default_publisher_id = + +# Define the notification format for Identity Service events. A "basic" +# notification has information about the resource being operated on. A "cadf" +# notification has the same information, as well as information about the +# initiator of the event. Valid options are: basic and cadf (string value) +#notification_format = basic + +# +# From keystone.openstack.common.eventlet_backdoor +# + +# Enable eventlet backdoor. Acceptable values are 0, , and +# :, where 0 results in listening on a random tcp port number; +# results in listening on the specified port number (and not enabling +# backdoor if that port is in use); and : results in listening on +# the smallest unused port number within the specified range of port numbers. +# The chosen port is displayed in the service's log file. (string value) +#backdoor_port = + +# +# From oslo.log +# + +# Print debugging output (set logging level to DEBUG instead of default WARNING +# level). (boolean value) +#debug = false + +# Print more verbose output (set logging level to INFO instead of default +# WARNING level). (boolean value) +#verbose = false + +# The name of a logging configuration file. This file is appended to any +# existing logging configuration files. For details about logging configuration +# files, see the Python logging module documentation. (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append = + +# DEPRECATED. A logging.Formatter log message format string which may use any +# of the available logging.LogRecord attributes. This option is deprecated. +# Please use logging_context_format_string and logging_default_format_string +# instead. (string value) +#log_format = + +# Format string for %%(asctime)s in log records. Default: %(default)s . (string +# value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is set, logging will +# go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative --log-file paths. (string +# value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Use syslog for logging. Existing syslog format is DEPRECATED during I, and +# will change in J to honor RFC5424. (boolean value) +#use_syslog = false + +# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled, +# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The +# format without the APP-NAME is deprecated in I, and will be removed in J. +# (boolean value) +#use_syslog_rfc_format = false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility = LOG_USER + +# Log output to standard error. (boolean value) +#use_stderr = true + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. (string value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false + +# The format for an instance that is passed with the log message. (string +# value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. (string +# value) +#instance_uuid_format = "[instance: %(uuid)s] " + +# +# From oslo.messaging +# + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP. +# The "host" option should point or resolve to this address. (string value) +#rpc_zmq_bind_address = * + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker = oslo_messaging._drivers.matchmaker.MatchMakerLocalhost + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port = 9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts = 1 + +# Maximum number of ingress messages to locally buffer per topic. Default is +# unlimited. (integer value) +#rpc_zmq_topic_backlog = + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir = /var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match +# "host" option, if running Nova. (string value) +#rpc_zmq_host = localhost + +# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq. +# (integer value) +#rpc_cast_timeout = 30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq = 300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl = 600 + +# Size of RPC thread pool. (integer value) +#rpc_thread_pool_size = 64 + +# Driver or drivers to handle sending notifications. (multi valued) +#notification_driver = + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics = notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout = 60 + +# A URL representing the messaging driver to use and its full configuration. If +# not set, we fall back to the rpc_backend option and driver specific +# configuration. (string value) +#transport_url = + +# The messaging driver to use, defaults to rabbit. Other drivers include qpid +# and zmq. (string value) +rpc_backend = rabbit + +# The default exchange under which topics are scoped. May be overridden by an +# exchange name specified in the transport_url option. (string value) +#control_exchange = keystone + + +[assignment] + +# +# From keystone +# + +# Assignment backend driver. (string value) +#driver = + + +[auth] + +# +# From keystone +# + +# Default auth methods. (list value) +#methods = external,password,token,oauth1 + +# The password auth plugin module. (string value) +#password = keystone.auth.plugins.password.Password + +# The token auth plugin module. (string value) +#token = keystone.auth.plugins.token.Token + +# The external (REMOTE_USER) auth plugin module. (string value) +#external = keystone.auth.plugins.external.DefaultDomain + +# The oAuth1.0 auth plugin module. (string value) +#oauth1 = keystone.auth.plugins.oauth1.OAuth + + +[cache] + +# +# From keystone +# + +# Prefix for building the configuration dictionary for the cache region. This +# should not need to be changed unless there is another dogpile.cache region +# with the same configuration name. (string value) +#config_prefix = cache.keystone + +# Default TTL, in seconds, for any cached item in the dogpile.cache region. +# This applies to any cached method that doesn't have an explicit cache +# expiration time defined for it. (integer value) +#expiration_time = 600 + +# Dogpile.cache backend module. It is recommended that Memcache with pooling +# (keystone.cache.memcache_pool) or Redis (dogpile.cache.redis) be used in +# production deployments. Small workloads (single process) like devstack can +# use the dogpile.cache.memory backend. (string value) +#backend = keystone.common.cache.noop + +# Arguments supplied to the backend module. Specify this option once per +# argument to be passed to the dogpile.cache backend. Example format: +# ":". (multi valued) +#backend_argument = + +# Proxy classes to import that will affect the way the dogpile.cache backend +# functions. See the dogpile.cache documentation on changing-backend-behavior. +# (list value) +#proxies = + +# Global toggle for all caching using the should_cache_fn mechanism. (boolean +# value) +#enabled = false + +# Extra debugging from the cache backend (cache keys, get/set/delete/etc +# calls). This is only really useful if you need to see the specific cache- +# backend get/set/delete calls with the keys/values. Typically this should be +# left set to false. (boolean value) +#debug_cache_backend = false + +# Memcache servers in the format of "host:port". (dogpile.cache.memcache and +# keystone.cache.memcache_pool backends only). (list value) +#memcache_servers = localhost:11211 + +# Number of seconds memcached server is considered dead before it is tried +# again. (dogpile.cache.memcache and keystone.cache.memcache_pool backends +# only). (integer value) +#memcache_dead_retry = 300 + +# Timeout in seconds for every call to a server. (dogpile.cache.memcache and +# keystone.cache.memcache_pool backends only). (integer value) +#memcache_socket_timeout = 3 + +# Max total number of open connections to every memcached server. +# (keystone.cache.memcache_pool backend only). (integer value) +#memcache_pool_maxsize = 10 + +# Number of seconds a connection to memcached is held unused in the pool before +# it is closed. (keystone.cache.memcache_pool backend only). (integer value) +#memcache_pool_unused_timeout = 60 + +# Number of seconds that an operation will wait to get a memcache client +# connection. (integer value) +#memcache_pool_connection_get_timeout = 10 + + +[catalog] + +# +# From keystone +# + +# Catalog template file name for use with the template catalog backend. (string +# value) +#template_file = default_catalog.templates + +# Catalog backend driver. (string value) +#driver = keystone.catalog.backends.sql.Catalog + +# Toggle for catalog caching. This has no effect unless global caching is +# enabled. (boolean value) +#caching = true + +# Time to cache catalog data (in seconds). This has no effect unless global and +# catalog caching are enabled. (integer value) +#cache_time = + +# Maximum number of entities that will be returned in a catalog collection. +# (integer value) +#list_limit = + + +[credential] + +# +# From keystone +# + +# Credential backend driver. (string value) +#driver = keystone.credential.backends.sql.Credential + + +[database] + +# +# From oslo.db +# + +# The file name to use with SQLite. (string value) +# Deprecated group/name - [DEFAULT]/sqlite_db +#sqlite_db = oslo.sqlite + +# If True, SQLite uses synchronous mode. (boolean value) +# Deprecated group/name - [DEFAULT]/sqlite_synchronous +#sqlite_synchronous = true + +# The back end to use for the database. (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend = sqlalchemy + +# The SQLAlchemy connection string to use to connect to the database. (string +# value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +connection=postgresql://{{ KEYSTONE_DB_USER }}:{{ KEYSTONE_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/keystone + +# The SQLAlchemy connection string to use to connect to the slave database. +# (string value) +#slave_connection = + +# The SQL mode to be used for MySQL sessions. This option, including the +# default, overrides any server-set SQL mode. To use whatever SQL mode is set +# by the server configuration, set this to no value. Example: mysql_sql_mode= +# (string value) +#mysql_sql_mode = TRADITIONAL + +# Timeout before idle SQL connections are reaped. (integer value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout = 3600 + +# Minimum number of SQL connections to keep open in a pool. (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size = + +# Maximum number of database connection retries during startup. Set to -1 to +# specify an infinite retry count. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries = 10 + +# Interval between retries of opening a SQL connection. (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval = 10 + +# If set, use this value for max_overflow with SQLAlchemy. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow = + +# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug = 0 + +# Add Python stack traces to SQL as comment strings. (boolean value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace = false + +# If set, use this value for pool_timeout with SQLAlchemy. (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout = + +# Enable the experimental use of database reconnect on connection lost. +# (boolean value) +#use_db_reconnect = false + +# Seconds between retries of a database transaction. (integer value) +#db_retry_interval = 1 + +# If True, increases the interval between retries of a database operation up to +# db_max_retry_interval. (boolean value) +#db_inc_retry_interval = true + +# If db_inc_retry_interval is set, the maximum seconds between retries of a +# database operation. (integer value) +#db_max_retry_interval = 10 + +# Maximum retries in case of connection error or deadlock error before error is +# raised. Set to -1 to specify an infinite retry count. (integer value) +#db_max_retries = 20 + + +[domain_config] + +# +# From keystone +# + +# Domain config backend driver. (string value) +#driver = keystone.resource.config_backends.sql.DomainConfig + +# Toggle for domain config caching. This has no effect unless global caching is +# enabled. (boolean value) +#caching = true + +# TTL (in seconds) to cache domain config data. This has no effect unless +# domain config caching is enabled. (integer value) +#cache_time = 300 + + +[endpoint_filter] + +# +# From keystone +# + +# Endpoint Filter backend driver (string value) +#driver = keystone.contrib.endpoint_filter.backends.sql.EndpointFilter + +# Toggle to return all active endpoints if no filter exists. (boolean value) +#return_all_endpoints_if_no_filter = true + + +[endpoint_policy] + +# +# From keystone +# + +# Endpoint policy backend driver (string value) +#driver = keystone.contrib.endpoint_policy.backends.sql.EndpointPolicy + + +[eventlet_server] + +# +# From keystone +# + +# The number of worker processes to serve the public eventlet application. +# Defaults to number of CPUs (minimum of 2). (integer value) +# Deprecated group/name - [DEFAULT]/public_workers +#public_workers = + +# The number of worker processes to serve the admin eventlet application. +# Defaults to number of CPUs (minimum of 2). (integer value) +# Deprecated group/name - [DEFAULT]/admin_workers +#admin_workers = + +# The IP address of the network interface for the public service to listen on. +# (string value) +# Deprecated group/name - [DEFAULT]/bind_host +# Deprecated group/name - [DEFAULT]/public_bind_host +#public_bind_host = 0.0.0.0 + +# The port number which the public service listens on. (integer value) +# Deprecated group/name - [DEFAULT]/public_port +public_port = 5000 + +# The IP address of the network interface for the admin service to listen on. +# (string value) +# Deprecated group/name - [DEFAULT]/bind_host +# Deprecated group/name - [DEFAULT]/admin_bind_host +#admin_bind_host = 0.0.0.0 + +# The port number which the admin service listens on. (integer value) +# Deprecated group/name - [DEFAULT]/admin_port +admin_port = 35357 + +# Set this to true if you want to enable TCP_KEEPALIVE on server sockets, i.e. +# sockets used by the Keystone wsgi server for client connections. (boolean +# value) +# Deprecated group/name - [DEFAULT]/tcp_keepalive +#tcp_keepalive = false + +# Sets the value of TCP_KEEPIDLE in seconds for each server socket. Only +# applies if tcp_keepalive is true. (integer value) +# Deprecated group/name - [DEFAULT]/tcp_keepidle +#tcp_keepidle = 600 + + +[eventlet_server_ssl] + +# +# From keystone +# + +# Toggle for SSL support on the Keystone eventlet servers. (boolean value) +# Deprecated group/name - [ssl]/enable +#enable = false + +# Path of the certfile for SSL. For non-production environments, you may be +# interested in using `keystone-manage ssl_setup` to generate self-signed +# certificates. (string value) +# Deprecated group/name - [ssl]/certfile +#certfile = /etc/keystone/ssl/certs/keystone.pem + +# Path of the keyfile for SSL. (string value) +# Deprecated group/name - [ssl]/keyfile +#keyfile = /etc/keystone/ssl/private/keystonekey.pem + +# Path of the CA cert file for SSL. (string value) +# Deprecated group/name - [ssl]/ca_certs +#ca_certs = /etc/keystone/ssl/certs/ca.pem + +# Require client certificate. (boolean value) +# Deprecated group/name - [ssl]/cert_required +#cert_required = false + + +[federation] + +# +# From keystone +# + +# Federation backend driver. (string value) +#driver = keystone.contrib.federation.backends.sql.Federation + +# Value to be used when filtering assertion parameters from the environment. +# (string value) +#assertion_prefix = + +# Value to be used to obtain the entity ID of the Identity Provider from the +# environment (e.g. if using the mod_shib plugin this value is `Shib-Identity- +# Provider`). (string value) +#remote_id_attribute = + +# A domain name that is reserved to allow federated ephemeral users to have a +# domain concept. Note that an admin will not be able to create a domain with +# this name or update an existing domain to this name. You are not advised to +# change this value unless you really have to. Changing this option to empty +# string or None will not have any impact and default name will be used. +# (string value) +#federated_domain_name = Federated + +# A list of trusted dashboard hosts. Before accepting a Single Sign-On request +# to return a token, the origin host must be a member of the trusted_dashboard +# list. This configuration option may be repeated for multiple values. For +# example: trusted_dashboard=http://acme.com trusted_dashboard=http://beta.com +# (multi valued) +#trusted_dashboard = + +# Location of Single Sign-On callback handler, will return a token to a trusted +# dashboard host. (string value) +#sso_callback_template = /etc/keystone/sso_callback_template.html + + +[fernet_tokens] + +# +# From keystone +# + +# Directory containing Fernet token keys. (string value) +#key_repository = /etc/keystone/fernet-keys/ + +# This controls how many keys are held in rotation by keystone-manage +# fernet_rotate before they are discarded. The default value of 3 means that +# keystone will maintain one staged key, one primary key, and one secondary +# key. Increasing this value means that additional secondary keys will be kept +# in the rotation. (integer value) +#max_active_keys = 3 + + +[identity] + +# +# From keystone +# + +# This references the domain to use for all Identity API v2 requests (which are +# not aware of domains). A domain with this ID will be created for you by +# keystone-manage db_sync in migration 008. The domain referenced by this ID +# cannot be deleted on the v3 API, to prevent accidentally breaking the v2 API. +# There is nothing special about this domain, other than the fact that it must +# exist to order to maintain support for your v2 clients. (string value) +#default_domain_id = default + +# A subset (or all) of domains can have their own identity driver, each with +# their own partial configuration options, stored in either the resource +# backend or in a file in a domain configuration directory (depending on the +# setting of domain_configurations_from_database). Only values specific to the +# domain need to be specified in this manner. This feature is disabled by +# default; set to true to enable. (boolean value) +#domain_specific_drivers_enabled = false + +# Extract the domain specific configuration options from the resource backend +# where they have been stored with the domain data. This feature is disabled by +# default (in which case the domain specific options will be loaded from files +# in the domain configuration directory); set to true to enable. (boolean +# value) +#domain_configurations_from_database = false + +# Path for Keystone to locate the domain specific identity configuration files +# if domain_specific_drivers_enabled is set to true. (string value) +#domain_config_dir = /etc/keystone/domains + +# Identity backend driver. (string value) +#driver = keystone.identity.backends.sql.Identity + +# Toggle for identity caching. This has no effect unless global caching is +# enabled. (boolean value) +#caching = true + +# Time to cache identity data (in seconds). This has no effect unless global +# and identity caching are enabled. (integer value) +#cache_time = 600 + +# Maximum supported length for user passwords; decrease to improve performance. +# (integer value) +#max_password_length = 4096 + +# Maximum number of entities that will be returned in an identity collection. +# (integer value) +#list_limit = + + +[identity_mapping] + +# +# From keystone +# + +# Keystone Identity Mapping backend driver. (string value) +#driver = keystone.identity.mapping_backends.sql.Mapping + +# Public ID generator for user and group entities. The Keystone identity mapper +# only supports generators that produce no more than 64 characters. (string +# value) +#generator = keystone.identity.id_generators.sha256.Generator + +# The format of user and group IDs changed in Juno for backends that do not +# generate UUIDs (e.g. LDAP), with keystone providing a hash mapping to the +# underlying attribute in LDAP. By default this mapping is disabled, which +# ensures that existing IDs will not change. Even when the mapping is enabled +# by using domain specific drivers, any users and groups from the default +# domain being handled by LDAP will still not be mapped to ensure their IDs +# remain backward compatible. Setting this value to False will enable the +# mapping for even the default LDAP driver. It is only safe to do this if you +# do not already have assignments for users and groups from the default LDAP +# domain, and it is acceptable for Keystone to provide the different IDs to +# clients than it did previously. Typically this means that the only time you +# can set this value to False is when configuring a fresh installation. +# (boolean value) +#backward_compatible_ids = true + + +[kvs] + +# +# From keystone +# + +# Extra dogpile.cache backend modules to register with the dogpile.cache +# library. (list value) +#backends = + +# Prefix for building the configuration dictionary for the KVS region. This +# should not need to be changed unless there is another dogpile.cache region +# with the same configuration name. (string value) +#config_prefix = keystone.kvs + +# Toggle to disable using a key-mangling function to ensure fixed length keys. +# This is toggle-able for debugging purposes, it is highly recommended to +# always leave this set to true. (boolean value) +#enable_key_mangler = true + +# Default lock timeout (in seconds) for distributed locking. (integer value) +#default_lock_timeout = 5 + + +[ldap] + +# +# From keystone +# + +# URL for connecting to the LDAP server. (string value) +#url = ldap://localhost + +# User BindDN to query the LDAP server. (string value) +#user = + +# Password for the BindDN to query the LDAP server. (string value) +#password = + +# LDAP server suffix (string value) +#suffix = cn=example,cn=com + +# If true, will add a dummy member to groups. This is required if the +# objectclass for groups requires the "member" attribute. (boolean value) +#use_dumb_member = false + +# DN of the "dummy member" to use when "use_dumb_member" is enabled. (string +# value) +#dumb_member = cn=dumb,dc=nonexistent + +# Delete subtrees using the subtree delete control. Only enable this option if +# your LDAP server supports subtree deletion. (boolean value) +#allow_subtree_delete = false + +# The LDAP scope for queries, this can be either "one" (onelevel/singleLevel) +# or "sub" (subtree/wholeSubtree). (string value) +#query_scope = one + +# Maximum results per page; a value of zero ("0") disables paging. (integer +# value) +#page_size = 0 + +# The LDAP dereferencing option for queries. This can be either "never", +# "searching", "always", "finding" or "default". The "default" option falls +# back to using default dereferencing configured by your ldap.conf. (string +# value) +#alias_dereferencing = default + +# Sets the LDAP debugging level for LDAP calls. A value of 0 means that +# debugging is not enabled. This value is a bitmask, consult your LDAP +# documentation for possible values. (integer value) +#debug_level = + +# Override the system's default referral chasing behavior for queries. (boolean +# value) +#chase_referrals = + +# Search base for users. (string value) +#user_tree_dn = + +# LDAP search filter for users. (string value) +#user_filter = + +# LDAP objectclass for users. (string value) +#user_objectclass = inetOrgPerson + +# LDAP attribute mapped to user id. WARNING: must not be a multivalued +# attribute. (string value) +#user_id_attribute = cn + +# LDAP attribute mapped to user name. (string value) +#user_name_attribute = sn + +# LDAP attribute mapped to user email. (string value) +#user_mail_attribute = mail + +# LDAP attribute mapped to password. (string value) +#user_pass_attribute = userPassword + +# LDAP attribute mapped to user enabled flag. (string value) +#user_enabled_attribute = enabled + +# Invert the meaning of the boolean enabled values. Some LDAP servers use a +# boolean lock attribute where "true" means an account is disabled. Setting +# "user_enabled_invert = true" will allow these lock attributes to be used. +# This setting will have no effect if "user_enabled_mask" or +# "user_enabled_emulation" settings are in use. (boolean value) +#user_enabled_invert = false + +# Bitmask integer to indicate the bit that the enabled value is stored in if +# the LDAP server represents "enabled" as a bit on an integer rather than a +# boolean. A value of "0" indicates the mask is not used. If this is not set to +# "0" the typical value is "2". This is typically used when +# "user_enabled_attribute = userAccountControl". (integer value) +#user_enabled_mask = 0 + +# Default value to enable users. This should match an appropriate int value if +# the LDAP server uses non-boolean (bitmask) values to indicate if a user is +# enabled or disabled. If this is not set to "True" the typical value is "512". +# This is typically used when "user_enabled_attribute = userAccountControl". +# (string value) +#user_enabled_default = True + +# List of attributes stripped off the user on update. (list value) +#user_attribute_ignore = default_project_id,tenants + +# LDAP attribute mapped to default_project_id for users. (string value) +#user_default_project_id_attribute = + +# Allow user creation in LDAP backend. (boolean value) +#user_allow_create = true + +# Allow user updates in LDAP backend. (boolean value) +#user_allow_update = true + +# Allow user deletion in LDAP backend. (boolean value) +#user_allow_delete = true + +# If true, Keystone uses an alternative method to determine if a user is +# enabled or not by checking if they are a member of the +# "user_enabled_emulation_dn" group. (boolean value) +#user_enabled_emulation = false + +# DN of the group entry to hold enabled users when using enabled emulation. +# (string value) +#user_enabled_emulation_dn = + +# List of additional LDAP attributes used for mapping additional attribute +# mappings for users. Attribute mapping format is :, +# where ldap_attr is the attribute in the LDAP entry and user_attr is the +# Identity API attribute. (list value) +#user_additional_attribute_mapping = + +# Search base for projects (string value) +# Deprecated group/name - [ldap]/tenant_tree_dn +#project_tree_dn = + +# LDAP search filter for projects. (string value) +# Deprecated group/name - [ldap]/tenant_filter +#project_filter = + +# LDAP objectclass for projects. (string value) +# Deprecated group/name - [ldap]/tenant_objectclass +#project_objectclass = groupOfNames + +# LDAP attribute mapped to project id. (string value) +# Deprecated group/name - [ldap]/tenant_id_attribute +#project_id_attribute = cn + +# LDAP attribute mapped to project membership for user. (string value) +# Deprecated group/name - [ldap]/tenant_member_attribute +#project_member_attribute = member + +# LDAP attribute mapped to project name. (string value) +# Deprecated group/name - [ldap]/tenant_name_attribute +#project_name_attribute = ou + +# LDAP attribute mapped to project description. (string value) +# Deprecated group/name - [ldap]/tenant_desc_attribute +#project_desc_attribute = description + +# LDAP attribute mapped to project enabled. (string value) +# Deprecated group/name - [ldap]/tenant_enabled_attribute +#project_enabled_attribute = enabled + +# LDAP attribute mapped to project domain_id. (string value) +# Deprecated group/name - [ldap]/tenant_domain_id_attribute +#project_domain_id_attribute = businessCategory + +# List of attributes stripped off the project on update. (list value) +# Deprecated group/name - [ldap]/tenant_attribute_ignore +#project_attribute_ignore = + +# Allow project creation in LDAP backend. (boolean value) +# Deprecated group/name - [ldap]/tenant_allow_create +#project_allow_create = true + +# Allow project update in LDAP backend. (boolean value) +# Deprecated group/name - [ldap]/tenant_allow_update +#project_allow_update = true + +# Allow project deletion in LDAP backend. (boolean value) +# Deprecated group/name - [ldap]/tenant_allow_delete +#project_allow_delete = true + +# If true, Keystone uses an alternative method to determine if a project is +# enabled or not by checking if they are a member of the +# "project_enabled_emulation_dn" group. (boolean value) +# Deprecated group/name - [ldap]/tenant_enabled_emulation +#project_enabled_emulation = false + +# DN of the group entry to hold enabled projects when using enabled emulation. +# (string value) +# Deprecated group/name - [ldap]/tenant_enabled_emulation_dn +#project_enabled_emulation_dn = + +# Additional attribute mappings for projects. Attribute mapping format is +# :, where ldap_attr is the attribute in the LDAP entry +# and user_attr is the Identity API attribute. (list value) +# Deprecated group/name - [ldap]/tenant_additional_attribute_mapping +#project_additional_attribute_mapping = + +# Search base for roles. (string value) +#role_tree_dn = + +# LDAP search filter for roles. (string value) +#role_filter = + +# LDAP objectclass for roles. (string value) +#role_objectclass = organizationalRole + +# LDAP attribute mapped to role id. (string value) +#role_id_attribute = cn + +# LDAP attribute mapped to role name. (string value) +#role_name_attribute = ou + +# LDAP attribute mapped to role membership. (string value) +#role_member_attribute = roleOccupant + +# List of attributes stripped off the role on update. (list value) +#role_attribute_ignore = + +# Allow role creation in LDAP backend. (boolean value) +#role_allow_create = true + +# Allow role update in LDAP backend. (boolean value) +#role_allow_update = true + +# Allow role deletion in LDAP backend. (boolean value) +#role_allow_delete = true + +# Additional attribute mappings for roles. Attribute mapping format is +# :, where ldap_attr is the attribute in the LDAP entry +# and user_attr is the Identity API attribute. (list value) +#role_additional_attribute_mapping = + +# Search base for groups. (string value) +#group_tree_dn = + +# LDAP search filter for groups. (string value) +#group_filter = + +# LDAP objectclass for groups. (string value) +#group_objectclass = groupOfNames + +# LDAP attribute mapped to group id. (string value) +#group_id_attribute = cn + +# LDAP attribute mapped to group name. (string value) +#group_name_attribute = ou + +# LDAP attribute mapped to show group membership. (string value) +#group_member_attribute = member + +# LDAP attribute mapped to group description. (string value) +#group_desc_attribute = description + +# List of attributes stripped off the group on update. (list value) +#group_attribute_ignore = + +# Allow group creation in LDAP backend. (boolean value) +#group_allow_create = true + +# Allow group update in LDAP backend. (boolean value) +#group_allow_update = true + +# Allow group deletion in LDAP backend. (boolean value) +#group_allow_delete = true + +# Additional attribute mappings for groups. Attribute mapping format is +# :, where ldap_attr is the attribute in the LDAP entry +# and user_attr is the Identity API attribute. (list value) +#group_additional_attribute_mapping = + +# CA certificate file path for communicating with LDAP servers. (string value) +#tls_cacertfile = + +# CA certificate directory path for communicating with LDAP servers. (string +# value) +#tls_cacertdir = + +# Enable TLS for communicating with LDAP servers. (boolean value) +#use_tls = false + +# Valid options for tls_req_cert are demand, never, and allow. (string value) +#tls_req_cert = demand + +# Enable LDAP connection pooling. (boolean value) +#use_pool = false + +# Connection pool size. (integer value) +#pool_size = 10 + +# Maximum count of reconnect trials. (integer value) +#pool_retry_max = 3 + +# Time span in seconds to wait between two reconnect trials. (floating point +# value) +#pool_retry_delay = 0.1 + +# Connector timeout in seconds. Value -1 indicates indefinite wait for +# response. (integer value) +#pool_connection_timeout = -1 + +# Connection lifetime in seconds. (integer value) +#pool_connection_lifetime = 600 + +# Enable LDAP connection pooling for end user authentication. If use_pool is +# disabled, then this setting is meaningless and is not used at all. (boolean +# value) +#use_auth_pool = false + +# End user auth connection pool size. (integer value) +#auth_pool_size = 100 + +# End user auth connection lifetime in seconds. (integer value) +#auth_pool_connection_lifetime = 60 + + +[matchmaker_redis] + +# +# From oslo.messaging +# + +# Host to locate redis. (string value) +#host = 127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port = 6379 + +# Password for Redis server (optional). (string value) +#password = + + +[matchmaker_ring] + +# +# From oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile = /etc/oslo/matchmaker_ring.json + + +[memcache] + +# +# From keystone +# + +# Memcache servers in the format of "host:port". (list value) +#servers = localhost:11211 + +# Number of seconds memcached server is considered dead before it is tried +# again. This is used by the key value store system (e.g. token pooled +# memcached persistence backend). (integer value) +#dead_retry = 300 + +# Timeout in seconds for every call to a server. This is used by the key value +# store system (e.g. token pooled memcached persistence backend). (integer +# value) +#socket_timeout = 3 + +# Max total number of open connections to every memcached server. This is used +# by the key value store system (e.g. token pooled memcached persistence +# backend). (integer value) +#pool_maxsize = 10 + +# Number of seconds a connection to memcached is held unused in the pool before +# it is closed. This is used by the key value store system (e.g. token pooled +# memcached persistence backend). (integer value) +#pool_unused_timeout = 60 + +# Number of seconds that an operation will wait to get a memcache client +# connection. This is used by the key value store system (e.g. token pooled +# memcached persistence backend). (integer value) +#pool_connection_get_timeout = 10 + + +[oauth1] + +# +# From keystone +# + +# Credential backend driver. (string value) +#driver = keystone.contrib.oauth1.backends.sql.OAuth1 + +# Duration (in seconds) for the OAuth Request Token. (integer value) +#request_token_duration = 28800 + +# Duration (in seconds) for the OAuth Access Token. (integer value) +#access_token_duration = 86400 + + +[os_inherit] + +# +# From keystone +# + +# role-assignment inheritance to projects from owning domain or from projects +# higher in the hierarchy can be optionally enabled. (boolean value) +#enabled = false + + +[oslo_messaging_amqp] + +# +# From oslo.messaging +# + +# address prefix used when sending to a specific server (string value) +# Deprecated group/name - [amqp1]/server_request_prefix +#server_request_prefix = exclusive + +# address prefix used when broadcasting to all servers (string value) +# Deprecated group/name - [amqp1]/broadcast_prefix +#broadcast_prefix = broadcast + +# address prefix when sending to any server in group (string value) +# Deprecated group/name - [amqp1]/group_request_prefix +#group_request_prefix = unicast + +# Name for the AMQP container (string value) +# Deprecated group/name - [amqp1]/container_name +#container_name = + +# Timeout for inactive connections (in seconds) (integer value) +# Deprecated group/name - [amqp1]/idle_timeout +#idle_timeout = 0 + +# Debug: dump AMQP frames to stdout (boolean value) +# Deprecated group/name - [amqp1]/trace +#trace = false + +# CA certificate PEM file for verifing server certificate (string value) +# Deprecated group/name - [amqp1]/ssl_ca_file +#ssl_ca_file = + +# Identifying certificate PEM file to present to clients (string value) +# Deprecated group/name - [amqp1]/ssl_cert_file +#ssl_cert_file = + +# Private key PEM file used to sign cert_file certificate (string value) +# Deprecated group/name - [amqp1]/ssl_key_file +#ssl_key_file = + +# Password for decrypting ssl_key_file (if encrypted) (string value) +# Deprecated group/name - [amqp1]/ssl_key_password +#ssl_key_password = + +# Accept clients using either SSL or plain TCP (boolean value) +# Deprecated group/name - [amqp1]/allow_insecure_clients +#allow_insecure_clients = false + + +[oslo_messaging_qpid] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# Qpid broker hostname. (string value) +# Deprecated group/name - [DEFAULT]/qpid_hostname +#qpid_hostname = localhost + +# Qpid broker port. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_port +#qpid_port = 5672 + +# Qpid HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/qpid_hosts +#qpid_hosts = $qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_username +#qpid_username = + +# Password for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_password +#qpid_password = + +# Space separated list of SASL mechanisms to use for auth. (string value) +# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms +#qpid_sasl_mechanisms = + +# Seconds between connection keepalive heartbeats. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_heartbeat +#qpid_heartbeat = 60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +# Deprecated group/name - [DEFAULT]/qpid_protocol +#qpid_protocol = tcp + +# Whether to disable the Nagle algorithm. (boolean value) +# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay +#qpid_tcp_nodelay = true + +# The number of prefetched messages held by receiver. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity +#qpid_receiver_capacity = 1 + +# The qpid topology version to use. Version 1 is what was originally used by +# impl_qpid. Version 2 includes some backwards-incompatible changes that allow +# broker federation to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_topology_version +#qpid_topology_version = 1 + + +[oslo_messaging_rabbit] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and +# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some +# distributions. (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_version +#kombu_ssl_version = + +# SSL key file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile +#kombu_ssl_keyfile = + +# SSL cert file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile +#kombu_ssl_certfile = + +# SSL certification authority file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs +#kombu_ssl_ca_certs = + +# How long to wait before reconnecting in response to an AMQP consumer cancel +# notification. (floating point value) +# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay +#kombu_reconnect_delay = 1.0 + +# The RabbitMQ broker address where a single node is used. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_host +rabbit_host = {{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_port +rabbit_port = {{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/rabbit_hosts +rabbit_hosts = $rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_use_ssl +rabbit_use_ssl = false + +# The RabbitMQ userid. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_userid +rabbit_userid = {{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_password +rabbit_password = {{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_login_method +#rabbit_login_method = AMQPLAIN + +# The RabbitMQ virtual host. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_virtual_host +#rabbit_virtual_host = / + +# How frequently to retry connecting with RabbitMQ. (integer value) +#rabbit_retry_interval = 1 + +# How long to backoff for between retries when connecting to RabbitMQ. (integer +# value) +# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff +#rabbit_retry_backoff = 2 + +# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry +# count). (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_max_retries +#rabbit_max_retries = 0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you +# must wipe the RabbitMQ database. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_ha_queues +#rabbit_ha_queues = false + +# Number of seconds after which the Rabbit broker is considered down if +# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value) +#heartbeat_timeout_threshold = 60 + +# How often times during the heartbeat_timeout_threshold we check the +# heartbeat. (integer value) +#heartbeat_rate = 2 + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value) +# Deprecated group/name - [DEFAULT]/fake_rabbit +#fake_rabbit = false + + +[oslo_middleware] + +# +# From oslo.middleware +# + +# The maximum body size for each request, in bytes. (integer value) +# Deprecated group/name - [DEFAULT]/osapi_max_request_body_size +# Deprecated group/name - [DEFAULT]/max_request_body_size +#max_request_body_size = 114688 + + +[oslo_policy] + +# +# From oslo.policy +# + +# The JSON file that defines policies. (string value) +# Deprecated group/name - [DEFAULT]/policy_file +#policy_file = policy.json + +# Default rule. Enforced when a requested rule is not found. (string value) +# Deprecated group/name - [DEFAULT]/policy_default_rule +#policy_default_rule = default + +# Directories where policy configuration files are stored. They can be relative +# to any directory in the search path defined by the config_dir option, or +# absolute paths. The file defined by policy_file must exist for these +# directories to be searched. Missing or empty directories are ignored. (multi +# valued) +# Deprecated group/name - [DEFAULT]/policy_dirs +#policy_dirs = policy.d + + +[paste_deploy] + +# +# From keystone +# + +# Name of the paste configuration file that defines the available pipelines. +# (string value) +#config_file = keystone-paste.ini + + +[policy] + +# +# From keystone +# + +# Policy backend driver. (string value) +#driver = keystone.policy.backends.sql.Policy + +# Maximum number of entities that will be returned in a policy collection. +# (integer value) +#list_limit = + + +[resource] + +# +# From keystone +# + +# Resource backend driver. If a resource driver is not specified, the +# assignment driver will choose the resource driver. (string value) +#driver = + +# Toggle for resource caching. This has no effect unless global caching is +# enabled. (boolean value) +# Deprecated group/name - [assignment]/caching +#caching = true + +# TTL (in seconds) to cache resource data. This has no effect unless global +# caching is enabled. (integer value) +# Deprecated group/name - [assignment]/cache_time +#cache_time = + +# Maximum number of entities that will be returned in a resource collection. +# (integer value) +# Deprecated group/name - [assignment]/list_limit +#list_limit = + + +[revoke] + +# +# From keystone +# + +# An implementation of the backend for persisting revocation events. (string +# value) +#driver = keystone.contrib.revoke.backends.sql.Revoke + +# This value (calculated in seconds) is added to token expiration before a +# revocation event may be removed from the backend. (integer value) +#expiration_buffer = 1800 + +# Toggle for revocation event caching. This has no effect unless global caching +# is enabled. (boolean value) +#caching = true + +# Time to cache the revocation list and the revocation events (in seconds). +# This has no effect unless global and token caching are enabled. (integer +# value) +# Deprecated group/name - [token]/revocation_cache_time +#cache_time = 3600 + + +[role] + +# +# From keystone +# + +# Role backend driver. (string value) +#driver = + +# Toggle for role caching. This has no effect unless global caching is enabled. +# (boolean value) +#caching = true + +# TTL (in seconds) to cache role data. This has no effect unless global caching +# is enabled. (integer value) +#cache_time = + +# Maximum number of entities that will be returned in a role collection. +# (integer value) +#list_limit = + + +[saml] + +# +# From keystone +# + +# Default TTL, in seconds, for any generated SAML assertion created by +# Keystone. (integer value) +#assertion_expiration_time = 3600 + +# Binary to be called for XML signing. Install the appropriate package, specify +# absolute path or adjust your PATH environment variable if the binary cannot +# be found. (string value) +#xmlsec1_binary = xmlsec1 + +# Path of the certfile for SAML signing. For non-production environments, you +# may be interested in using `keystone-manage pki_setup` to generate self- +# signed certificates. Note, the path cannot contain a comma. (string value) +#certfile = /etc/keystone/ssl/certs/signing_cert.pem + +# Path of the keyfile for SAML signing. Note, the path cannot contain a comma. +# (string value) +#keyfile = /etc/keystone/ssl/private/signing_key.pem + +# Entity ID value for unique Identity Provider identification. Usually FQDN is +# set with a suffix. A value is required to generate IDP Metadata. For example: +# https://keystone.example.com/v3/OS-FEDERATION/saml2/idp (string value) +#idp_entity_id = + +# Identity Provider Single-Sign-On service value, required in the Identity +# Provider's metadata. A value is required to generate IDP Metadata. For +# example: https://keystone.example.com/v3/OS-FEDERATION/saml2/sso (string +# value) +#idp_sso_endpoint = + +# Language used by the organization. (string value) +#idp_lang = en + +# Organization name the installation belongs to. (string value) +#idp_organization_name = + +# Organization name to be displayed. (string value) +#idp_organization_display_name = + +# URL of the organization. (string value) +#idp_organization_url = + +# Company of contact person. (string value) +#idp_contact_company = + +# Given name of contact person (string value) +#idp_contact_name = + +# Surname of contact person. (string value) +#idp_contact_surname = + +# Email address of contact person. (string value) +#idp_contact_email = + +# Telephone number of contact person. (string value) +#idp_contact_telephone = + +# Contact type. Allowed values are: technical, support, administrative billing, +# and other (string value) +#idp_contact_type = other + +# Path to the Identity Provider Metadata file. This file should be generated +# with the keystone-manage saml_idp_metadata command. (string value) +#idp_metadata_path = /etc/keystone/saml2_idp_metadata.xml + +# The prefix to use for the RelayState SAML attribute, used when generating ECP +# wrapped assertions. (string value) +#relay_state_prefix = ss:mem: + + +[signing] + +# +# From keystone +# + +# Path of the certfile for token signing. For non-production environments, you +# may be interested in using `keystone-manage pki_setup` to generate self- +# signed certificates. (string value) +#certfile = /etc/keystone/ssl/certs/signing_cert.pem + +# Path of the keyfile for token signing. (string value) +#keyfile = /etc/keystone/ssl/private/signing_key.pem + +# Path of the CA for token signing. (string value) +#ca_certs = /etc/keystone/ssl/certs/ca.pem + +# Path of the CA key for token signing. (string value) +#ca_key = /etc/keystone/ssl/private/cakey.pem + +# Key size (in bits) for token signing cert (auto generated certificate). +# (integer value) +#key_size = 2048 + +# Days the token signing cert is valid for (auto generated certificate). +# (integer value) +#valid_days = 3650 + +# Certificate subject (auto generated certificate) for token signing. (string +# value) +#cert_subject = /C=US/ST=Unset/L=Unset/O=Unset/CN=www.example.com + + +[ssl] + +# +# From keystone +# + +# Path of the CA key file for SSL. (string value) +#ca_key = /etc/keystone/ssl/private/cakey.pem + +# SSL key length (in bits) (auto generated certificate). (integer value) +#key_size = 1024 + +# Days the certificate is valid for once signed (auto generated certificate). +# (integer value) +#valid_days = 3650 + +# SSL certificate subject (auto generated certificate). (string value) +#cert_subject = /C=US/ST=Unset/L=Unset/O=Unset/CN=localhost + + +[token] + +# +# From keystone +# + +# External auth mechanisms that should add bind information to token, e.g., +# kerberos,x509. (list value) +#bind = + +# Enforcement policy on tokens presented to Keystone with bind information. One +# of disabled, permissive, strict, required or a specifically required bind +# mode, e.g., kerberos or x509 to require binding to that authentication. +# (string value) +#enforce_token_bind = permissive + +# Amount of time a token should remain valid (in seconds). (integer value) +#expiration = 3600 + +# Controls the token construction, validation, and revocation operations. Core +# providers are "keystone.token.providers.[fernet|pkiz|pki|uuid].Provider". +# (string value) +provider = keystone.token.providers.uuid.Provider + +# Token persistence backend driver. (string value) +driver = keystone.token.persistence.backends.sql.Token + +# Toggle for token system caching. This has no effect unless global caching is +# enabled. (boolean value) +#caching = true + +# Time to cache tokens (in seconds). This has no effect unless global and token +# caching are enabled. (integer value) +#cache_time = + +# Revoke token by token identifier. Setting revoke_by_id to true enables +# various forms of enumerating tokens, e.g. `list tokens for user`. These +# enumerations are processed to determine the list of tokens to revoke. Only +# disable if you are switching to using the Revoke extension with a backend +# other than KVS, which stores events in memory. (boolean value) +#revoke_by_id = true + +# Allow rescoping of scoped token. Setting allow_rescoped_scoped_token to false +# prevents a user from exchanging a scoped token for any other token. (boolean +# value) +#allow_rescope_scoped_token = true + +# The hash algorithm to use for PKI tokens. This can be set to any algorithm +# that hashlib supports. WARNING: Before changing this value, the auth_token +# middleware must be configured with the hash_algorithms, otherwise token +# revocation will not be processed correctly. (string value) +#hash_algorithm = md5 + + +[trust] + +# +# From keystone +# + +# Delegation and impersonation features can be optionally disabled. (boolean +# value) +#enabled = true + +# Enable redelegation feature. (boolean value) +#allow_redelegation = false + +# Maximum depth of trust redelegation. (integer value) +#max_redelegation_count = 3 + +# Trust backend driver. (string value) +#driver = keystone.trust.backends.sql.Trust diff --git a/old/install-files/openstack/usr/share/openstack/network.yml b/old/install-files/openstack/usr/share/openstack/network.yml new file mode 100644 index 00000000..f99f7f1a --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/network.yml @@ -0,0 +1,67 @@ +--- +- hosts: localhost + vars_files: + - /etc/openstack/network.conf + tasks: +# Create the bridges to use the External network mapped + +# Count number of network interfaces (interfaces starting with 'e') + - shell: ls /sys/class/net | grep ^e.* | wc -l + register: number_interfaces + +# Abort if there number of interfaces != 1 + - fail: + msg: More than one, or none network interfaces found. + when: EXTERNAL_INTERFACE is not defined and number_interfaces.stdout != "1" + + - shell: ls /sys/class/net | grep ^e.* + register: interface_name + when: EXTERNAL_INTERFACE is not defined + + - set_fact: + ETH_INTERFACE: "{{ interface_name.stdout }}" + when: EXTERNAL_INTERFACE is not defined + + - set_fact: + ETH_INTERFACE: "{{ EXTERNAL_INTERFACE }}" + when: EXTERNAL_INTERFACE is defined + + - set_fact: + ETH_MAC_ADDRESS: "{{ hostvars['localhost']['ansible_' + ETH_INTERFACE]['macaddress'] }}" + + - name: Create the /run/systemd/network + file: + path: /run/systemd/network + state: directory + + - name: Disable dhcp on the bound physical interface + template: + src: /usr/share/openstack/extras/00-disable-device.network + dest: /run/systemd/network/00-disable-{{ item }}-config.network + with_items: + - "{{ ETH_INTERFACE }}" + + - name: Disable dhcp on all the internal interfaces + template: + src: /usr/share/openstack/extras/00-disable-device.network + dest: /run/systemd/network/00-disable-{{ item }}-config.network + with_items: + - ovs-system + + - openvswitch_bridge: + bridge: br-ex + state: present + + - openvswitch_port: + bridge: br-ex + port: "{{ ETH_INTERFACE }}" + state: present + + - shell: ovs-vsctl set bridge br-ex other-config:hwaddr={{ ETH_MAC_ADDRESS }} + + - name: Enable dhcp on the Open vSwitch device that replaces our external interface + template: + src: /usr/share/openstack/extras/60-device-dhcp.network + dest: /run/systemd/network/60-{{ item }}-dhcp.network + with_items: + - br-ex diff --git a/old/install-files/openstack/usr/share/openstack/neutron-config.yml b/old/install-files/openstack/usr/share/openstack/neutron-config.yml new file mode 100644 index 00000000..5d594353 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron-config.yml @@ -0,0 +1,37 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/neutron.conf" + tasks: + + - name: Create the neutron user. + user: + name: neutron + comment: Openstack Neutron Daemons + shell: /sbin/nologin + home: /var/lib/neutron + + - name: Create the /var folders for neutron + file: + path: "{{ item }}" + state: directory + owner: neutron + group: neutron + with_items: + - /var/run/neutron + - /var/lock/neutron + - /var/log/neutron + + - name: Create the directories needed for Neutron configuration files. + file: + path: /etc/{{ item }} + state: directory + with_lines: + - cd /usr/share/openstack && find neutron -type d + + - name: Add configuration needed for neutron using templates + template: + src: /usr/share/openstack/{{ item }} + dest: /etc/{{ item }} + with_lines: + - cd /usr/share/openstack && find neutron -type f diff --git a/old/install-files/openstack/usr/share/openstack/neutron-db.yml b/old/install-files/openstack/usr/share/openstack/neutron-db.yml new file mode 100644 index 00000000..fee53315 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron-db.yml @@ -0,0 +1,51 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/neutron.conf" + tasks: + - name: Create neutron service user in service tenant + keystone_user: + user: "{{ NEUTRON_SERVICE_USER }}" + password: "{{ NEUTRON_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add admin role to neutron service user in service tenant + keystone_user: + role: admin + user: "{{ NEUTRON_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - keystone_service: + name: neutron + type: network + description: Openstack Compute Networking + publicurl: http://{{ ansible_hostname }}:9696 + internalurl: http://{{ CONTROLLER_HOST_ADDRESS }}:9696 + adminurl: http://{{ CONTROLLER_HOST_ADDRESS }}:9696 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for neutron + postgresql_user: + name: "{{ NEUTRON_DB_USER }}" + password: "{{ NEUTRON_DB_PASSWORD }}" + sudo: yes + sudo_user: neutron + + - name: Create database for neutron services + postgresql_db: + name: neutron + owner: "{{ NEUTRON_DB_USER }}" + sudo: yes + sudo_user: neutron + + - name: Initiate neutron database + shell: | + neutron-db-manage \ + --config-file /etc/neutron/neutron.conf \ + --config-file /etc/neutron/plugins/ml2/ml2_conf.ini \ + upgrade head + sudo: yes + sudo_user: neutron diff --git a/old/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini b/old/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini new file mode 100644 index 00000000..1ab4c806 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini @@ -0,0 +1,89 @@ +[DEFAULT] +# Show debugging output in log (sets DEBUG log level output) +# debug = False + +# The DHCP agent will resync its state with Neutron to recover from any +# transient notification or rpc errors. The interval is number of +# seconds between attempts. +# resync_interval = 5 + +# The DHCP agent requires an interface driver be set. Choose the one that best +# matches your plugin. +# interface_driver = + +# Example of interface_driver option for OVS based plugins(OVS, Ryu, NEC, NVP, +# BigSwitch/Floodlight) +interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver + +# Name of Open vSwitch bridge to use +# ovs_integration_bridge = br-int + +# Use veth for an OVS interface or not. +# Support kernels with limited namespace support +# (e.g. RHEL 6.5) so long as ovs_use_veth is set to True. +# ovs_use_veth = False + +# Example of interface_driver option for LinuxBridge +# interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver + +# The agent can use other DHCP drivers. Dnsmasq is the simplest and requires +# no additional setup of the DHCP server. +dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq + +# Allow overlapping IP (Must have kernel build with CONFIG_NET_NS=y and +# iproute2 package that supports namespaces). This option is deprecated and +# will be removed in a future release, at which point the old behavior of +# use_namespaces = True will be enforced. +# use_namespaces = True + +# The DHCP server can assist with providing metadata support on isolated +# networks. Setting this value to True will cause the DHCP server to append +# specific host routes to the DHCP request. The metadata service will only +# be activated when the subnet does not contain any router port. The guest +# instance must be configured to request host routes via DHCP (Option 121). +enable_isolated_metadata = True + +# Allows for serving metadata requests coming from a dedicated metadata +# access network whose cidr is 169.254.169.254/16 (or larger prefix), and +# is connected to a Neutron router from which the VMs send metadata +# request. In this case DHCP Option 121 will not be injected in VMs, as +# they will be able to reach 169.254.169.254 through a router. +# This option requires enable_isolated_metadata = True +# enable_metadata_network = False + +# Number of threads to use during sync process. Should not exceed connection +# pool size configured on server. +# num_sync_threads = 4 + +# Location to store DHCP server config files +# dhcp_confs = $state_path/dhcp + +# Domain to use for building the hostnames +# dhcp_domain = openstacklocal + +# Override the default dnsmasq settings with this file +dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf + +# Comma-separated list of DNS servers which will be used by dnsmasq +# as forwarders. +# dnsmasq_dns_servers = + +# Limit number of leases to prevent a denial-of-service. +# dnsmasq_lease_max = 16777216 + +# Location to DHCP lease relay UNIX domain socket +# dhcp_lease_relay_socket = $state_path/dhcp/lease_relay + +# Use broadcast in DHCP replies +# dhcp_broadcast_reply = False + +# dhcp_delete_namespaces, which is True by default, can be set to False if +# namespaces can't be deleted cleanly on the host running the DHCP agent. +# Disable this if you hit the issue in +# https://bugs.launchpad.net/neutron/+bug/1052535 or if +# you are sure that your version of iproute suffers from the problem. +# dhcp_delete_namespaces = True + +# Timeout for ovs-vsctl commands. +# If the timeout expires, ovs commands will fail with ALARMCLOCK error. +# ovs_vsctl_timeout = 10 diff --git a/old/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini b/old/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini new file mode 100644 index 00000000..bc1321e4 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini @@ -0,0 +1,121 @@ +[DEFAULT] +# Show debugging output in log (sets DEBUG log level output) +# debug = False + +# L3 requires that an interface driver be set. Choose the one that best +# matches your plugin. +interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver + +# Example of interface_driver option for OVS based plugins (OVS, Ryu, NEC) +# that supports L3 agent +# interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver + +# Use veth for an OVS interface or not. +# Support kernels with limited namespace support +# (e.g. RHEL 6.5) so long as ovs_use_veth is set to True. +# ovs_use_veth = False + +# Example of interface_driver option for LinuxBridge +# interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver + +# Allow overlapping IP (Must have kernel build with CONFIG_NET_NS=y and +# iproute2 package that supports namespaces). This option is deprecated and +# will be removed in a future release, at which point the old behavior of +# use_namespaces = True will be enforced. +# use_namespaces = True + +# If use_namespaces is set as False then the agent can only configure one router. + +# This is done by setting the specific router_id. +# router_id = + +# When external_network_bridge is set, each L3 agent can be associated +# with no more than one external network. This value should be set to the UUID +# of that external network. To allow L3 agent support multiple external +# networks, both the external_network_bridge and gateway_external_network_id +# must be left empty. +# gateway_external_network_id = + +# With IPv6, the network used for the external gateway does not need +# to have an associated subnet, since the automatically assigned +# link-local address (LLA) can be used. However, an IPv6 gateway address +# is needed for use as the next-hop for the default route. If no IPv6 +# gateway address is configured here, (and only then) the neutron router +# will be configured to get its default route from router advertisements (RAs) +# from the upstream router; in which case the upstream router must also be +# configured to send these RAs. +# The ipv6_gateway, when configured, should be the LLA of the interface +# on the upstream router. If a next-hop using a global unique address (GUA) +# is desired, it needs to be done via a subnet allocated to the network +# and not through this parameter. +# ipv6_gateway = + +# Indicates that this L3 agent should also handle routers that do not have +# an external network gateway configured. This option should be True only +# for a single agent in a Neutron deployment, and may be False for all agents +# if all routers must have an external network gateway +# handle_internal_only_routers = True + +# Name of bridge used for external network traffic. This should be set to +# empty value for the linux bridge. when this parameter is set, each L3 agent +# can be associated with no more than one external network. +external_network_bridge = br-ex + +# TCP Port used by Neutron metadata server +# metadata_port = 9697 + +# Send this many gratuitous ARPs for HA setup. Set it below or equal to 0 +# to disable this feature. +# send_arp_for_ha = 3 + +# seconds between re-sync routers' data if needed +# periodic_interval = 40 + +# seconds to start to sync routers' data after +# starting agent +# periodic_fuzzy_delay = 5 + +# enable_metadata_proxy, which is true by default, can be set to False +# if the Nova metadata server is not available +# enable_metadata_proxy = True + +# Iptables mangle mark used to mark metadata valid requests +# metadata_access_mark = 0x1 + +# Iptables mangle mark used to mark ingress from external network +# external_ingress_mark = 0x2 + +# router_delete_namespaces, which is True by default, can be set to False if +# namespaces can't be deleted cleanly on the host running the L3 agent. +# Disable this if you hit the issue in +# https://bugs.launchpad.net/neutron/+bug/1052535 or if +# you are sure that your version of iproute suffers from the problem. +# If True, namespaces will be deleted when a router is destroyed. +# router_delete_namespaces = True + +# Timeout for ovs-vsctl commands. +# If the timeout expires, ovs commands will fail with ALARMCLOCK error. +# ovs_vsctl_timeout = 10 + +# The working mode for the agent. Allowed values are: +# - legacy: this preserves the existing behavior where the L3 agent is +# deployed on a centralized networking node to provide L3 services +# like DNAT, and SNAT. Use this mode if you do not want to adopt DVR. +# - dvr: this mode enables DVR functionality, and must be used for an L3 +# agent that runs on a compute host. +# - dvr_snat: this enables centralized SNAT support in conjunction with +# DVR. This mode must be used for an L3 agent running on a centralized +# node (or in single-host deployments, e.g. devstack). +# agent_mode = legacy + +# Location to store keepalived and all HA configurations +# ha_confs_path = $state_path/ha_confs + +# VRRP authentication type AH/PASS +# ha_vrrp_auth_type = PASS + +# VRRP authentication password +# ha_vrrp_auth_password = + +# The advertisement interval in seconds +# ha_vrrp_advert_int = 2 diff --git a/old/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini b/old/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini new file mode 100644 index 00000000..ee89c943 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini @@ -0,0 +1,68 @@ +[DEFAULT] +# Show debugging output in log (sets DEBUG log level output) +# debug = True + +# The Neutron user information for accessing the Neutron API. +auth_url = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 +auth_region = regionOne +# Turn off verification of the certificate for ssl +# auth_insecure = False +# Certificate Authority public key (CA cert) file for ssl +# auth_ca_cert = +admin_tenant_name = service +admin_user = {{ NEUTRON_SERVICE_USER }} +admin_password = {{ NEUTRON_SERVICE_PASSWORD }} + +# Network service endpoint type to pull from the keystone catalog +# endpoint_type = adminURL + +# IP address used by Nova metadata server +nova_metadata_ip = {{ CONTROLLER_HOST_ADDRESS }} + +# TCP Port used by Nova metadata server +# nova_metadata_port = 8775 + +# Which protocol to use for requests to Nova metadata server, http or https +# nova_metadata_protocol = http + +# Whether insecure SSL connection should be accepted for Nova metadata server +# requests +# nova_metadata_insecure = False + +# Client certificate for nova api, needed when nova api requires client +# certificates +# nova_client_cert = + +# Private key for nova client certificate +# nova_client_priv_key = + +# When proxying metadata requests, Neutron signs the Instance-ID header with a +# shared secret to prevent spoofing. You may select any string for a secret, +# but it must match here and in the configuration used by the Nova Metadata +# Server. NOTE: Nova uses the same config key, but in [neutron] section. +metadata_proxy_shared_secret = {{ METADATA_PROXY_SHARED_SECRET }} + +# Location of Metadata Proxy UNIX domain socket +# metadata_proxy_socket = $state_path/metadata_proxy + +# Metadata Proxy UNIX domain socket mode, 3 values allowed: +# 'deduce': deduce mode from metadata_proxy_user/group values, +# 'user': set metadata proxy socket mode to 0o644, to use when +# metadata_proxy_user is agent effective user or root, +# 'group': set metadata proxy socket mode to 0o664, to use when +# metadata_proxy_group is agent effective group, +# 'all': set metadata proxy socket mode to 0o666, to use otherwise. +# metadata_proxy_socket_mode = deduce + +# Number of separate worker processes for metadata server. Defaults to +# half the number of CPU cores +# metadata_workers = + +# Number of backlog requests to configure the metadata server socket with +# metadata_backlog = 4096 + +# URL to connect to the cache backend. +# default_ttl=0 parameter will cause cache entries to never expire. +# Otherwise default_ttl specifies time in seconds a cache entry is valid for. +# No cache is used in case no value is passed. +# cache_url = memory://?default_ttl=5 diff --git a/old/install-files/openstack/usr/share/openstack/neutron/neutron.conf b/old/install-files/openstack/usr/share/openstack/neutron/neutron.conf new file mode 100644 index 00000000..33c6398a --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/neutron.conf @@ -0,0 +1,1027 @@ +[DEFAULT] +# Print more verbose output (set logging level to INFO instead of default WARNING level). +# verbose = False + +# =========Start Global Config Option for Distributed L3 Router=============== +# Setting the "router_distributed" flag to "True" will default to the creation +# of distributed tenant routers. The admin can override this flag by specifying +# the type of the router on the create request (admin-only attribute). Default +# value is "False" to support legacy mode (centralized) routers. +# +# router_distributed = False +# +# ===========End Global Config Option for Distributed L3 Router=============== + +# Print debugging output (set logging level to DEBUG instead of default WARNING level). +# debug = False + +# Where to store Neutron state files. This directory must be writable by the +# user executing the agent. +# state_path = /var/lib/neutron + +# log_format = %(asctime)s %(levelname)8s [%(name)s] %(message)s +# log_date_format = %Y-%m-%d %H:%M:%S + +# use_syslog -> syslog +# log_file and log_dir -> log_dir/log_file +# (not log_file) and log_dir -> log_dir/{binary_name}.log +# use_stderr -> stderr +# (not user_stderr) and (not log_file) -> stdout +# publish_errors -> notification system + +use_syslog = True +# syslog_log_facility = LOG_USER + +# use_stderr = True +# log_file = +# log_dir = + +# publish_errors = False + +# Address to bind the API server to +# bind_host = 0.0.0.0 + +# Port the bind the API server to +# bind_port = 9696 + +# Path to the extensions. Note that this can be a colon-separated list of +# paths. For example: +# api_extensions_path = extensions:/path/to/more/extensions:/even/more/extensions +# The __path__ of neutron.extensions is appended to this, so if your +# extensions are in there you don't need to specify them here +# api_extensions_path = + +# (StrOpt) Neutron core plugin entrypoint to be loaded from the +# neutron.core_plugins namespace. See setup.cfg for the entrypoint names of the +# plugins included in the neutron source distribution. For compatibility with +# previous versions, the class name of a plugin can be specified instead of its +# entrypoint name. +# +core_plugin = ml2 +# Example: core_plugin = ml2 + +# (ListOpt) List of service plugin entrypoints to be loaded from the +# neutron.service_plugins namespace. See setup.cfg for the entrypoint names of +# the plugins included in the neutron source distribution. For compatibility +# with previous versions, the class name of a plugin can be specified instead +# of its entrypoint name. +# +service_plugins = router +# Example: service_plugins = router,firewall,lbaas,vpnaas,metering + +# Paste configuration file +# api_paste_config = api-paste.ini + +# (StrOpt) Hostname to be used by the neutron server, agents and services +# running on this machine. All the agents and services running on this machine +# must use the same host value. +# The default value is hostname of the machine. +# +# host = + +# The strategy to be used for auth. +# Supported values are 'keystone'(default), 'noauth'. +auth_strategy = keystone + +# Base MAC address. The first 3 octets will remain unchanged. If the +# 4h octet is not 00, it will also be used. The others will be +# randomly generated. +# 3 octet +# base_mac = fa:16:3e:00:00:00 +# 4 octet +# base_mac = fa:16:3e:4f:00:00 + +# DVR Base MAC address. The first 3 octets will remain unchanged. If the +# 4th octet is not 00, it will also be used. The others will be randomly +# generated. The 'dvr_base_mac' *must* be different from 'base_mac' to +# avoid mixing them up with MAC's allocated for tenant ports. +# A 4 octet example would be dvr_base_mac = fa:16:3f:4f:00:00 +# The default is 3 octet +# dvr_base_mac = fa:16:3f:00:00:00 + +# Maximum amount of retries to generate a unique MAC address +# mac_generation_retries = 16 + +# DHCP Lease duration (in seconds). Use -1 to +# tell dnsmasq to use infinite lease times. +# dhcp_lease_duration = 86400 + +# Allow sending resource operation notification to DHCP agent +# dhcp_agent_notification = True + +# Enable or disable bulk create/update/delete operations +# allow_bulk = True +# Enable or disable pagination +# allow_pagination = False +# Enable or disable sorting +# allow_sorting = False +# Enable or disable overlapping IPs for subnets +# Attention: the following parameter MUST be set to False if Neutron is +# being used in conjunction with nova security groups +allow_overlapping_ips = True +# Ensure that configured gateway is on subnet. For IPv6, validate only if +# gateway is not a link local address. Deprecated, to be removed during the +# K release, at which point the check will be mandatory. +# force_gateway_on_subnet = True + +# Default maximum number of items returned in a single response, +# value == infinite and value < 0 means no max limit, and value must +# be greater than 0. If the number of items requested is greater than +# pagination_max_limit, server will just return pagination_max_limit +# of number of items. +# pagination_max_limit = -1 + +# Maximum number of DNS nameservers per subnet +# max_dns_nameservers = 5 + +# Maximum number of host routes per subnet +# max_subnet_host_routes = 20 + +# Maximum number of fixed ips per port +# max_fixed_ips_per_port = 5 + +# Maximum number of routes per router +# max_routes = 30 + +# Default Subnet Pool to be used for IPv4 subnet-allocation. +# Specifies by UUID the pool to be used in case of subnet-create being called +# without a subnet-pool ID. The default of None means that no pool will be +# used unless passed explicitly to subnet create. If no pool is used, then a +# CIDR must be passed to create a subnet and that subnet will not be allocated +# from any pool; it will be considered part of the tenant's private address +# space. +# default_ipv4_subnet_pool = + +# Default Subnet Pool to be used for IPv6 subnet-allocation. +# Specifies by UUID the pool to be used in case of subnet-create being +# called without a subnet-pool ID. Set to "prefix_delegation" +# to enable IPv6 Prefix Delegation in a PD-capable environment. +# See the description for default_ipv4_subnet_pool for more information. +# default_ipv6_subnet_pool = + +# =========== items for MTU selection and advertisement ============= +# Advertise MTU. If True, effort is made to advertise MTU +# settings to VMs via network methods (ie. DHCP and RA MTU options) +# when the network's preferred MTU is known. +# advertise_mtu = False +# ======== end of items for MTU selection and advertisement ========= + +# =========== items for agent management extension ============= +# Seconds to regard the agent as down; should be at least twice +# report_interval, to be sure the agent is down for good +# agent_down_time = 75 +# =========== end of items for agent management extension ===== + +# =========== items for agent scheduler extension ============= +# Driver to use for scheduling network to DHCP agent +# network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.ChanceScheduler +# Driver to use for scheduling router to a default L3 agent +# router_scheduler_driver = neutron.scheduler.l3_agent_scheduler.ChanceScheduler +# Driver to use for scheduling a loadbalancer pool to an lbaas agent +# loadbalancer_pool_scheduler_driver = neutron.services.loadbalancer.agent_scheduler.ChanceScheduler + +# (StrOpt) Representing the resource type whose load is being reported by +# the agent. +# This can be 'networks','subnets' or 'ports'. When specified (Default is networks), +# the server will extract particular load sent as part of its agent configuration object +# from the agent report state, which is the number of resources being consumed, at +# every report_interval. +# dhcp_load_type can be used in combination with network_scheduler_driver = +# neutron.scheduler.dhcp_agent_scheduler.WeightScheduler +# When the network_scheduler_driver is WeightScheduler, dhcp_load_type can +# be configured to represent the choice for the resource being balanced. +# Example: dhcp_load_type = networks +# Values: +# networks - number of networks hosted on the agent +# subnets - number of subnets associated with the networks hosted on the agent +# ports - number of ports associated with the networks hosted on the agent +# dhcp_load_type = networks + +# Allow auto scheduling networks to DHCP agent. It will schedule non-hosted +# networks to first DHCP agent which sends get_active_networks message to +# neutron server +# network_auto_schedule = True + +# Allow auto scheduling routers to L3 agent. It will schedule non-hosted +# routers to first L3 agent which sends sync_routers message to neutron server +# router_auto_schedule = True + +# Allow automatic rescheduling of routers from dead L3 agents with +# admin_state_up set to True to alive agents. +# allow_automatic_l3agent_failover = False + +# Allow automatic removal of networks from dead DHCP agents with +# admin_state_up set to True. +# Networks could then be rescheduled if network_auto_schedule is True +# allow_automatic_dhcp_failover = True + +# Number of DHCP agents scheduled to host a tenant network. +# If this number is greater than 1, the scheduler automatically +# assigns multiple DHCP agents for a given tenant network, +# providing high availability for DHCP service. +# dhcp_agents_per_network = 1 + +# Enable services on agents with admin_state_up False. +# If this option is False, when admin_state_up of an agent is turned to +# False, services on it will be disabled. If this option is True, services +# on agents with admin_state_up False keep available and manual scheduling +# to such agents is available. Agents with admin_state_up False are not +# selected for automatic scheduling regardless of this option. +# enable_services_on_agents_with_admin_state_down = False + +# =========== end of items for agent scheduler extension ===== + +# =========== items for l3 extension ============== +# Enable high availability for virtual routers. +# l3_ha = False +# +# Maximum number of l3 agents which a HA router will be scheduled on. If it +# is set to 0 the router will be scheduled on every agent. +# max_l3_agents_per_router = 3 +# +# Minimum number of l3 agents which a HA router will be scheduled on. The +# default value is 2. +# min_l3_agents_per_router = 2 +# +# CIDR of the administrative network if HA mode is enabled +# l3_ha_net_cidr = 169.254.192.0/18 +# +# Enable snat by default on external gateway when available +# enable_snat_by_default = True +# =========== end of items for l3 extension ======= + +# =========== items for metadata proxy configuration ============== +# User (uid or name) running metadata proxy after its initialization +# (if empty: agent effective user) +# metadata_proxy_user = + +# Group (gid or name) running metadata proxy after its initialization +# (if empty: agent effective group) +# metadata_proxy_group = + +# Enable/Disable log watch by metadata proxy, it should be disabled when +# metadata_proxy_user/group is not allowed to read/write its log file and +# 'copytruncate' logrotate option must be used if logrotate is enabled on +# metadata proxy log files. Option default value is deduced from +# metadata_proxy_user: watch log is enabled if metadata_proxy_user is agent +# effective user id/name. +# metadata_proxy_watch_log = + +# Location of Metadata Proxy UNIX domain socket +# metadata_proxy_socket = $state_path/metadata_proxy +# =========== end of items for metadata proxy configuration ============== + +# ========== items for VLAN trunking networks ========== +# Setting this flag to True will allow plugins that support it to +# create VLAN transparent networks. This flag has no effect for +# plugins that do not support VLAN transparent networks. +# vlan_transparent = False +# ========== end of items for VLAN trunking networks ========== + +# =========== WSGI parameters related to the API server ============== +# Number of separate worker processes to spawn. The default, 0, runs the +# worker thread in the current process. Greater than 0 launches that number of +# child processes as workers. The parent process manages them. +# api_workers = 0 + +# Number of separate RPC worker processes to spawn. The default, 0, runs the +# worker thread in the current process. Greater than 0 launches that number of +# child processes as RPC workers. The parent process manages them. +# This feature is experimental until issues are addressed and testing has been +# enabled for various plugins for compatibility. +# rpc_workers = 0 + +# Timeout for client connections socket operations. If an +# incoming connection is idle for this number of seconds it +# will be closed. A value of '0' means wait forever. (integer +# value) +# client_socket_timeout = 900 + +# wsgi keepalive option. Determines if connections are allowed to be held open +# by clients after a request is fulfilled. A value of False will ensure that +# the socket connection will be explicitly closed once a response has been +# sent to the client. +# wsgi_keep_alive = True + +# Sets the value of TCP_KEEPIDLE in seconds to use for each server socket when +# starting API server. Not supported on OS X. +# tcp_keepidle = 600 + +# Number of seconds to keep retrying to listen +# retry_until_window = 30 + +# Number of backlog requests to configure the socket with. +# backlog = 4096 + +# Max header line to accommodate large tokens +# max_header_line = 16384 + +# Enable SSL on the API server +# use_ssl = False + +# Certificate file to use when starting API server securely +# ssl_cert_file = /path/to/certfile + +# Private key file to use when starting API server securely +# ssl_key_file = /path/to/keyfile + +# CA certificate file to use when starting API server securely to +# verify connecting clients. This is an optional parameter only required if +# API clients need to authenticate to the API server using SSL certificates +# signed by a trusted CA +# ssl_ca_file = /path/to/cafile +# ======== end of WSGI parameters related to the API server ========== + +# ======== neutron nova interactions ========== +# Send notification to nova when port status is active. +notify_nova_on_port_status_changes = True + +# Send notifications to nova when port data (fixed_ips/floatingips) change +# so nova can update it's cache. +notify_nova_on_port_data_changes = True + +# URL for connection to nova (Only supports one nova region currently). +nova_url = http://{{ CONTROLLER_HOST_ADDRESS }}:8774/v2 + +# Name of nova region to use. Useful if keystone manages more than one region +# nova_region_name = + +# Username for connection to nova in admin context +# nova_admin_username = + +# The uuid of the admin nova tenant +# nova_admin_tenant_id = + +# The name of the admin nova tenant. If the uuid of the admin nova tenant +# is set, this is optional. Useful for cases where the uuid of the admin +# nova tenant is not available when configuration is being done. +# nova_admin_tenant_name = + +# Password for connection to nova in admin context. +# nova_admin_password = + +# Authorization URL for connection to nova in admin context. +# nova_admin_auth_url = + +# CA file for novaclient to verify server certificates +# nova_ca_certificates_file = + +# Boolean to control ignoring SSL errors on the nova url +# nova_api_insecure = False + +# Number of seconds between sending events to nova if there are any events to send +# send_events_interval = 2 + +# ======== end of neutron nova interactions ========== + +# +# Options defined in oslo.messaging +# + +# Use durable queues in amqp. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +# amqp_durable_queues=false + +# Auto-delete queues in amqp. (boolean value) +# amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +# rpc_conn_pool_size=30 + +# Qpid broker hostname. (string value) +# qpid_hostname=localhost + +# Qpid broker port. (integer value) +# qpid_port=5672 + +# Qpid HA cluster host:port pairs. (list value) +# qpid_hosts=$qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +# qpid_username= + +# Password for Qpid connection. (string value) +# qpid_password= + +# Space separated list of SASL mechanisms to use for auth. +# (string value) +# qpid_sasl_mechanisms= + +# Seconds between connection keepalive heartbeats. (integer +# value) +# qpid_heartbeat=60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +# qpid_protocol=tcp + +# Whether to disable the Nagle algorithm. (boolean value) +# qpid_tcp_nodelay=true + +# The qpid topology version to use. Version 1 is what was +# originally used by impl_qpid. Version 2 includes some +# backwards-incompatible changes that allow broker federation +# to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. +# (integer value) +# qpid_topology_version=1 + +# SSL version to use (valid only if SSL enabled). valid values +# are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some +# distributions. (string value) +# kombu_ssl_version= + +# SSL key file (valid only if SSL enabled). (string value) +# kombu_ssl_keyfile= + +# SSL cert file (valid only if SSL enabled). (string value) +# kombu_ssl_certfile= + +# SSL certification authority file (valid only if SSL +# enabled). (string value) +# kombu_ssl_ca_certs= + +# How long to wait before reconnecting in response to an AMQP +# consumer cancel notification. (floating point value) +# kombu_reconnect_delay=1.0 + +# The RabbitMQ broker address where a single node is used. +# (string value) +# rabbit_host=localhost + +# The RabbitMQ broker port where a single node is used. +# (integer value) +# rabbit_port =5672 + +# RabbitMQ HA cluster host:port pairs. (list value) +# rabbit_hosts=$rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +# rabbit_use_ssl=false + +# The RabbitMQ userid. (string value) +# rabbit_userid=guest + +# The RabbitMQ password. (string value) +# rabbit_password=guest + +# the RabbitMQ login method (string value) +# rabbit_login_method=AMQPLAIN + +# The RabbitMQ virtual host. (string value) +# rabbit_virtual_host=/ + +# How frequently to retry connecting with RabbitMQ. (integer +# value) +# rabbit_retry_interval=1 + +# How long to backoff for between retries when connecting to +# RabbitMQ. (integer value) +# rabbit_retry_backoff=2 + +# Maximum number of RabbitMQ connection retries. Default is 0 +# (infinite retry count). (integer value) +# rabbit_max_retries=0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change +# this option, you must wipe the RabbitMQ database. (boolean +# value) +# rabbit_ha_queues=false + +# If passed, use a fake RabbitMQ provider. (boolean value) +# fake_rabbit=false + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve +# to this address. (string value) +# rpc_zmq_bind_address=* + +# MatchMaker driver. (string value) +# rpc_zmq_matchmaker=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost + +# ZeroMQ receiver listening port. (integer value) +# rpc_zmq_port=9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +# rpc_zmq_contexts=1 + +# Maximum number of ingress messages to locally buffer per +# topic. Default is unlimited. (integer value) +# rpc_zmq_topic_backlog= + +# Directory for holding IPC sockets. (string value) +# rpc_zmq_ipc_dir=/var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP +# address. Must match "host" option, if running Nova. (string +# value) +# rpc_zmq_host=oslo + +# Seconds to wait before a cast expires (TTL). Only supported +# by impl_zmq. (integer value) +# rpc_cast_timeout=30 + +# Heartbeat frequency. (integer value) +# matchmaker_heartbeat_freq=300 + +# Heartbeat time-to-live. (integer value) +# matchmaker_heartbeat_ttl=600 + +# Size of RPC greenthread pool. (integer value) +# rpc_thread_pool_size=64 + +# Driver or drivers to handle sending notifications. (multi +# valued) +notification_driver = neutron.openstack.common.notifier.rpc_notifier + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +# notification_topics=notifications + +# Seconds to wait for a response from a call. (integer value) +# rpc_response_timeout=60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend +# option and driver specific configuration. (string value) +# transport_url= + +# The messaging driver to use, defaults to rabbit. Other +# drivers include qpid and zmq. (string value) +rpc_backend = rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the +# transport_url option. (string value) +# control_exchange=openstack + + +[matchmaker_redis] + +# +# Options defined in oslo.messaging +# + +# Host to locate redis. (string value) +# host=127.0.0.1 + +# Use this port to connect to redis host. (integer value) +# port=6379 + +# Password for Redis server (optional). (string value) +# password= + + +[matchmaker_ring] + +# +# Options defined in oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +# ringfile=/etc/oslo/matchmaker_ring.json + +[quotas] +# Default driver to use for quota checks +# quota_driver = neutron.db.quota_db.DbQuotaDriver + +# Resource name(s) that are supported in quota features +# This option is deprecated for removal in the M release, please refrain from using it +# quota_items = network,subnet,port + +# Default number of resource allowed per tenant. A negative value means +# unlimited. +# default_quota = -1 + +# Number of networks allowed per tenant. A negative value means unlimited. +# quota_network = 10 + +# Number of subnets allowed per tenant. A negative value means unlimited. +# quota_subnet = 10 + +# Number of ports allowed per tenant. A negative value means unlimited. +# quota_port = 50 + +# Number of security groups allowed per tenant. A negative value means +# unlimited. +# quota_security_group = 10 + +# Number of security group rules allowed per tenant. A negative value means +# unlimited. +# quota_security_group_rule = 100 + +# Number of vips allowed per tenant. A negative value means unlimited. +# quota_vip = 10 + +# Number of pools allowed per tenant. A negative value means unlimited. +# quota_pool = 10 + +# Number of pool members allowed per tenant. A negative value means unlimited. +# The default is unlimited because a member is not a real resource consumer +# on Openstack. However, on back-end, a member is a resource consumer +# and that is the reason why quota is possible. +# quota_member = -1 + +# Number of health monitors allowed per tenant. A negative value means +# unlimited. +# The default is unlimited because a health monitor is not a real resource +# consumer on Openstack. However, on back-end, a member is a resource consumer +# and that is the reason why quota is possible. +# quota_health_monitor = -1 + +# Number of loadbalancers allowed per tenant. A negative value means unlimited. +# quota_loadbalancer = 10 + +# Number of listeners allowed per tenant. A negative value means unlimited. +# quota_listener = -1 + +# Number of v2 health monitors allowed per tenant. A negative value means +# unlimited. These health monitors exist under the lbaas v2 API +# quota_healthmonitor = -1 + +# Number of routers allowed per tenant. A negative value means unlimited. +# quota_router = 10 + +# Number of floating IPs allowed per tenant. A negative value means unlimited. +# quota_floatingip = 50 + +# Number of firewalls allowed per tenant. A negative value means unlimited. +# quota_firewall = 1 + +# Number of firewall policies allowed per tenant. A negative value means +# unlimited. +# quota_firewall_policy = 1 + +# Number of firewall rules allowed per tenant. A negative value means +# unlimited. +# quota_firewall_rule = 100 + +[agent] +# Use "sudo neutron-rootwrap /etc/neutron/rootwrap.conf" to use the real +# root filter facility. +# Change to "sudo" to skip the filtering and just run the command directly +root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf + +# Set to true to add comments to generated iptables rules that describe +# each rule's purpose. (System must support the iptables comments module.) +# comment_iptables_rules = True + +# Root helper daemon application to use when possible. +# root_helper_daemon = + +# Use the root helper when listing the namespaces on a system. This may not +# be required depending on the security configuration. If the root helper is +# not required, set this to False for a performance improvement. +# use_helper_for_ns_read = True + +# The interval to check external processes for failure in seconds (0=disabled) +# check_child_processes_interval = 60 + +# Action to take when an external process spawned by an agent dies +# Values: +# respawn - Respawns the external process +# exit - Exits the agent +# check_child_processes_action = respawn + +# =========== items for agent management extension ============= +# seconds between nodes reporting state to server; should be less than +# agent_down_time, best if it is half or less than agent_down_time +# report_interval = 30 + +# =========== end of items for agent management extension ===== + +[keystone_authtoken] +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 +admin_tenant_name = service +admin_user = {{ NEUTRON_SERVICE_USER }} +admin_password = {{ NEUTRON_SERVICE_PASSWORD }} + +[database] +# This line MUST be changed to actually run the plugin. +# Example: +# connection = mysql://root:pass@127.0.0.1:3306/neutron +# Replace 127.0.0.1 above with the IP address of the database used by the +# main neutron server. (Leave it as is if the database runs on this host.) +connection=postgresql://{{ NEUTRON_DB_USER }}:{{ NEUTRON_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/neutron + +# NOTE: In deployment the [database] section and its connection attribute may +# be set in the corresponding core plugin '.ini' file. However, it is suggested +# to put the [database] section and its connection attribute in this +# configuration file. + +# Database engine for which script will be generated when using offline +# migration +# engine = + +# The SQLAlchemy connection string used to connect to the slave database +# slave_connection = + +# Database reconnection retry times - in event connectivity is lost +# set to -1 implies an infinite retry count +# max_retries = 10 + +# Database reconnection interval in seconds - if the initial connection to the +# database fails +# retry_interval = 10 + +# Minimum number of SQL connections to keep open in a pool +# min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool +# max_pool_size = 10 + +# Timeout in seconds before idle sql connections are reaped +# idle_timeout = 3600 + +# If set, use this value for max_overflow with sqlalchemy +# max_overflow = 20 + +# Verbosity of SQL debugging information. 0=None, 100=Everything +# connection_debug = 0 + +# Add python stack traces to SQL as comment strings +# connection_trace = False + +# If set, use this value for pool_timeout with sqlalchemy +# pool_timeout = 10 + +[nova] +# Name of the plugin to load +auth_plugin = password + +# Config Section from which to load plugin specific options +# auth_section = + +# PEM encoded Certificate Authority to use when verifying HTTPs connections. +# cafile = + +# PEM encoded client certificate cert file +# certfile = + +# Verify HTTPS connections. +# insecure = False + +# PEM encoded client certificate key file +# keyfile = + +# Name of nova region to use. Useful if keystone manages more than one region. +region_name = regionOne + +# Timeout value for http requests +# timeout = + +# Authorization URL for connection to nova in admin context. +auth_url = http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + +# Username for connection to nova in admin context +username = {{ NOVA_SERVICE_USER }} + +# Password for connection to nova in admin context. +password = {{ NOVA_SERVICE_PASSWORD }} + +# The uuid of the admin nova tenant +# tenant_id = + +# The name of the admin nova tenant. If the uuid of the admin nova tenant +# is set, this is optional. Useful for cases where the uuid of the admin +# nova tenant is not available when configuration is being done. +tenant_name = service + +[oslo_concurrency] + +# Directory to use for lock files. For security, the specified directory should +# only be writable by the user running the processes that need locking. +# Defaults to environment variable OSLO_LOCK_PATH. If external locks are used, +# a lock path must be set. +lock_path = $state_path/lock + +# Enables or disables inter-process locks. +# disable_process_locking = False + +[oslo_policy] + +# The JSON file that defines policies. +# policy_file = policy.json + +# Default rule. Enforced when a requested rule is not found. +# policy_default_rule = default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path defined by the +# config_dir option, or absolute paths. The file defined by policy_file +# must exist for these directories to be searched. Missing or empty +# directories are ignored. +# policy_dirs = policy.d + +[oslo_messaging_amqp] + +# +# From oslo.messaging +# + +# Address prefix used when sending to a specific server (string value) +# Deprecated group/name - [amqp1]/server_request_prefix +# server_request_prefix = exclusive + +# Address prefix used when broadcasting to all servers (string value) +# Deprecated group/name - [amqp1]/broadcast_prefix +# broadcast_prefix = broadcast + +# Address prefix when sending to any server in group (string value) +# Deprecated group/name - [amqp1]/group_request_prefix +# group_request_prefix = unicast + +# Name for the AMQP container (string value) +# Deprecated group/name - [amqp1]/container_name +# container_name = + +# Timeout for inactive connections (in seconds) (integer value) +# Deprecated group/name - [amqp1]/idle_timeout +# idle_timeout = 0 + +# Debug: dump AMQP frames to stdout (boolean value) +# Deprecated group/name - [amqp1]/trace +# trace = false + +# CA certificate PEM file for verifing server certificate (string value) +# Deprecated group/name - [amqp1]/ssl_ca_file +# ssl_ca_file = + +# Identifying certificate PEM file to present to clients (string value) +# Deprecated group/name - [amqp1]/ssl_cert_file +# ssl_cert_file = + +# Private key PEM file used to sign cert_file certificate (string value) +# Deprecated group/name - [amqp1]/ssl_key_file +# ssl_key_file = + +# Password for decrypting ssl_key_file (if encrypted) (string value) +# Deprecated group/name - [amqp1]/ssl_key_password +# ssl_key_password = + +# Accept clients using either SSL or plain TCP (boolean value) +# Deprecated group/name - [amqp1]/allow_insecure_clients +# allow_insecure_clients = false + + +[oslo_messaging_qpid] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +# amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +# amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +# rpc_conn_pool_size = 30 + +# Qpid broker hostname. (string value) +# Deprecated group/name - [DEFAULT]/qpid_hostname +# qpid_hostname = localhost + +# Qpid broker port. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_port +# qpid_port = 5672 + +# Qpid HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/qpid_hosts +# qpid_hosts = $qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_username +# qpid_username = + +# Password for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_password +# qpid_password = + +# Space separated list of SASL mechanisms to use for auth. (string value) +# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms +# qpid_sasl_mechanisms = + +# Seconds between connection keepalive heartbeats. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_heartbeat +# qpid_heartbeat = 60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +# Deprecated group/name - [DEFAULT]/qpid_protocol +# qpid_protocol = tcp + +# Whether to disable the Nagle algorithm. (boolean value) +# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay +# qpid_tcp_nodelay = true + +# The number of prefetched messages held by receiver. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity +# qpid_receiver_capacity = 1 + +# The qpid topology version to use. Version 1 is what was originally used by +# impl_qpid. Version 2 includes some backwards-incompatible changes that allow +# broker federation to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_topology_version +# qpid_topology_version = 1 + + +[oslo_messaging_rabbit] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +# amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +# amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +# rpc_conn_pool_size = 30 + +# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and +# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some +# distributions. (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_version +# kombu_ssl_version = + +# SSL key file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile +# kombu_ssl_keyfile = + +# SSL cert file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile +# kombu_ssl_certfile = + +# SSL certification authority file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs +# kombu_ssl_ca_certs = + +# How long to wait before reconnecting in response to an AMQP consumer cancel +# notification. (floating point value) +# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay +# kombu_reconnect_delay = 1.0 + +# The RabbitMQ broker address where a single node is used. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_host +rabbit_host = {{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_port +rabbit_port = {{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/rabbit_hosts +# rabbit_hosts = $rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_use_ssl +# rabbit_use_ssl = false + +# The RabbitMQ userid. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_userid +rabbit_userid = {{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_password +rabbit_password = {{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_login_method +# rabbit_login_method = AMQPLAIN + +# The RabbitMQ virtual host. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_virtual_host +# rabbit_virtual_host = / + +# How frequently to retry connecting with RabbitMQ. (integer value) +# rabbit_retry_interval = 1 + +# How long to backoff for between retries when connecting to RabbitMQ. (integer +# value) +# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff +# rabbit_retry_backoff = 2 + +# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry +# count). (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_max_retries +# rabbit_max_retries = 0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you +# must wipe the RabbitMQ database. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_ha_queues +# rabbit_ha_queues = false + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value) +# Deprecated group/name - [DEFAULT]/fake_rabbit +# fake_rabbit = false diff --git a/old/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini b/old/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini new file mode 100644 index 00000000..3258a40f --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini @@ -0,0 +1,113 @@ +[ml2] +# (ListOpt) List of network type driver entrypoints to be loaded from +# the neutron.ml2.type_drivers namespace. +# +type_drivers = flat,gre +# Example: type_drivers = flat,vlan,gre,vxlan + +# (ListOpt) Ordered list of network_types to allocate as tenant +# networks. The default value 'local' is useful for single-box testing +# but provides no connectivity between hosts. +# +tenant_network_types = gre +# Example: tenant_network_types = vlan,gre,vxlan + +# (ListOpt) Ordered list of networking mechanism driver entrypoints +# to be loaded from the neutron.ml2.mechanism_drivers namespace. +mechanism_drivers = openvswitch +# Example: mechanism_drivers = openvswitch,mlnx +# Example: mechanism_drivers = arista +# Example: mechanism_drivers = cisco,logger +# Example: mechanism_drivers = openvswitch,brocade +# Example: mechanism_drivers = linuxbridge,brocade + +# (ListOpt) Ordered list of extension driver entrypoints +# to be loaded from the neutron.ml2.extension_drivers namespace. +# extension_drivers = +# Example: extension_drivers = anewextensiondriver + +# =========== items for MTU selection and advertisement ============= +# (IntOpt) Path MTU. The maximum permissible size of an unfragmented +# packet travelling from and to addresses where encapsulated Neutron +# traffic is sent. Drivers calculate maximum viable MTU for +# validating tenant requests based on this value (typically, +# path_mtu - max encap header size). If <=0, the path MTU is +# indeterminate and no calculation takes place. +# path_mtu = 0 + +# (IntOpt) Segment MTU. The maximum permissible size of an +# unfragmented packet travelling a L2 network segment. If <=0, +# the segment MTU is indeterminate and no calculation takes place. +# segment_mtu = 0 + +# (ListOpt) Physical network MTUs. List of mappings of physical +# network to MTU value. The format of the mapping is +# :. This mapping allows specifying a +# physical network MTU value that differs from the default +# segment_mtu value. +# physical_network_mtus = +# Example: physical_network_mtus = physnet1:1550, physnet2:1500 +# ======== end of items for MTU selection and advertisement ========= + +# (StrOpt) Default network type for external networks when no provider +# attributes are specified. By default it is None, which means that if +# provider attributes are not specified while creating external networks +# then they will have the same type as tenant networks. +# Allowed values for external_network_type config option depend on the +# network type values configured in type_drivers config option. +# external_network_type = +# Example: external_network_type = local + +[ml2_type_flat] +# (ListOpt) List of physical_network names with which flat networks +# can be created. Use * to allow flat networks with arbitrary +# physical_network names. +# +flat_networks = External +# Example:flat_networks = physnet1,physnet2 +# Example:flat_networks = * + +[ml2_type_vlan] +# (ListOpt) List of [::] tuples +# specifying physical_network names usable for VLAN provider and +# tenant networks, as well as ranges of VLAN tags on each +# physical_network available for allocation as tenant networks. +# +# network_vlan_ranges = +# Example: network_vlan_ranges = physnet1:1000:2999,physnet2 + +[ml2_type_gre] +# (ListOpt) Comma-separated list of : tuples enumerating ranges of GRE tunnel IDs that are available for tenant network allocation +tunnel_id_ranges = 1:1000 + +[ml2_type_vxlan] +# (ListOpt) Comma-separated list of : tuples enumerating +# ranges of VXLAN VNI IDs that are available for tenant network allocation. +# +# vni_ranges = + +# (StrOpt) Multicast group for the VXLAN interface. When configured, will +# enable sending all broadcast traffic to this multicast group. When left +# unconfigured, will disable multicast VXLAN mode. +# +# vxlan_group = +# Example: vxlan_group = 239.1.1.1 + +[securitygroup] +# Controls if neutron security group is enabled or not. +# It should be false when you use nova security group. +enable_security_group = True + +# Use ipset to speed-up the iptables security groups. Enabling ipset support +# requires that ipset is installed on L2 agent node. +enable_ipset = True + +firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver + +[ovs] +local_ip = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} +enable_tunneling = True +bridge_mappings=External:br-ex + +[agent] +tunnel_types = gre diff --git a/old/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini b/old/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini new file mode 100644 index 00000000..9d9cfa25 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini @@ -0,0 +1,44 @@ +[ovs] +# integration_bridge = br-int + +# openflow_rest_api = : +# openflow_rest_api = 127.0.0.1:8080 + +# tunnel key range: 0 < tunnel_key_min < tunnel_key_max +# VLAN: 12bits, GRE, VXLAN: 24bits +# tunnel_key_min = 1 +# tunnel_key_max = 0xffffff + +# tunnel_ip = +# tunnel_interface = interface for tunneling +# when tunnel_ip is NOT specified, ip address is read +# from this interface +# tunnel_ip = +# tunnel_interface = +tunnel_interface = eth0 + +# ovsdb_port = port number on which ovsdb is listening +# ryu-agent uses this parameter to setup ovsdb. +# ovs-vsctl set-manager ptcp: +# See set-manager section of man ovs-vsctl for details. +# currently ptcp is only supported. +# ovsdb_ip = +# ovsdb_interface = interface for ovsdb +# when ovsdb_addr NOT specifiied, ip address is gotten +# from this interface +# ovsdb_port = 6634 +# ovsdb_ip = +# ovsdb_interface = +ovsdb_interface = eth0 + +[securitygroup] +# Firewall driver for realizing neutron security group function +# firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver + +# Controls if neutron security group is enabled or not. +# It should be false when you use nova security group. +# enable_security_group = True + +[agent] +# Agent's polling interval in seconds +# polling_interval = 2 diff --git a/old/install-files/openstack/usr/share/openstack/nova-config.yml b/old/install-files/openstack/usr/share/openstack/nova-config.yml new file mode 100644 index 00000000..4f43db39 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/nova-config.yml @@ -0,0 +1,34 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/nova.conf" + tasks: + - name: Create the nova user. + user: + name: nova + comment: Openstack Nova Daemons + shell: /sbin/nologin + home: /var/lib/nova + groups: libvirt + append: yes + + - name: Create the /var folders for nova + file: + path: "{{ item }}" + state: directory + owner: nova + group: nova + with_items: + - /var/run/nova + - /var/lock/nova + - /var/log/nova + - /var/lib/nova + - /var/lib/nova/instances + + - file: path=/etc/nova state=directory + - name: Add the configuration needed for nova in /etc/nova using templates + template: + src: /usr/share/openstack/nova/{{ item }} + dest: /etc/nova/{{ item }} + with_lines: + - cd /usr/share/openstack/nova && find -type f diff --git a/old/install-files/openstack/usr/share/openstack/nova-db.yml b/old/install-files/openstack/usr/share/openstack/nova-db.yml new file mode 100644 index 00000000..0e933ba8 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/nova-db.yml @@ -0,0 +1,50 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/nova.conf" + tasks: + - name: Create nova service user in service tenant + keystone_user: + user: "{{ NOVA_SERVICE_USER }}" + password: "{{ NOVA_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to nova service user in the service tenant + keystone_user: + role: admin + user: "{{ NOVA_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add nova endpoint + keystone_service: + name: nova + type: compute + description: Openstack Compute Service + publicurl: 'http://{{ ansible_hostname }}:8774/v2/%(tenant_id)s' + internalurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8774/v2/%(tenant_id)s' + adminurl: 'http://{{ CONTROLLER_HOST_ADDRESS }}:8774/v2/%(tenant_id)s' + region: 'regionOne' + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for nova + postgresql_user: + name: "{{ NOVA_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + password: "{{ NOVA_DB_PASSWORD }}" + sudo: yes + sudo_user: nova + + - name: Create database for nova services + postgresql_db: + name: nova + owner: "{{ NOVA_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + sudo: yes + sudo_user: nova + + - name: Initiate nova database + command: nova-manage db sync + sudo: yes + sudo_user: nova diff --git a/old/install-files/openstack/usr/share/openstack/nova/nova-compute.conf b/old/install-files/openstack/usr/share/openstack/nova/nova-compute.conf new file mode 100644 index 00000000..8d186211 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/nova/nova-compute.conf @@ -0,0 +1,4 @@ +[DEFAULT] +compute_driver={{ COMPUTE_DRIVER }} +[libvirt] +virt_type={{ NOVA_VIRT_TYPE }} diff --git a/old/install-files/openstack/usr/share/openstack/nova/nova.conf b/old/install-files/openstack/usr/share/openstack/nova/nova.conf new file mode 100644 index 00000000..f2db93fc --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/nova/nova.conf @@ -0,0 +1,4008 @@ +[DEFAULT] + +# +# From oslo.messaging +# + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP. +# The "host" option should point or resolve to this address. (string value) +#rpc_zmq_bind_address = * + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker = oslo_messaging._drivers.matchmaker.MatchMakerLocalhost + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port = 9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts = 1 + +# Maximum number of ingress messages to locally buffer per topic. Default is +# unlimited. (integer value) +#rpc_zmq_topic_backlog = + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir = /var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match +# "host" option, if running Nova. (string value) +#rpc_zmq_host = localhost + +# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq. +# (integer value) +#rpc_cast_timeout = 30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq = 300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl = 600 + +# Size of RPC thread pool. (integer value) +#rpc_thread_pool_size = 64 + +# Driver or drivers to handle sending notifications. (multi valued) +notification_driver = messagingv2 + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics = notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout = 60 + +# A URL representing the messaging driver to use and its full configuration. If +# not set, we fall back to the rpc_backend option and driver specific +# configuration. (string value) +#transport_url = + +# The messaging driver to use, defaults to rabbit. Other drivers include qpid +# and zmq. (string value) +rpc_backend = rabbit + +# The default exchange under which topics are scoped. May be overridden by an +# exchange name specified in the transport_url option. (string value) +#control_exchange = openstack + + +# +# Options defined in nova.availability_zones +# + +# The availability_zone to show internal services under +# (string value) +#internal_service_availability_zone=internal + +# Default compute node availability_zone (string value) +#default_availability_zone=nova + + +# +# Options defined in nova.crypto +# + +# Filename of root CA (string value) +#ca_file=cacert.pem + +# Filename of private key (string value) +#key_file=private/cakey.pem + +# Filename of root Certificate Revocation List (string value) +#crl_file=crl.pem + +# Where we keep our keys (string value) +#keys_path=$state_path/keys + +# Where we keep our root CA (string value) +#ca_path=$state_path/CA + +# Should we use a CA for each project? (boolean value) +#use_project_ca=false + +# Subject for certificate for users, %s for project, user, +# timestamp (string value) +#user_cert_subject=/C=US/ST=California/O=OpenStack/OU=NovaDev/CN=%.16s-%.16s-%s + +# Subject for certificate for projects, %s for project, +# timestamp (string value) +#project_cert_subject=/C=US/ST=California/O=OpenStack/OU=NovaDev/CN=project-ca-%.16s-%s + + +# +# Options defined in nova.exception +# + +# Make exception message format errors fatal (boolean value) +#fatal_exception_format_errors=false + + +# +# Options defined in nova.netconf +# + +# IP address of this host (string value) +my_ip={{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Block storage IP address of this host (string value) +#my_block_storage_ip=$my_ip + +# Name of this node. This can be an opaque identifier. It is +# not necessarily a hostname, FQDN, or IP address. However, +# the node name must be valid within an AMQP key, and if using +# ZeroMQ, a valid hostname, FQDN, or IP address (string value) +#host=nova + +# Use IPv6 (boolean value) +#use_ipv6=false + + +# +# Options defined in nova.notifications +# + +# If set, send compute.instance.update notifications on +# instance state changes. Valid values are None for no +# notifications, "vm_state" for notifications on VM state +# changes, or "vm_and_task_state" for notifications on VM and +# task state changes. (string value) +notify_on_state_change=vm_and_task_state + +# If set, send api.fault notifications on caught exceptions in +# the API service. (boolean value) +#notify_api_faults=false + +# Default notification level for outgoing notifications +# (string value) +#default_notification_level=INFO + +# Default publisher_id for outgoing notifications (string +# value) +#default_publisher_id= + + +# +# Options defined in nova.paths +# + +# Directory where the nova python module is installed (string +# value) +#pybasedir=/usr/lib/python/site-packages + +# Directory where nova binaries are installed (string value) +#bindir=/usr/local/bin + +# Top-level directory for maintaining nova's state (string +# value) +state_path=/var/lib/nova + + +# +# Options defined in nova.quota +# + +# Number of instances allowed per project (integer value) +#quota_instances=10 + +# Number of instance cores allowed per project (integer value) +#quota_cores=20 + +# Megabytes of instance RAM allowed per project (integer +# value) +#quota_ram=51200 + +# Number of floating IPs allowed per project (integer value) +#quota_floating_ips=10 + +# Number of fixed IPs allowed per project (this should be at +# least the number of instances allowed) (integer value) +#quota_fixed_ips=-1 + +# Number of metadata items allowed per instance (integer +# value) +#quota_metadata_items=128 + +# Number of injected files allowed (integer value) +#quota_injected_files=5 + +# Number of bytes allowed per injected file (integer value) +#quota_injected_file_content_bytes=10240 + +# Length of injected file path (integer value) +#quota_injected_file_path_length=255 + +# Number of security groups per project (integer value) +#quota_security_groups=10 + +# Number of security rules per security group (integer value) +#quota_security_group_rules=20 + +# Number of key pairs per user (integer value) +#quota_key_pairs=100 + +# Number of server groups per project (integer value) +#quota_server_groups=10 + +# Number of servers per server group (integer value) +#quota_server_group_members=10 + +# Number of seconds until a reservation expires (integer +# value) +#reservation_expire=86400 + +# Count of reservations until usage is refreshed. This +# defaults to 0(off) to avoid additional load but it is useful +# to turn on to help keep quota usage up to date and reduce +# the impact of out of sync usage issues. (integer value) +#until_refresh=0 + +# Number of seconds between subsequent usage refreshes. This +# defaults to 0(off) to avoid additional load but it is useful +# to turn on to help keep quota usage up to date and reduce +# the impact of out of sync usage issues. Note that quotas are +# not updated on a periodic task, they will update on a new +# reservation if max_age has passed since the last reservation +# (integer value) +#max_age=0 + +# Default driver to use for quota checks (string value) +#quota_driver=nova.quota.DbQuotaDriver + + +# +# Options defined in nova.service +# + +# Seconds between nodes reporting state to datastore (integer +# value) +#report_interval=10 + +# Enable periodic tasks (boolean value) +#periodic_enable=true + +# Range of seconds to randomly delay when starting the +# periodic task scheduler to reduce stampeding. (Disable by +# setting to 0) (integer value) +#periodic_fuzzy_delay=60 + +# A list of APIs to enable by default (list value) +enabled_apis=ec2,osapi_compute,metadata + +# A list of APIs with enabled SSL (list value) +#enabled_ssl_apis= + +# The IP address on which the EC2 API will listen. (string +# value) +#ec2_listen=0.0.0.0 + +# The port on which the EC2 API will listen. (integer value) +#ec2_listen_port=8773 + +# Number of workers for EC2 API service. The default will be +# equal to the number of CPUs available. (integer value) +#ec2_workers= + +# The IP address on which the OpenStack API will listen. +# (string value) +#osapi_compute_listen=0.0.0.0 + +# The port on which the OpenStack API will listen. (integer +# value) +#osapi_compute_listen_port=8774 + +# Number of workers for OpenStack API service. The default +# will be the number of CPUs available. (integer value) +#osapi_compute_workers= + +# OpenStack metadata service manager (string value) +#metadata_manager=nova.api.manager.MetadataManager + +# The IP address on which the metadata API will listen. +# (string value) +#metadata_listen=0.0.0.0 + +# The port on which the metadata API will listen. (integer +# value) +#metadata_listen_port=8775 + +# Number of workers for metadata service. The default will be +# the number of CPUs available. (integer value) +#metadata_workers= + +# Full class name for the Manager for compute (string value) +compute_manager={{ COMPUTE_MANAGER }} + +# Full class name for the Manager for console proxy (string +# value) +#console_manager=nova.console.manager.ConsoleProxyManager + +# Manager for console auth (string value) +#consoleauth_manager=nova.consoleauth.manager.ConsoleAuthManager + +# Full class name for the Manager for cert (string value) +#cert_manager=nova.cert.manager.CertManager + +# Full class name for the Manager for network (string value) +#network_manager=nova.network.manager.VlanManager + +# Full class name for the Manager for scheduler (string value) +#scheduler_manager=nova.scheduler.manager.SchedulerManager + +# Maximum time since last check-in for up service (integer +# value) +#service_down_time=60 + + +# +# Options defined in nova.utils +# + +# Whether to log monkey patching (boolean value) +#monkey_patch=false + +# List of modules/decorators to monkey patch (list value) +#monkey_patch_modules=nova.api.ec2.cloud:nova.notifications.notify_decorator,nova.compute.api:nova.notifications.notify_decorator + +# Length of generated instance admin passwords (integer value) +#password_length=12 + +# Time period to generate instance usages for. Time period +# must be hour, day, month or year (string value) +instance_usage_audit_period=hour + +# Path to the rootwrap configuration file to use for running +# commands as root (string value) +rootwrap_config=/etc/nova/rootwrap.conf + +# Explicitly specify the temporary working directory (string +# value) +#tempdir= + + +# +# Options defined in nova.wsgi +# + +# File name for the paste.deploy config for nova-api (string +# value) +api_paste_config=api-paste.ini + +# A python format string that is used as the template to +# generate log lines. The following values can be formatted +# into it: client_ip, date_time, request_line, status_code, +# body_length, wall_seconds. (string value) +#wsgi_log_format=%(client_ip)s "%(request_line)s" status: %(status_code)s len: %(body_length)s time: %(wall_seconds).7f + +# CA certificate file to use to verify connecting clients +# (string value) +#ssl_ca_file= + +# SSL certificate of API server (string value) +#ssl_cert_file= + +# SSL private key of API server (string value) +#ssl_key_file= + +# Sets the value of TCP_KEEPIDLE in seconds for each server +# socket. Not supported on OS X. (integer value) +#tcp_keepidle=600 + +# Size of the pool of greenthreads used by wsgi (integer +# value) +#wsgi_default_pool_size=1000 + +# Maximum line size of message headers to be accepted. +# max_header_line may need to be increased when using large +# tokens (typically those generated by the Keystone v3 API +# with big service catalogs). (integer value) +#max_header_line=16384 + +# If False, closes the client socket connection explicitly. +# (boolean value) +#wsgi_keep_alive=true + +# Timeout for client connections' socket operations. If an +# incoming connection is idle for this number of seconds it +# will be closed. A value of '0' means wait forever. (integer +# value) +#client_socket_timeout=900 + + +# +# Options defined in nova.api.auth +# + +# Whether to use per-user rate limiting for the api. This +# option is only used by v2 api. Rate limiting is removed from +# v3 api. (boolean value) +#api_rate_limit=false + +# The strategy to use for auth: keystone, noauth +# (deprecated), or noauth2. Both noauth and noauth2 are +# designed for testing only, as they do no actual credential +# checking. noauth provides administrative credentials +# regardless of the passed in user, noauth2 only does if +# 'admin' is specified as the username. (string value) +auth_strategy=keystone + +# Treat X-Forwarded-For as the canonical remote address. Only +# enable this if you have a sanitizing proxy. (boolean value) +#use_forwarded_for=false + + +# +# Options defined in nova.api.ec2 +# + +# Number of failed auths before lockout. (integer value) +#lockout_attempts=5 + +# Number of minutes to lockout if triggered. (integer value) +#lockout_minutes=15 + +# Number of minutes for lockout window. (integer value) +#lockout_window=15 + +# URL to get token from ec2 request. (string value) +#keystone_ec2_url=http://localhost:5000/v2.0/ec2tokens + +# Return the IP address as private dns hostname in describe +# instances (boolean value) +#ec2_private_dns_show_ip=false + +# Validate security group names according to EC2 specification +# (boolean value) +#ec2_strict_validation=true + +# Time in seconds before ec2 timestamp expires (integer value) +#ec2_timestamp_expiry=300 + +# Disable SSL certificate verification. (boolean value) +#keystone_ec2_insecure=false + + +# +# Options defined in nova.api.ec2.cloud +# + +# The IP address of the EC2 API server (string value) +#ec2_host=$my_ip + +# The internal IP address of the EC2 API server (string value) +#ec2_dmz_host=$my_ip + +# The port of the EC2 API server (integer value) +#ec2_port=8773 + +# The protocol to use when connecting to the EC2 API server +# (http, https) (string value) +#ec2_scheme=http + +# The path prefix used to call the ec2 API server (string +# value) +#ec2_path=/ + +# List of region=fqdn pairs separated by commas (list value) +#region_list= + + +# +# Options defined in nova.api.metadata.base +# + +# List of metadata versions to skip placing into the config +# drive (string value) +#config_drive_skip_versions=1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 + +# Driver to use for vendor data (string value) +#vendordata_driver=nova.api.metadata.vendordata_json.JsonFileVendorData + + +# +# Options defined in nova.api.metadata.handler +# + +# Time in seconds to cache metadata; 0 to disable metadata +# caching entirely (not recommended). Increasingthis should +# improve response times of the metadata API when under heavy +# load. Higher values may increase memoryusage and result in +# longer times for host metadata changes to take effect. +# (integer value) +#metadata_cache_expiration=15 + + +# +# Options defined in nova.api.metadata.vendordata_json +# + +# File to load JSON formatted vendor data from (string value) +#vendordata_jsonfile_path= + + +# +# Options defined in nova.api.openstack.common +# + +# The maximum number of items returned in a single response +# from a collection resource (integer value) +#osapi_max_limit=1000 + +# Base URL that will be presented to users in links to the +# OpenStack Compute API (string value) +#osapi_compute_link_prefix= + +# Base URL that will be presented to users in links to glance +# resources (string value) +#osapi_glance_link_prefix= + + +# +# Options defined in nova.api.openstack.compute +# + +# Permit instance snapshot operations. (boolean value) +#allow_instance_snapshots=true + + +# +# Options defined in nova.api.openstack.compute.contrib +# + +# Specify list of extensions to load when using +# osapi_compute_extension option with +# nova.api.openstack.compute.contrib.select_extensions (list +# value) +#osapi_compute_ext_list= + + +# +# Options defined in nova.api.openstack.compute.contrib.fping +# + +# Full path to fping. (string value) +#fping_path=/usr/sbin/fping + + +# +# Options defined in nova.api.openstack.compute.contrib.os_tenant_networks +# + +# Enables or disables quota checking for tenant networks +# (boolean value) +#enable_network_quota=false + +# Control for checking for default networks (string value) +#use_neutron_default_nets=False + +# Default tenant id when creating neutron networks (string +# value) +#neutron_default_tenant_id=default + +# Number of private networks allowed per project (integer +# value) +#quota_networks=3 + + +# +# Options defined in nova.api.openstack.compute.extensions +# + +# osapi compute extension to load (multi valued) +osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions + + +# +# Options defined in nova.api.openstack.compute.plugins.v3.hide_server_addresses +# + +# List of instance states that should hide network info (list +# value) +#osapi_hide_server_address_states=building + + +# +# Options defined in nova.api.openstack.compute.servers +# + +# Enables returning of the instance password by the relevant +# server API calls such as create, rebuild or rescue, If the +# hypervisor does not support password injection then the +# password returned will not be correct (boolean value) +#enable_instance_password=true + + +# +# Options defined in nova.cert.rpcapi +# + +# The topic cert nodes listen on (string value) +#cert_topic=cert + + +# +# Options defined in nova.cloudpipe.pipelib +# + +# Image ID used when starting up a cloudpipe vpn server +# (string value) +#vpn_image_id=0 + +# Flavor for vpn instances (string value) +#vpn_flavor=m1.tiny + +# Template for cloudpipe instance boot script (string value) +#boot_script_template=$pybasedir/nova/cloudpipe/bootscript.template + +# Network to push into openvpn config (string value) +#dmz_net=10.0.0.0 + +# Netmask to push into openvpn config (string value) +#dmz_mask=255.255.255.0 + +# Suffix to add to project name for vpn key and secgroups +# (string value) +#vpn_key_suffix=-vpn + + +# +# Options defined in nova.cmd.novnc +# + +# Record sessions to FILE.[session_number] (boolean value) +#record=false + +# Become a daemon (background process) (boolean value) +#daemon=false + +# Disallow non-encrypted connections (boolean value) +#ssl_only=false + +# Source is ipv6 (boolean value) +#source_is_ipv6=false + +# SSL certificate file (string value) +#cert=self.pem + +# SSL key file (if separate from cert) (string value) +#key= + +# Run webserver on same port. Serve files from DIR. (string +# value) +#web=/usr/share/spice-html5 + + +# +# Options defined in nova.cmd.novncproxy +# + +# Host on which to listen for incoming requests (string value) +#novncproxy_host=0.0.0.0 + +# Port on which to listen for incoming requests (integer +# value) +#novncproxy_port=6080 + + +# +# Options defined in nova.compute.api +# + +# Allow destination machine to match source for resize. Useful +# when testing in single-host environments. (boolean value) +#allow_resize_to_same_host=false + +# Allow migrate machine to the same host. Useful when testing +# in single-host environments. (boolean value) +#allow_migrate_to_same_host=false + +# Availability zone to use when user doesn't specify one +# (string value) +#default_schedule_zone= + +# These are image properties which a snapshot should not +# inherit from an instance (list value) +#non_inheritable_image_properties=cache_in_nova,bittorrent + +# Kernel image that indicates not to use a kernel, but to use +# a raw disk image instead (string value) +#null_kernel=nokernel + +# When creating multiple instances with a single request using +# the os-multiple-create API extension, this template will be +# used to build the display name for each instance. The +# benefit is that the instances end up with different +# hostnames. To restore legacy behavior of every instance +# having the same name, set this option to "%(name)s". Valid +# keys for the template are: name, uuid, count. (string value) +#multi_instance_display_name_template=%(name)s-%(count)d + +# Maximum number of devices that will result in a local image +# being created on the hypervisor node. Setting this to 0 +# means nova will allow only boot from volume. A negative +# number means unlimited. (integer value) +#max_local_block_devices=3 + + +# +# Options defined in nova.compute.flavors +# + +# Default flavor to use for the EC2 API only. The Nova API +# does not support a default flavor. (string value) +#default_flavor=m1.small + + +# +# Options defined in nova.compute.manager +# + +# Console proxy host to use to connect to instances on this +# host. (string value) +#console_host=nova + +# Name of network to use to set access IPs for instances +# (string value) +#default_access_ip_network_name= + +# Whether to batch up the application of IPTables rules during +# a host restart and apply all at the end of the init phase +# (boolean value) +#defer_iptables_apply=false + +# Where instances are stored on disk (string value) +#instances_path=$state_path/instances + +# Generate periodic compute.instance.exists notifications +# (boolean value) +instance_usage_audit= True + +# Number of 1 second retries needed in live_migration (integer +# value) +#live_migration_retry_count=30 + +# Whether to start guests that were running before the host +# rebooted (boolean value) +#resume_guests_state_on_host_boot=false + +# Number of times to retry network allocation on failures +# (integer value) +#network_allocate_retries=0 + +# Maximum number of instance builds to run concurrently +# (integer value) +#max_concurrent_builds=10 + +# Number of times to retry block device allocation on failures +# (integer value) +#block_device_allocate_retries=60 + +# The number of times to attempt to reap an instance's files. +# (integer value) +#maximum_instance_delete_attempts=5 + +# Interval to pull network bandwidth usage info. Not supported +# on all hypervisors. Set to -1 to disable. Setting this to 0 +# will run at the default rate. (integer value) +#bandwidth_poll_interval=600 + +# Interval to sync power states between the database and the +# hypervisor. Set to -1 to disable. Setting this to 0 will run +# at the default rate. (integer value) +#sync_power_state_interval=600 + +# Number of seconds between instance network information cache +# updates (integer value) +#heal_instance_info_cache_interval=60 + +# Interval in seconds for reclaiming deleted instances +# (integer value) +#reclaim_instance_interval=0 + +# Interval in seconds for gathering volume usages (integer +# value) +#volume_usage_poll_interval=0 + +# Interval in seconds for polling shelved instances to +# offload. Set to -1 to disable.Setting this to 0 will run at +# the default rate. (integer value) +#shelved_poll_interval=3600 + +# Time in seconds before a shelved instance is eligible for +# removing from a host. -1 never offload, 0 offload when +# shelved (integer value) +#shelved_offload_time=0 + +# Interval in seconds for retrying failed instance file +# deletes. Set to -1 to disable. Setting this to 0 will run at +# the default rate. (integer value) +#instance_delete_interval=300 + +# Waiting time interval (seconds) between block device +# allocation retries on failures (integer value) +#block_device_allocate_retries_interval=3 + +# Waiting time interval (seconds) between sending the +# scheduler a list of current instance UUIDs to verify that +# its view of instances is in sync with nova. If the CONF +# option `scheduler_tracks_instance_changes` is False, +# changing this option will have no effect. (integer value) +#scheduler_instance_sync_interval=120 + +# Action to take if a running deleted instance is detected. +# Valid options are 'noop', 'log', 'shutdown', or 'reap'. Set +# to 'noop' to take no action. (string value) +#running_deleted_instance_action=reap + +# Number of seconds to wait between runs of the cleanup task. +# (integer value) +#running_deleted_instance_poll_interval=1800 + +# Number of seconds after being deleted when a running +# instance should be considered eligible for cleanup. (integer +# value) +#running_deleted_instance_timeout=0 + +# Automatically hard reboot an instance if it has been stuck +# in a rebooting state longer than N seconds. Set to 0 to +# disable. (integer value) +#reboot_timeout=0 + +# Amount of time in seconds an instance can be in BUILD before +# going into ERROR status. Set to 0 to disable. (integer +# value) +#instance_build_timeout=0 + +# Automatically unrescue an instance after N seconds. Set to 0 +# to disable. (integer value) +#rescue_timeout=0 + +# Automatically confirm resizes after N seconds. Set to 0 to +# disable. (integer value) +#resize_confirm_window=0 + +# Total amount of time to wait in seconds for an instance to +# perform a clean shutdown. (integer value) +#shutdown_timeout=60 + + +# +# Options defined in nova.compute.monitors +# + +# Monitor classes available to the compute which may be +# specified more than once. (multi valued) +#compute_available_monitors=nova.compute.monitors.all_monitors + +# A list of monitors that can be used for getting compute +# metrics. (list value) +#compute_monitors= + + +# +# Options defined in nova.compute.resource_tracker +# + +# Amount of disk in MB to reserve for the host (integer value) +#reserved_host_disk_mb=0 + +# Amount of memory in MB to reserve for the host (integer +# value) +reserved_host_memory_mb={{ RESERVED_HOST_MEMORY_MB }} + +# Class that will manage stats for the local compute host +# (string value) +#compute_stats_class=nova.compute.stats.Stats + +# The names of the extra resources to track. (list value) +#compute_resources=vcpu + + +# +# Options defined in nova.compute.rpcapi +# + +# The topic compute nodes listen on (string value) +#compute_topic=compute + + +# +# Options defined in nova.conductor.tasks.live_migrate +# + +# Number of times to retry live-migration before failing. If +# == -1, try until out of hosts. If == 0, only try once, no +# retries. (integer value) +#migrate_max_retries=-1 + + +# +# Options defined in nova.console.manager +# + +# Driver to use for the console proxy (string value) +#console_driver=nova.console.xvp.XVPConsoleProxy + +# Stub calls to compute worker for tests (boolean value) +#stub_compute=false + +# Publicly visible name for this console host (string value) +#console_public_hostname=nova + + +# +# Options defined in nova.console.rpcapi +# + +# The topic console proxy nodes listen on (string value) +#console_topic=console + + +# +# Options defined in nova.console.xvp +# + +# XVP conf template (string value) +#console_xvp_conf_template=$pybasedir/nova/console/xvp.conf.template + +# Generated XVP conf file (string value) +#console_xvp_conf=/etc/xvp.conf + +# XVP master process pid file (string value) +#console_xvp_pid=/var/run/xvp.pid + +# XVP log file (string value) +#console_xvp_log=/var/log/xvp.log + +# Port for XVP to multiplex VNC connections on (integer value) +#console_xvp_multiplex_port=5900 + + +# +# Options defined in nova.consoleauth +# + +# The topic console auth proxy nodes listen on (string value) +#consoleauth_topic=consoleauth + + +# +# Options defined in nova.consoleauth.manager +# + +# How many seconds before deleting tokens (integer value) +#console_token_ttl=600 + + +# +# Options defined in nova.db.api +# + +# Services to be added to the available pool on create +# (boolean value) +#enable_new_services=true + +# Template string to be used to generate instance names +# (string value) +instance_name_template=instance-%08x + +# Template string to be used to generate snapshot names +# (string value) +snapshot_name_template=snapshot-%s + + +# +# Options defined in nova.db.base +# + +# The driver to use for database access (string value) +#db_driver=nova.db + + +# +# Options defined in nova.db.sqlalchemy.api +# + +# When set, compute API will consider duplicate hostnames +# invalid within the specified scope, regardless of case. +# Should be empty, "project" or "global". (string value) +#osapi_compute_unique_server_name_scope= + + +# +# Options defined in nova.image.s3 +# + +# Parent directory for tempdir used for image decryption +# (string value) +#image_decryption_dir=/tmp + +# Hostname or IP for OpenStack to use when accessing the S3 +# api (string value) +#s3_host=$my_ip + +# Port used when accessing the S3 api (integer value) +#s3_port=3333 + +# Access key to use for S3 server for images (string value) +#s3_access_key=notchecked + +# Secret key to use for S3 server for images (string value) +#s3_secret_key=notchecked + +# Whether to use SSL when talking to S3 (boolean value) +#s3_use_ssl=false + +# Whether to affix the tenant id to the access key when +# downloading from S3 (boolean value) +#s3_affix_tenant=false + + +# +# Options defined in nova.ipv6.api +# + +# Backend to use for IPv6 generation (string value) +#ipv6_backend=rfc2462 + + +# +# Options defined in nova.network +# + +# The full class name of the network API class to use (string +# value) +network_api_class=nova.network.neutronv2.api.API + + +# +# Options defined in nova.network.driver +# + +# Driver to use for network creation (string value) +#network_driver=nova.network.linux_net + + +# +# Options defined in nova.network.floating_ips +# + +# Default pool for floating IPs (string value) +#default_floating_pool=nova + +# Autoassigning floating IP to VM (boolean value) +#auto_assign_floating_ip=false + +# Full class name for the DNS Manager for floating IPs (string +# value) +#floating_ip_dns_manager=nova.network.noop_dns_driver.NoopDNSDriver + +# Full class name for the DNS Manager for instance IPs (string +# value) +#instance_dns_manager=nova.network.noop_dns_driver.NoopDNSDriver + +# Full class name for the DNS Zone for instance IPs (string +# value) +#instance_dns_domain= + + +# +# Options defined in nova.network.ldapdns +# + +# URL for LDAP server which will store DNS entries (string +# value) +#ldap_dns_url=ldap://ldap.example.com:389 + +# User for LDAP DNS (string value) +#ldap_dns_user=uid=admin,ou=people,dc=example,dc=org + +# Password for LDAP DNS (string value) +#ldap_dns_password=password + +# Hostmaster for LDAP DNS driver Statement of Authority +# (string value) +#ldap_dns_soa_hostmaster=hostmaster@example.org + +# DNS Servers for LDAP DNS driver (multi valued) +#ldap_dns_servers=dns.example.org + +# Base DN for DNS entries in LDAP (string value) +#ldap_dns_base_dn=ou=hosts,dc=example,dc=org + +# Refresh interval (in seconds) for LDAP DNS driver Statement +# of Authority (string value) +#ldap_dns_soa_refresh=1800 + +# Retry interval (in seconds) for LDAP DNS driver Statement of +# Authority (string value) +#ldap_dns_soa_retry=3600 + +# Expiry interval (in seconds) for LDAP DNS driver Statement +# of Authority (string value) +#ldap_dns_soa_expiry=86400 + +# Minimum interval (in seconds) for LDAP DNS driver Statement +# of Authority (string value) +#ldap_dns_soa_minimum=7200 + + +# +# Options defined in nova.network.linux_net +# + +# Location of flagfiles for dhcpbridge (multi valued) +#dhcpbridge_flagfile=/etc/nova/nova-dhcpbridge.conf + +# Location to keep network config files (string value) +#networks_path=$state_path/networks + +# Interface for public IP addresses (string value) +#public_interface=eth0 + +# Location of nova-dhcpbridge (string value) +#dhcpbridge=$bindir/nova-dhcpbridge + +# Public IP of network host (string value) +#routing_source_ip=$my_ip + +# Lifetime of a DHCP lease in seconds (integer value) +#dhcp_lease_time=86400 + +# If set, uses specific DNS server for dnsmasq. Can be +# specified multiple times. (multi valued) +#dns_server= + +# If set, uses the dns1 and dns2 from the network ref. as dns +# servers. (boolean value) +#use_network_dns_servers=false + +# A list of dmz ranges that should be accepted (list value) +#dmz_cidr= + +# Traffic to this range will always be snatted to the fallback +# ip, even if it would normally be bridged out of the node. +# Can be specified multiple times. (multi valued) +#force_snat_range= + +# Override the default dnsmasq settings with this file (string +# value) +#dnsmasq_config_file= + +# Driver used to create ethernet devices. (string value) +linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver + +# Name of Open vSwitch bridge used with linuxnet (string +# value) +#linuxnet_ovs_integration_bridge=br-int + +# Send gratuitous ARPs for HA setup (boolean value) +#send_arp_for_ha=false + +# Send this many gratuitous ARPs for HA setup (integer value) +#send_arp_for_ha_count=3 + +# Use single default gateway. Only first nic of vm will get +# default gateway from dhcp server (boolean value) +#use_single_default_gateway=false + +# An interface that bridges can forward to. If this is set to +# all then all traffic will be forwarded. Can be specified +# multiple times. (multi valued) +#forward_bridge_interface=all + +# The IP address for the metadata API server (string value) +#metadata_host=$my_ip + +# The port for the metadata API port (integer value) +#metadata_port=8775 + +# Regular expression to match the iptables rule that should +# always be on the top. (string value) +#iptables_top_regex= + +# Regular expression to match the iptables rule that should +# always be on the bottom. (string value) +#iptables_bottom_regex= + +# The table that iptables to jump to when a packet is to be +# dropped. (string value) +#iptables_drop_action=DROP + +# Amount of time, in seconds, that ovs_vsctl should wait for a +# response from the database. 0 is to wait forever. (integer +# value) +#ovs_vsctl_timeout=120 + +# If passed, use fake network devices and addresses (boolean +# value) +#fake_network=false + +# Number of times to retry ebtables commands on failure. +# (integer value) +#ebtables_exec_attempts=3 + +# Number of seconds to wait between ebtables retries. +# (floating point value) +#ebtables_retry_interval=1.0 + + +# +# Options defined in nova.network.manager +# + +# Bridge for simple network instances (string value) +#flat_network_bridge= + +# DNS server for simple network (string value) +#flat_network_dns=8.8.4.4 + +# Whether to attempt to inject network setup into guest +# (boolean value) +#flat_injected=false + +# FlatDhcp will bridge into this interface if set (string +# value) +#flat_interface= + +# First VLAN for private networks (integer value) +#vlan_start=100 + +# VLANs will bridge into this interface if set (string value) +#vlan_interface= + +# Number of networks to support (integer value) +#num_networks=1 + +# Public IP for the cloudpipe VPN servers (string value) +#vpn_ip=$my_ip + +# First Vpn port for private networks (integer value) +#vpn_start=1000 + +# Number of addresses in each private subnet (integer value) +#network_size=256 + +# Fixed IPv6 address block (string value) +#fixed_range_v6=fd00::/48 + +# Default IPv4 gateway (string value) +#gateway= + +# Default IPv6 gateway (string value) +#gateway_v6= + +# Number of addresses reserved for vpn clients (integer value) +#cnt_vpn_clients=0 + +# Seconds after which a deallocated IP is disassociated +# (integer value) +#fixed_ip_disassociate_timeout=600 + +# Number of attempts to create unique mac address (integer +# value) +#create_unique_mac_address_attempts=5 + +# If True, skip using the queue and make local calls (boolean +# value) +#fake_call=false + +# If True, unused gateway devices (VLAN and bridge) are +# deleted in VLAN network mode with multi hosted networks +# (boolean value) +#teardown_unused_network_gateway=false + +# If True, send a dhcp release on instance termination +# (boolean value) +#force_dhcp_release=true + +# If True, when a DNS entry must be updated, it sends a fanout +# cast to all network hosts to update their DNS entries in +# multi host mode (boolean value) +#update_dns_entries=false + +# Number of seconds to wait between runs of updates to DNS +# entries. (integer value) +#dns_update_periodic_interval=-1 + +# Domain to use for building the hostnames (string value) +#dhcp_domain=novalocal + +# Indicates underlying L3 management library (string value) +#l3_lib=nova.network.l3.LinuxNetL3 + + +# +# Options defined in nova.network.rpcapi +# + +# The topic network nodes listen on (string value) +#network_topic=network + +# Default value for multi_host in networks. Also, if set, some +# rpc network calls will be sent directly to host. (boolean +# value) +#multi_host=false + + +# +# Options defined in nova.network.security_group.openstack_driver +# + +# The full class name of the security API class (string value) +security_group_api=neutron + + +# +# Options defined in nova.objects.network +# + +# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE +# NETWORK. If True in multi_host mode, all compute hosts share +# the same dhcp address. The same IP address used for DHCP +# will be added on each nova-network node which is only +# visible to the vms on the same host. (boolean value) +#share_dhcp_address=false + +# DEPRECATED: THIS VALUE SHOULD BE SET WHEN CREATING THE +# NETWORK. MTU setting for network interface. (integer value) +#network_device_mtu= + + +# +# Options defined in nova.objectstore.s3server +# + +# Path to S3 buckets (string value) +#buckets_path=$state_path/buckets + +# IP address for S3 API to listen (string value) +#s3_listen=0.0.0.0 + +# Port for S3 API to listen (integer value) +#s3_listen_port=3333 + + +# +# From oslo.log +# + +# Print debugging output (set logging level to DEBUG instead of default WARNING +# level). (boolean value) +#debug = false + +# Print more verbose output (set logging level to INFO instead of default +# WARNING level). (boolean value) +#verbose = false + +# The name of a logging configuration file. This file is appended to any +# existing logging configuration files. For details about logging configuration +# files, see the Python logging module documentation. (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append = + +# DEPRECATED. A logging.Formatter log message format string which may use any +# of the available logging.LogRecord attributes. This option is deprecated. +# Please use logging_context_format_string and logging_default_format_string +# instead. (string value) +#log_format = + +# Format string for %%(asctime)s in log records. Default: %(default)s . (string +# value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is set, logging will +# go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative --log-file paths. (string +# value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Use syslog for logging. Existing syslog format is DEPRECATED during I, and +# will change in J to honor RFC5424. (boolean value) +use_syslog = True + +# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled, +# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The +# format without the APP-NAME is deprecated in I, and will be removed in J. +# (boolean value) +#use_syslog_rfc_format = false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility = LOG_USER + +# Log output to standard error. (boolean value) +#use_stderr = true + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. (string value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false + +# The format for an instance that is passed with the log message. (string +# value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. (string +# value) +#instance_uuid_format = "[instance: %(uuid)s] " + + +# +# Options defined in nova.pci.request +# + +# An alias for a PCI passthrough device requirement. This +# allows users to specify the alias in the extra_spec for a +# flavor, without needing to repeat all the PCI property +# requirements. For example: pci_alias = { "name": +# "QuicAssist", "product_id": "0443", "vendor_id": "8086", +# "device_type": "ACCEL" } defines an alias for the Intel +# QuickAssist card. (multi valued) (multi valued) +#pci_alias= + + +# +# Options defined in nova.pci.whitelist +# + +# White list of PCI devices available to VMs. For example: +# pci_passthrough_whitelist = [{"vendor_id": "8086", +# "product_id": "0443"}] (multi valued) +#pci_passthrough_whitelist= + + +# +# Options defined in nova.scheduler.driver +# + +# The scheduler host manager class to use (string value) +scheduler_host_manager={{ SCHEDULER_HOST_MANAGER }} + + +# +# Options defined in nova.scheduler.filter_scheduler +# + +# New instances will be scheduled on a host chosen randomly +# from a subset of the N best hosts. This property defines the +# subset size that a host is chosen from. A value of 1 chooses +# the first host returned by the weighing functions. This +# value must be at least 1. Any value less than 1 will be +# ignored, and 1 will be used instead (integer value) +#scheduler_host_subset_size=1 + + +# +# Options defined in nova.scheduler.filters.aggregate_image_properties_isolation +# + +# Force the filter to consider only keys matching the given +# namespace. (string value) +#aggregate_image_properties_isolation_namespace= + +# The separator used between the namespace and keys (string +# value) +#aggregate_image_properties_isolation_separator=. + + +# +# Options defined in nova.scheduler.filters.core_filter +# + +# Virtual CPU to physical CPU allocation ratio which affects +# all CPU filters. This configuration specifies a global ratio +# for CoreFilter. For AggregateCoreFilter, it will fall back +# to this configuration value if no per-aggregate setting +# found. (floating point value) +#cpu_allocation_ratio=16.0 + + +# +# Options defined in nova.scheduler.filters.disk_filter +# + +# Virtual disk to physical disk allocation ratio (floating +# point value) +#disk_allocation_ratio=1.0 + + +# +# Options defined in nova.scheduler.filters.io_ops_filter +# + +# Tells filters to ignore hosts that have this many or more +# instances currently in build, resize, snapshot, migrate, +# rescue or unshelve task states (integer value) +#max_io_ops_per_host=8 + + +# +# Options defined in nova.scheduler.filters.isolated_hosts_filter +# + +# Images to run on isolated host (list value) +#isolated_images= + +# Host reserved for specific images (list value) +#isolated_hosts= + +# Whether to force isolated hosts to run only isolated images +# (boolean value) +#restrict_isolated_hosts_to_isolated_images=true + + +# +# Options defined in nova.scheduler.filters.num_instances_filter +# + +# Ignore hosts that have too many instances (integer value) +#max_instances_per_host=50 + + +# +# Options defined in nova.scheduler.filters.ram_filter +# + +# Virtual ram to physical ram allocation ratio which affects +# all ram filters. This configuration specifies a global ratio +# for RamFilter. For AggregateRamFilter, it will fall back to +# this configuration value if no per-aggregate setting found. +# (floating point value) +ram_allocation_ratio={{ RAM_ALLOCATION_RATIO }} + + +# +# Options defined in nova.scheduler.host_manager +# + +# Filter classes available to the scheduler which may be +# specified more than once. An entry of +# "nova.scheduler.filters.all_filters" maps to all filters +# included with nova. (multi valued) +#scheduler_available_filters=nova.scheduler.filters.all_filters + +# Which filter class names to use for filtering hosts when not +# specified in the request. (list value) +scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter + +# Which weight class names to use for weighing hosts (list +# value) +#scheduler_weight_classes=nova.scheduler.weights.all_weighers + +# Determines if the Scheduler tracks changes to instances to +# help with its filtering decisions. (boolean value) +#scheduler_tracks_instance_changes=true + + +# +# Options defined in nova.scheduler.ironic_host_manager +# + +# Which filter class names to use for filtering baremetal +# hosts when not specified in the request. (list value) +#baremetal_scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter + +# Flag to decide whether to use +# baremetal_scheduler_default_filters or not. (boolean value) +scheduler_use_baremetal_filters={{ SCHEDULER_USE_BAREMETAL_FILTERS }} + + +# +# Options defined in nova.scheduler.manager +# + +# Default driver to use for the scheduler (string value) +scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler + +# How often (in seconds) to run periodic tasks in the +# scheduler driver of your choice. Please note this is likely +# to interact with the value of service_down_time, but exactly +# how they interact will depend on your choice of scheduler +# driver. (integer value) +#scheduler_driver_task_period=60 + + +# +# Options defined in nova.scheduler.rpcapi +# + +# The topic scheduler nodes listen on (string value) +#scheduler_topic=scheduler + + +# +# Options defined in nova.scheduler.scheduler_options +# + +# Absolute path to scheduler configuration JSON file. (string +# value) +#scheduler_json_config_location= + + +# +# Options defined in nova.scheduler.utils +# + +# Maximum number of attempts to schedule an instance (integer +# value) +#scheduler_max_attempts=3 + + +# +# Options defined in nova.scheduler.weights.io_ops +# + +# Multiplier used for weighing host io ops. Negative numbers +# mean a preference to choose light workload compute hosts. +# (floating point value) +#io_ops_weight_multiplier=-1.0 + + +# +# Options defined in nova.scheduler.weights.ram +# + +# Multiplier used for weighing ram. Negative numbers mean to +# stack vs spread. (floating point value) +#ram_weight_multiplier=1.0 + + +# +# Options defined in nova.servicegroup.api +# + +# The driver for servicegroup service (valid options are: db, +# zk, mc) (string value) +#servicegroup_driver=db + + +# +# Options defined in nova.virt.configdrive +# + +# Config drive format. One of iso9660 (default) or vfat +# (string value) +#config_drive_format=iso9660 + +# Set to "always" to force injection to take place on a config +# drive. NOTE: The "always" will be deprecated in the Liberty +# release cycle. (string value) +#force_config_drive= + +# Name and optionally path of the tool used for ISO image +# creation (string value) +#mkisofs_cmd=genisoimage + + +# +# Options defined in nova.virt.disk.api +# + +# Name of the mkfs commands for ephemeral device. The format +# is = (multi valued) +#virt_mkfs= + +# Attempt to resize the filesystem by accessing the image over +# a block device. This is done by the host and may not be +# necessary if the image contains a recent version of cloud- +# init. Possible mechanisms require the nbd driver (for qcow +# and raw), or loop (for raw). (boolean value) +#resize_fs_using_block_device=false + + +# +# Options defined in nova.virt.disk.mount.nbd +# + +# Amount of time, in seconds, to wait for NBD device start up. +# (integer value) +#timeout_nbd=10 + + +# +# Options defined in nova.virt.driver +# + +# Driver to use for controlling virtualization. Options +# include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, +# fake.FakeDriver, baremetal.BareMetalDriver, +# vmwareapi.VMwareVCDriver, hyperv.HyperVDriver (string value) +compute_driver={{ COMPUTE_DRIVER }} + +# The default format an ephemeral_volume will be formatted +# with on creation. (string value) +#default_ephemeral_format= + +# VM image preallocation mode: "none" => no storage +# provisioning is done up front, "space" => storage is fully +# allocated at instance start (string value) +#preallocate_images=none + +# Whether to use cow images (boolean value) +#use_cow_images=true + +# Fail instance boot if vif plugging fails (boolean value) +#vif_plugging_is_fatal=true + +# Number of seconds to wait for neutron vif plugging events to +# arrive before continuing or failing (see +# vif_plugging_is_fatal). If this is set to zero and +# vif_plugging_is_fatal is False, events should not be +# expected to arrive at all. (integer value) +#vif_plugging_timeout=300 + + +# +# Options defined in nova.virt.firewall +# + +# Firewall driver (defaults to hypervisor specific iptables +# driver) (string value) +firewall_driver=nova.virt.firewall.NoopFirewallDriver + +# Whether to allow network traffic from same network (boolean +# value) +#allow_same_net_traffic=true + + +# +# Options defined in nova.virt.hardware +# + +# Defines which pcpus that instance vcpus can use. For +# example, "4-12,^8,15" (string value) +#vcpu_pin_set= + + +# +# Options defined in nova.virt.imagecache +# + +# Number of seconds to wait between runs of the image cache +# manager. Set to -1 to disable. Setting this to 0 will run at +# the default rate. (integer value) +#image_cache_manager_interval=2400 + +# Where cached images are stored under $instances_path. This +# is NOT the full path - just a folder name. For per-compute- +# host cached images, set to _base_$my_ip (string value) +#image_cache_subdirectory_name=_base + +# Should unused base images be removed? (boolean value) +#remove_unused_base_images=true + +# Unused unresized base images younger than this will not be +# removed (integer value) +#remove_unused_original_minimum_age_seconds=86400 + + +# +# Options defined in nova.virt.images +# + +# Force backing images to raw format (boolean value) +#force_raw_images=true + + +# +# Options defined in nova.virt.netutils +# + +# Template file for injected network (string value) +#injected_network_template=$pybasedir/nova/virt/interfaces.template + + +# +# Options defined in nova.vnc +# + +# Location of VNC console proxy, in the form +# "http://127.0.0.1:6080/vnc_auto.html" (string value) +novncproxy_base_url=http://{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}:6080/vnc_auto.html + +# Location of nova xvp VNC console proxy, in the form +# "http://127.0.0.1:6081/console" (string value) +#xvpvncproxy_base_url=http://127.0.0.1:6081/console + +# IP address on which instance vncservers should listen +# (string value) +vncserver_listen=0.0.0.0 + +# The address to which proxy clients (like nova-xvpvncproxy) +# should connect (string value) +vncserver_proxyclient_address={{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +# Enable VNC related features (boolean value) +vnc_enabled=true + +# Keymap for VNC (string value) +vnc_keymap=en-us + + +# +# Options defined in nova.vnc.xvp_proxy +# + +# Port that the XCP VNC proxy should bind to (integer value) +#xvpvncproxy_port=6081 + +# Address that the XCP VNC proxy should bind to (string value) +#xvpvncproxy_host=0.0.0.0 + + +# +# Options defined in nova.volume +# + +# The full class name of the volume API class to use (string +# value) +#volume_api_class=nova.volume.cinder.API + + +# +# Options defined in nova.openstack.common.eventlet_backdoor +# + +# Enable eventlet backdoor. Acceptable values are 0, , +# and :, where 0 results in listening on a random +# tcp port number; results in listening on the +# specified port number (and not enabling backdoor if that +# port is in use); and : results in listening on +# the smallest unused port number within the specified range +# of port numbers. The chosen port is displayed in the +# service's log file. (string value) +#backdoor_port= + + +# +# Options defined in nova.openstack.common.memorycache +# + +# Memcached servers or None for in process cache. (list value) +#memcached_servers= + + +# +# Options defined in nova.openstack.common.periodic_task +# + +# Some periodic tasks can be run in a separate process. Should +# we run them here? (boolean value) +#run_external_periodic_tasks=true + + +# +# Options defined in nova.openstack.common.policy +# + +# The JSON file that defines policies. (string value) +#policy_file=policy.json + +# Default rule. Enforced when a requested rule is not found. +# (string value) +#policy_default_rule=default + +# Directories where policy configuration files are stored. +# They can be relative to any directory in the search path +# defined by the config_dir option, or absolute paths. The +# file defined by policy_file must exist for these directories +# to be searched. Missing or empty directories are ignored. +# (multi valued) +#policy_dirs=policy.d + + +# +# Options defined in nova.openstack.common.versionutils +# + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + + +[api_database] + +# +# Options defined in nova.db.sqlalchemy.api +# + +# The SQLAlchemy connection string to use to connect to the +# Nova API database. (string value) +#connection=postgresql://{{ NOVA_DB_USER }}:{{ NOVA_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/nova + +# If True, SQLite uses synchronous mode. (boolean value) +#sqlite_synchronous=true + +# Timeout before idle SQL connections are reaped. (integer +# value) +#idle_timeout=3600 + +# Maximum number of SQL connections to keep open in a pool. +# (integer value) +#max_pool_size= + +# Maximum number of database connection retries during +# startup. Set to -1 to specify an infinite retry count. +# (integer value) +#max_retries=10 + +# Interval between retries of opening a SQL connection. +# (integer value) +#retry_interval=10 + +# If set, use this value for max_overflow with SQLAlchemy. +# (integer value) +#max_overflow= + +# Verbosity of SQL debugging information: 0=None, +# 100=Everything. (integer value) +#connection_debug=0 + +# Add Python stack traces to SQL as comment strings. (boolean +# value) +#connection_trace=false + +# If set, use this value for pool_timeout with SQLAlchemy. +# (integer value) +#pool_timeout= + + +[barbican] + +# +# Options defined in nova.keymgr.barbican +# + +# Info to match when looking for barbican in the service +# catalog. Format is: separated values of the form: +# :: (string value) +#catalog_info=key-manager:barbican:public + +# Override service catalog lookup with template for barbican +# endpoint e.g. http://localhost:9311/v1/%(project_id)s +# (string value) +#endpoint_template= + +# Region name of this node (string value) +#os_region_name= + + +# +# Options defined in nova.volume.cinder +# + +# Region name of this node (string value) +#os_region_name= + + +[cells] + +# +# Options defined in nova.cells.manager +# + +# Cells communication driver to use (string value) +#driver=nova.cells.rpc_driver.CellsRPCDriver + +# Number of seconds after an instance was updated or deleted +# to continue to update cells (integer value) +#instance_updated_at_threshold=3600 + +# Number of instances to update per periodic task run (integer +# value) +#instance_update_num_instances=1 + + +# +# Options defined in nova.cells.messaging +# + +# Maximum number of hops for cells routing. (integer value) +#max_hop_count=10 + +# Cells scheduler to use (string value) +#scheduler=nova.cells.scheduler.CellsScheduler + + +# +# Options defined in nova.cells.opts +# + +# Enable cell functionality (boolean value) +#enable=false + +# The topic cells nodes listen on (string value) +#topic=cells + +# Manager for cells (string value) +#manager=nova.cells.manager.CellsManager + +# Name of this cell (string value) +#name=nova + +# Key/Multi-value list with the capabilities of the cell (list +# value) +#capabilities=hypervisor=xenserver;kvm,os=linux;windows + +# Seconds to wait for response from a call to a cell. (integer +# value) +#call_timeout=60 + +# Percentage of cell capacity to hold in reserve. Affects both +# memory and disk utilization (floating point value) +#reserve_percent=10.0 + +# Type of cell: api or compute (string value) +#cell_type=compute + +# Number of seconds after which a lack of capability and +# capacity updates signals the child cell is to be treated as +# a mute. (integer value) +#mute_child_interval=300 + +# Seconds between bandwidth updates for cells. (integer value) +#bandwidth_update_interval=600 + + +# +# Options defined in nova.cells.rpc_driver +# + +# Base queue name to use when communicating between cells. +# Various topics by message type will be appended to this. +# (string value) +#rpc_driver_queue_base=cells.intercell + + +# +# Options defined in nova.cells.scheduler +# + +# Filter classes the cells scheduler should use. An entry of +# "nova.cells.filters.all_filters" maps to all cells filters +# included with nova. (list value) +#scheduler_filter_classes=nova.cells.filters.all_filters + +# Weigher classes the cells scheduler should use. An entry of +# "nova.cells.weights.all_weighers" maps to all cell weighers +# included with nova. (list value) +#scheduler_weight_classes=nova.cells.weights.all_weighers + +# How many retries when no cells are available. (integer +# value) +#scheduler_retries=10 + +# How often to retry in seconds when no cells are available. +# (integer value) +#scheduler_retry_delay=2 + + +# +# Options defined in nova.cells.state +# + +# Interval, in seconds, for getting fresh cell information +# from the database. (integer value) +#db_check_interval=60 + +# Configuration file from which to read cells configuration. +# If given, overrides reading cells from the database. (string +# value) +#cells_config= + + +# +# Options defined in nova.cells.weights.mute_child +# + +# Multiplier used to weigh mute children. (The value should be +# negative.) (floating point value) +#mute_weight_multiplier=-10.0 + +# Weight value assigned to mute children. (The value should be +# positive.) (floating point value) +#mute_weight_value=1000.0 + + +# +# Options defined in nova.cells.weights.ram_by_instance_type +# + +# Multiplier used for weighing ram. Negative numbers mean to +# stack vs spread. (floating point value) +#ram_weight_multiplier=10.0 + + +# +# Options defined in nova.cells.weights.weight_offset +# + +# Multiplier used to weigh offset weigher. (floating point +# value) +#offset_weight_multiplier=1.0 + + +[cinder] + +# +# Options defined in nova.volume.cinder +# + +# Info to match when looking for cinder in the service +# catalog. Format is: separated values of the form: +# :: (string value) +#catalog_info=volumev2:cinderv2:publicURL + +# Override service catalog lookup with template for cinder +# endpoint e.g. http://localhost:8776/v1/%(project_id)s +# (string value) +#endpoint_template= + +# Number of cinderclient retries on failed http calls (integer +# value) +#http_retries=3 + +# Allow attach between instance and volume in different +# availability zones. (boolean value) +#cross_az_attach=true + + +[conductor] + +# +# Options defined in nova.conductor.api +# + +# Perform nova-conductor operations locally (boolean value) +use_local=true + +# The topic on which conductor nodes listen (string value) +#topic=conductor + +# Full class name for the Manager for conductor (string value) +#manager=nova.conductor.manager.ConductorManager + +# Number of workers for OpenStack Conductor service. The +# default will be the number of CPUs available. (integer +# value) +#workers= + + +[database] + +# +# From oslo.db +# + +# The file name to use with SQLite. (string value) +# Deprecated group/name - [DEFAULT]/sqlite_db +#sqlite_db = oslo.sqlite + +# If True, SQLite uses synchronous mode. (boolean value) +# Deprecated group/name - [DEFAULT]/sqlite_synchronous +#sqlite_synchronous = true + +# The back end to use for the database. (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend = sqlalchemy + +# The SQLAlchemy connection string to use to connect to the database. (string +# value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +#connection = +connection=postgresql://{{ NOVA_DB_USER }}:{{ NOVA_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/nova + +# The SQLAlchemy connection string to use to connect to the slave database. +# (string value) +#slave_connection = + +# The SQL mode to be used for MySQL sessions. This option, including the +# default, overrides any server-set SQL mode. To use whatever SQL mode is set +# by the server configuration, set this to no value. Example: mysql_sql_mode= +# (string value) +#mysql_sql_mode = TRADITIONAL + +# Timeout before idle SQL connections are reaped. (integer value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout = 3600 + +# Minimum number of SQL connections to keep open in a pool. (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size = 1 + +# Maximum number of SQL connections to keep open in a pool. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size = + +# Maximum number of database connection retries during startup. Set to -1 to +# specify an infinite retry count. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries = 10 + +# Interval between retries of opening a SQL connection. (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval = 10 + +# If set, use this value for max_overflow with SQLAlchemy. (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow = + +# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug = 0 + +# Add Python stack traces to SQL as comment strings. (boolean value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace = false + +# If set, use this value for pool_timeout with SQLAlchemy. (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout = + +# Enable the experimental use of database reconnect on connection lost. +# (boolean value) +#use_db_reconnect = false + +# Seconds between retries of a database transaction. (integer value) +#db_retry_interval = 1 + +# If True, increases the interval between retries of a database operation up to +# db_max_retry_interval. (boolean value) +#db_inc_retry_interval = true + +# If db_inc_retry_interval is set, the maximum seconds between retries of a +# database operation. (integer value) +#db_max_retry_interval = 10 + +# Maximum retries in case of connection error or deadlock error before error is +# raised. Set to -1 to specify an infinite retry count. (integer value) +#db_max_retries = 20 + + +# +# Options defined in nova.db.sqlalchemy.api +# + +# The SQLAlchemy connection string to use to connect to the +# slave database. (string value) +#slave_connection= + +# The SQL mode to be used for MySQL sessions. This option, +# including the default, overrides any server-set SQL mode. To +# use whatever SQL mode is set by the server configuration, +# set this to no value. Example: mysql_sql_mode= (string +# value) +#mysql_sql_mode=TRADITIONAL + + +[ephemeral_storage_encryption] + +# +# Options defined in nova.compute.api +# + +# Whether to encrypt ephemeral storage (boolean value) +#enabled=false + +# The cipher and mode to be used to encrypt ephemeral storage. +# Which ciphers are available ciphers depends on kernel +# support. See /proc/crypto for the list of available options. +# (string value) +#cipher=aes-xts-plain64 + +# The bit length of the encryption key to be used to encrypt +# ephemeral storage (in XTS mode only half of the bits are +# used for encryption key) (integer value) +#key_size=512 + + +[glance] + +# +# Options defined in nova.image.glance +# + +# Default glance hostname or IP address (string value) +host={{ CONTROLLER_HOST_ADDRESS }} + +# Default glance port (integer value) +port=9292 + +# Default protocol to use when connecting to glance. Set to +# https for SSL. (string value) +protocol=http + +# A list of the glance api servers available to nova. Prefix +# with https:// for ssl-based glance api servers. +# ([hostname|ip]:port) (list value) +api_servers=$host:$port + +# Allow to perform insecure SSL (https) requests to glance +# (boolean value) +#api_insecure=false + +# Number of retries when uploading / downloading an image to / +# from glance. (integer value) +#num_retries=0 + +# A list of url scheme that can be downloaded directly via the +# direct_url. Currently supported schemes: [file]. (list +# value) +#allowed_direct_url_schemes= + + +[guestfs] + +# +# Options defined in nova.virt.disk.vfs.guestfs +# + +# Enable guestfs debug (boolean value) +#debug=false + + +[hyperv] + +# +# Options defined in nova.virt.hyperv.pathutils +# + +# The name of a Windows share name mapped to the +# "instances_path" dir and used by the resize feature to copy +# files to the target host. If left blank, an administrative +# share will be used, looking for the same "instances_path" +# used locally (string value) +#instances_path_share= + + +# +# Options defined in nova.virt.hyperv.utilsfactory +# + +# Force V1 WMI utility classes (boolean value) +#force_hyperv_utils_v1=false + +# Force V1 volume utility class (boolean value) +#force_volumeutils_v1=false + + +# +# Options defined in nova.virt.hyperv.vif +# + +# External virtual switch Name, if not provided, the first +# external virtual switch is used (string value) +#vswitch_name= + + +# +# Options defined in nova.virt.hyperv.vmops +# + +# Required for live migration among hosts with different CPU +# features (boolean value) +#limit_cpu_features=false + +# Sets the admin password in the config drive image (boolean +# value) +#config_drive_inject_password=false + +# Path of qemu-img command which is used to convert between +# different image types (string value) +#qemu_img_cmd=qemu-img.exe + +# Attaches the Config Drive image as a cdrom drive instead of +# a disk drive (boolean value) +#config_drive_cdrom=false + +# Enables metrics collections for an instance by using +# Hyper-V's metric APIs. Collected data can by retrieved by +# other apps and services, e.g.: Ceilometer. Requires Hyper-V +# / Windows Server 2012 and above (boolean value) +#enable_instance_metrics_collection=false + +# Enables dynamic memory allocation (ballooning) when set to a +# value greater than 1. The value expresses the ratio between +# the total RAM assigned to an instance and its startup RAM +# amount. For example a ratio of 2.0 for an instance with +# 1024MB of RAM implies 512MB of RAM allocated at startup +# (floating point value) +#dynamic_memory_ratio=1.0 + +# Number of seconds to wait for instance to shut down after +# soft reboot request is made. We fall back to hard reboot if +# instance does not shutdown within this window. (integer +# value) +#wait_soft_reboot_seconds=60 + + +# +# Options defined in nova.virt.hyperv.volumeops +# + +# The number of times to retry to attach a volume (integer +# value) +#volume_attach_retry_count=10 + +# Interval between volume attachment attempts, in seconds +# (integer value) +#volume_attach_retry_interval=5 + +# The number of times to retry checking for a disk mounted via +# iSCSI. (integer value) +#mounted_disk_query_retry_count=10 + +# Interval between checks for a mounted iSCSI disk, in +# seconds. (integer value) +#mounted_disk_query_retry_interval=5 + + +[image_file_url] + +# +# Options defined in nova.image.download.file +# + +# List of file systems that are configured in this file in the +# image_file_url: sections (list value) +#filesystems= + + +[ironic] + +# +# Options defined in nova.virt.ironic.driver +# + +# Version of Ironic API service endpoint. (integer value) +#api_version=1 + +# URL for Ironic API endpoint. (string value) +api_endpoint=http://{{ CONTROLLER_HOST_ADDRESS }}:6385/v1 + +# Ironic keystone admin name (string value) +admin_username={{ IRONIC_SERVICE_USER }} + +# Ironic keystone admin password. (string value) +admin_password={{ IRONIC_SERVICE_PASSWORD }} + +# Ironic keystone auth token. (string value) +#admin_auth_token= + +# Keystone public API endpoint. (string value) +admin_url=http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + +# Log level override for ironicclient. Set this in order to +# override the global "default_log_levels", "verbose", and +# "debug" settings. DEPRECATED: use standard logging +# configuration. (string value) +#client_log_level= + +# Ironic keystone tenant name. (string value) +admin_tenant_name=service + +# How many retries when a request does conflict. (integer +# value) +#api_max_retries=60 + +# How often to retry in seconds when a request does conflict +# (integer value) +#api_retry_interval=2 + + +[keymgr] + +# +# Options defined in nova.keymgr +# + +# The full class name of the key manager API class (string +# value) +#api_class=nova.keymgr.conf_key_mgr.ConfKeyManager + + +# +# Options defined in nova.keymgr.conf_key_mgr +# + +# Fixed key returned by key manager, specified in hex (string +# value) +#fixed_key= + + +[keystone_authtoken] + +# +# From keystonemiddleware.auth_token +# + +# Complete public Identity API endpoint. (string value) +auth_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + +# API version of the admin Identity API endpoint. (string value) +auth_version = v2.0 + +# Do not handle authorization requests within the middleware, but delegate the +# authorization decision to downstream WSGI components. (boolean value) +#delay_auth_decision = false + +# Request timeout value for communicating with Identity API server. (integer +# value) +#http_connect_timeout = + +# How many times are we trying to reconnect when communicating with Identity +# API Server. (integer value) +#http_request_max_retries = 3 + +# Env key for the swift cache. (string value) +#cache = + +# Required if identity server requires client certificate (string value) +#certfile = + +# Required if identity server requires client certificate (string value) +#keyfile = + +# A PEM encoded Certificate Authority to use when verifying HTTPs connections. +# Defaults to system CAs. (string value) +#cafile = + +# Verify HTTPS connections. (boolean value) +#insecure = false + +# Directory used to cache files related to PKI tokens. (string value) +#signing_dir = + +# Optionally specify a list of memcached server(s) to use for caching. If left +# undefined, tokens will instead be cached in-process. (list value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers = + +# In order to prevent excessive effort spent validating tokens, the middleware +# caches previously-seen tokens for a configurable duration (in seconds). Set +# to -1 to disable caching completely. (integer value) +#token_cache_time = 300 + +# Determines the frequency at which the list of revoked tokens is retrieved +# from the Identity service (in seconds). A high number of revocation events +# combined with a low cache duration may significantly reduce performance. +# (integer value) +#revocation_cache_time = 10 + +# (Optional) If defined, indicate whether token data should be authenticated or +# authenticated and encrypted. Acceptable values are MAC or ENCRYPT. If MAC, +# token data is authenticated (with HMAC) in the cache. If ENCRYPT, token data +# is encrypted and authenticated in the cache. If the value is not one of these +# options or empty, auth_token will raise an exception on initialization. +# (string value) +#memcache_security_strategy = + +# (Optional, mandatory if memcache_security_strategy is defined) This string is +# used for key derivation. (string value) +#memcache_secret_key = + +# (Optional) Number of seconds memcached server is considered dead before it is +# tried again. (integer value) +#memcache_pool_dead_retry = 300 + +# (Optional) Maximum total number of open connections to every memcached +# server. (integer value) +#memcache_pool_maxsize = 10 + +# (Optional) Socket timeout in seconds for communicating with a memcache +# server. (integer value) +#memcache_pool_socket_timeout = 3 + +# (Optional) Number of seconds a connection to memcached is held unused in the +# pool before it is closed. (integer value) +#memcache_pool_unused_timeout = 60 + +# (Optional) Number of seconds that an operation will wait to get a memcache +# client connection from the pool. (integer value) +#memcache_pool_conn_get_timeout = 10 + +# (Optional) Use the advanced (eventlet safe) memcache client pool. The +# advanced pool will only work under python 2.x. (boolean value) +#memcache_use_advanced_pool = false + +# (Optional) Indicate whether to set the X-Service-Catalog header. If False, +# middleware will not ask for service catalog on token validation and will not +# set the X-Service-Catalog header. (boolean value) +#include_service_catalog = true + +# Used to control the use and type of token binding. Can be set to: "disabled" +# to not check token binding. "permissive" (default) to validate binding +# information if the bind type is of a form known to the server and ignore it +# if not. "strict" like "permissive" but if the bind type is unknown the token +# will be rejected. "required" any form of token binding is needed to be +# allowed. Finally the name of a binding method that must be present in tokens. +# (string value) +#enforce_token_bind = permissive + +# If true, the revocation list will be checked for cached tokens. This requires +# that PKI tokens are configured on the identity server. (boolean value) +#check_revocations_for_cached = false + +# Hash algorithms to use for hashing PKI tokens. This may be a single algorithm +# or multiple. The algorithms are those supported by Python standard +# hashlib.new(). The hashes will be tried in the order given, so put the +# preferred one first for performance. The result of the first hash will be +# stored in the cache. This will typically be set to multiple values only while +# migrating from a less secure algorithm to a more secure one. Once all the old +# tokens are expired this option should be set to a single value for better +# performance. (list value) +#hash_algorithms = md5 + +# Prefix to prepend at the beginning of the path. Deprecated, use identity_uri. +# (string value) +#auth_admin_prefix = + +# Host providing the admin Identity API endpoint. Deprecated, use identity_uri. +# (string value) +#auth_host = 127.0.0.1 + +# Port of the admin Identity API endpoint. Deprecated, use identity_uri. +# (integer value) +#auth_port = 35357 + +# Protocol of the admin Identity API endpoint (http or https). Deprecated, use +# identity_uri. (string value) +#auth_protocol = https + +# Complete admin Identity API endpoint. This should specify the unversioned +# root endpoint e.g. https://localhost:35357/ (string value) +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 + +# This option is deprecated and may be removed in a future release. Single +# shared secret with the Keystone configuration used for bootstrapping a +# Keystone installation, or otherwise bypassing the normal authentication +# process. This option should not be used, use `admin_user` and +# `admin_password` instead. (string value) +#admin_token = + +# Service username. (string value) +admin_user = {{ NOVA_SERVICE_USER }} + +# Service user password. (string value) +admin_password = {{ NOVA_SERVICE_PASSWORD }} + +# Service tenant name. (string value) +admin_tenant_name = service + + +[libvirt] + +# +# Options defined in nova.virt.libvirt.driver +# + +# Rescue ami image. This will not be used if an image id is +# provided by the user. (string value) +#rescue_image_id= + +# Rescue aki image (string value) +#rescue_kernel_id= + +# Rescue ari image (string value) +#rescue_ramdisk_id= + +# Libvirt domain type (valid options are: kvm, lxc, qemu, uml, +# xen and parallels) (string value) +virt_type={{ NOVA_VIRT_TYPE }} + +# Override the default libvirt URI (which is dependent on +# virt_type) (string value) +#connection_uri= + +# Inject the admin password at boot time, without an agent. +# (boolean value) +#inject_password=false + +# Inject the ssh public key at boot time (boolean value) +#inject_key=false + +# The partition to inject to : -2 => disable, -1 => inspect +# (libguestfs only), 0 => not partitioned, >0 => partition +# number (integer value) +#inject_partition=-2 + +# Sync virtual and real mouse cursors in Windows VMs (boolean +# value) +#use_usb_tablet=true + +# Migration target URI (any included "%s" is replaced with the +# migration target hostname) (string value) +#live_migration_uri=qemu+tcp://%s/system + +# Migration flags to be set for live migration (string value) +#live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED + +# Migration flags to be set for block migration (string value) +#block_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED, VIR_MIGRATE_NON_SHARED_INC + +# Maximum bandwidth to be used during migration, in Mbps +# (integer value) +#live_migration_bandwidth=0 + +# Snapshot image format (valid options are : raw, qcow2, vmdk, +# vdi). Defaults to same as source image (string value) +#snapshot_image_format= + +# Override the default disk prefix for the devices attached to +# a server, which is dependent on virt_type. (valid options +# are: sd, xvd, uvd, vd) (string value) +#disk_prefix= + +# Number of seconds to wait for instance to shut down after +# soft reboot request is made. We fall back to hard reboot if +# instance does not shutdown within this window. (integer +# value) +#wait_soft_reboot_seconds=120 + +# Set to "host-model" to clone the host CPU feature flags; to +# "host-passthrough" to use the host CPU model exactly; to +# "custom" to use a named CPU model; to "none" to not set any +# CPU model. If virt_type="kvm|qemu", it will default to +# "host-model", otherwise it will default to "none" (string +# value) +#cpu_mode= + +# Set to a named libvirt CPU model (see names listed in +# /usr/share/libvirt/cpu_map.xml). Only has effect if +# cpu_mode="custom" and virt_type="kvm|qemu" (string value) +#cpu_model= + +# Location where libvirt driver will store snapshots before +# uploading them to image service (string value) +#snapshots_directory=$instances_path/snapshots + +# Location where the Xen hvmloader is kept (string value) +#xen_hvmloader_path=/usr/lib/xen/boot/hvmloader + +# Specific cachemodes to use for different disk types e.g: +# file=directsync,block=none (list value) +#disk_cachemodes= + +# A path to a device that will be used as source of entropy on +# the host. Permitted options are: /dev/random or /dev/hwrng +# (string value) +#rng_dev_path= + +# For qemu or KVM guests, set this option to specify a default +# machine type per host architecture. You can find a list of +# supported machine types in your environment by checking the +# output of the "virsh capabilities"command. The format of the +# value for this config option is host-arch=machine-type. For +# example: x86_64=machinetype1,armv7l=machinetype2 (list +# value) +#hw_machine_type= + +# The data source used to the populate the host "serial" UUID +# exposed to guest in the virtual BIOS. Permitted options are +# "hardware", "os", "none" or "auto" (default). (string value) +#sysinfo_serial=auto + +# A number of seconds to memory usage statistics period. Zero +# or negative value mean to disable memory usage statistics. +# (integer value) +#mem_stats_period_seconds=10 + +# List of uid targets and ranges.Syntax is guest-uid:host- +# uid:countMaximum of 5 allowed. (list value) +#uid_maps= + +# List of guid targets and ranges.Syntax is guest-gid:host- +# gid:countMaximum of 5 allowed. (list value) +#gid_maps= + + +# +# Options defined in nova.virt.libvirt.imagebackend +# + +# VM Images format. Acceptable values are: raw, qcow2, lvm, +# rbd, default. If default is specified, then use_cow_images +# flag is used instead of this one. (string value) +#images_type=default + +# LVM Volume Group that is used for VM images, when you +# specify images_type=lvm. (string value) +#images_volume_group= + +# Create sparse logical volumes (with virtualsize) if this +# flag is set to True. (boolean value) +#sparse_logical_volumes=false + +# The RADOS pool in which rbd volumes are stored (string +# value) +#images_rbd_pool=rbd + +# Path to the ceph configuration file to use (string value) +#images_rbd_ceph_conf= + +# Discard option for nova managed disks (valid options are: +# ignore, unmap). Need Libvirt(1.0.6) Qemu1.5 (raw format) +# Qemu1.6(qcow2 format) (string value) +#hw_disk_discard= + + +# +# Options defined in nova.virt.libvirt.imagecache +# + +# Allows image information files to be stored in non-standard +# locations (string value) +#image_info_filename_pattern=$instances_path/$image_cache_subdirectory_name/%(image)s.info + +# Should unused kernel images be removed? This is only safe to +# enable if all compute nodes have been updated to support +# this option. This will be enabled by default in future. +# (boolean value) +#remove_unused_kernels=false + +# Unused resized base images younger than this will not be +# removed (integer value) +#remove_unused_resized_minimum_age_seconds=3600 + +# Write a checksum for files in _base to disk (boolean value) +#checksum_base_images=false + +# How frequently to checksum base images (integer value) +#checksum_interval_seconds=3600 + + +# +# Options defined in nova.virt.libvirt.lvm +# + +# Method used to wipe old volumes (valid options are: none, +# zero, shred) (string value) +#volume_clear=zero + +# Size in MiB to wipe at start of old volumes. 0 => all +# (integer value) +#volume_clear_size=0 + + +# +# Options defined in nova.virt.libvirt.utils +# + +# Compress snapshot images when possible. This currently +# applies exclusively to qcow2 images (boolean value) +#snapshot_compression=false + + +# +# Options defined in nova.virt.libvirt.vif +# + +# Use virtio for bridge interfaces with KVM/QEMU (boolean +# value) +#use_virtio_for_bridges=true + + +# +# Options defined in nova.virt.libvirt.volume +# + +# Number of times to rescan iSCSI target to find volume +# (integer value) +#num_iscsi_scan_tries=5 + +# Number of times to rescan iSER target to find volume +# (integer value) +#num_iser_scan_tries=5 + +# The RADOS client name for accessing rbd volumes (string +# value) +#rbd_user= + +# The libvirt UUID of the secret for the rbd_uservolumes +# (string value) +#rbd_secret_uuid= + +# Directory where the NFS volume is mounted on the compute +# node (string value) +#nfs_mount_point_base=$state_path/mnt + +# Mount options passed to the NFS client. See section of the +# nfs man page for details (string value) +#nfs_mount_options= + +# Directory where the SMBFS shares are mounted on the compute +# node (string value) +#smbfs_mount_point_base=$state_path/mnt + +# Mount options passed to the SMBFS client. See mount.cifs man +# page for details. Note that the libvirt-qemu uid and gid +# must be specified. (string value) +#smbfs_mount_options= + +# Number of times to rediscover AoE target to find volume +# (integer value) +#num_aoe_discover_tries=3 + +# Directory where the glusterfs volume is mounted on the +# compute node (string value) +#glusterfs_mount_point_base=$state_path/mnt + +# Use multipath connection of the iSCSI volume (boolean value) +#iscsi_use_multipath=false + +# Use multipath connection of the iSER volume (boolean value) +#iser_use_multipath=false + +# Path or URL to Scality SOFS configuration file (string +# value) +#scality_sofs_config= + +# Base dir where Scality SOFS shall be mounted (string value) +#scality_sofs_mount_point=$state_path/scality + +# Protocols listed here will be accessed directly from QEMU. +# Currently supported protocols: [gluster] (list value) +#qemu_allowed_storage_drivers= + +# Directory where the Quobyte volume is mounted on the compute +# node (string value) +#quobyte_mount_point_base=$state_path/mnt + +# Path to a Quobyte Client configuration file. (string value) +#quobyte_client_cfg= + +# The iSCSI transport iface to use to connect to target in +# case offload support is desired. Supported transports are +# be2iscsi, bnx2i, cxgb3i, cxgb4i, qla4xxx and ocs. Default +# format is transport_name.hwaddress and can be generated +# manually or via iscsiadm -m iface (string value) +# Deprecated group/name - [DEFAULT]/iscsi_transport +#iscsi_iface= + + +[metrics] + +# +# Options defined in nova.scheduler.weights.metrics +# + +# Multiplier used for weighing metrics. (floating point value) +#weight_multiplier=1.0 + +# How the metrics are going to be weighed. This should be in +# the form of "=, =, ...", where +# is one of the metrics to be weighed, and is +# the corresponding ratio. So for "name1=1.0, name2=-1.0" The +# final weight would be name1.value * 1.0 + name2.value * +# -1.0. (list value) +#weight_setting= + +# How to treat the unavailable metrics. When a metric is NOT +# available for a host, if it is set to be True, it would +# raise an exception, so it is recommended to use the +# scheduler filter MetricFilter to filter out those hosts. If +# it is set to be False, the unavailable metric would be +# treated as a negative factor in weighing process, the +# returned value would be set by the option +# weight_of_unavailable. (boolean value) +#required=true + +# The final weight value to be returned if required is set to +# False and any one of the metrics set by weight_setting is +# unavailable. (floating point value) +#weight_of_unavailable=-10000.0 + + +[neutron] + +# +# Options defined in nova.api.metadata.handler +# + +# Set flag to indicate Neutron will proxy metadata requests +# and resolve instance ids. (boolean value) +service_metadata_proxy=True + +# Shared secret to validate proxies Neutron metadata requests +# (string value) +metadata_proxy_shared_secret={{ METADATA_PROXY_SHARED_SECRET }} + + +# +# Options defined in nova.network.neutronv2.api +# + +# URL for connecting to neutron (string value) +url=http://{{ CONTROLLER_HOST_ADDRESS }}:9696 + +# User id for connecting to neutron in admin context. +# DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. (string value) +#admin_user_id= + +# Username for connecting to neutron in admin context +# DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. (string value) +admin_username={{ NEUTRON_SERVICE_USER }} + +# Password for connecting to neutron in admin context +# DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. (string value) +admin_password={{ NEUTRON_SERVICE_PASSWORD }} + +# Tenant id for connecting to neutron in admin context +# DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. (string value) +#admin_tenant_id= + +# Tenant name for connecting to neutron in admin context. This +# option will be ignored if neutron_admin_tenant_id is set. +# Note that with Keystone V3 tenant names are only unique +# within a domain. DEPRECATED: specify an auth_plugin and +# appropriate credentials instead. (string value) +admin_tenant_name=service + +# Region name for connecting to neutron in admin context +# (string value) +#region_name= + +# Authorization URL for connecting to neutron in admin +# context. DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. (string value) +admin_auth_url=http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 + +# Authorization strategy for connecting to neutron in admin +# context. DEPRECATED: specify an auth_plugin and appropriate +# credentials instead. If an auth_plugin is specified strategy +# will be ignored. (string value) +auth_strategy=keystone + +# Name of Integration Bridge used by Open vSwitch (string +# value) +#ovs_bridge=br-int + +# Number of seconds before querying neutron for extensions +# (integer value) +#extension_sync_interval=600 + +# DEPRECATED: Allow an instance to have multiple vNICs +# attached to the same Neutron network. This option is +# deprecated in the 2015.1 release and will be removed in the +# 2015.2 release where the default behavior will be to always +# allow multiple ports from the same network to be attached to +# an instance. (boolean value) +#allow_duplicate_networks=false + + +[osapi_v3] + +# +# Options defined in nova.api.openstack +# + +# Whether the V3 API is enabled or not (boolean value) +#enabled=false + +# A list of v3 API extensions to never load. Specify the +# extension aliases here. (list value) +#extensions_blacklist= + +# If the list is not empty then a v3 API extension will only +# be loaded if it exists in this list. Specify the extension +# aliases here. (list value) +#extensions_whitelist= + + +[rdp] + +# +# Options defined in nova.rdp +# + +# Location of RDP html5 console proxy, in the form +# "http://127.0.0.1:6083/" (string value) +#html5_proxy_base_url=http://127.0.0.1:6083/ + +# Enable RDP related features (boolean value) +#enabled=false + + +[serial_console] + +# +# Options defined in nova.cmd.serialproxy +# + +# Host on which to listen for incoming requests (string value) +serialproxy_host=127.0.0.1 + +# Port on which to listen for incoming requests (integer +# value) +#serialproxy_port=6083 + + +# +# Options defined in nova.console.serial +# + +# Enable serial console related features (boolean value) +enabled=false + +# Range of TCP ports to use for serial ports on compute hosts +# (string value) +#port_range=10000:20000 + +# Location of serial console proxy. (string value) +#base_url=ws://127.0.0.1:6083/ + +# IP address on which instance serial console should listen +# (string value) +#listen=127.0.0.1 + +# The address to which proxy clients (like nova-serialproxy) +# should connect (string value) +#proxyclient_address=127.0.0.1 + + +[spice] + +# +# Options defined in nova.cmd.spicehtml5proxy +# + +# Host on which to listen for incoming requests (string value) +#html5proxy_host=0.0.0.0 + +# Port on which to listen for incoming requests (integer +# value) +#html5proxy_port=6082 + + +# +# Options defined in nova.spice +# + +# Location of spice HTML5 console proxy, in the form +# "http://127.0.0.1:6082/spice_auto.html" (string value) +#html5proxy_base_url=http://127.0.0.1:6082/spice_auto.html + +# IP address on which instance spice server should listen +# (string value) +#server_listen=127.0.0.1 + +# The address to which proxy clients (like nova- +# spicehtml5proxy) should connect (string value) +#server_proxyclient_address=127.0.0.1 + +# Enable spice related features (boolean value) +enabled=false + +# Enable spice guest agent support (boolean value) +#agent_enabled=true + +# Keymap for spice (string value) +#keymap=en-us + + +[ssl] + +# +# Options defined in nova.openstack.common.sslutils +# + +# CA certificate file to use to verify connecting clients. +# (string value) +#ca_file= + +# Certificate file to use when starting the server securely. +# (string value) +#cert_file= + +# Private key file to use when starting the server securely. +# (string value) +#key_file= + + +[trusted_computing] + +# +# Options defined in nova.scheduler.filters.trusted_filter +# + +# Attestation server HTTP (string value) +#attestation_server= + +# Attestation server Cert file for Identity verification +# (string value) +#attestation_server_ca_file= + +# Attestation server port (string value) +#attestation_port=8443 + +# Attestation web API URL (string value) +#attestation_api_url=/OpenAttestationWebServices/V1.0 + +# Attestation authorization blob - must change (string value) +#attestation_auth_blob= + +# Attestation status cache valid period length (integer value) +#attestation_auth_timeout=60 + +# Disable SSL cert verification for Attestation service +# (boolean value) +#attestation_insecure_ssl=false + + +[upgrade_levels] + +# +# Options defined in nova.baserpc +# + +# Set a version cap for messages sent to the base api in any +# service (string value) +#baseapi= + + +# +# Options defined in nova.cells.rpc_driver +# + +# Set a version cap for messages sent between cells services +# (string value) +#intercell= + + +# +# Options defined in nova.cells.rpcapi +# + +# Set a version cap for messages sent to local cells services +# (string value) +#cells= + + +# +# Options defined in nova.cert.rpcapi +# + +# Set a version cap for messages sent to cert services (string +# value) +#cert= + + +# +# Options defined in nova.compute.rpcapi +# + +# Set a version cap for messages sent to compute services. If +# you plan to do a live upgrade from havana to icehouse, you +# should set this option to "icehouse-compat" before beginning +# the live upgrade procedure. (string value) +#compute= + + +# +# Options defined in nova.conductor.rpcapi +# + +# Set a version cap for messages sent to conductor services +# (string value) +#conductor= + + +# +# Options defined in nova.console.rpcapi +# + +# Set a version cap for messages sent to console services +# (string value) +#console= + + +# +# Options defined in nova.consoleauth.rpcapi +# + +# Set a version cap for messages sent to consoleauth services +# (string value) +#consoleauth= + + +# +# Options defined in nova.network.rpcapi +# + +# Set a version cap for messages sent to network services +# (string value) +#network= + + +# +# Options defined in nova.scheduler.rpcapi +# + +# Set a version cap for messages sent to scheduler services +# (string value) +#scheduler= + + +[vmware] + +# +# Options defined in nova.virt.vmwareapi.driver +# + +# The PBM status. (boolean value) +#pbm_enabled=false + +# PBM service WSDL file location URL. e.g. +# file:///opt/SDK/spbm/wsdl/pbmService.wsdl Not setting this +# will disable storage policy based placement of instances. +# (string value) +#pbm_wsdl_location= + +# The PBM default policy. If pbm_wsdl_location is set and +# there is no defined storage policy for the specific request +# then this policy will be used. (string value) +#pbm_default_policy= + +# Hostname or IP address for connection to VMware VC host. +# (string value) +#host_ip= + +# Port for connection to VMware VC host. (integer value) +#host_port=443 + +# Username for connection to VMware VC host. (string value) +#host_username= + +# Password for connection to VMware VC host. (string value) +#host_password= + +# Name of a VMware Cluster ComputeResource. (multi valued) +#cluster_name= + +# Regex to match the name of a datastore. (string value) +#datastore_regex= + +# The interval used for polling of remote tasks. (floating +# point value) +#task_poll_interval=0.5 + +# The number of times we retry on failures, e.g., socket +# error, etc. (integer value) +#api_retry_count=10 + +# VNC starting port (integer value) +#vnc_port=5900 + +# Total number of VNC ports (integer value) +#vnc_port_total=10000 + +# Whether to use linked clone (boolean value) +#use_linked_clone=true + +# Optional VIM Service WSDL Location e.g +# http:///vimService.wsdl. Optional over-ride to +# default location for bug work-arounds (string value) +#wsdl_location= + + +# +# Options defined in nova.virt.vmwareapi.vif +# + +# Physical ethernet adapter name for vlan networking (string +# value) +#vlan_interface=vmnic0 + +# Name of Integration Bridge (string value) +#integration_bridge=br-int + + +# +# Options defined in nova.virt.vmwareapi.vim_util +# + +# The maximum number of ObjectContent data objects that should +# be returned in a single result. A positive value will cause +# the operation to suspend the retrieval when the count of +# objects reaches the specified maximum. The server may still +# limit the count to something less than the configured value. +# Any remaining objects may be retrieved with additional +# requests. (integer value) +#maximum_objects=100 + + +# +# Options defined in nova.virt.vmwareapi.vmops +# + +# The prefix for Where cached images are stored. This is NOT +# the full path - just a folder prefix. This should only be +# used when a datastore cache should be shared between compute +# nodes. Note: this should only be used when the compute nodes +# have a shared file system. (string value) +#cache_prefix= + + +[workarounds] + +# +# Options defined in nova.utils +# + +# This option allows a fallback to sudo for performance +# reasons. For example see +# https://bugs.launchpad.net/nova/+bug/1415106 (boolean value) +#disable_rootwrap=false + +# When using libvirt 1.2.2 fails live snapshots intermittently +# under load. This config option provides mechanism to +# disable livesnapshot while this is resolved. See +# https://bugs.launchpad.net/nova/+bug/1334398 (boolean value) +#disable_libvirt_livesnapshot=true + +# Whether to destroy instances on startup when we suspect they +# have previously been evacuated. This can result in data loss +# if undesired. See https://launchpad.net/bugs/1419785 +# (boolean value) +#destroy_after_evacuate=true + + +[xenserver] + +# +# Options defined in nova.virt.xenapi.agent +# + +# Number of seconds to wait for agent reply (integer value) +#agent_timeout=30 + +# Number of seconds to wait for agent to be fully operational +# (integer value) +#agent_version_timeout=300 + +# Number of seconds to wait for agent reply to resetnetwork +# request (integer value) +#agent_resetnetwork_timeout=60 + +# Specifies the path in which the XenAPI guest agent should be +# located. If the agent is present, network configuration is +# not injected into the image. Used if +# compute_driver=xenapi.XenAPIDriver and flat_injected=True +# (string value) +#agent_path=usr/sbin/xe-update-networking + +# Disables the use of the XenAPI agent in any image regardless +# of what image properties are present. (boolean value) +#disable_agent=false + +# Determines if the XenAPI agent should be used when the image +# used does not contain a hint to declare if the agent is +# present or not. The hint is a glance property +# "xenapi_use_agent" that has the value "True" or "False". +# Note that waiting for the agent when it is not present will +# significantly increase server boot times. (boolean value) +#use_agent_default=false + + +# +# Options defined in nova.virt.xenapi.client.session +# + +# Timeout in seconds for XenAPI login. (integer value) +#login_timeout=10 + +# Maximum number of concurrent XenAPI connections. Used only +# if compute_driver=xenapi.XenAPIDriver (integer value) +#connection_concurrent=5 + + +# +# Options defined in nova.virt.xenapi.driver +# + +# URL for connection to XenServer/Xen Cloud Platform. A +# special value of unix://local can be used to connect to the +# local unix socket. Required if +# compute_driver=xenapi.XenAPIDriver (string value) +#connection_url= + +# Username for connection to XenServer/Xen Cloud Platform. +# Used only if compute_driver=xenapi.XenAPIDriver (string +# value) +#connection_username=root + +# Password for connection to XenServer/Xen Cloud Platform. +# Used only if compute_driver=xenapi.XenAPIDriver (string +# value) +#connection_password= + +# The interval used for polling of coalescing vhds. Used only +# if compute_driver=xenapi.XenAPIDriver (floating point value) +#vhd_coalesce_poll_interval=5.0 + +# Ensure compute service is running on host XenAPI connects +# to. (boolean value) +#check_host=true + +# Max number of times to poll for VHD to coalesce. Used only +# if compute_driver=xenapi.XenAPIDriver (integer value) +#vhd_coalesce_max_attempts=20 + +# Base path to the storage repository (string value) +#sr_base_path=/var/run/sr-mount + +# The iSCSI Target Host (string value) +#target_host= + +# The iSCSI Target Port, default is port 3260 (string value) +#target_port=3260 + +# IQN Prefix (string value) +#iqn_prefix=iqn.2010-10.org.openstack + +# Used to enable the remapping of VBD dev (Works around an +# issue in Ubuntu Maverick) (boolean value) +#remap_vbd_dev=false + +# Specify prefix to remap VBD dev to (ex. /dev/xvdb -> +# /dev/sdb) (string value) +#remap_vbd_dev_prefix=sd + + +# +# Options defined in nova.virt.xenapi.image.bittorrent +# + +# Base URL for torrent files. (string value) +#torrent_base_url= + +# Probability that peer will become a seeder. (1.0 = 100%) +# (floating point value) +#torrent_seed_chance=1.0 + +# Number of seconds after downloading an image via BitTorrent +# that it should be seeded for other peers. (integer value) +#torrent_seed_duration=3600 + +# Cached torrent files not accessed within this number of +# seconds can be reaped (integer value) +#torrent_max_last_accessed=86400 + +# Beginning of port range to listen on (integer value) +#torrent_listen_port_start=6881 + +# End of port range to listen on (integer value) +#torrent_listen_port_end=6891 + +# Number of seconds a download can remain at the same progress +# percentage w/o being considered a stall (integer value) +#torrent_download_stall_cutoff=600 + +# Maximum number of seeder processes to run concurrently +# within a given dom0. (-1 = no limit) (integer value) +#torrent_max_seeder_processes_per_host=1 + + +# +# Options defined in nova.virt.xenapi.pool +# + +# To use for hosts with different CPUs (boolean value) +#use_join_force=true + + +# +# Options defined in nova.virt.xenapi.vif +# + +# Name of Integration Bridge used by Open vSwitch (string +# value) +#ovs_integration_bridge=xapi1 + + +# +# Options defined in nova.virt.xenapi.vm_utils +# + +# Cache glance images locally. `all` will cache all images, +# `some` will only cache images that have the image_property +# `cache_in_nova=True`, and `none` turns off caching entirely +# (string value) +#cache_images=all + +# Compression level for images, e.g., 9 for gzip -9. Range is +# 1-9, 9 being most compressed but most CPU intensive on dom0. +# (integer value) +#image_compression_level= + +# Default OS type (string value) +#default_os_type=linux + +# Time to wait for a block device to be created (integer +# value) +#block_device_creation_timeout=10 + +# Maximum size in bytes of kernel or ramdisk images (integer +# value) +#max_kernel_ramdisk_size=16777216 + +# Filter for finding the SR to be used to install guest +# instances on. To use the Local Storage in default +# XenServer/XCP installations set this flag to other-config +# :i18n-key=local-storage. To select an SR with a different +# matching criteria, you could set it to other- +# config:my_favorite_sr=true. On the other hand, to fall back +# on the Default SR, as displayed by XenCenter, set this flag +# to: default-sr:true (string value) +#sr_matching_filter=default-sr:true + +# Whether to use sparse_copy for copying data on a resize down +# (False will use standard dd). This speeds up resizes down +# considerably since large runs of zeros won't have to be +# rsynced (boolean value) +#sparse_copy=true + +# Maximum number of retries to unplug VBD. if <=0, should try +# once and no retry (integer value) +#num_vbd_unplug_retries=10 + +# Whether or not to download images via Bit Torrent +# (all|some|none). (string value) +#torrent_images=none + +# Name of network to use for booting iPXE ISOs (string value) +#ipxe_network_name= + +# URL to the iPXE boot menu (string value) +#ipxe_boot_menu_url= + +# Name and optionally path of the tool used for ISO image +# creation (string value) +#ipxe_mkisofs_cmd=mkisofs + + +# +# Options defined in nova.virt.xenapi.vmops +# + +# Number of seconds to wait for instance to go to running +# state (integer value) +#running_timeout=60 + +# The XenAPI VIF driver using XenServer Network APIs. (string +# value) +#vif_driver=nova.virt.xenapi.vif.XenAPIBridgeDriver + +# Dom0 plugin driver used to handle image uploads. (string +# value) +#image_upload_handler=nova.virt.xenapi.image.glance.GlanceStore + + +# +# Options defined in nova.virt.xenapi.volume_utils +# + +# Number of seconds to wait for an SR to settle if the VDI +# does not exist when first introduced (integer value) +#introduce_vdi_retry_wait=20 + + +[zookeeper] + +# +# Options defined in nova.servicegroup.drivers.zk +# + +# The ZooKeeper addresses for servicegroup service in the +# format of host1:port,host2:port,host3:port (string value) +#address= + +# The recv_timeout parameter for the zk session (integer +# value) +#recv_timeout=4000 + +# The prefix used in ZooKeeper to store ephemeral nodes +# (string value) +#sg_prefix=/servicegroups + +# Number of seconds to wait until retrying to join the session +# (integer value) +#sg_retry_interval=5 + + +[matchmaker_redis] + +# +# From oslo.messaging +# + +# Host to locate redis. (string value) +#host = 127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port = 6379 + +# Password for Redis server (optional). (string value) +#password = + + +[matchmaker_ring] + +# +# From oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile = /etc/oslo/matchmaker_ring.json + + +[oslo_concurrency] + +# +# From oslo.concurrency +# + +# Enables or disables inter-process locks. (boolean value) +# Deprecated group/name - [DEFAULT]/disable_process_locking +#disable_process_locking = false + +# Directory to use for lock files. For security, the specified directory +# should only be writable by the user running the processes that need locking. +# Defaults to environment variable OSLO_LOCK_PATH. If external locks are used, +# a lock path must be set. (string value) +# Deprecated group/name - [DEFAULT]/lock_path +lock_path = /var/lock/nova + + +[oslo_messaging_amqp] + +# +# From oslo.messaging +# + +# address prefix used when sending to a specific server (string value) +# Deprecated group/name - [amqp1]/server_request_prefix +#server_request_prefix = exclusive + +# address prefix used when broadcasting to all servers (string value) +# Deprecated group/name - [amqp1]/broadcast_prefix +#broadcast_prefix = broadcast + +# address prefix when sending to any server in group (string value) +# Deprecated group/name - [amqp1]/group_request_prefix +#group_request_prefix = unicast + +# Name for the AMQP container (string value) +# Deprecated group/name - [amqp1]/container_name +#container_name = + +# Timeout for inactive connections (in seconds) (integer value) +# Deprecated group/name - [amqp1]/idle_timeout +#idle_timeout = 0 + +# Debug: dump AMQP frames to stdout (boolean value) +# Deprecated group/name - [amqp1]/trace +#trace = false + +# CA certificate PEM file for verifing server certificate (string value) +# Deprecated group/name - [amqp1]/ssl_ca_file +#ssl_ca_file = + +# Identifying certificate PEM file to present to clients (string value) +# Deprecated group/name - [amqp1]/ssl_cert_file +#ssl_cert_file = + +# Private key PEM file used to sign cert_file certificate (string value) +# Deprecated group/name - [amqp1]/ssl_key_file +#ssl_key_file = + +# Password for decrypting ssl_key_file (if encrypted) (string value) +# Deprecated group/name - [amqp1]/ssl_key_password +#ssl_key_password = + +# Accept clients using either SSL or plain TCP (boolean value) +# Deprecated group/name - [amqp1]/allow_insecure_clients +#allow_insecure_clients = false + + +[oslo_messaging_qpid] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# Qpid broker hostname. (string value) +# Deprecated group/name - [DEFAULT]/qpid_hostname +#qpid_hostname = localhost + +# Qpid broker port. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_port +#qpid_port = 5672 + +# Qpid HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/qpid_hosts +#qpid_hosts = $qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_username +#qpid_username = + +# Password for Qpid connection. (string value) +# Deprecated group/name - [DEFAULT]/qpid_password +#qpid_password = + +# Space separated list of SASL mechanisms to use for auth. (string value) +# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms +#qpid_sasl_mechanisms = + +# Seconds between connection keepalive heartbeats. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_heartbeat +#qpid_heartbeat = 60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +# Deprecated group/name - [DEFAULT]/qpid_protocol +#qpid_protocol = tcp + +# Whether to disable the Nagle algorithm. (boolean value) +# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay +#qpid_tcp_nodelay = true + +# The number of prefetched messages held by receiver. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity +#qpid_receiver_capacity = 1 + +# The qpid topology version to use. Version 1 is what was originally used by +# impl_qpid. Version 2 includes some backwards-incompatible changes that allow +# broker federation to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. (integer value) +# Deprecated group/name - [DEFAULT]/qpid_topology_version +#qpid_topology_version = 1 + + +[oslo_messaging_rabbit] + +# +# From oslo.messaging +# + +# Use durable queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues = false + +# Auto-delete queues in AMQP. (boolean value) +# Deprecated group/name - [DEFAULT]/amqp_auto_delete +#amqp_auto_delete = false + +# Size of RPC connection pool. (integer value) +# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size +#rpc_conn_pool_size = 30 + +# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and +# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some +# distributions. (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_version +#kombu_ssl_version = + +# SSL key file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile +#kombu_ssl_keyfile = + +# SSL cert file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile +#kombu_ssl_certfile = + +# SSL certification authority file (valid only if SSL enabled). (string value) +# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs +#kombu_ssl_ca_certs = + +# How long to wait before reconnecting in response to an AMQP consumer cancel +# notification. (floating point value) +# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay +#kombu_reconnect_delay = 1.0 + +# The RabbitMQ broker address where a single node is used. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_host +rabbit_host = {{ RABBITMQ_HOST }} + +# The RabbitMQ broker port where a single node is used. (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_port +rabbit_port = {{ RABBITMQ_PORT }} + +# RabbitMQ HA cluster host:port pairs. (list value) +# Deprecated group/name - [DEFAULT]/rabbit_hosts +#rabbit_hosts = $rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_use_ssl +rabbit_use_ssl = false + +# The RabbitMQ userid. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_userid +rabbit_userid = {{ RABBITMQ_USER }} + +# The RabbitMQ password. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_password +rabbit_password = {{ RABBITMQ_PASSWORD }} + +# The RabbitMQ login method. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_login_method +#rabbit_login_method = AMQPLAIN + +# The RabbitMQ virtual host. (string value) +# Deprecated group/name - [DEFAULT]/rabbit_virtual_host +#rabbit_virtual_host = / + +# How frequently to retry connecting with RabbitMQ. (integer value) +#rabbit_retry_interval = 1 + +# How long to backoff for between retries when connecting to RabbitMQ. (integer +# value) +# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff +#rabbit_retry_backoff = 2 + +# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry +# count). (integer value) +# Deprecated group/name - [DEFAULT]/rabbit_max_retries +#rabbit_max_retries = 0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you +# must wipe the RabbitMQ database. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_ha_queues +#rabbit_ha_queues = false + +# Number of seconds after which the Rabbit broker is considered down if +# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value) +#heartbeat_timeout_threshold = 60 + +# How often times during the heartbeat_timeout_threshold we check the +# heartbeat. (integer value) +#heartbeat_rate = 2 + +# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value) +# Deprecated group/name - [DEFAULT]/fake_rabbit +#fake_rabbit = false diff --git a/old/install-files/openstack/usr/share/openstack/openvswitch.yml b/old/install-files/openstack/usr/share/openstack/openvswitch.yml new file mode 100644 index 00000000..47257f7f --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/openvswitch.yml @@ -0,0 +1,38 @@ +--- +- hosts: localhost + tasks: + + - name: Create openvswitch directories + file: path={{ item }} state=directory + with_items: + - /etc/openvswitch + - /var/run/openvswitch + + - shell: > + ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema + creates=/etc/openvswitch/conf.db + + # We enable the openvswitch-db-server in a different task to identify + # the first time we run this script by identifying when we enable the + # unit. + # + # We need to identify this to initialise the database. + - name: Enable openvswitch database service + service: name={{ item }} enabled=yes + with_items: + - openvswitch-db-server.service + register: openvswitch_db_enable + + - name: Start openvswitch database service + service: name={{ item }} state=started + with_items: + - openvswitch-db-server.service + + - name: initialise openvswitch-db + shell: ovs-vsctl --no-wait init + when: openvswitch_db_enable|changed + + - name: Enable and start Open vSwitch service + service: name={{ item }} enabled=yes state=started + with_items: + - openvswitch.service diff --git a/old/install-files/openstack/usr/share/openstack/postgres.yml b/old/install-files/openstack/usr/share/openstack/postgres.yml new file mode 100644 index 00000000..5ff9355e --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/postgres.yml @@ -0,0 +1,48 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/postgres.conf" + tasks: + + - name: Create postgres user + user: + name: postgres + comment: PostgreSQL Server + shell: /sbin/nologin + home: /var/lib/pgsql + + - name: Create the postgres directories + file: + path: "{{ item }}" + state: directory + owner: postgres + group: postgres + with_items: + - /var/run/postgresql + - /var/lib/pgsql/data + + - name: Initialise postgres database + command: pg_ctl -D /var/lib/pgsql/data initdb + args: + creates: /var/lib/pgsql/data/base + sudo: yes + sudo_user: postgres + + - name: Add the configuration needed for postgres for Openstack + template: + src: /usr/share/openstack/postgres/{{ item }} + dest: /var/lib/pgsql/data/{{ item }} + owner: postgres + group: postgres + mode: 0600 + with_items: + - postgresql.conf + - pg_hba.conf + + - name: Enable and start postgres services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - postgres-server diff --git a/old/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf b/old/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf new file mode 100644 index 00000000..78186924 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf @@ -0,0 +1,5 @@ +local all all trust +host all all 127.0.0.0/8 trust +host all all ::1/128 trust +host all all {{ MANAGEMENT_INTERFACE_IP_ADDRESS }}/32 trust +host all all 0.0.0.0/0 md5 diff --git a/old/install-files/openstack/usr/share/openstack/postgres/postgresql.conf b/old/install-files/openstack/usr/share/openstack/postgres/postgresql.conf new file mode 100644 index 00000000..9c8094ea --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/postgres/postgresql.conf @@ -0,0 +1,11 @@ +listen_addresses = '{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}' +max_connections = 300 +shared_buffers = 128MB +log_timezone = 'UTC' +datestyle = 'iso, mdy' +timezone = 'UTC' +lc_messages = 'C' +lc_monetary = 'C' +lc_numeric = 'C' +lc_time = 'C' +default_text_search_config = 'pg_catalog.english' diff --git a/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf b/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf new file mode 100644 index 00000000..d4c58dae --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf @@ -0,0 +1,3 @@ +# Configure port node where rabbitmq-server will listen from. +NODE_PORT={{ RABBITMQ_PORT }} +CONFIG_FILE=/etc/rabbitmq/rabbitmq diff --git a/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config b/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config new file mode 100644 index 00000000..9b93881e --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config @@ -0,0 +1,9 @@ +%% -*- Rabbit configuration for Openstack in Baserock +[ + {rabbit, + [ + {default_user, <<"{{ RABBITMQ_USER }}">>}, + {default_pass, <<"{{ RABBITMQ_PASSWORD }}">>}, + {tcp_listeners, [{{ RABBITMQ_PORT }}]} + ]} +]. diff --git a/old/install-files/openstack/usr/share/openstack/swift-controller.yml b/old/install-files/openstack/usr/share/openstack/swift-controller.yml new file mode 100644 index 00000000..690de087 --- /dev/null +++ b/old/install-files/openstack/usr/share/openstack/swift-controller.yml @@ -0,0 +1,52 @@ +--- +- hosts: localhost + vars_files: + - swift-controller-vars.yml + vars: + - ring_name_port_map: + account: + port: 6002 + container: + port: 6001 + object: + port: 6000 + remote_user: root + tasks: + - user: + name: swift + comment: Swift user + + - file: + path: /etc/swift + owner: swift + group: swift + state: directory + + - template: + src: /usr/share/swift/etc/swift/proxy-server.j2 + dest: /etc/swift/proxy-server.conf + mode: 0644 + owner: swift + group: swift + + - keystone_user: + user: swift + password: "{{ SWIFT_ADMIN_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - keystone_user: + role: admin + user: swift + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - keystone_service: + name: swift + type: object-store + description: OpenStack Object Storage + publicurl: http://{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}:8080/v1/AUTH_%(tenant_id)s + internalurl: http://{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}:8080/v1/AUTH_%(tenant_id)s + adminurl: http://{{ MANAGEMENT_INTERFACE_IP_ADDRESS }}:8080 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" diff --git a/old/install-files/openstack/usr/share/swift/etc/rsyncd.j2 b/old/install-files/openstack/usr/share/swift/etc/rsyncd.j2 new file mode 100644 index 00000000..c0657665 --- /dev/null +++ b/old/install-files/openstack/usr/share/swift/etc/rsyncd.j2 @@ -0,0 +1,23 @@ +uid = swift +gid = swift +log file = /var/log/rsyncd.log +pid file = /var/run/rsyncd.pid +address = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +[account] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/account.lock + +[container] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/container.lock + +[object] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/object.lock diff --git a/old/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 b/old/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 new file mode 100644 index 00000000..dda82d5a --- /dev/null +++ b/old/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 @@ -0,0 +1,630 @@ +[DEFAULT] +# bind_ip = 0.0.0.0 +bind_port = 8080 +# bind_timeout = 30 +# backlog = 4096 +swift_dir = /etc/swift +user = swift + +# Enables exposing configuration settings via HTTP GET /info. +# expose_info = true + +# Key to use for admin calls that are HMAC signed. Default is empty, +# which will disable admin calls to /info. +# admin_key = secret_admin_key +# +# Allows the ability to withhold sections from showing up in the public calls +# to /info. You can withhold subsections by separating the dict level with a +# ".". The following would cause the sections 'container_quotas' and 'tempurl' +# to not be listed, and the key max_failed_deletes would be removed from +# bulk_delete. Default is empty, allowing all registered fetures to be listed +# via HTTP GET /info. +# disallowed_sections = container_quotas, tempurl, bulk_delete.max_failed_deletes + +# Use an integer to override the number of pre-forked processes that will +# accept connections. Should default to the number of effective cpu +# cores in the system. It's worth noting that individual workers will +# use many eventlet co-routines to service multiple concurrent requests. +# workers = auto +# +# Maximum concurrent requests per worker +# max_clients = 1024 +# +# Set the following two lines to enable SSL. This is for testing only. +# cert_file = /etc/swift/proxy.crt +# key_file = /etc/swift/proxy.key +# +# expiring_objects_container_divisor = 86400 +# expiring_objects_account_name = expiring_objects +# +# You can specify default log routing here if you want: +# log_name = swift +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_headers = false +# log_address = /dev/log +# The following caps the length of log lines to the value given; no limit if +# set to 0, the default. +# log_max_line_length = 0 +# +# This optional suffix (default is empty) that would be appended to the swift transaction +# id allows one to easily figure out from which cluster that X-Trans-Id belongs to. +# This is very useful when one is managing more than one swift cluster. +# trans_id_suffix = +# +# comma separated list of functions to call to setup custom log handlers. +# functions get passed: conf, name, log_to_console, log_route, fmt, logger, +# adapted_logger +# log_custom_handlers = +# +# If set, log_udp_host will override log_address +# log_udp_host = +# log_udp_port = 514 +# +# You can enable StatsD logging here: +# log_statsd_host = localhost +# log_statsd_port = 8125 +# log_statsd_default_sample_rate = 1.0 +# log_statsd_sample_rate_factor = 1.0 +# log_statsd_metric_prefix = +# +# Use a comma separated list of full url (http://foo.bar:1234,https://foo.bar) +# cors_allow_origin = +# strict_cors_mode = True +# +# client_timeout = 60 +# eventlet_debug = false + +[pipeline:main] +#pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk tempurl ratelimit tempauth container-quotas account-quotas slo dlo proxy-logging proxy-server +pipeline = authtoken cache healthcheck keystoneauth proxy-logging proxy-server + +[app:proxy-server] +use = egg:swift#proxy +# You can override the default log routing for this app here: +# set log_name = proxy-server +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_address = /dev/log +# +# log_handoffs = true +# recheck_account_existence = 60 +# recheck_container_existence = 60 +# object_chunk_size = 65536 +# client_chunk_size = 65536 +# +# How long the proxy server will wait on responses from the a/c/o servers. +# node_timeout = 10 +# +# How long the proxy server will wait for an initial response and to read a +# chunk of data from the object servers while serving GET / HEAD requests. +# Timeouts from these requests can be recovered from so setting this to +# something lower than node_timeout would provide quicker error recovery +# while allowing for a longer timeout for non-recoverable requests (PUTs). +# Defaults to node_timeout, should be overriden if node_timeout is set to a +# high number to prevent client timeouts from firing before the proxy server +# has a chance to retry. +# recoverable_node_timeout = node_timeout +# +# conn_timeout = 0.5 +# +# How long to wait for requests to finish after a quorum has been established. +# post_quorum_timeout = 0.5 +# +# How long without an error before a node's error count is reset. This will +# also be how long before a node is reenabled after suppression is triggered. +# error_suppression_interval = 60 +# +# How many errors can accumulate before a node is temporarily ignored. +# error_suppression_limit = 10 +# +# If set to 'true' any authorized user may create and delete accounts; if +# 'false' no one, even authorized, can. +allow_account_management = true +# +# Set object_post_as_copy = false to turn on fast posts where only the metadata +# changes are stored anew and the original data file is kept in place. This +# makes for quicker posts; but since the container metadata isn't updated in +# this mode, features like container sync won't be able to sync posts. +# object_post_as_copy = true +# +# If set to 'true' authorized accounts that do not yet exist within the Swift +# cluster will be automatically created. +account_autocreate = true +# +# If set to a positive value, trying to create a container when the account +# already has at least this maximum containers will result in a 403 Forbidden. +# Note: This is a soft limit, meaning a user might exceed the cap for +# recheck_account_existence before the 403s kick in. +# max_containers_per_account = 0 +# +# This is a comma separated list of account hashes that ignore the +# max_containers_per_account cap. +# max_containers_whitelist = +# +# Comma separated list of Host headers to which the proxy will deny requests. +# deny_host_headers = +# +# Prefix used when automatically creating accounts. +# auto_create_account_prefix = . +# +# Depth of the proxy put queue. +# put_queue_depth = 10 +# +# Storage nodes can be chosen at random (shuffle), by using timing +# measurements (timing), or by using an explicit match (affinity). +# Using timing measurements may allow for lower overall latency, while +# using affinity allows for finer control. In both the timing and +# affinity cases, equally-sorting nodes are still randomly chosen to +# spread load. +# The valid values for sorting_method are "affinity", "shuffle", and "timing". +# sorting_method = shuffle +# +# If the "timing" sorting_method is used, the timings will only be valid for +# the number of seconds configured by timing_expiry. +# timing_expiry = 300 +# +# The maximum time (seconds) that a large object connection is allowed to last. +# max_large_object_get_time = 86400 +# +# Set to the number of nodes to contact for a normal request. You can use +# '* replicas' at the end to have it use the number given times the number of +# replicas for the ring being used for the request. +# request_node_count = 2 * replicas +# +# Which backend servers to prefer on reads. Format is r for region +# N or rz for region N, zone M. The value after the equals is +# the priority; lower numbers are higher priority. +# +# Example: first read from region 1 zone 1, then region 1 zone 2, then +# anything in region 2, then everything else: +# read_affinity = r1z1=100, r1z2=200, r2=300 +# Default is empty, meaning no preference. +# read_affinity = +# +# Which backend servers to prefer on writes. Format is r for region +# N or rz for region N, zone M. If this is set, then when +# handling an object PUT request, some number (see setting +# write_affinity_node_count) of local backend servers will be tried +# before any nonlocal ones. +# +# Example: try to write to regions 1 and 2 before writing to any other +# nodes: +# write_affinity = r1, r2 +# Default is empty, meaning no preference. +# write_affinity = +# +# The number of local (as governed by the write_affinity setting) +# nodes to attempt to contact first, before any non-local ones. You +# can use '* replicas' at the end to have it use the number given +# times the number of replicas for the ring being used for the +# request. +# write_affinity_node_count = 2 * replicas +# +# These are the headers whose values will only be shown to swift_owners. The +# exact definition of a swift_owner is up to the auth system in use, but +# usually indicates administrative responsibilities. +# swift_owner_headers = x-container-read, x-container-write, x-container-sync-key, x-container-sync-to, x-account-meta-temp-url-key, x-account-meta-temp-url-key-2, x-account-access-control + +[filter:tempauth] +use = egg:swift#tempauth +# You can override the default log routing for this filter here: +# set log_name = tempauth +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log +# +# The reseller prefix will verify a token begins with this prefix before even +# attempting to validate it. Also, with authorization, only Swift storage +# accounts with this prefix will be authorized by this middleware. Useful if +# multiple auth systems are in use for one Swift cluster. +# reseller_prefix = AUTH +# +# The auth prefix will cause requests beginning with this prefix to be routed +# to the auth subsystem, for granting tokens, etc. +# auth_prefix = /auth/ +# token_life = 86400 +# +# This allows middleware higher in the WSGI pipeline to override auth +# processing, useful for middleware such as tempurl and formpost. If you know +# you're not going to use such middleware and you want a bit of extra security, +# you can set this to false. +# allow_overrides = true +# +# This specifies what scheme to return with storage urls: +# http, https, or default (chooses based on what the server is running as) +# This can be useful with an SSL load balancer in front of a non-SSL server. +# storage_url_scheme = default +# +# Lastly, you need to list all the accounts/users you want here. The format is: +# user__ = [group] [group] [...] [storage_url] +# or if you want underscores in or , you can base64 encode them +# (with no equal signs) and use this format: +# user64__ = [group] [group] [...] [storage_url] +# There are special groups of: +# .reseller_admin = can do anything to any account for this auth +# .admin = can do anything within the account +# If neither of these groups are specified, the user can only access containers +# that have been explicitly allowed for them by a .admin or .reseller_admin. +# The trailing optional storage_url allows you to specify an alternate url to +# hand back to the user upon authentication. If not specified, this defaults to +# $HOST/v1/_ where $HOST will do its best to resolve +# to what the requester would need to use to reach this host. +# Here are example entries, required for running the tests: +user_admin_admin = admin .admin .reseller_admin +user_test_tester = testing .admin +user_test2_tester2 = testing2 .admin +user_test_tester3 = testing3 + +# To enable Keystone authentication you need to have the auth token +# middleware first to be configured. Here is an example below, please +# refer to the keystone's documentation for details about the +# different settings. +# +# You'll need to have as well the keystoneauth middleware enabled +# and have it in your main pipeline so instead of having tempauth in +# there you can change it to: authtoken keystoneauth +# +[filter:authtoken] +paste.filter_factory = keystonemiddleware.auth_token:filter_factory +# auth_host = keystonehost +# auth_port = 35357 +# auth_protocol = http +# auth_uri = http://keystonehost:5000/ +#auth_uri = http://controller:5000/v2.0 +auth_uri = http://127.0.0.1:5000/v2.0 +identity_uri = http://127.0.0.1:35357 +admin_tenant_name = service +admin_user = swift +admin_password = {{ SWIFT_ADMIN_PASSWORD }} +delay_auth_decision = 1 +# cache = swift.cache +# include_service_catalog = False +# +[filter:keystoneauth] +use = egg:swift#keystoneauth +# Operator roles is the role which user would be allowed to manage a +# tenant and be able to create container or give ACL to others. +# operator_roles = admin, swiftoperator +operator_roles = admin, _member_ +# The reseller admin role has the ability to create and delete accounts +# reseller_admin_role = ResellerAdmin +# For backwards compatibility, keystoneauth will match names in cross-tenant +# access control lists (ACLs) when both the requesting user and the tenant +# are in the default domain i.e the domain to which existing tenants are +# migrated. The default_domain_id value configured here should be the same as +# the value used during migration of tenants to keystone domains. +# default_domain_id = default +# For a new installation, or an installation in which keystone projects may +# move between domains, you should disable backwards compatible name matching +# in ACLs by setting allow_names_in_acls to false: +# allow_names_in_acls = true + +[filter:healthcheck] +use = egg:swift#healthcheck +# An optional filesystem path, which if present, will cause the healthcheck +# URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE". +# This facility may be used to temporarily remove a Swift node from a load +# balancer pool during maintenance or upgrade (remove the file to allow the +# node back into the load balancer pool). +# disable_path = + +[filter:cache] +use = egg:swift#memcache +# You can override the default log routing for this filter here: +# set log_name = cache +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log +# +# If not set here, the value for memcache_servers will be read from +# memcache.conf (see memcache.conf-sample) or lacking that file, it will +# default to the value below. You can specify multiple servers separated with +# commas, as in: 10.1.2.3:11211,10.1.2.4:11211 +memcache_servers = 127.0.0.1:11211 +# +# Sets how memcache values are serialized and deserialized: +# 0 = older, insecure pickle serialization +# 1 = json serialization but pickles can still be read (still insecure) +# 2 = json serialization only (secure and the default) +# If not set here, the value for memcache_serialization_support will be read +# from /etc/swift/memcache.conf (see memcache.conf-sample). +# To avoid an instant full cache flush, existing installations should +# upgrade with 0, then set to 1 and reload, then after some time (24 hours) +# set to 2 and reload. +# In the future, the ability to use pickle serialization will be removed. +# memcache_serialization_support = 2 +# +# Sets the maximum number of connections to each memcached server per worker +# memcache_max_connections = 2 + +[filter:ratelimit] +use = egg:swift#ratelimit +# You can override the default log routing for this filter here: +# set log_name = ratelimit +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log +# +# clock_accuracy should represent how accurate the proxy servers' system clocks +# are with each other. 1000 means that all the proxies' clock are accurate to +# each other within 1 millisecond. No ratelimit should be higher than the +# clock accuracy. +# clock_accuracy = 1000 +# +# max_sleep_time_seconds = 60 +# +# log_sleep_time_seconds of 0 means disabled +# log_sleep_time_seconds = 0 +# +# allows for slow rates (e.g. running up to 5 sec's behind) to catch up. +# rate_buffer_seconds = 5 +# +# account_ratelimit of 0 means disabled +# account_ratelimit = 0 + +# these are comma separated lists of account names +# account_whitelist = a,b +# account_blacklist = c,d + +# with container_limit_x = r +# for containers of size x limit write requests per second to r. The container +# rate will be linearly interpolated from the values given. With the values +# below, a container of size 5 will get a rate of 75. +# container_ratelimit_0 = 100 +# container_ratelimit_10 = 50 +# container_ratelimit_50 = 20 + +# Similarly to the above container-level write limits, the following will limit +# container GET (listing) requests. +# container_listing_ratelimit_0 = 100 +# container_listing_ratelimit_10 = 50 +# container_listing_ratelimit_50 = 20 + +[filter:domain_remap] +use = egg:swift#domain_remap +# You can override the default log routing for this filter here: +# set log_name = domain_remap +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log +# +# storage_domain = example.com +# path_root = v1 +# reseller_prefixes = AUTH + +[filter:catch_errors] +use = egg:swift#catch_errors +# You can override the default log routing for this filter here: +# set log_name = catch_errors +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log + +[filter:cname_lookup] +# Note: this middleware requires python-dnspython +use = egg:swift#cname_lookup +# You can override the default log routing for this filter here: +# set log_name = cname_lookup +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log +# +# Specify the storage_domain that match your cloud, multiple domains +# can be specified separated by a comma +# storage_domain = example.com +# +# lookup_depth = 1 + +# Note: Put staticweb just after your auth filter(s) in the pipeline +[filter:staticweb] +use = egg:swift#staticweb + +# Note: Put tempurl before dlo, slo and your auth filter(s) in the pipeline +[filter:tempurl] +use = egg:swift#tempurl +# The methods allowed with Temp URLs. +# methods = GET HEAD PUT POST DELETE +# +# The headers to remove from incoming requests. Simply a whitespace delimited +# list of header names and names can optionally end with '*' to indicate a +# prefix match. incoming_allow_headers is a list of exceptions to these +# removals. +# incoming_remove_headers = x-timestamp +# +# The headers allowed as exceptions to incoming_remove_headers. Simply a +# whitespace delimited list of header names and names can optionally end with +# '*' to indicate a prefix match. +# incoming_allow_headers = +# +# The headers to remove from outgoing responses. Simply a whitespace delimited +# list of header names and names can optionally end with '*' to indicate a +# prefix match. outgoing_allow_headers is a list of exceptions to these +# removals. +# outgoing_remove_headers = x-object-meta-* +# +# The headers allowed as exceptions to outgoing_remove_headers. Simply a +# whitespace delimited list of header names and names can optionally end with +# '*' to indicate a prefix match. +# outgoing_allow_headers = x-object-meta-public-* + +# Note: Put formpost just before your auth filter(s) in the pipeline +[filter:formpost] +use = egg:swift#formpost + +# Note: Just needs to be placed before the proxy-server in the pipeline. +[filter:name_check] +use = egg:swift#name_check +# forbidden_chars = '"`<> +# maximum_length = 255 +# forbidden_regexp = /\./|/\.\./|/\.$|/\.\.$ + +[filter:list-endpoints] +use = egg:swift#list_endpoints +# list_endpoints_path = /endpoints/ + +[filter:proxy-logging] +use = egg:swift#proxy_logging +# If not set, logging directives from [DEFAULT] without "access_" will be used +# access_log_name = swift +# access_log_facility = LOG_LOCAL0 +# access_log_level = INFO +# access_log_address = /dev/log +# +# If set, access_log_udp_host will override access_log_address +# access_log_udp_host = +# access_log_udp_port = 514 +# +# You can use log_statsd_* from [DEFAULT] or override them here: +# access_log_statsd_host = localhost +# access_log_statsd_port = 8125 +# access_log_statsd_default_sample_rate = 1.0 +# access_log_statsd_sample_rate_factor = 1.0 +# access_log_statsd_metric_prefix = +# access_log_headers = false +# +# If access_log_headers is True and access_log_headers_only is set only +# these headers are logged. Multiple headers can be defined as comma separated +# list like this: access_log_headers_only = Host, X-Object-Meta-Mtime +# access_log_headers_only = +# +# By default, the X-Auth-Token is logged. To obscure the value, +# set reveal_sensitive_prefix to the number of characters to log. +# For example, if set to 12, only the first 12 characters of the +# token appear in the log. An unauthorized access of the log file +# won't allow unauthorized usage of the token. However, the first +# 12 or so characters is unique enough that you can trace/debug +# token usage. Set to 0 to suppress the token completely (replaced +# by '...' in the log). +# Note: reveal_sensitive_prefix will not affect the value +# logged with access_log_headers=True. +# reveal_sensitive_prefix = 16 +# +# What HTTP methods are allowed for StatsD logging (comma-sep); request methods +# not in this list will have "BAD_METHOD" for the portion of the metric. +# log_statsd_valid_http_methods = GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS +# +# Note: The double proxy-logging in the pipeline is not a mistake. The +# left-most proxy-logging is there to log requests that were handled in +# middleware and never made it through to the right-most middleware (and +# proxy server). Double logging is prevented for normal requests. See +# proxy-logging docs. + +# Note: Put before both ratelimit and auth in the pipeline. +[filter:bulk] +use = egg:swift#bulk +# max_containers_per_extraction = 10000 +# max_failed_extractions = 1000 +# max_deletes_per_request = 10000 +# max_failed_deletes = 1000 + +# In order to keep a connection active during a potentially long bulk request, +# Swift may return whitespace prepended to the actual response body. This +# whitespace will be yielded no more than every yield_frequency seconds. +# yield_frequency = 10 + +# Note: The following parameter is used during a bulk delete of objects and +# their container. This would frequently fail because it is very likely +# that all replicated objects have not been deleted by the time the middleware got a +# successful response. It can be configured the number of retries. And the +# number of seconds to wait between each retry will be 1.5**retry + +# delete_container_retry_count = 0 + +# Note: Put after auth in the pipeline. +[filter:container-quotas] +use = egg:swift#container_quotas + +# Note: Put after auth and staticweb in the pipeline. +[filter:slo] +use = egg:swift#slo +# max_manifest_segments = 1000 +# max_manifest_size = 2097152 +# min_segment_size = 1048576 +# Start rate-limiting SLO segment serving after the Nth segment of a +# segmented object. +# rate_limit_after_segment = 10 +# +# Once segment rate-limiting kicks in for an object, limit segments served +# to N per second. 0 means no rate-limiting. +# rate_limit_segments_per_sec = 0 +# +# Time limit on GET requests (seconds) +# max_get_time = 86400 + +# Note: Put after auth and staticweb in the pipeline. +# If you don't put it in the pipeline, it will be inserted for you. +[filter:dlo] +use = egg:swift#dlo +# Start rate-limiting DLO segment serving after the Nth segment of a +# segmented object. +# rate_limit_after_segment = 10 +# +# Once segment rate-limiting kicks in for an object, limit segments served +# to N per second. 0 means no rate-limiting. +# rate_limit_segments_per_sec = 1 +# +# Time limit on GET requests (seconds) +# max_get_time = 86400 + +[filter:account-quotas] +use = egg:swift#account_quotas + +[filter:gatekeeper] +use = egg:swift#gatekeeper +# You can override the default log routing for this filter here: +# set log_name = gatekeeper +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_headers = false +# set log_address = /dev/log + +[filter:container_sync] +use = egg:swift#container_sync +# Set this to false if you want to disallow any full url values to be set for +# any new X-Container-Sync-To headers. This will keep any new full urls from +# coming in, but won't change any existing values already in the cluster. +# Updating those will have to be done manually, as knowing what the true realm +# endpoint should be cannot always be guessed. +# allow_full_urls = true +# Set this to specify this clusters //realm/cluster as "current" in /info +# current = //REALM/CLUSTER + +# Note: Put it at the beginning of the pipleline to profile all middleware. But +# it is safer to put this after catch_errors, gatekeeper and healthcheck. +[filter:xprofile] +use = egg:swift#xprofile +# This option enable you to switch profilers which should inherit from python +# standard profiler. Currently the supported value can be 'cProfile', +# 'eventlet.green.profile' etc. +# profile_module = eventlet.green.profile +# +# This prefix will be used to combine process ID and timestamp to name the +# profile data file. Make sure the executing user has permission to write +# into this path (missing path segments will be created, if necessary). +# If you enable profiling in more than one type of daemon, you must override +# it with an unique value like: /var/log/swift/profile/proxy.profile +# log_filename_prefix = /tmp/log/swift/profile/default.profile +# +# the profile data will be dumped to local disk based on above naming rule +# in this interval. +# dump_interval = 5.0 +# +# Be careful, this option will enable profiler to dump data into the file with +# time stamp which means there will be lots of files piled up in the directory. +# dump_timestamp = false +# +# This is the path of the URL to access the mini web UI. +# path = /__profile__ +# +# Clear the data when the wsgi server shutdown. +# flush_at_shutdown = false +# +# unwind the iterator of applications +# unwind = false diff --git a/old/install-files/swift/etc/ntp.conf b/old/install-files/swift/etc/ntp.conf new file mode 100644 index 00000000..54522871 --- /dev/null +++ b/old/install-files/swift/etc/ntp.conf @@ -0,0 +1,25 @@ +{% if SWIFT_CONTROLLER is undefined or SWIFT_CONTROLLER == "False" %} +server {{ CONTROLLER_HOST_ADDRESS }} iburst +{% else %} +# We use iburst here to reduce the potential initial delay to set the clock +server 0.pool.ntp.org iburst +server 1.pool.ntp.org iburst +server 2.pool.ntp.org iburst +server 3.pool.ntp.org iburst + +# kod - notify client when packets are denied service, +# rather than just dropping the packets +# +# nomodify - deny queries which attempt to modify the state of the server +# +# notrap - decline to provide mode 6 control message trap service to +# matching hosts +# +# see ntp.conf(5) for more details +restrict -4 default kod notrap nomodify +restrict -6 default kod notrap nomodify +{% endif %} + +# The default rlimit isn't enough in some cases +# so we set a higher limit here +rlimit memlock 256 diff --git a/old/install-files/swift/manifest b/old/install-files/swift/manifest new file mode 100644 index 00000000..7fd76206 --- /dev/null +++ b/old/install-files/swift/manifest @@ -0,0 +1,15 @@ +0040755 0 0 /usr/share +0040755 0 0 /usr/share/swift +0100644 0 0 /usr/share/swift/hosts +0100644 0 0 /usr/share/swift/swift-storage.yml +0040755 0 0 /usr/share/swift/etc +0040755 0 0 /usr/share/swift/etc/swift +0100644 0 0 /usr/share/swift/etc/swift/account-server.j2 +0100644 0 0 /usr/share/swift/etc/swift/swift.j2 +0100644 0 0 /usr/share/swift/etc/swift/object-server.j2 +0100644 0 0 /usr/share/swift/etc/swift/container-server.j2 +0100644 0 0 /usr/share/swift/etc/rsyncd.j2 +0100644 0 0 /usr/lib/systemd/system/swift-storage-setup.service +0100644 0 0 /usr/lib/systemd/system/swift-storage.service +template overwrite 0100644 0 0 /etc/ntp.conf +overwrite 0100644 0 0 /usr/lib/systemd/system/rsync.service diff --git a/old/install-files/swift/usr/lib/systemd/system/rsync.service b/old/install-files/swift/usr/lib/systemd/system/rsync.service new file mode 100644 index 00000000..babcfb46 --- /dev/null +++ b/old/install-files/swift/usr/lib/systemd/system/rsync.service @@ -0,0 +1,11 @@ +[Unit] +Description=fast remote file copy program daemon +After=swift-storage-setup.service +ConditionPathExists=/etc/rsyncd.conf + +[Service] +ExecStart=/usr/bin/rsync --daemon --no-detach +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service b/old/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service new file mode 100644 index 00000000..3df31163 --- /dev/null +++ b/old/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run openstack-swift-storage-setup (once) +After=local-fs.target postgres-server-setup.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -i /usr/share/swift/hosts /usr/share/swift/swift-storage.yml +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/swift/usr/lib/systemd/system/swift-storage.service b/old/install-files/swift/usr/lib/systemd/system/swift-storage.service new file mode 100644 index 00000000..dc41d3bc --- /dev/null +++ b/old/install-files/swift/usr/lib/systemd/system/swift-storage.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack Swift Storage +After=syslog.target network.target swift-storage-setup.service + +[Service] +Type=forking +Restart=on-failure +ExecStart=/usr/bin/swift-init all start +ExecStop=/usr/bin/swift-init all stop + +[Install] +WantedBy=multi-user.target diff --git a/old/install-files/swift/usr/share/swift/etc/rsyncd.j2 b/old/install-files/swift/usr/share/swift/etc/rsyncd.j2 new file mode 100644 index 00000000..c0657665 --- /dev/null +++ b/old/install-files/swift/usr/share/swift/etc/rsyncd.j2 @@ -0,0 +1,23 @@ +uid = swift +gid = swift +log file = /var/log/rsyncd.log +pid file = /var/run/rsyncd.pid +address = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} + +[account] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/account.lock + +[container] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/container.lock + +[object] +max connections = 2 +path = /srv/node/ +read only = false +lock file = /var/lock/object.lock diff --git a/old/install-files/swift/usr/share/swift/etc/swift/account-server.j2 b/old/install-files/swift/usr/share/swift/etc/swift/account-server.j2 new file mode 100644 index 00000000..d977e295 --- /dev/null +++ b/old/install-files/swift/usr/share/swift/etc/swift/account-server.j2 @@ -0,0 +1,192 @@ +[DEFAULT] +# bind_ip = 0.0.0.0 +bind_ip = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} +bind_port = 6002 +# bind_timeout = 30 +# backlog = 4096 +user = swift +swift_dir = /etc/swift +devices = /srv/node +# mount_check = true +# disable_fallocate = false +# +# Use an integer to override the number of pre-forked processes that will +# accept connections. +# workers = auto +# +# Maximum concurrent requests per worker +# max_clients = 1024 +# +# You can specify default log routing here if you want: +# log_name = swift +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# The following caps the length of log lines to the value given; no limit if +# set to 0, the default. +# log_max_line_length = 0 +# +# comma separated list of functions to call to setup custom log handlers. +# functions get passed: conf, name, log_to_console, log_route, fmt, logger, +# adapted_logger +# log_custom_handlers = +# +# If set, log_udp_host will override log_address +# log_udp_host = +# log_udp_port = 514 +# +# You can enable StatsD logging here: +# log_statsd_host = localhost +# log_statsd_port = 8125 +# log_statsd_default_sample_rate = 1.0 +# log_statsd_sample_rate_factor = 1.0 +# log_statsd_metric_prefix = +# +# If you don't mind the extra disk space usage in overhead, you can turn this +# on to preallocate disk space with SQLite databases to decrease fragmentation. +# db_preallocation = off +# +# eventlet_debug = false +# +# You can set fallocate_reserve to the number of bytes you'd like fallocate to +# reserve, whether there is space for the given file size or not. +# fallocate_reserve = 0 + +[pipeline:main] +pipeline = healthcheck recon account-server + +[app:account-server] +use = egg:swift#account +# You can override the default log routing for this app here: +# set log_name = account-server +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_requests = true +# set log_address = /dev/log +# +# auto_create_account_prefix = . +# +# Configure parameter for creating specific server +# To handle all verbs, including replication verbs, do not specify +# "replication_server" (this is the default). To only handle replication, +# set to a True value (e.g. "True" or "1"). To handle only non-replication +# verbs, set to "False". Unless you have a separate replication network, you +# should not specify any value for "replication_server". +# replication_server = false + +[filter:healthcheck] +use = egg:swift#healthcheck +# An optional filesystem path, which if present, will cause the healthcheck +# URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE" +# disable_path = + +[filter:recon] +use = egg:swift#recon +recon_cache_path = /var/cache/swift + +[account-replicator] +# You can override the default log routing for this app here (don't use set!): +# log_name = account-replicator +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# vm_test_mode = no +# per_diff = 1000 +# max_diffs = 100 +# concurrency = 8 +# interval = 30 +# +# How long without an error before a node's error count is reset. This will +# also be how long before a node is reenabled after suppression is triggered. +# error_suppression_interval = 60 +# +# How many errors can accumulate before a node is temporarily ignored. +# error_suppression_limit = 10 +# +# node_timeout = 10 +# conn_timeout = 0.5 +# +# The replicator also performs reclamation +# reclaim_age = 604800 +# +# Time in seconds to wait between replication passes +# Note: if the parameter 'interval' is defined then it will be used in place +# of run_pause. +# run_pause = 30 +# +# recon_cache_path = /var/cache/swift + +[account-auditor] +# You can override the default log routing for this app here (don't use set!): +# log_name = account-auditor +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# Will audit each account at most once per interval +# interval = 1800 +# +# log_facility = LOG_LOCAL0 +# log_level = INFO +# accounts_per_second = 200 +# recon_cache_path = /var/cache/swift + +[account-reaper] +# You can override the default log routing for this app here (don't use set!): +# log_name = account-reaper +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# concurrency = 25 +# interval = 3600 +# node_timeout = 10 +# conn_timeout = 0.5 +# +# Normally, the reaper begins deleting account information for deleted accounts +# immediately; you can set this to delay its work however. The value is in +# seconds; 2592000 = 30 days for example. +# delay_reaping = 0 +# +# If the account fails to be be reaped due to a persistent error, the +# account reaper will log a message such as: +# Account has not been reaped since +# You can search logs for this message if space is not being reclaimed +# after you delete account(s). +# Default is 2592000 seconds (30 days). This is in addition to any time +# requested by delay_reaping. +# reap_warn_after = 2592000 + +# Note: Put it at the beginning of the pipeline to profile all middleware. But +# it is safer to put this after healthcheck. +[filter:xprofile] +use = egg:swift#xprofile +# This option enable you to switch profilers which should inherit from python +# standard profiler. Currently the supported value can be 'cProfile', +# 'eventlet.green.profile' etc. +# profile_module = eventlet.green.profile +# +# This prefix will be used to combine process ID and timestamp to name the +# profile data file. Make sure the executing user has permission to write +# into this path (missing path segments will be created, if necessary). +# If you enable profiling in more than one type of daemon, you must override +# it with an unique value like: /var/log/swift/profile/account.profile +# log_filename_prefix = /tmp/log/swift/profile/default.profile +# +# the profile data will be dumped to local disk based on above naming rule +# in this interval. +# dump_interval = 5.0 +# +# Be careful, this option will enable profiler to dump data into the file with +# time stamp which means there will be lots of files piled up in the directory. +# dump_timestamp = false +# +# This is the path of the URL to access the mini web UI. +# path = /__profile__ +# +# Clear the data when the wsgi server shutdown. +# flush_at_shutdown = false +# +# unwind the iterator of applications +# unwind = false diff --git a/old/install-files/swift/usr/share/swift/etc/swift/container-server.j2 b/old/install-files/swift/usr/share/swift/etc/swift/container-server.j2 new file mode 100644 index 00000000..3c63b7d0 --- /dev/null +++ b/old/install-files/swift/usr/share/swift/etc/swift/container-server.j2 @@ -0,0 +1,211 @@ +[DEFAULT] +# bind_ip = 0.0.0.0 +bind_ip = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} +bind_port = 6001 +# bind_timeout = 30 +# backlog = 4096 +user = swift +swift_dir = /etc/swift +devices = /srv/node +# mount_check = true +# disable_fallocate = false +# +# Use an integer to override the number of pre-forked processes that will +# accept connections. +# workers = auto +# +# Maximum concurrent requests per worker +# max_clients = 1024 +# +# This is a comma separated list of hosts allowed in the X-Container-Sync-To +# field for containers. This is the old-style of using container sync. It is +# strongly recommended to use the new style of a separate +# container-sync-realms.conf -- see container-sync-realms.conf-sample +# allowed_sync_hosts = 127.0.0.1 +# +# You can specify default log routing here if you want: +# log_name = swift +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# The following caps the length of log lines to the value given; no limit if +# set to 0, the default. +# log_max_line_length = 0 +# +# comma separated list of functions to call to setup custom log handlers. +# functions get passed: conf, name, log_to_console, log_route, fmt, logger, +# adapted_logger +# log_custom_handlers = +# +# If set, log_udp_host will override log_address +# log_udp_host = +# log_udp_port = 514 +# +# You can enable StatsD logging here: +# log_statsd_host = localhost +# log_statsd_port = 8125 +# log_statsd_default_sample_rate = 1.0 +# log_statsd_sample_rate_factor = 1.0 +# log_statsd_metric_prefix = +# +# If you don't mind the extra disk space usage in overhead, you can turn this +# on to preallocate disk space with SQLite databases to decrease fragmentation. +# db_preallocation = off +# +# eventlet_debug = false +# +# You can set fallocate_reserve to the number of bytes you'd like fallocate to +# reserve, whether there is space for the given file size or not. +# fallocate_reserve = 0 + +[pipeline:main] +pipeline = healthcheck recon container-server + +[app:container-server] +use = egg:swift#container +# You can override the default log routing for this app here: +# set log_name = container-server +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_requests = true +# set log_address = /dev/log +# +# node_timeout = 3 +# conn_timeout = 0.5 +# allow_versions = false +# auto_create_account_prefix = . +# +# Configure parameter for creating specific server +# To handle all verbs, including replication verbs, do not specify +# "replication_server" (this is the default). To only handle replication, +# set to a True value (e.g. "True" or "1"). To handle only non-replication +# verbs, set to "False". Unless you have a separate replication network, you +# should not specify any value for "replication_server". +# replication_server = false + +[filter:healthcheck] +use = egg:swift#healthcheck +# An optional filesystem path, which if present, will cause the healthcheck +# URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE" +# disable_path = + +[filter:recon] +use = egg:swift#recon +recon_cache_path = /var/cache/swift + +[container-replicator] +# You can override the default log routing for this app here (don't use set!): +# log_name = container-replicator +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# vm_test_mode = no +# per_diff = 1000 +# max_diffs = 100 +# concurrency = 8 +# interval = 30 +# node_timeout = 10 +# conn_timeout = 0.5 +# +# The replicator also performs reclamation +# reclaim_age = 604800 +# +# Time in seconds to wait between replication passes +# Note: if the parameter 'interval' is defined then it will be used in place +# of run_pause. +# run_pause = 30 +# +# recon_cache_path = /var/cache/swift + +[container-updater] +# You can override the default log routing for this app here (don't use set!): +# log_name = container-updater +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# interval = 300 +# concurrency = 4 +# node_timeout = 3 +# conn_timeout = 0.5 +# +# slowdown will sleep that amount between containers +# slowdown = 0.01 +# +# Seconds to suppress updating an account that has generated an error +# account_suppression_time = 60 +# +# recon_cache_path = /var/cache/swift + +[container-auditor] +# You can override the default log routing for this app here (don't use set!): +# log_name = container-auditor +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# Will audit each container at most once per interval +# interval = 1800 +# +# containers_per_second = 200 +# recon_cache_path = /var/cache/swift + +[container-sync] +# You can override the default log routing for this app here (don't use set!): +# log_name = container-sync +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# If you need to use an HTTP Proxy, set it here; defaults to no proxy. +# You can also set this to a comma separated list of HTTP Proxies and they will +# be randomly used (simple load balancing). +# sync_proxy = http://10.1.1.1:8888,http://10.1.1.2:8888 +# +# Will sync each container at most once per interval +# interval = 300 +# +# Maximum amount of time to spend syncing each container per pass +# container_time = 60 +# +# Maximum amount of time in seconds for the connection attempt +# conn_timeout = 5 +# Server errors from requests will be retried by default +# request_tries = 3 +# +# Internal client config file path +# internal_client_conf_path = /etc/swift/internal-client.conf + +# Note: Put it at the beginning of the pipeline to profile all middleware. But +# it is safer to put this after healthcheck. +[filter:xprofile] +use = egg:swift#xprofile +# This option enable you to switch profilers which should inherit from python +# standard profiler. Currently the supported value can be 'cProfile', +# 'eventlet.green.profile' etc. +# profile_module = eventlet.green.profile +# +# This prefix will be used to combine process ID and timestamp to name the +# profile data file. Make sure the executing user has permission to write +# into this path (missing path segments will be created, if necessary). +# If you enable profiling in more than one type of daemon, you must override +# it with an unique value like: /var/log/swift/profile/container.profile +# log_filename_prefix = /tmp/log/swift/profile/default.profile +# +# the profile data will be dumped to local disk based on above naming rule +# in this interval. +# dump_interval = 5.0 +# +# Be careful, this option will enable profiler to dump data into the file with +# time stamp which means there will be lots of files piled up in the directory. +# dump_timestamp = false +# +# This is the path of the URL to access the mini web UI. +# path = /__profile__ +# +# Clear the data when the wsgi server shutdown. +# flush_at_shutdown = false +# +# unwind the iterator of applications +# unwind = false diff --git a/old/install-files/swift/usr/share/swift/etc/swift/object-server.j2 b/old/install-files/swift/usr/share/swift/etc/swift/object-server.j2 new file mode 100644 index 00000000..19d72f6c --- /dev/null +++ b/old/install-files/swift/usr/share/swift/etc/swift/object-server.j2 @@ -0,0 +1,306 @@ +[DEFAULT] +# bind_ip = 0.0.0.0 +bind_ip = {{ MANAGEMENT_INTERFACE_IP_ADDRESS }} +bind_port = 6000 +# bind_timeout = 30 +# backlog = 4096 +user = swift +swift_dir = /etc/swift +devices = /srv/node +# mount_check = true +# disable_fallocate = false +# expiring_objects_container_divisor = 86400 +# expiring_objects_account_name = expiring_objects +# +# Use an integer to override the number of pre-forked processes that will +# accept connections. +# workers = auto +# +# Maximum concurrent requests per worker +# max_clients = 1024 +# +# You can specify default log routing here if you want: +# log_name = swift +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# The following caps the length of log lines to the value given; no limit if +# set to 0, the default. +# log_max_line_length = 0 +# +# comma separated list of functions to call to setup custom log handlers. +# functions get passed: conf, name, log_to_console, log_route, fmt, logger, +# adapted_logger +# log_custom_handlers = +# +# If set, log_udp_host will override log_address +# log_udp_host = +# log_udp_port = 514 +# +# You can enable StatsD logging here: +# log_statsd_host = localhost +# log_statsd_port = 8125 +# log_statsd_default_sample_rate = 1.0 +# log_statsd_sample_rate_factor = 1.0 +# log_statsd_metric_prefix = +# +# eventlet_debug = false +# +# You can set fallocate_reserve to the number of bytes you'd like fallocate to +# reserve, whether there is space for the given file size or not. +# fallocate_reserve = 0 +# +# Time to wait while attempting to connect to another backend node. +# conn_timeout = 0.5 +# Time to wait while sending each chunk of data to another backend node. +# node_timeout = 3 +# Time to wait while receiving each chunk of data from a client or another +# backend node. +# client_timeout = 60 +# +# network_chunk_size = 65536 +# disk_chunk_size = 65536 + +[pipeline:main] +pipeline = healthcheck recon object-server + +[app:object-server] +use = egg:swift#object +# You can override the default log routing for this app here: +# set log_name = object-server +# set log_facility = LOG_LOCAL0 +# set log_level = INFO +# set log_requests = true +# set log_address = /dev/log +# +# max_upload_time = 86400 +# slow = 0 +# +# Objects smaller than this are not evicted from the buffercache once read +# keep_cache_size = 5242880 +# +# If true, objects for authenticated GET requests may be kept in buffer cache +# if small enough +# keep_cache_private = false +# +# on PUTs, sync data every n MB +# mb_per_sync = 512 +# +# Comma separated list of headers that can be set in metadata on an object. +# This list is in addition to X-Object-Meta-* headers and cannot include +# Content-Type, etag, Content-Length, or deleted +# allowed_headers = Content-Disposition, Content-Encoding, X-Delete-At, X-Object-Manifest, X-Static-Large-Object +# +# auto_create_account_prefix = . +# +# A value of 0 means "don't use thread pools". A reasonable starting point is +# 4. +# threads_per_disk = 0 +# +# Configure parameter for creating specific server +# To handle all verbs, including replication verbs, do not specify +# "replication_server" (this is the default). To only handle replication, +# set to a True value (e.g. "True" or "1"). To handle only non-replication +# verbs, set to "False". Unless you have a separate replication network, you +# should not specify any value for "replication_server". +# replication_server = false +# +# Set to restrict the number of concurrent incoming REPLICATION requests +# Set to 0 for unlimited +# Note that REPLICATION is currently an ssync only item +# replication_concurrency = 4 +# +# Restricts incoming REPLICATION requests to one per device, +# replication_currency above allowing. This can help control I/O to each +# device, but you may wish to set this to False to allow multiple REPLICATION +# requests (up to the above replication_concurrency setting) per device. +# replication_one_per_device = True +# +# Number of seconds to wait for an existing replication device lock before +# giving up. +# replication_lock_timeout = 15 +# +# These next two settings control when the REPLICATION subrequest handler will +# abort an incoming REPLICATION attempt. An abort will occur if there are at +# least threshold number of failures and the value of failures / successes +# exceeds the ratio. The defaults of 100 and 1.0 means that at least 100 +# failures have to occur and there have to be more failures than successes for +# an abort to occur. +# replication_failure_threshold = 100 +# replication_failure_ratio = 1.0 +# +# Use splice() for zero-copy object GETs. This requires Linux kernel +# version 3.0 or greater. If you set "splice = yes" but the kernel +# does not support it, error messages will appear in the object server +# logs at startup, but your object servers should continue to function. +# +# splice = no + +[filter:healthcheck] +use = egg:swift#healthcheck +# An optional filesystem path, which if present, will cause the healthcheck +# URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE" +# disable_path = + +[filter:recon] +use = egg:swift#recon +recon_cache_path = /var/cache/swift +#recon_lock_path = /var/lock + +[object-replicator] +# You can override the default log routing for this app here (don't use set!): +# log_name = object-replicator +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# vm_test_mode = no +# daemonize = on +# run_pause = 30 +# concurrency = 1 +# stats_interval = 300 +# +# The sync method to use; default is rsync but you can use ssync to try the +# EXPERIMENTAL all-swift-code-no-rsync-callouts method. Once ssync is verified +# as having performance comparable to, or better than, rsync, we plan to +# deprecate rsync so we can move on with more features for replication. +# sync_method = rsync +# +# max duration of a partition rsync +# rsync_timeout = 900 +# +# bandwidth limit for rsync in kB/s. 0 means unlimited +# rsync_bwlimit = 0 +# +# passed to rsync for io op timeout +# rsync_io_timeout = 30 +# +# node_timeout = +# max duration of an http request; this is for REPLICATE finalization calls and +# so should be longer than node_timeout +# http_timeout = 60 +# +# attempts to kill all workers if nothing replicates for lockup_timeout seconds +# lockup_timeout = 1800 +# +# The replicator also performs reclamation +# reclaim_age = 604800 +# +# ring_check_interval = 15 +# recon_cache_path = /var/cache/swift +# +# limits how long rsync error log lines are +# 0 means to log the entire line +# rsync_error_log_line_length = 0 +# +# handoffs_first and handoff_delete are options for a special case +# such as disk full in the cluster. These two options SHOULD NOT BE +# CHANGED, except for such an extreme situations. (e.g. disks filled up +# or are about to fill up. Anyway, DO NOT let your drives fill up) +# handoffs_first is the flag to replicate handoffs prior to canonical +# partitions. It allows to force syncing and deleting handoffs quickly. +# If set to a True value(e.g. "True" or "1"), partitions +# that are not supposed to be on the node will be replicated first. +# handoffs_first = False +# +# handoff_delete is the number of replicas which are ensured in swift. +# If the number less than the number of replicas is set, object-replicator +# could delete local handoffs even if all replicas are not ensured in the +# cluster. Object-replicator would remove local handoff partition directories +# after syncing partition when the number of successful responses is greater +# than or equal to this number. By default(auto), handoff partitions will be +# removed when it has successfully replicated to all the canonical nodes. +# handoff_delete = auto + +[object-reconstructor] +# You can override the default log routing for this app here (don't use set!): +# Unless otherwise noted, each setting below has the same meaning as described +# in the [object-replicator] section, however these settings apply to the EC +# reconstructor +# +# log_name = object-reconstructor +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# daemonize = on +# run_pause = 30 +# concurrency = 1 +# stats_interval = 300 +# node_timeout = 10 +# http_timeout = 60 +# lockup_timeout = 1800 +# reclaim_age = 604800 +# ring_check_interval = 15 +# recon_cache_path = /var/cache/swift +# handoffs_first = False + +[object-updater] +# You can override the default log routing for this app here (don't use set!): +# log_name = object-updater +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# interval = 300 +# concurrency = 1 +# node_timeout = +# slowdown will sleep that amount between objects +# slowdown = 0.01 +# +# recon_cache_path = /var/cache/swift + +[object-auditor] +# You can override the default log routing for this app here (don't use set!): +# log_name = object-auditor +# log_facility = LOG_LOCAL0 +# log_level = INFO +# log_address = /dev/log +# +# You can set the disk chunk size that the auditor uses making it larger if +# you like for more efficient local auditing of larger objects +# disk_chunk_size = 65536 +# files_per_second = 20 +# concurrency = 1 +# bytes_per_second = 10000000 +# log_time = 3600 +# zero_byte_files_per_second = 50 +# recon_cache_path = /var/cache/swift + +# Takes a comma separated list of ints. If set, the object auditor will +# increment a counter for every object whose size is <= to the given break +# points and report the result after a full scan. +# object_size_stats = + +# Note: Put it at the beginning of the pipleline to profile all middleware. But +# it is safer to put this after healthcheck. +[filter:xprofile] +use = egg:swift#xprofile +# This option enable you to switch profilers which should inherit from python +# standard profiler. Currently the supported value can be 'cProfile', +# 'eventlet.green.profile' etc. +# profile_module = eventlet.green.profile +# +# This prefix will be used to combine process ID and timestamp to name the +# profile data file. Make sure the executing user has permission to write +# into this path (missing path segments will be created, if necessary). +# If you enable profiling in more than one type of daemon, you must override +# it with an unique value like: /var/log/swift/profile/object.profile +# log_filename_prefix = /tmp/log/swift/profile/default.profile +# +# the profile data will be dumped to local disk based on above naming rule +# in this interval. +# dump_interval = 5.0 +# +# Be careful, this option will enable profiler to dump data into the file with +# time stamp which means there will be lots of files piled up in the directory. +# dump_timestamp = false +# +# This is the path of the URL to access the mini web UI. +# path = /__profile__ +# +# Clear the data when the wsgi server shutdown. +# flush_at_shutdown = false +# +# unwind the iterator of applications +# unwind = false diff --git a/old/install-files/swift/usr/share/swift/etc/swift/swift.j2 b/old/install-files/swift/usr/share/swift/etc/swift/swift.j2 new file mode 100644 index 00000000..933e207e --- /dev/null +++ b/old/install-files/swift/usr/share/swift/etc/swift/swift.j2 @@ -0,0 +1,169 @@ +[swift-hash] + +# swift_hash_path_suffix and swift_hash_path_prefix are used as part of the +# the hashing algorithm when determining data placement in the cluster. +# These values should remain secret and MUST NOT change +# once a cluster has been deployed. + +swift_hash_path_suffix = {{ SWIFT_HASH_PATH_SUFFIX }} +swift_hash_path_prefix = {{ SWIFT_HASH_PATH_PREFIX }} + +# storage policies are defined here and determine various characteristics +# about how objects are stored and treated. Policies are specified by name on +# a per container basis. Names are case-insensitive. The policy index is +# specified in the section header and is used internally. The policy with +# index 0 is always used for legacy containers and can be given a name for use +# in metadata however the ring file name will always be 'object.ring.gz' for +# backwards compatibility. If no policies are defined a policy with index 0 +# will be automatically created for backwards compatibility and given the name +# Policy-0. A default policy is used when creating new containers when no +# policy is specified in the request. If no other policies are defined the +# policy with index 0 will be declared the default. If multiple policies are +# defined you must define a policy with index 0 and you must specify a +# default. It is recommended you always define a section for +# storage-policy:0. +# +# A 'policy_type' argument is also supported but is not mandatory. Default +# policy type 'replication' is used when 'policy_type' is unspecified. +[storage-policy:0] +name = Policy-0 +default = yes +#policy_type = replication + +# the following section would declare a policy called 'silver', the number of +# replicas will be determined by how the ring is built. In this example the +# 'silver' policy could have a lower or higher # of replicas than the +# 'Policy-0' policy above. The ring filename will be 'object-1.ring.gz'. You +# may only specify one storage policy section as the default. If you changed +# this section to specify 'silver' as the default, when a client created a new +# container w/o a policy specified, it will get the 'silver' policy because +# this config has specified it as the default. However if a legacy container +# (one created with a pre-policy version of swift) is accessed, it is known +# implicitly to be assigned to the policy with index 0 as opposed to the +# current default. +#[storage-policy:1] +#name = silver +#policy_type = replication + +# The following declares a storage policy of type 'erasure_coding' which uses +# Erasure Coding for data reliability. The 'erasure_coding' storage policy in +# Swift is available as a "beta". Please refer to Swift documentation for +# details on how the 'erasure_coding' storage policy is implemented. +# +# Swift uses PyECLib, a Python Erasure coding API library, for encode/decode +# operations. Please refer to Swift documentation for details on how to +# install PyECLib. +# +# When defining an EC policy, 'policy_type' needs to be 'erasure_coding' and +# EC configuration parameters 'ec_type', 'ec_num_data_fragments' and +# 'ec_num_parity_fragments' must be specified. 'ec_type' is chosen from the +# list of EC backends supported by PyECLib. The ring configured for the +# storage policy must have it's "replica" count configured to +# 'ec_num_data_fragments' + 'ec_num_parity_fragments' - this requirement is +# validated when services start. 'ec_object_segment_size' is the amount of +# data that will be buffered up before feeding a segment into the +# encoder/decoder. More information about these configuration options and +# supported `ec_type` schemes is available in the Swift documentation. Please +# refer to Swift documentation for details on how to configure EC policies. +# +# The example 'deepfreeze10-4' policy defined below is a _sample_ +# configuration with 10 'data' and 4 'parity' fragments. 'ec_type' +# defines the Erasure Coding scheme. 'jerasure_rs_vand' (Reed-Solomon +# Vandermonde) is used as an example below. +# +#[storage-policy:2] +#name = deepfreeze10-4 +#policy_type = erasure_coding +#ec_type = jerasure_rs_vand +#ec_num_data_fragments = 10 +#ec_num_parity_fragments = 4 +#ec_object_segment_size = 1048576 + + +# The swift-constraints section sets the basic constraints on data +# saved in the swift cluster. These constraints are automatically +# published by the proxy server in responses to /info requests. + +[swift-constraints] + +# max_file_size is the largest "normal" object that can be saved in +# the cluster. This is also the limit on the size of each segment of +# a "large" object when using the large object manifest support. +# This value is set in bytes. Setting it to lower than 1MiB will cause +# some tests to fail. It is STRONGLY recommended to leave this value at +# the default (5 * 2**30 + 2). + +#max_file_size = 5368709122 + + +# max_meta_name_length is the max number of bytes in the utf8 encoding +# of the name portion of a metadata header. + +#max_meta_name_length = 128 + + +# max_meta_value_length is the max number of bytes in the utf8 encoding +# of a metadata value + +#max_meta_value_length = 256 + + +# max_meta_count is the max number of metadata keys that can be stored +# on a single account, container, or object + +#max_meta_count = 90 + + +# max_meta_overall_size is the max number of bytes in the utf8 encoding +# of the metadata (keys + values) + +#max_meta_overall_size = 4096 + +# max_header_size is the max number of bytes in the utf8 encoding of each +# header. Using 8192 as default because eventlet use 8192 as max size of +# header line. This value may need to be increased when using identity +# v3 API tokens including more than 7 catalog entries. +# See also include_service_catalog in proxy-server.conf-sample +# (documented in overview_auth.rst) + +#max_header_size = 8192 + + +# max_object_name_length is the max number of bytes in the utf8 encoding +# of an object name + +#max_object_name_length = 1024 + + +# container_listing_limit is the default (and max) number of items +# returned for a container listing request + +#container_listing_limit = 10000 + + +# account_listing_limit is the default (and max) number of items returned +# for an account listing request +#account_listing_limit = 10000 + + +# max_account_name_length is the max number of bytes in the utf8 encoding +# of an account name + +#max_account_name_length = 256 + + +# max_container_name_length is the max number of bytes in the utf8 encoding +# of a container name + +#max_container_name_length = 256 + + +# By default all REST API calls should use "v1" or "v1.0" as the version string, +# for example "/v1/account". This can be manually overridden to make this +# backward-compatible, in case a different version string has been used before. +# Use a comma-separated list in case of multiple allowed versions, for example +# valid_api_versions = v0,v1,v2 +# This is only enforced for account, container and object requests. The allowed +# api versions are by default excluded from /info. + +# valid_api_versions = v1,v1.0 diff --git a/old/install-files/swift/usr/share/swift/hosts b/old/install-files/swift/usr/share/swift/hosts new file mode 100644 index 00000000..5b97818d --- /dev/null +++ b/old/install-files/swift/usr/share/swift/hosts @@ -0,0 +1 @@ +localhost ansible_connection=local diff --git a/old/install-files/swift/usr/share/swift/swift-storage.yml b/old/install-files/swift/usr/share/swift/swift-storage.yml new file mode 100644 index 00000000..62a335ed --- /dev/null +++ b/old/install-files/swift/usr/share/swift/swift-storage.yml @@ -0,0 +1,24 @@ +--- +- hosts: localhost + vars_files: + - swift-storage-vars.yml + vars: + remote_user: root + tasks: + - user: name=swift comment="Swift user" + - file: path=/etc/swift owner=swift group=swift state=directory recurse=yes + + - template: src=/usr/share/swift/etc/rsyncd.j2 dest=/etc/rsyncd.conf + mode=0644 owner=swift group=swift + + - template: src=/usr/share/swift/etc/swift/{{ item }}.j2 + dest=/etc/swift/{{ item }}.conf mode=0644 owner=swift group=swift + with_items: + - account-server + - container-server + - object-server + - swift + + - file: path=/srv/node owner=swift group=swift state=directory recurse=yes + - file: path=/var/cache/swift owner=swift group=swift state=directory + recurse=yes diff --git a/old/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys b/old/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys new file mode 100644 index 00000000..18a9c00f --- /dev/null +++ b/old/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key diff --git a/old/install-files/vagrant-files/manifest b/old/install-files/vagrant-files/manifest new file mode 100644 index 00000000..67168341 --- /dev/null +++ b/old/install-files/vagrant-files/manifest @@ -0,0 +1,4 @@ +0040755 0 0 /home +0040755 1000 0000 /home/vagrant +0040700 1000 1000 /home/vagrant/.ssh +0100600 1000 1000 /home/vagrant/.ssh/authorized_keys diff --git a/old/ivi/clusters/ivi-system-armv7lhf-jetson-deploy.morph b/old/ivi/clusters/ivi-system-armv7lhf-jetson-deploy.morph new file mode 100644 index 00000000..b7d54749 --- /dev/null +++ b/old/ivi/clusters/ivi-system-armv7lhf-jetson-deploy.morph @@ -0,0 +1,18 @@ +name: ivi-system-armv7lhf-jetson-deploy +kind: cluster +description: Deploy a IVI system. +systems: +- morph: ivi/systems/ivi-system-armv7lhf-jetson.morph + deploy: + ivi-system-armv7lhf-jetson: + type: extensions/rawdisk + location: /ivi-system-armv7lhf-jetson.img + HOSTNAME: ivi-system-armv7lhf-jetson + DISK_SIZE: 6G + BOOT_DEVICE: /dev/mmcblk0p1 + ROOT_DEVICE: /dev/mmcblk0p2 + 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/old/ivi/clusters/ivi-system-x86_32-deploy.morph b/old/ivi/clusters/ivi-system-x86_32-deploy.morph new file mode 100644 index 00000000..9adaa196 --- /dev/null +++ b/old/ivi/clusters/ivi-system-x86_32-deploy.morph @@ -0,0 +1,24 @@ +name: ivi-system-x86_32-deploy +kind: cluster +description: | + Deploy a stock IVI system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: ivi/systems/ivi-system-x86_32.morph + deploy: + ivi-system-x86_32: + type: extensions/rawdisk + location: /ivi-system-x86_32.img + HOSTNAME: ivi-system-x86-32 + DISK_SIZE: 6G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_32.morph + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz diff --git a/old/ivi/clusters/ivi-system-x86_64-deploy.morph b/old/ivi/clusters/ivi-system-x86_64-deploy.morph new file mode 100644 index 00000000..5e18cd39 --- /dev/null +++ b/old/ivi/clusters/ivi-system-x86_64-deploy.morph @@ -0,0 +1,24 @@ +name: ivi-system-x86_64-deploy +kind: cluster +description: | + Deploy a stock IVI system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: ivi/systems/ivi-system-x86_64.morph + deploy: + ivi-system-x86_64: + type: extensions/rawdisk + location: /ivi-system-x86_64.img + HOSTNAME: ivi-system-x86-64 + DISK_SIZE: 6G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz diff --git a/old/ivi/strata/bsp-x86_32-ivi.morph b/old/ivi/strata/bsp-x86_32-ivi.morph new file mode 100644 index 00000000..383a9c29 --- /dev/null +++ b/old/ivi/strata/bsp-x86_32-ivi.morph @@ -0,0 +1,12 @@ +name: bsp-x86_32-ivi +kind: stratum +description: Set of components required for booting a 32-bit + x86 based system, with some options specific to IVI systems. +build-depends: +- morph: strata/bsp-x86_both-tools.morph +chunks: +- name: linux-x86-32-ivi + morph: ivi/strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph + repo: upstream:linux + ref: 523d939ef98fd712632d93a5a2b588e477a7565e + unpetrify-ref: v4.7 diff --git a/old/ivi/strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph b/old/ivi/strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph new file mode 100644 index 00000000..c4ff83f6 --- /dev/null +++ b/old/ivi/strata/bsp-x86_32-ivi/linux-x86-32-ivi.morph @@ -0,0 +1,84 @@ +name: linux-x86-32-ivi +kind: chunk +products: +- artifact: linux-x86-32-ivi-devel + include: + - (usr/)?src/linux/.* +- artifact: linux-x86-32-ivi-bins + include: + - boot/.* +- artifact: linux-x86-32-ivi-libs + include: + - lib/.* +configure-commands: +- make defconfig +- scripts/config -e ATA +- scripts/config -e ATA_PIIX +- scripts/config -e AUTOFS4_FS +- scripts/config -e BLK_DEV_BSG +- scripts/config -e BLK_DEV_SD +- scripts/config -e BTRFS_FS +- scripts/config -e BTRFS_FS_POSIX_ACL +- scripts/config -e CFS_BANDWIDTH +- scripts/config -e CGROUPS +- scripts/config -e CGROUP_SCHED +- scripts/config -e CHECKPOINT_RESTORE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config -e DEVTMPFS +- scripts/config -e DMIID +- scripts/config -e EFIVAR_FS +- scripts/config -e EFI_PARTITION +- scripts/config -e EPOLL +- scripts/config -e FAIR_GROUP_SCHED +- scripts/config -e FHANDLE +- scripts/config -d FW_LOADER_USER_HELPER +- scripts/config -e INOTIFY_USER +- scripts/config -e IPV6 +- scripts/config -e NET +- scripts/config -e NET_NS +- scripts/config -e PROC_FS +- scripts/config -e SATA_AHCI +- scripts/config -e SCSI +- scripts/config -e SCSI_MOD +- scripts/config -e SECCOMP +- scripts/config -e SIGNALFD +- scripts/config -e SYSFS +- scripts/config -d SYSFS_DEPRECATED +- scripts/config -e TIMERFD +- scripts/config -e TMPFS_POSIX_ACL +- scripts/config -e TMPFS_XATTR +- scripts/config -e UEVENT_HELPER_PATH="" +- scripts/config -m CONFIG_DRM_CIRRUS_QEMU +- scripts/config -m CONFIG_DRM_BOCHS +- scripts/config -m CONFIG_DRM_VIRTIO_GPU +- scripts/config -m CONFIG_BT_INTEL +- scripts/config -m CONFIG_MOSTCORE +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make INSTALL_PATH="$DESTDIR"/boot install +- make INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -d "$DESTDIR$PREFIX/src/linux" +- | + ( + printf 'Makefile\0' + printf 'Module.symvers\0' + find arch/x86 -maxdepth 1 -name 'Makefile*' -print0 + find arch/x86 \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print0 + find arch/x86 \( -type d -a \( -name include -o -name scripts \) \) -o \ + \! -type d -a \( -path '*include/*' -o -path '*scripts/*' \) -print0 + find include -name 'asm*' -prune -o -print0 + find include/asm-generic -print0 + find include/uapi -print0 + find scripts -print0 + ) | cpio -0pumd "$DESTDIR$PREFIX/src/linux" +system-integration: + linux-x86-32-ivi-misc: + # This is required for any modules to work correctly. However, it depends + # `depmod` from the 'kmod' chunk in the 'foundation' stratum, so it runs + # conditionally on `depmod` existing to avoid breaking in + # minimal-system-x86_32. + 00-depmod: + - if which depmod; then (cd /usr/lib/modules && for version in *; do depmod -a "$version"; done) fi diff --git a/old/ivi/strata/bsp-x86_64-ivi.morph b/old/ivi/strata/bsp-x86_64-ivi.morph new file mode 100644 index 00000000..84d305ed --- /dev/null +++ b/old/ivi/strata/bsp-x86_64-ivi.morph @@ -0,0 +1,12 @@ +name: bsp-x86_64-ivi +kind: stratum +description: Set of components required for booting a 64-bit + x86 based system, with some options specific to IVI systems. +build-depends: +- morph: strata/bsp-x86_both-tools.morph +chunks: +- name: linux-x86-64-ivi + morph: ivi/strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph + repo: upstream:linux + ref: 523d939ef98fd712632d93a5a2b588e477a7565e + unpetrify-ref: v4.7 diff --git a/old/ivi/strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph b/old/ivi/strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph new file mode 100644 index 00000000..21d82571 --- /dev/null +++ b/old/ivi/strata/bsp-x86_64-ivi/linux-x86-64-ivi.morph @@ -0,0 +1,84 @@ +name: linux-x86-64-ivi +kind: chunk +products: +- artifact: linux-x86-64-ivi-devel + include: + - (usr/)?src/linux/.* +- artifact: linux-x86-64-ivi-bins + include: + - boot/.* +- artifact: linux-x86-64-ivi-libs + include: + - lib/.* +configure-commands: +- make defconfig +- scripts/config -e ATA +- scripts/config -e ATA_PIIX +- scripts/config -e AUTOFS4_FS +- scripts/config -e BLK_DEV_BSG +- scripts/config -e BLK_DEV_SD +- scripts/config -e BTRFS_FS +- scripts/config -e BTRFS_FS_POSIX_ACL +- scripts/config -e CFS_BANDWIDTH +- scripts/config -e CGROUPS +- scripts/config -e CGROUP_SCHED +- scripts/config -e CHECKPOINT_RESTORE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config -e DEVTMPFS +- scripts/config -e DMIID +- scripts/config -e EFIVAR_FS +- scripts/config -e EFI_PARTITION +- scripts/config -e EPOLL +- scripts/config -e FAIR_GROUP_SCHED +- scripts/config -e FHANDLE +- scripts/config -d FW_LOADER_USER_HELPER +- scripts/config -e INOTIFY_USER +- scripts/config -e IPV6 +- scripts/config -e NET +- scripts/config -e NET_NS +- scripts/config -e PROC_FS +- scripts/config -e SATA_AHCI +- scripts/config -e SCSI +- scripts/config -e SCSI_MOD +- scripts/config -e SECCOMP +- scripts/config -e SIGNALFD +- scripts/config -e SYSFS +- scripts/config -d SYSFS_DEPRECATED +- scripts/config -e TIMERFD +- scripts/config -e TMPFS_POSIX_ACL +- scripts/config -e TMPFS_XATTR +- scripts/config -e UEVENT_HELPER_PATH="" +- scripts/config -m CONFIG_DRM_CIRRUS_QEMU +- scripts/config -m CONFIG_DRM_BOCHS +- scripts/config -m CONFIG_DRM_VIRTIO_GPU +- scripts/config -m CONFIG_BT_INTEL +- scripts/config -m CONFIG_MOSTCORE +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make INSTALL_PATH="$DESTDIR"/boot install +- make INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -d "$DESTDIR$PREFIX/src/linux" +- | + ( + printf 'Makefile\0' + printf 'Module.symvers\0' + find arch/x86 -maxdepth 1 -name 'Makefile*' -print0 + find arch/x86 \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print0 + find arch/x86 \( -type d -a \( -name include -o -name scripts \) \) -o \ + \! -type d -a \( -path '*include/*' -o -path '*scripts/*' \) -print0 + find include -name 'asm*' -prune -o -print0 + find include/asm-generic -print0 + find include/uapi -print0 + find scripts -print0 + ) | cpio -0pumd "$DESTDIR$PREFIX/src/linux" +system-integration: + linux-x86-64-ivi-misc: + # This is required for any modules to work correctly. However, it depends + # `depmod` from the 'kmod' chunk in the 'foundation' stratum, so it runs + # conditionally on `depmod` existing to avoid breaking in + # minimal-system-x86_64. + 00-depmod: + - if which depmod; then (cd /usr/lib/modules && for version in *; do depmod -a "$version"; done) fi diff --git a/old/ivi/strata/qt5-ivi.morph b/old/ivi/strata/qt5-ivi.morph new file mode 100644 index 00000000..360faa39 --- /dev/null +++ b/old/ivi/strata/qt5-ivi.morph @@ -0,0 +1,17 @@ +name: qt5-ivi +kind: stratum +description: Qt5 IVI stratum +build-depends: +- morph: strata/ruby.morph +- morph: strata/qt5-tools.morph +chunks: +- name: qtapplicationmanager + morph: ivi/strata/qt5-ivi/qtapplicationmanager.morph + repo: upstream:qt5/qtapplicationmanager + ref: fb9670e9e381aa391e5fe3eccd76db0f7b866abb + unpetrify-ref: "5.7" +- name: qtivi + repo: upstream:qt5/qtivi + ref: 36616e36cb1f0b30aa9ca7977af7a5b682689f7a + unpetrify-ref: "5.7" + build-system: qmake diff --git a/old/ivi/strata/qt5-ivi/qtapplicationmanager.morph b/old/ivi/strata/qt5-ivi/qtapplicationmanager.morph new file mode 100644 index 00000000..45f2c07a --- /dev/null +++ b/old/ivi/strata/qt5-ivi/qtapplicationmanager.morph @@ -0,0 +1,8 @@ +name: qtapplicationmanager +kind: chunk +build-system: qmake +configure-commands: +- qmake -config install-prefix=$PREFIX +post-install-commands: +- mkdir -p $DESTDIR/opt/am +- cp -r template-opt/am/* $DESTDIR/opt/am/ diff --git a/old/ivi/strata/rvi.morph b/old/ivi/strata/rvi.morph new file mode 100644 index 00000000..8fd11874 --- /dev/null +++ b/old/ivi/strata/rvi.morph @@ -0,0 +1,11 @@ +name: rvi +kind: stratum +build-depends: +- morph: strata/bluetooth.morph +- morph: strata/erlang.morph +chunks: +- name: rvi_core + morph: ivi/strata/rvi/rvi_core.morph + repo: upstream:rvi/rvi_core + ref: 9a3db2baecdddbfba8e8bfeb71038e4de6a44225 + unpetrify-ref: v0.5.0 diff --git a/old/ivi/strata/rvi/rvi_core.morph b/old/ivi/strata/rvi/rvi_core.morph new file mode 100644 index 00000000..c34f8a97 --- /dev/null +++ b/old/ivi/strata/rvi/rvi_core.morph @@ -0,0 +1,16 @@ +name: rvi_core +kind: chunk +build-system: manual +build-commands: +- | + make deps + make compile + make escript +install-commands: +- | + make DESTDIR="$DESTDIR" install + install -d "$DESTDIR"/usr/lib/systemd/system + install -m 0644 yocto_template/rvi.service "$DESTDIR"/usr/lib/systemd/system +post-install-commands: +- echo "genivi.org/node/$(cat /proc/sys/kernel/random/uuid)" > "$DESTDIR"/etc/opt/rvi/device_id +- install -m 0644 priv/config/rvi_common.config "$DESTDIR"/etc/opt/rvi/rvi.config diff --git a/old/ivi/systems/ivi-system-armv7lhf-jetson.morph b/old/ivi/systems/ivi-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..552e31ac --- /dev/null +++ b/old/ivi/systems/ivi-system-armv7lhf-jetson.morph @@ -0,0 +1,94 @@ +name: ivi-system-armv7lhf-jetson +kind: system +description: A generic IVI system with components from GENIVI and AGL +arch: armv7lhf +strata: +- name: bluetooth + morph: strata/bluetooth.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: data-indexing-management + morph: strata/data-indexing-management.morph +- name: device-management + morph: strata/device-management.morph +- name: dlna-services + morph: strata/dlna-services.morph +- name: foundation + morph: strata/foundation.morph +- name: geolocation + morph: strata/geolocation.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: icu-common + morph: strata/icu-common.morph +- name: input-common + morph: strata/input-common.morph +- name: ivi-common + morph: strata/ivi-common.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: multimedia-gstreamer-openmax-generic + morph: strata/multimedia-gstreamer-openmax-generic.morph +- name: navigation + morph: strata/navigation.morph +- name: network-security + morph: strata/network-security.morph +- name: NetworkManager-common + morph: strata/NetworkManager-common.morph +- name: privileges-management + morph: strata/privileges-management.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-gobject + morph: strata/python3-gobject.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebengine + morph: strata/qt5-tools-qtwebengine.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: ruby + morph: strata/ruby.morph +- name: samba + morph: strata/samba.morph +- name: secret-service + morph: strata/secret-service.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: spell-checking + morph: strata/spell-checking.morph +- name: storage-management + morph: strata/storage-management.morph +- name: vala-common + morph: strata/vala-common.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/install-essential-files diff --git a/old/ivi/systems/ivi-system-x86_32.morph b/old/ivi/systems/ivi-system-x86_32.morph new file mode 100644 index 00000000..12f5efc3 --- /dev/null +++ b/old/ivi/systems/ivi-system-x86_32.morph @@ -0,0 +1,104 @@ +name: ivi-system-x86_32 +kind: system +description: A generic IVI system with components from GENIVI and AGL +arch: x86_32 +strata: +- name: bluetooth + morph: strata/bluetooth.morph +- name: bsp-x86_both-tools + morph: strata/bsp-x86_both-tools.morph +- name: bsp-x86_32-ivi + morph: ivi/strata/bsp-x86_32-ivi.morph +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: data-indexing-management + morph: strata/data-indexing-management.morph +- name: device-management + morph: strata/device-management.morph +- name: dlna-services + morph: strata/dlna-services.morph +- name: erlang + morph: strata/erlang.morph +- name: foundation + morph: strata/foundation.morph +- name: geolocation + morph: strata/geolocation.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: icu-common + morph: strata/icu-common.morph +- name: input-common + morph: strata/input-common.morph +- name: ivi-common + morph: strata/ivi-common.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-hardware-codecs-x86 + morph: strata/multimedia-hardware-codecs-x86.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: multimedia-gstreamer-openmax-generic + morph: strata/multimedia-gstreamer-openmax-generic.morph +- name: navigation + morph: strata/navigation.morph +- name: network-security + morph: strata/network-security.morph +- name: NetworkManager-common + morph: strata/NetworkManager-common.morph +- name: privileges-management + morph: strata/privileges-management.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-gobject + morph: strata/python3-gobject.morph +- name: qt5-ivi + morph: ivi/strata/qt5-ivi.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebengine + morph: strata/qt5-tools-qtwebengine.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: ruby + morph: strata/ruby.morph +- name: samba + morph: strata/samba.morph +- name: secret-service + morph: strata/secret-service.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: spell-checking + morph: strata/spell-checking.morph +- name: storage-management + morph: strata/storage-management.morph +- name: vala-common + morph: strata/vala-common.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: rvi + morph: ivi/strata/rvi.morph +configuration-extensions: +- extensions/set-hostname +- extensions/install-essential-files diff --git a/old/ivi/systems/ivi-system-x86_64.morph b/old/ivi/systems/ivi-system-x86_64.morph new file mode 100644 index 00000000..2a42f003 --- /dev/null +++ b/old/ivi/systems/ivi-system-x86_64.morph @@ -0,0 +1,104 @@ +name: ivi-system-x86_64 +kind: system +description: A generic IVI system with components from GENIVI and AGL +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: bsp-x86_both-tools + morph: strata/bsp-x86_both-tools.morph +- name: bsp-x86_64-ivi + morph: ivi/strata/bsp-x86_64-ivi.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: data-indexing-management + morph: strata/data-indexing-management.morph +- name: device-management + morph: strata/device-management.morph +- name: dlna-services + morph: strata/dlna-services.morph +- name: erlang + morph: strata/erlang.morph +- name: foundation + morph: strata/foundation.morph +- name: geolocation + morph: strata/geolocation.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: icu-common + morph: strata/icu-common.morph +- name: input-common + morph: strata/input-common.morph +- name: ivi-common + morph: strata/ivi-common.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: llvm-common + morph: strata/llvm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-hardware-codecs-x86 + morph: strata/multimedia-hardware-codecs-x86.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: multimedia-gstreamer-openmax-generic + morph: strata/multimedia-gstreamer-openmax-generic.morph +- name: navigation + morph: strata/navigation.morph +- name: network-security + morph: strata/network-security.morph +- name: NetworkManager-common + morph: strata/NetworkManager-common.morph +- name: privileges-management + morph: strata/privileges-management.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-gobject + morph: strata/python3-gobject.morph +- name: qt5-ivi + morph: ivi/strata/qt5-ivi.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebengine + morph: strata/qt5-tools-qtwebengine.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: ruby + morph: strata/ruby.morph +- name: samba + morph: strata/samba.morph +- name: secret-service + morph: strata/secret-service.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: spell-checking + morph: strata/spell-checking.morph +- name: storage-management + morph: strata/storage-management.morph +- name: vala-common + morph: strata/vala-common.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: rvi + morph: ivi/strata/rvi.morph +configuration-extensions: +- extensions/set-hostname +- extensions/install-essential-files diff --git a/old/migrations b/old/migrations new file mode 100644 index 00000000..2b0104d2 --- /dev/null +++ b/old/migrations @@ -0,0 +1,3 @@ +The content of the definitions/migrations directory is now at + +http://git.baserock.org/cgit/baserock/baserock/spec.git/tree/migrations diff --git a/old/partitioning/default b/old/partitioning/default new file mode 100644 index 00000000..5e34afbf --- /dev/null +++ b/old/partitioning/default @@ -0,0 +1,9 @@ +start_offset: 2048 +partition_table_format: mbr +partitions: +- description: rootfs + size: fill + fdisk_type: 0x83 + filesystem: btrfs + mountpoint: / + boot: yes diff --git a/old/partitioning/socfpga-devkit b/old/partitioning/socfpga-devkit new file mode 100644 index 00000000..4a982427 --- /dev/null +++ b/old/partitioning/socfpga-devkit @@ -0,0 +1,26 @@ +start_offset: 2048 +partition_table_format: mbr +partitions: +- description: pre-loader + filesystem: none + fdisk_type: 0xa2 + number: 3 + size: 1M + raw_files: + - file: boot/socfpga-preloader.img + - file: boot/u-boot.img +- description: boot + filesystem: vfat + mountpoint: /boot + fdisk_type: 0x0b + number: 1 + size: 100M +- description: root + filesystem: btrfs + mountpoint: / + fdisk_type: 0x83 + number: 2 + size: fill +raw_files: +- file: boot/socfpga-devkit-env.img + offset_bytes: 512 diff --git a/old/scripts/check-unpetrify-refs.py b/old/scripts/check-unpetrify-refs.py new file mode 100755 index 00000000..c70b680d --- /dev/null +++ b/old/scripts/check-unpetrify-refs.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# Copyright (C) 2016 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. + +import os +import glob +import argparse +import subprocess + +import scriptslib + + +''' +Script for checking unpetrify-refs in strata. + +Without args this script will check everything in strata/, or each stratum +given on the command-line and will print on stdout whether a chunk has +a missing or non-existent unpetrify-ref and if it fails to check the remote +(missing repo). +''' + +strata_dir = "strata" + +def ref_exists(remote, ref): + output = subprocess.check_output( + ["git", "ls-remote", remote, str(ref)], + stderr=subprocess.STDOUT).strip() + return True if output else False + +def main(): + parser = argparse.ArgumentParser( + description="Sanity checks unpetrify-refs in Baserock strata") + parser.add_argument("--trove-host", default="git.baserock.org", + help="Trove host to map repo aliases to") + parser.add_argument("strata", nargs="*", metavar="STRATA", + help="The strata to check (checks all by default)") + args = parser.parse_args() + + if args.strata: + strata = args.strata + else: + strata_path = os.path.join(scriptslib.definitions_root(), strata_dir) + strata = glob.glob("%s/*.morph" % strata_path) + + for stratum in strata: + path = os.path.relpath(stratum) + morphology = scriptslib.load_yaml_file(stratum) + for chunk in morphology['chunks']: + unpetrify_ref = chunk.get("unpetrify-ref") + if not unpetrify_ref: + print ("%s: '%s' has no unpetrify-ref!" % + (path, chunk['name'])) + continue + remote = scriptslib.parse_repo_alias(chunk['repo'], args.trove_host) + try: + if not ref_exists(remote, unpetrify_ref): + print ("%s: unpetrify-ref for '%s' is not present on the " + "remote (%s)!" % (path, chunk['name'], remote)) + except subprocess.CalledProcessError as e: + print ("%s: failed to ls-remote (%s) for chunk '%s':\n%s" % + (path, remote, chunk['name'], e.output.strip())) + +if __name__ == "__main__": + main() diff --git a/old/scripts/cycle.sh b/old/scripts/cycle.sh new file mode 100755 index 00000000..c0e2aa67 --- /dev/null +++ b/old/scripts/cycle.sh @@ -0,0 +1,61 @@ +#!/bin/sh +# 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. + +usage() { + 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 by default, or [newversion] if" + echo "specified, and is set to be the default for next boot." +} + +if [ -z "$1" ] || [ -z "$2" ] || [ ! -z "$4" ] ; then + usage + exit 1 +fi + +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 + +set -e +set -v + +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=$newversion +system-version-manager list diff --git a/old/scripts/licensecheck.pl b/old/scripts/licensecheck.pl new file mode 100644 index 00000000..5b6d0d33 --- /dev/null +++ b/old/scripts/licensecheck.pl @@ -0,0 +1,604 @@ +#!/usr/bin/perl +# This script was originally based on the script of the same name from +# the KDE SDK (by dfaure@kde.org) +# +# This version is +# Copyright (C) 2007, 2008 Adam D. Barratt +# Copyright (C) 2012 Francesco Poli +# +# 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; either version 2 of the License, or +# (at your option) any later version. +# +# 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, see . + +=head1 NAME + +licensecheck - simple license checker for source files + +=head1 SYNOPSIS + +B B<--help>|B<--version> + +B [B<--no-conf>] [B<--verbose>] [B<--copyright>] +[B<-l>|B<--lines=>I] [B<-i>|B<--ignore=>I] [B<-c>|B<--check=>I] +[B<-m>|B<--machine>] [B<-r>|B<--recursive>] +I + +=head1 DESCRIPTION + +B attempts to determine the license that applies to each file +passed to it, by searching the start of the file for text belonging to +various licenses. + +If any of the arguments passed are directories, B will add +the files contained within to the list of files to process. + +=head1 OPTIONS + +=over 4 + +=item B<--verbose>, B<--no-verbose> + +Specify whether to output the text being processed from each file before +the corresponding license information. + +Default is to be quiet. + +=item B<-l=>I, B<--lines=>I + +Specify the number of lines of each file's header which should be parsed +for license information. (Default is 60). + +=item B<-i=>I, B<--ignore=>I + +When processing the list of files and directories, the regular +expression specified by this option will be used to indicate those which +should not be considered (e.g. backup files, VCS metadata). + +=item B<-r>, B<--recursive> + +Specify that the contents of directories should be added +recursively. + +=item B<-c=>I, B<--check=>I + +Specify a pattern against which filenames will be matched in order to +decide which files to check the license of. + +The default includes common source files. + +=item B<--copyright> + +Also display copyright text found within the file + +=item B<-m>, B<--machine> + +Display the information in a machine readable way, i.e. in the form +[] so that it can be easily sorted +and/or filtered, e.g. with the B and B commands. +Note that using the B<--verbose> option will kill the readability. + +=item B<--no-conf>, B<--noconf> + +Do not read any configuration files. This can only be used as the first +option given on the command line. + +=back + +=head1 CONFIGURATION VARIABLES + +The two configuration files F and +F<~/.devscripts> are sourced by a shell in that order to set +configuration variables. Command line options can be used to override +configuration file settings. Environment variable settings are +ignored for this purpose. The currently recognised variables are: + +=over 4 + +=item B + +If this is set to I, then it is the same as the B<--verbose> command +line parameter being used. The default is I. + +=item B + +If this is set to a positive number then the specified number of lines +at the start of each file will be read whilst attempting to determine +the license(s) in use. This is equivalent to the B<--lines> command line +option. + +=back + +=head1 LICENSE + +This code is copyright by Adam D. Barratt >, +all rights reserved; based on a script of the same name from the KDE +SDK, which is copyright by >. +This program comes with ABSOLUTELY NO WARRANTY. +You are free to redistribute this code under the terms of the GNU +General Public License, version 2 or later. + +=head1 AUTHOR + +Adam D. Barratt + +=cut + +use strict; +use warnings; +use Getopt::Long qw(:config gnu_getopt); +use File::Basename; + +my $progname = basename($0); + +# From dpkg-source +my $default_ignore_regex = ' +# Ignore general backup files +(?:^|/).*~$| +# Ignore emacs recovery files +(?:^|/)\.#.*$| +# Ignore vi swap files +(?:^|/)\..*\.swp$| +# Ignore baz-style junk files or directories +(?:^|/),,.*(?:$|/.*$)| +# File-names that should be ignored (never directories) +(?:^|/)(?:DEADJOE|\.cvsignore|\.arch-inventory|\.bzrignore|\.gitignore)$| +# File or directory names that should be ignored +(?:^|/)(?:CVS|RCS|\.pc|\.deps|\{arch\}|\.arch-ids|\.svn|\.hg|_darcs|\.git| +\.shelf|_MTN|\.bzr(?:\.backup|tags)?)(?:$|/.*$) +'; + +# Take out comments and newlines +$default_ignore_regex =~ s/^#.*$//mg; +$default_ignore_regex =~ s/\n//sg; + +my $default_check_regex = '\.(c(c|pp|xx)?|h(h|pp|xx)?|f(77|90)?|go|p(l|m)|xs|sh|php|py(|x)|rb|java|js|vala|el|sc(i|e)|cs|pas|inc|dtd|xsl|mod|m|tex|mli?|(c|l)?hs)$'; + +my $modified_conf_msg; + +my %OPT=( + verbose => '', + lines => '', + noconf => '', + ignore => '', + check => '', + recursive => 0, + copyright => 0, + machine => 0, +); + +my $def_lines = 60; + +# Read configuration files and then command line +# This is boilerplate + +if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) { + $modified_conf_msg = " (no configuration files read)"; + shift; +} else { + my @config_files = ('/etc/devscripts.conf', '~/.devscripts'); + my %config_vars = ( + 'LICENSECHECK_VERBOSE' => 'no', + 'LICENSECHECK_PARSELINES' => $def_lines, + ); + my %config_default = %config_vars; + + my $shell_cmd; + # Set defaults + foreach my $var (keys %config_vars) { + $shell_cmd .= qq[$var="$config_vars{$var}";\n]; + } + $shell_cmd .= 'for file in ' . join(" ", @config_files) . "; do\n"; + $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n"; + # Read back values + foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" } + my $shell_out = `/bin/bash -c '$shell_cmd'`; + @config_vars{keys %config_vars} = split /\n/, $shell_out, -1; + + # Check validity + $config_vars{'LICENSECHECK_VERBOSE'} =~ /^(yes|no)$/ + or $config_vars{'LICENSECHECK_VERBOSE'} = 'no'; + $config_vars{'LICENSECHECK_PARSELINES'} =~ /^[1-9][0-9]*$/ + or $config_vars{'LICENSECHECK_PARSELINES'} = $def_lines; + + foreach my $var (sort keys %config_vars) { + if ($config_vars{$var} ne $config_default{$var}) { + $modified_conf_msg .= " $var=$config_vars{$var}\n"; + } + } + $modified_conf_msg ||= " (none)\n"; + chomp $modified_conf_msg; + + $OPT{'verbose'} = $config_vars{'LICENSECHECK_VERBOSE'} eq 'yes' ? 1 : 0; + $OPT{'lines'} = $config_vars{'LICENSECHECK_PARSELINES'}; +} + +GetOptions(\%OPT, + "help|h", + "check|c=s", + "copyright", + "ignore|i=s", + "lines|l=i", + "machine|m", + "noconf|no-conf", + "recursive|r", + "verbose!", + "version|v", +) or die "Usage: $progname [options] filelist\nRun $progname --help for more details\n"; + +$OPT{'lines'} = $def_lines if $OPT{'lines'} !~ /^[1-9][0-9]*$/; +$OPT{'ignore'} = $default_ignore_regex if ! length $OPT{'ignore'}; +$OPT{'check'} = $default_check_regex if ! length $OPT{'check'}; + +if ($OPT{'noconf'}) { + fatal("--no-conf is only acceptable as the first command-line option!"); +} +if ($OPT{'help'}) { help(); exit 0; } +if ($OPT{'version'}) { version(); exit 0; } + +die "Usage: $progname [options] filelist\nRun $progname --help for more details\n" unless @ARGV; + +$OPT{'lines'} = $def_lines if not defined $OPT{'lines'}; + +my @files = (); +my @find_args = (); +my $files_count = @ARGV; + +push @find_args, qw(-maxdepth 1) unless $OPT{'recursive'}; +push @find_args, qw(-follow -type f -print); + +while (@ARGV) { + my $file = shift @ARGV; + + if (-d $file) { + open my $FIND, '-|', 'find', $file, @find_args + or die "$progname: couldn't exec find: $!\n"; + + while (<$FIND>) { + chomp; + next unless m%$OPT{'check'}%; + # Skip empty files + next if (-z $_); + push @files, $_ unless m%$OPT{'ignore'}%; + } + close $FIND; + } else { + next unless ($files_count == 1) or $file =~ m%$OPT{'check'}%; + push @files, $file unless $file =~ m%$OPT{'ignore'}%; + } +} + +while (@files) { + my $file = shift @files; + my $content = ''; + my $copyright_match; + my $copyright = ''; + my $license = ''; + my %copyrights; + + open (my $F, '<' ,$file) or die "Unable to access $file\n"; + while (<$F>) { + last if ($. > $OPT{'lines'}); + $content .= $_; + $copyright_match = parse_copyright($_); + if ($copyright_match) { + $copyrights{lc("$copyright_match")} = "$copyright_match"; + } + } + close($F); + + $copyright = join(" / ", reverse sort values %copyrights); + + print qq(----- $file header -----\n$content----- end header -----\n\n) + if $OPT{'verbose'}; + + $license = parselicense(clean_comments($content)); + + if ($OPT{'machine'}) { + print "$file\t$license"; + print "\t" . ($copyright or "*No copyright*") if $OPT{'copyright'}; + print "\n"; + } else { + print "$file: "; + print "*No copyright* " unless $copyright; + print $license . "\n"; + print " [Copyright: " . $copyright . "]\n" + if $copyright and $OPT{'copyright'}; + print "\n" if $OPT{'copyright'}; + } +} + +sub parse_copyright { + my $copyright = ''; + my $match; + + my $copyright_indicator_regex = ' + (?:copyright # The full word + |copr\. # Legally-valid abbreviation + |\x{00a9} # Unicode character COPYRIGHT SIGN + |\xc2\xa9 # Unicode copyright sign encoded in iso8859 + |\(c\) # Legally-null representation of sign + )'; + my $copyright_disindicator_regex = ' + \b(?:info(?:rmation)? # Discussing copyright information + |(notice|statement|claim|string)s? # Discussing the notice + |and|or|is|in|to # Part of a sentence + |(holder|owner)s? # Part of a sentence + |ownership # Part of a sentence + )\b'; + my $copyright_predisindicator_regex = '( + ^[#]define\s+.*\(c\) # #define foo(c) -- not copyright + )'; + + if ( ! m%$copyright_predisindicator_regex%ix) { + + if (m%$copyright_indicator_regex(?::\s*|\s+)(\S.*)$%ix) { + $match = $1; + + # Ignore lines matching "see foo for copyright information" etc. + if ($match !~ m%^\s*$copyright_disindicator_regex%ix) { + # De-cruft + $match =~ s/([,.])?\s*$//; + $match =~ s/$copyright_indicator_regex//igx; + $match =~ s/^\s+//; + $match =~ s/\s{2,}/ /g; + $match =~ s/\\@/@/g; + $copyright = $match; + } + } + } + + return $copyright; +} + +sub clean_comments { + local $_ = shift or return q{}; + + # Remove generic comments: look for 4 or more lines beginning with + # regular comment pattern and trim it. Fall back to old algorithm + # if no such pattern found. + my @matches = m/^\s*([^a-zA-Z0-9\s]{1,3})\s\w/mg; + if (@matches >= 4) { + my $comment_re = qr/\s*[\Q$matches[0]\E]{1,3}\s*/; + s/^$comment_re//mg; + } + + # Remove Fortran comments + s/^[cC] //gm; + tr/\t\r\n/ /; + + # Remove C / C++ comments + s#(\*/|/[/*])##g; + tr% A-Za-z.,@;0-9\(\)/-%%cd; + tr/ //s; + + return $_; +} + +sub help { + print <<"EOF"; +Usage: $progname [options] filename [filename ...] +Valid options are: + --help, -h Display this message + --version, -v Display version and copyright info + --no-conf, --noconf Don't read devscripts config files; must be + the first option given + --verbose Display the header of each file before its + license information + --lines, -l Specify how many lines of the file header + should be parsed for license information + (Default: $def_lines) + --check, -c Specify a pattern indicating which files should + be checked + (Default: '$default_check_regex') + --machine, -m Display in a machine readable way (good for awk) + --recursive, -r Add the contents of directories recursively + --copyright Also display the file's copyright + --ignore, -i Specify that files / directories matching the + regular expression should be ignored when + checking files + (Default: '$default_ignore_regex') + +Default settings modified by devscripts configuration files: +$modified_conf_msg +EOF +} + +sub version { + print <<"EOF"; +This is $progname, from the Debian devscripts package, version ###VERSION### +Copyright (C) 2007, 2008 by Adam D. Barratt ; based +on a script of the same name from the KDE SDK by . + +This program comes with ABSOLUTELY NO WARRANTY. +You are free to redistribute this code under the terms of the +GNU General Public License, version 2, or (at your option) any +later version. +EOF +} + +sub parselicense { + my ($licensetext) = @_; + + my $gplver = ""; + my $extrainfo = ""; + my $license = ""; + + if ($licensetext =~ /version ([^, ]+?)[.,]? (?:\(?only\)?.? )?(?:of the GNU (Affero )?(Lesser |Library )?General Public License )?(as )?published by the Free Software Foundation/i or + $licensetext =~ /GNU (?:Affero )?(?:Lesser |Library )?General Public License (?:as )?published by the Free Software Foundation[;,] version ([^, ]+?)[.,]? /i) { + + $gplver = " (v$1)"; + } elsif ($licensetext =~ /GNU (?:Affero )?(?:Lesser |Library )?General Public License, version (\d+(?:\.\d+)?)[ \.]/) { + $gplver = " (v$1)"; + } elsif ($licensetext =~ /either version ([^ ]+)(?: of the License)?, or \(at your option\) any later version/) { + $gplver = " (v$1 or later)"; + } elsif ($licensetext =~ /either version ([^ ]+)(?: of the License)?, or \(at your option\) version (\d(?:[\.-]\d+)*)/) { + $gplver = " (v$1 or v$2)"; + } + + if ($licensetext =~ /(?:675 Mass Ave|59 Temple Place|51 Franklin Steet|02139|02111-1307)/i) { + $extrainfo = " (with incorrect FSF address)$extrainfo"; + } + + if ($licensetext =~ /permission (?:is (also granted|given))? to link (the code of )?this program with (any edition of )?(Qt|the Qt library)/i) { + $extrainfo = " (with Qt exception)$extrainfo" + } + + if ($licensetext =~ /(All changes made in this file will be lost|DO NOT (EDIT|delete this file)|Generated (automatically|by|from)|generated.*file)/i) { + $license = "GENERATED FILE"; + } + + if ($licensetext =~ /((is free software.? )?you can redistribute (it|them) and\/or modify (it|them)|is licensed) under the terms of (version [^ ]+ of )?the (GNU (Library |Lesser )General Public License|LGPL)/i) { + $license = "LGPL$gplver$extrainfo $license"; + } + + if ($licensetext =~ /is free software.? you can redistribute (it|them) and\/or modify (it|them) under the terms of the (GNU Affero General Public License|AGPL)/i) { + $license = "AGPL$gplver$extrainfo $license"; + } + + if ($licensetext =~ /(is free software.? )?you (can|may) redistribute (it|them) and\/or modify (it|them) under the terms of (?:version [^ ]+ (?:\(?only\)? )?of )?the GNU General Public License/i) { + $license = "GPL$gplver$extrainfo $license"; + } + + if ($licensetext =~ /is distributed under the terms of the GNU General Public License,/ + and length $gplver) { + $license = "GPL$gplver$extrainfo $license"; + } + + if ($licensetext =~ /is distributed.*terms.*GPL/) { + $license = "GPL (unversioned/unknown version) $license"; + } + + if ($licensetext =~ /This file is part of the .*Qt GUI Toolkit. This file may be distributed under the terms of the Q Public License as defined/) { + $license = "QPL (part of Qt) $license"; + } elsif ($licensetext =~ /may (be distributed|redistribute it) under the terms of the Q Public License/) { + $license = "QPL $license"; + } + + if ($licensetext =~ /opensource\.org\/licenses\/mit-license\.php/) { + $license = "MIT/X11 (BSD like) $license"; + } elsif ($licensetext =~ /Permission is hereby granted, free of charge, to any person obtaining a copy of this software and(\/or)? associated documentation files \(the (Software|Materials)\), to deal in the (Software|Materials)/) { + $license = "MIT/X11 (BSD like) $license"; + } elsif ($licensetext =~ /Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose/) { + $license = "MIT/X11 (BSD like) $license"; + } + + if ($licensetext =~ /Permission to use, copy, modify, and(\/or)? distribute this software for any purpose with or without fee is hereby granted, provided.*copyright notice.*permission notice.*all copies/) { + $license = "ISC $license"; + } + + if ($licensetext =~ /THIS SOFTWARE IS PROVIDED .*AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY/) { + if ($licensetext =~ /All advertising materials mentioning features or use of this software must display the following acknowledge?ment.*This product includes software developed by/i) { + $license = "BSD (4 clause) $license"; + } elsif ($licensetext =~ /(The name(?:\(s\))? .*? may not|Neither the (names? .*?|authors?) nor the names of( (its|their|other|any))? contributors may) be used to endorse or promote products derived from this software/i) { + $license = "BSD (3 clause) $license"; + } elsif ($licensetext =~ /Redistributions of source code must retain the above copyright notice/i) { + $license = "BSD (2 clause) $license"; + } else { + $license = "BSD $license"; + } + } + + if ($licensetext =~ /Mozilla Public License,? (Version|v\.) (\d+(?:\.\d+)?)/) { + $license = "MPL (v$2) $license"; + } + + if ($licensetext =~ /Released under the terms of the Artistic License ([^ ]+)/) { + $license = "Artistic (v$1) $license"; + } + + if ($licensetext =~ /is free software under the Artistic [Ll]icense/) { + $license = "Artistic $license"; + } + + if ($licensetext =~ /This program is free software; you can redistribute it and\/or modify it under the same terms as Perl itself/) { + $license = "Perl $license"; + } + + if ($licensetext =~ /under the Apache License, Version ([^ ]+)/) { + $license = "Apache (v$1) $license"; + } + + if ($licensetext =~ /(THE BEER-WARE LICENSE)/i) { + $license = "Beerware $license"; + } + + if ($licensetext =~ /This source file is subject to version ([^ ]+) of the PHP license/) { + $license = "PHP (v$1) $license"; + } + + if ($licensetext =~ /under the terms of the CeCILL /) { + $license = "CeCILL $license"; + } + + if ($licensetext =~ /under the terms of the CeCILL-([^ ]+) /) { + $license = "CeCILL-$1 $license"; + } + + if ($licensetext =~ /under the SGI Free Software License B/) { + $license = "SGI Free Software License B $license"; + } + + if ($licensetext =~ /is in the public domain/i) { + $license = "Public domain $license"; + } + + if ($licensetext =~ /terms of the Common Development and Distribution License(, Version ([^(]+))? \(the License\)/) { + $license = "CDDL " . ($1 ? "(v$2) " : '') . $license; + } + + if ($licensetext =~ /Microsoft Permissive License \(Ms-PL\)/) { + $license = "Ms-PL $license"; + } + + if ($licensetext =~ /Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license \(the \"Software\"\)/ or + $licensetext =~ /Boost Software License([ ,-]+Version ([^ ]+)?(\.))/i) { + $license = "BSL " . ($1 ? "(v$2) " : '') . $license; + } + + if ($licensetext =~ /PYTHON SOFTWARE FOUNDATION LICENSE (VERSION ([^ ]+))/i) { + $license = "PSF " . ($1 ? "(v$2) " : '') . $license; + } + + if ($licensetext =~ /The origin of this software must not be misrepresented.*Altered source versions must be plainly marked as such.*This notice may not be removed or altered from any source distribution/ or + $licensetext =~ /see copyright notice in zlib\.h/) { + $license = "zlib/libpng $license"; + } elsif ($licensetext =~ /This code is released under the libpng license/) { + $license = "libpng $license"; + } + + if ($licensetext =~ /Do What The Fuck You Want To Public License, Version ([^, ]+)/i) { + $license = "WTFPL (v$1) $license"; + } + + if ($licensetext =~ /Do what The Fuck You Want To Public License/i) { + $license = "WTFPL $license"; + } + + if ($licensetext =~ /(License WTFPL|Under (the|a) WTFPL)/i) { + $license = "WTFPL $license"; + } + + $license = "UNKNOWN" if (!length($license)); + + # Remove trailing spaces. + $license =~ s/\s+$//; + + return $license; +} + +sub fatal { + my ($pack,$file,$line); + ($pack,$file,$line) = caller(); + (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d; + $msg =~ s/\n\n$/\n/; + die $msg; +} diff --git a/old/scripts/licensecheck.py b/old/scripts/licensecheck.py new file mode 100755 index 00000000..08d0e1b4 --- /dev/null +++ b/old/scripts/licensecheck.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python +# Copyright (C) 2016 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. + +import argparse +import errno +import os +import pipes +import re +import string +import subprocess +import sys +import tempfile + +import scriptslib + + +gpl3_chunks = ("autoconf", + "autoconf-tarball", + "automake", + "bash", + "binutils", + "bison", + "ccache", + "cmake", + "flex", + "gawk", + "gcc", + "gdbm", + "gettext-tarball", + "gperf", + "groff", + "libtool", + "libtool-tarball", + "m4-tarball", + "make", + "nano", + "patch", + "rsync", + "texinfo-tarball") + + +def license_file_name(repo_name, sha, licenses_dir): + license_file = os.path.join(licenses_dir, repo_name + '-' + sha) + return license_file + + +def check_license(repo_name, sha, clone_path, license_file): + + licenses_dir = os.path.dirname(license_file) + + try: + os.makedirs(licenses_dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + _, license_file_temp = tempfile.mkstemp(dir=licenses_dir) + with open(license_file_temp,"wb") as out: + sys.stderr.write("Checking license of '%s' ...\n" % repo_name) + with open(os.devnull, 'w') as devnull: + subprocess.check_call("perl scripts/licensecheck.pl -r " + + pipes.quote(clone_path) + "|cut -d: -f2- | sort -u", + stdout=out, stderr=devnull, shell=True) + + os.rename(license_file_temp, license_file) + return license_file + + +def check_repo_if_needed(name, repo, ref, repos_dir, licenses_dir): + repo_name = re.split('/|:',repo)[-1] + if repo_name.endswith(".git"): + repo_name = repo_name[:-4] + + repo_url = scriptslib.parse_repo_alias(repo) + + # Check if ref is sha1 to speedup + if len(ref) == 40 and all(c in string.hexdigits for c in ref): + license_file = license_file_name(repo_name, ref, licenses_dir) + if os.path.isfile(license_file): + return (repo, license_file) + + clone_path = os.path.join(repos_dir, repo_name) + + if os.path.isdir(clone_path): + sys.stderr.write("Updating repo '%s' ...\n" % repo_name) + with open(os.devnull, 'w') as devnull: + subprocess.check_call([ + "git", "remote", "update", "origin", "--prune"], + stderr=devnull, stdout=devnull, cwd=clone_path) + # Update submodules + subprocess.check_call( + ["git", "submodule", "update", "--recursive"], + stderr=devnull, stdout=devnull, cwd=clone_path) + subprocess.check_call(["git", "checkout", ref], stderr=devnull, + stdout=devnull, cwd=clone_path) + else: + sys.stderr.write("Getting repo '%s' ...\n" % repo_name) + with open(os.devnull, 'w') as devnull: + try: + # Attempt to use morph to obtain a repository, from morph's + # existing local git cache if possible + subprocess.check_call( + ["morph", "get-repo", name, clone_path], + stdout=devnull, stderr=devnull) + + except (OSError, subprocess.CalledProcessError): + # Fall back to git clone, when morph hasn't been found on the + # system, or otherwise fails to get a repo. This is required + # where morph isn't available, e.g. when using YBD to build. + # YBD currently doesn't offer a similar 'get-repo' feature. + sys.stderr.write("Falling back to git clone.\n") + subprocess.check_call( + ["git", "clone", "--recursive", repo_url, clone_path], + stdout=devnull, stderr=devnull) # also clone submodules + + sha = subprocess.check_output( + ["git", "rev-parse", "HEAD"], cwd=clone_path).strip() + + license_file = license_file_name(repo_name, sha, licenses_dir) + if os.path.isfile(license_file): + return (repo, license_file) + + return (repo, check_license(repo_name, sha, clone_path, license_file)) + + +def check_stratum(stratum_file, repos_dir, licenses_dir): + stratum = scriptslib.load_yaml_file(stratum_file) + license_files = [] + for chunk in stratum['chunks']: + + name = chunk["name"] + build_mode = chunk.get("build-mode") # Allowed to be None + + # Don't include bootstrap chunks and stripped gplv3 chunks + if name in gpl3_chunks or build_mode == "bootstrap": + continue + repo = chunk["repo"] + ref = chunk["ref"] + yield check_repo_if_needed(name, repo, ref, repos_dir, licenses_dir) + + +def main(): + + parser = argparse.ArgumentParser( + description='Checks licenses of the components of a given System.') + parser.add_argument('system', metavar='SYSTEM', type=str, + help='System to check for licenses') + parser.add_argument('--repos-dir', default="./repos", + help='DIR to clone all the repos (default ./repos)') + parser.add_argument('--licenses-dir', default="./licenses", + help='DIR to store chunk license files (default ./licenses)') + + args = parser.parse_args() + + if not os.path.exists(args.repos_dir): + os.makedirs(args.repos_dir) + + system = scriptslib.load_yaml_file(args.system) + license_files = [] + for stratum in system['strata']: + stratum_file = stratum['morph'] + stratum_path = os.path.join(scriptslib.definitions_root(), stratum_file) + license_files.extend(check_stratum(stratum_path, args.repos_dir, args.licenses_dir)) + + for chunk_repo, chunk_license in license_files: + try: + # Print repo name + sys.stdout.write("%s\n%s\n" % (chunk_repo, '-' * len(chunk_repo))) + + # Print license file of the repo + with open(chunk_license, 'r') as f: + for line in f: + sys.stdout.write(line) + sys.stdout.write("\n") + except IOError: + # stdout is closed, no point in continuing + # Attempt to close them explicitly to prevent cleanup problems: + try: + sys.stdout.flush() + sys.stdout.close() + except IOError: + pass + finally: + exit() + + +if __name__ == "__main__": + main() diff --git a/old/scripts/organize-morphologies.py b/old/scripts/organize-morphologies.py new file mode 100755 index 00000000..3072c8f8 --- /dev/null +++ b/old/scripts/organize-morphologies.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python +# Copyright (C) 2014-2016 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. + +import json +import morphlib +import os +import subprocess +import sys +import urllib +import urllib2 +import urlparse +import yaml +import re +import errno + +''' organize-morphologies.py: +Tool for organizing morphologies in definitions. + +This script will move: + - cluster morphologies into clusters directory + - system morphologies into systems directory + - stratum morphologies into strata directory + +This script will download the chunk morphologies for every stratum +and placed into strata/stratum_which_the_chunk_belongs_to directory. + +It also modifies the morphologies fields which points to some morpholgy +which has been moved. +''' + + +def make_request(path): + server_url = 'http://git.baserock.org:8080/' + url = urlparse.urljoin(server_url, '/1.0/%s' % path) + handle = urllib2.urlopen(url) + return handle.read() + +def quote(*args): + return tuple(urllib.quote(string) for string in args) + +def cat_file(repo, ref, filename): + return make_request('files?repo=%s&ref=%s&filename=%s' % + quote(repo, ref, filename)) + +# NOTE: This function reimplement part of morphlib's loader +def sanitise_morphology_path(morph_field, morph_kind, belongs_to='None'): + '''This function receives the name or the morph field of one morphology + and returns the path of the morphology depending on the name, kind and + if it belongs to other morphologies. + ''' + # Dictionary which match morphology's kind and morphology's + # directory in definitions.git + morph_dir = { 'chunk': 'chunks', 'stratum': 'strata', + 'system':'systems', 'cluster': 'clusters'} + # For chunks morphologies we need to know to which stratums + # belongs this chunk. + if morph_kind == 'chunk': + if belongs_to == '': + raise morphlib.Error('Chunk morphologies need the stratum name' + 'to create the path. Please add the stratum' + 'which belongs this morphology') + # Get the name of the chunk which we assume is at the end + # of the morph file + if '/' in morph_field: + morph_field = os.path.basename(morph_field) + + # Add the stratum name to the chunk name + morph_field = os.path.join(belongs_to, morph_field) + + # Reset the kind to stratum because chunk contains stratum + # name in its path. + morph_kind = 'stratum' + + # Add the morphology path to the morph field. + if not morph_field.startswith(morph_dir[morph_kind]): + morph_field = os.path.join(morph_dir[morph_kind], morph_field) + + # Add the morphology suffix if the morphology. + if not morph_field.endswith('.morph'): + morph_field = morph_field + '.morph' + + return morph_field + +def create_directory(name, path): + directory = os.path.join(path, name) + try: + os.makedirs(directory) + except OSError as err: + if err.errno != errno.EEXIST: + raise err + else: + pass + return directory + +def move_file(morph, directory, path, loader): + if not morph.filename.startswith(directory): + filename = os.path.basename(morph.filename) + new_location = os.path.join(path, filename) + print '\nMoving %s into %s' % (filename, new_location) + subprocess.call(['git', 'mv', morph.filename, new_location]) + morph.filename = new_location + loader.unset_defaults(morph) + loader.save_to_file(morph.filename, morph) + +def load_and_fix_chunk(chunk_str, loader, name): + try: + chunk_morph = loader.load_from_string(chunk_str) + except morphlib.morphloader.InvalidFieldError as err: + if "comments" in str(err): + # This error is caused because there are old morphologies which + # contain the field "comments" instead of "description". + # Replacing "comments" field by "description" will allow the morphology + # to pass parse_morphology_text check and ready to be written to a file. + fixed_chunk = loader.parse_morphology_text(chunk_str, name) + fixed_chunk['description'] = fixed_chunk.pop('comments') + print "WARNING: Invalid 'comments' field in " \ + "%s corrected to 'description'" % name + chunk_morph = load_and_fix_chunk(str(fixed_chunk), loader, name) + elif "buildsystem" in str(err): + # This error is caused because a typo in a morphology which + # has a field "buildsystem" instead of "build-system". + fixed_chunk = loader.parse_morphology_text(chunk_str, name) + fixed_chunk['build-system'] = fixed_chunk.pop('buildsystem') + print "WARNING: Invalid 'buildsystem' field in %s" \ + "corrected to 'build-system'" % name + chunk_morph = load_and_fix_chunk(str(fixed_chunk), loader, name) + else: + print "ERROR: %s in chunk %s" %(err, name) + raise err + except morphlib.morphloader.MorphologyNotYamlError as err: + print "WARNING: %s in chunk %s is not valid YAML, " \ + "attempting to fix..." %(err, name) + # This error is caused because there are old morphologies written + # in JSON which contain '\t' characters. When try to load this + # kind of morphologies load_from_string fails when parse_morphology_text. + # Removing this characters will make load_from_string to load the morphology + # and translate it into a correct yaml format. + fixed_chunk = chunk_str.replace('\t','') + print "INFO: %s successfully fixed" % name + chunk_morph = load_and_fix_chunk(fixed_chunk, loader, name) + return chunk_morph + +def move_clusters(morphs, path, loader): + kind = 'system' + directory = 'clusters' + # Move cluster morphologies to clusters folder fixing their dependent + # morphologies which are systems. + full_path = create_directory(directory, path) + for morph in morphs: + all_systems = morph['systems'][:] + for system in morph['systems']: + all_systems.extend(system.get('subsystems', [])) + # Add the correct path to the morph fields for systems and subsystems + for field in all_systems: + field['morph'] = sanitise_morphology_path(field['morph'], kind) + move_file(morph, directory, full_path, loader) + +def move_systems(morphs, path, loader): + kind = 'stratum' + directory = 'systems' + # Move system morphologies to systems folder fixing their dependent + # morphologies which are strata. + full_path = create_directory(directory, path) + for morph in morphs: + # Add name field and the correct path to the stratum on the morph + # fields in strata. + for field in morph['strata']: + field['name'] = os.path.basename(field['morph']) + field['morph'] = sanitise_morphology_path(field['morph'], kind) + move_file(morph, directory, full_path, loader) + +def download_chunks(morph, loader): + # Download chunks morphologies defined on the stratum and + # add them to the directory tree. + for chunk in morph['chunks']: + name = chunk['name'] + '.morph' + try: + chunk['morph'] = sanitise_morphology_path(chunk['morph'], 'chunk', morph['name']) + except KeyError as err: + if 'morph' in str(err): + chunk['morph'] = sanitise_morphology_path(chunk['name'], 'chunk', morph['name']) + else: + raise err + ref = chunk['ref'] + repo = scriptslib.parse_repo_alias(chunk['repo']) + try: + print "\nDownloading %s from %s into %s" %(name, repo, chunk['morph']) + chunk_str = cat_file(repo, ref, name) + except urllib2.HTTPError as err: + # If there is no morphology in the repository we assume that the morphology + # system will be autodetected, so we don't have to create a new one + # unless we shut down the autodetecting system (fallback system). + if err.code == 404: + print 'INFO: Morph will fall-back to build-time' \ + 'autodetection for %s' %(name) + # Remove morph field from autodetected chunks + del chunk['morph'] + else: + loaded_chunk = load_and_fix_chunk(chunk_str, loader, name) + loader.unset_defaults(loaded_chunk) + loader.save_to_file(chunk['morph'], loaded_chunk) + +def move_strata(morphs, path, loader): + # Create strata directory + strata_dir = 'strata/' + strata_path = create_directory(strata_dir, path) + for morph in morphs: + # Create stratum directory where downloading its chunks. + stratum_path = strata_path + morph['name'] + stratum_dir = create_directory(stratum_path, path) + + # Download chunks which belongs to the stratum + download_chunks(morph, loader) + + # Add to build-depends the correct path to the dependent stratum morphologies. + for build_depends in morph['build-depends']: + build_depends['morph'] = sanitise_morphology_path(build_depends['morph'], 'stratum') + # Move stratum morphologies to strata + move_file(morph, strata_dir, strata_path, loader) + +def main(): + # Load all morphologies in the definitions repo + sb = morphlib.sysbranchdir.open_from_within('.') + loader = morphlib.morphloader.MorphologyLoader() + morphs = [m for m in sb.load_all_morphologies(loader)] + + # Clasify the morphologies regarding of their kind field + morphologies = { kind: [m for m in morphs if m['kind'] == kind] + for kind in ('chunk', 'stratum', 'system', 'cluster') } + + for kind, morphs in morphologies.iteritems(): + print 'There are: %d %s.\n' %(len(morphs), kind) + + # Get the path from definitions repo + definitions_repo = sb.get_git_directory_name(sb.root_repository_url) + + # Move the morphologies to its directories + move_clusters(morphologies['cluster'], definitions_repo, loader) + move_systems(morphologies['system'], definitions_repo, loader) + move_strata(morphologies['stratum'], definitions_repo, loader) + +main() diff --git a/old/scripts/release-build b/old/scripts/release-build new file mode 100755 index 00000000..cb62f661 --- /dev/null +++ b/old/scripts/release-build @@ -0,0 +1,192 @@ +#!/usr/bin/env 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. + + +import cliapp +import morphlib +import os +import subprocess +import sys +import time + + +class Build(object): + '''A single distbuild instance.''' + + def __init__(self, name, arch, app): + self.system_name = name + + controller_netloc = app.controllers[arch].split(':') + controller_args = [ + '--controller-initiator-address=%s' % controller_netloc[0], + ] + if len(controller_netloc) > 1: + controller_args.append( + '--controller-initiator-port=%s' % controller_netloc[1]) + + self.command = ['morph', 'distbuild', '--local-changes=ignore'] + self.command += controller_args + [self.system_name] + + def start(self): + self.process = subprocess.Popen(self.command) + + def completed(self): + return (self.process.poll() is not None) + + +class ReleaseApp(cliapp.Application): + + '''Cliapp app that handles distbuilding and deploying a cluster.''' + + def add_settings(self): + self.settings.string_list(['controllers'], + 'a list of distbuild controllers and their ' + 'architecture') + + self.settings.string(['trove-host'], + 'hostname of Trove instance') + + self.settings.string(['artifact-cache-server'], + 'server to fetch artifacts from', default=None) + + self.settings.string(['release-number'], + 'Baserock version of the systems being built', + default='yy.ww') + + def error(self, message): + raise cliapp.AppException(message) + + def check_args(self, args): + if len(args) == 0: + self.error( + "Please pass the name of the release cluster (e.g. " + "clusters/release.morph)") + + if len(args) > 1: + self.error("Too many arguments given.") + + def process_args(self, args): + '''Process the command line''' + self.controllers = {} + controllers_list = self.settings['controllers'] + + for item in controllers_list: + arch, controller = item.split(':', 1) + self.controllers[arch] = controller + + defs_repo = morphlib.definitions_repo.open( + '.', search_for_root=True) + self.loader = defs_repo.get_morphology_loader() + self.finder = morphlib.morphologyfinder.MorphologyFinder(defs_repo) + + self.check_args(args) + + cluster_name = args[0] + cluster, cluster_path = self.load_morphology(cluster_name) + + builds = self.prepare_builds(cluster) + for build in builds: + build.start() + + while not all(build.completed() for build in builds): + time.sleep(1) + + fail = False + for build in builds: + if build.process.returncode != 0: + fail = True + sys.stderr.write( + 'Building failed for %s\n' % build.system_name) + if fail: + raise cliapp.AppException('Building of systems failed') + + if not os.path.exists('release'): + os.mkdir('release') + self.deploy_images(cluster, cluster_path) + + def load_morphology(self, name, kind=None): + path = morphlib.util.sanitise_morphology_path(name) + morph = self.loader.load_from_string( + self.finder.read_file(path)) + if kind: + assert morph['kind'] == kind + return morph, path + + def iterate_systems(self, system_list): + for system in system_list: + yield system['morph'] + if 'subsystems' in system: + for subsystem in self.iterate_systems(system['subsystems']): + yield subsystem + + def prepare_builds(self, cluster): + '''Prepare a list of builds''' + systems = set(self.iterate_systems(cluster['systems'])) + builds = [] + for system_name in systems: + system, _ = self.load_morphology(system_name) + if system['arch'] in self.controllers: + builds.append(Build(system_name, system['arch'], self)) + else: + print("Unable to build %s: no %s distbuild available" % + (system_name, system['arch'])) + return builds + + def deploy_images(self, cluster, cluster_path): + version_label = 'baserock-%s' % self.settings['release-number'] + outputs = {} + + for system in cluster['systems']: + morphology_name = system['morph'] + morphology = self.load_morphology(morphology_name)[0] + if morphology['arch'] not in self.controllers: + continue + + for deployment_name, deployment_info in system['deploy'].iteritems(): + # The release.morph cluster must specify a basename for the file, + # of name and extension. This script knows about name, but it + # can't find out the appropriate file extension without second + # guessing the behaviour of write extensions. + basename = deployment_info['location'] + + if '/' in basename or basename.startswith(version_label): + raise cliapp.AppException( + 'In %s: system %s.location should be just the base name, ' + 'e.g. "%s.img"' % (cluster_path, deployment_name, deployment_name)) + + filename = os.path.join('release', '%s-%s' % (version_label, basename)) + if os.path.exists(filename): + self.output.write('Reusing existing deployment of %s\n' % filename) + else: + self.output.write('Creating %s from release.morph\n' % filename) + self.deploy_single_image(cluster_path, deployment_name, filename, version_label) + + def deploy_single_image(self, cluster_path, name, location, version_label): + deploy_command = [ + 'morph', 'deploy', cluster_path, name, + '--trove-host=%s' % self.settings['trove-host']] + artifact_server = self.settings['artifact-cache-server'] + if artifact_server is not None: + deploy_command.append('--artifact-cache-server=%s' % artifact_server) + deploy_command.extend(( + '%s.location=%s' % (name, location), + '%s.VERSION_LABEL=%s' % (name, version_label) + )) + + cliapp.runcmd(deploy_command, stdout=sys.stdout) + + +ReleaseApp().run() diff --git a/old/scripts/release-build.test.conf b/old/scripts/release-build.test.conf new file mode 100644 index 00000000..50083352 --- /dev/null +++ b/old/scripts/release-build.test.conf @@ -0,0 +1,6 @@ +[config] +trove-host = ct-mcr-1.ducie.codethink.co.uk +controllers = x86_64:ct-mcr-1-distbuild-x86-64-majikthise-controller.dyn.ducie.codethink.co.uk, + x86_32:ct-mcr-1-distbuild-x86-32-majikthise-controller.dyn.ducie.codethink.co.uk, + armv7lhf:ct-mcr-1-distbuild-armv7lhf-jetson.dyn.ducie.codethink.co.uk +release-number = 14.29 diff --git a/old/scripts/release-test b/old/scripts/release-test new file mode 100755 index 00000000..4dcc6f76 --- /dev/null +++ b/old/scripts/release-test @@ -0,0 +1,400 @@ +#!/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 MorphologyHelper(object): + + def __init__(self): + self.defs_repo = morphlib.definitions_repo.open( + '.', search_for_root=True) + self.loader = morphlib.morphloader.MorphologyLoader() + self.finder = morphlib.morphologyfinder.MorphologyFinder(self.defs_repo) + + def load_morphology(self, path): + text = self.finder.read_file(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) + + def virsh(self, *args, **kwargs): + self.runcmd(['virsh', '-c', 'qemu:///system'] + list(args), **kwargs) + + +class DeployedSystemInstance(object): + + def __init__(self, deployment, config, host_machine, vm_id, rootfs_path): + self.deployment = deployment + self.config = config + # TODO: Stop assuming test machine can DHCP and be assigned its + # hostname in the deployer's resolve search path. + self.ip_address = self.config['HOSTNAME'] + self.host_machine = host_machine + self.vm_id = vm_id + self.rootfs_path = rootfs_path + + @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_until_online(self, timeout=10): + self._wait_for_dhcp(timeout) + self._wait_for_ssh(timeout) + + def delete(self): + # Stop and remove VM + try: + self.host_machine.virsh('destroy', self.vm_id) + except cliapp.AppException as e: + # TODO: Stop assuming that destroy failed because it wasn't running + pass + try: + self.host_machine.virsh('undefine', self.vm_id, '--remove-all-storage') + except cliapp.AppException as e: + # TODO: Stop assuming that undefine failed because it was + # already removed + pass + + +class Deployment(object): + + def __init__(self, cluster_path, name, deployment_config, host_machine): + self.cluster_path = cluster_path + self.name = name + self.deployment_config = deployment_config + self.host_machine = host_machine + + @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 = 'kvm+ssh://{ssh_host}/{id}/{path}'.format( + ssh_host=self.host_machine.ssh_host, id=vm_id, path=rootpath) + + options = { + 'type': 'kvm', + 'location': loc, + 'AUTOSTART': 'True', + 'HOSTNAME': hostname, + 'DISK_SIZE': '20G', + 'RAM_SIZE': '2G', + 'VERSION_LABEL': 'release-test', + } + + tempdir = tempfile.mkdtemp() + try: + options.update( + self._generate_sshkey_config(tempdir, + self.deployment_config)) + + 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) + + return DeployedSystemInstance(self, config, self.host_machine, + vm_id, rootpath) + 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) + + @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): + """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) + + 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'): + 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) + + +if __name__ == '__main__': + ReleaseApp().run() diff --git a/old/scripts/release-test-os b/old/scripts/release-test-os new file mode 100755 index 00000000..06e01daf --- /dev/null +++ b/old/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_file(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/old/scripts/release-upload b/old/scripts/release-upload new file mode 100755 index 00000000..f8b3337c --- /dev/null +++ b/old/scripts/release-upload @@ -0,0 +1,473 @@ +#!/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. + + +'''Upload and publish Baserock binaries for a release. + +This utility is used for the Baserock release process. See +http://wiki.baserock.org/guides/release-process/ for details on the +release process. + +This utility uploads two sets of binaries: + +* The build artifacts (built chunks and strata) used to construct the + systems being released. The systems are found in `release.morph` and + the artifacts from the Trove used to prepare the release. They get + uploaded to a public Trove (by default git.baserock.org). If they're + the same Trove, then nothing happens. + +* The released system images (disk images, tar archives, etc) + specified in `release.morph` get uploaded to a download server (by + default download.baserock.org). + +''' + + +import json +import logging +import os +import pwd +import shutil +import sys +import urllib +import urllib2 +import urlparse + +import cliapp +import yaml + +import morphlib + +class ReleaseUploader(cliapp.Application): + + def add_settings(self): + group = 'Release upload settings' + + local_username = self.get_local_username() + + self.settings.string( + ['build-trove-host'], + 'get build artifacts from Trove at ADDRESS', + metavar='ADDRESS', + group=group) + + self.settings.string( + ['public-trove-host'], + 'publish build artifacts on Trove at ADDRESS', + metavar='ADDRESS', + default='git.baserock.org', + group=group) + + self.settings.string( + ['public-trove-username'], + 'log into public trove as USER', + metavar='USER', + default=local_username, + group=group) + + self.settings.string( + ['public-trove-artifact-dir'], + 'put published artifacts into DIR', + metavar='DIR', + default='/home/cache/artifacts', + group=group) + + self.settings.string( + ['release-artifact-dir'], + 'get release artifacts from DIR (all files from there)', + metavar='DIR', + default='.', + group=group) + + self.settings.string( + ['download-server-address'], + 'publish release artifacts on server at ADDRESS', + metavar='ADDRESS', + default='download.baserock.org', + group=group) + + self.settings.string( + ['download-server-username'], + 'log into download server as USER', + metavar='USER', + default=local_username, + group=group) + + self.settings.string( + ['download-server-private-dir'], + 'use DIR as the temporary location for uploaded release ' + 'artifacts', + metavar='DIR', + default='/srv/download.baserock.org/baserock/.publish-temp', + group=group) + + self.settings.string( + ['download-server-public-dir'], + 'put published release artifacts in DIR', + metavar='DIR', + default='/srv/download.baserock.org/baserock', + group=group) + + self.settings.string( + ['local-build-artifacts-dir'], + 'keep build artifacts to be uploaded temporarily in DIR', + metavar='DIR', + default='build-artifacts', + group=group) + + self.settings.string( + ['morph-cmd'], + 'run FILE to invoke morph', + metavar='FILE', + default='morph', + group=group) + + self.settings.string_list( + ['arch'], + 'Upload files from morphologies of ARCH', + metavar='ARCH', + default=[], + group=group) + + self.settings.boolean( + ['upload-build-artifacts'], + 'upload build artifacts?', + default=True) + + self.settings.boolean( + ['upload-release-artifacts'], + 'upload release artifacts (disk images etc)?', + default=True) + + def get_local_username(self): + uid = os.getuid() + return pwd.getpwuid(uid)[0] + + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Usage: release-upload CLUSTER') + cluster_morphology_path = args[0] + self.status(msg='Uploading and publishing Baserock release') + + if self.settings['upload-build-artifacts']: + self.publish_build_artifacts(cluster_morphology_path) + else: + self.status( + msg='Not uploading build artifacts ' + '(upload-build-artifacts set to false') + + if self.settings['upload-release-artifacts']: + self.publish_release_artifacts() + else: + self.status( + msg='Not uploading release artifacts ' + '(upload-release-artifacts set to false') + + def publish_build_artifacts(self, cluster_morphology_path): + publisher = BuildArtifactPublisher(self.settings, self.status) + publisher.publish_build_artifacts(cluster_morphology_path) + self.status(msg='Build artifacts have been published') + + def publish_release_artifacts(self): + publisher = ReleaseArtifactPublisher(self.settings, self.status) + publisher.publish_release_artifacts() + self.status(msg='Release artifacts have been published') + + def status(self, msg, **kwargs): + formatted = msg.format(**kwargs) + logging.info(formatted) + sys.stdout.write(formatted + '\n') + sys.stdout.flush() + + +class BuildArtifactPublisher(object): + + '''Publish build artifacts related to the release.''' + + def __init__(self, settings, status): + self.settings = settings + self.status = status + + def publish_build_artifacts(self, cluster_path): + artifact_basenames = self.list_build_artifacts_for_release(cluster_path) + self.status( + msg='Found {count} build artifact files in release', + count=len(artifact_basenames)) + + to_be_uploaded = self.filter_away_build_artifacts_on_public_trove( + artifact_basenames) + + logging.debug('List of artifacts (basenames) to upload (without already uploaded):') + for i, basename in enumerate(to_be_uploaded): + logging.debug(' {0}: {1}'.format(i, basename)) + logging.debug('End of artifact list (to_be_uploaded)') + + self.status( + msg='Need to fetch locally, then upload {count} build artifacts', + count=len(to_be_uploaded)) + + self.upload_build_artifacts_to_public_trove(to_be_uploaded) + + def list_build_artifacts_for_release(self, cluster_morphology_path): + self.status(msg='Find build artifacts included in release') + + # FIXME: These are hardcoded for simplicity. They would be + # possible to deduce automatically from the workspace, but + # that can happen later. + repo = 'file://%s' % os.path.abspath('.') + ref = 'HEAD' + + argv = [self.settings['morph-cmd'], 'list-artifacts', '--quiet', + '--repo', repo, '--ref', ref] + argv += self.find_system_morphologies(cluster_morphology_path) + output = cliapp.runcmd(argv) + basenames = output.splitlines() + logging.debug('List of build artifacts in release:') + for basename in basenames: + logging.debug(' {0}'.format(basename)) + logging.debug('End of list of build artifacts in release') + + return basenames + + def find_system_morphologies(self, cluster_morphology_path): + cluster = self.load_cluster_morphology(cluster_morphology_path) + system_dicts = self.find_systems_in_parsed_cluster_morphology(cluster) + if self.settings['arch']: + system_dicts = self.choose_systems_for_wanted_architectures( + system_dicts, self.settings['arch']) + return [sd['morph'] for sd in system_dicts] + + def load_cluster_morphology(self, pathname): + with open(pathname) as f: + return yaml.load(f) + + def find_systems_in_parsed_cluster_morphology(self, cluster): + return cluster['systems'] + + def choose_systems_for_wanted_architectures(self, system_dicts, archs): + return [ + sd + for sd in system_dicts + if self.system_is_for_wanted_arch(sd, archs)] + + def system_is_for_wanted_arch(self, system_dict, archs): + morph = self.load_system_morphology(system_dict) + return morph['arch'] in archs + + def load_system_morphology(self, system_dict): + pathname = morphlib.util.sanitise_morphology_path(system_dict['morph']) + return self.load_morphology_from_named_file(pathname) + + def load_morphology_from_named_file(self, pathname): + finder = self.get_morphology_finder_for_root_repository() + morphology_text = finder.read_file(pathname) + loader = morphlib.morphloader.MorphologyLoader() + return loader.load_from_string(morphology_text) + + def get_morphology_finder_for_root_repository(self): + definitions_repo = morphlib.definitions_repo.open( + '.', search_for_root=True) + return morphlib.morphologyfinder.MorphologyFinder(definitions_repo) + + def filter_away_build_artifacts_on_public_trove(self, basenames): + result = [] + logging.debug('Filtering away already existing artifacts:') + for basename, exists in self.query_public_trove_for_artifacts(basenames): + logging.debug(' {0}: {1}'.format(basename, exists)) + if not exists: + result.append(basename) + logging.debug('End of filtering away') + return result + + def query_public_trove_for_artifacts(self, basenames): + host = self.settings['public-trove-host'] + + # FIXME: This could use + # contextlib.closing(urllib2.urlopen(url, data=data) instead + # of explicit closing. + url = 'http://{host}:8080/1.0/artifacts'.format(host=host) + data = json.dumps(basenames) + f = urllib2.urlopen(url, data=data) + obj = json.load(f) + return obj.items() + + def upload_build_artifacts_to_public_trove(self, basenames): + self.download_artifacts_locally(basenames) + self.upload_artifacts_to_public_trove(basenames) + + def download_artifacts_locally(self, basenames): + dirname = self.settings['local-build-artifacts-dir'] + self.create_directory_if_missing(dirname) + for i, basename in enumerate(basenames): + url = self.construct_artifact_url(basename) + pathname = os.path.join(dirname, basename) + if not os.path.exists(pathname): + self.status( + msg='Downloading {i}/{total} {basename}', + basename=repr(basename), i=i, total=len(basenames)) + self.download_from_url(url, dirname, pathname) + + def create_directory_if_missing(self, dirname): + if not os.path.exists(dirname): + os.makedirs(dirname) + + def construct_artifact_url(self, basename): + scheme = 'http' + netloc = '{host}:8080'.format(host=self.settings['build-trove-host']) + path = '/1.0/artifacts' + query = 'filename={0}'.format(urllib.quote_plus(basename)) + fragment = '' + components = (scheme, netloc, path, query, fragment) + return urlparse.urlunsplit(components) + + def download_from_url(self, url, dirname, pathname): + logging.info( + 'Downloading {url} to {pathname}'.format( + url=url, pathname=pathname)) + with open(pathname, 'wb') as output: + try: + incoming = urllib2.urlopen(url) + shutil.copyfileobj(incoming, output) + incoming.close() + except urllib2.HTTPError as e: + if pathname.endswith('.meta'): + return + self.status( + msg="ERROR: Can't download {url}: {explanation}", + url=url, + explanation=str(e)) + os.remove(pathname) + raise + + def upload_artifacts_to_public_trove(self, basenames): + self.status( + msg='Upload build artifacts to {trove}', + trove=self.settings['public-trove-host']) + rsync_files_to_server( + self.settings['local-build-artifacts-dir'], + basenames, + self.settings['public-trove-username'], + self.settings['public-trove-host'], + self.settings['public-trove-artifact-dir']) + set_permissions_on_server( + self.settings['public-trove-username'], + self.settings['public-trove-host'], + self.settings['public-trove-artifact-dir'], + basenames) + +class ReleaseArtifactPublisher(object): + + '''Publish release artifacts for a release.''' + + def __init__(self, settings, status): + self.settings = settings + self.status = status + + def publish_release_artifacts(self): + files = self.list_release_artifacts() + if files: + self.upload_release_artifacts_to_private_dir(files) + self.move_release_artifacts_to_public_dir(files) + self.create_symlinks_to_new_release_artifacts(files) + + def list_release_artifacts(self): + self.status(msg='Find release artifacts to publish') + return os.listdir(self.settings['release-artifact-dir']) + + def upload_release_artifacts_to_private_dir(self, files): + self.status(msg='Upload release artifacts to private directory') + path = self.settings['download-server-private-dir'] + self.create_directory_on_download_server(path) + self.rsync_files_to_download_server(files, path) + + def create_directory_on_download_server(self, path): + user = self.settings['download-server-username'] + host = self.settings['download-server-address'] + self.status(msg='Create {host}:{path}', host=host, path=path) + target = '{user}@{host}'.format(user=user, host=host) + cliapp.ssh_runcmd(target, ['mkdir', '-p', path]) + + def rsync_files_to_download_server(self, files, path): + self.status(msg='Upload release artifacts to download server') + rsync_files_to_server( + self.settings['release-artifact-dir'], + files, + self.settings['download-server-username'], + self.settings['download-server-address'], + path) + set_permissions_on_server( + self.settings['download-server-username'], + self.settings['download-server-address'], + path, + files) + + def move_release_artifacts_to_public_dir(self, files): + self.status(msg='Move release artifacts to public directory') + private_dir = self.settings['download-server-private-dir'] + public_dir = self.settings['download-server-public-dir'] + self.create_directory_on_download_server(public_dir) + + # Move just the contents of the private dir, not the dir + # itself (-mindepth). Avoid overwriting existing files (mv + # -n). + argv = ['find', private_dir, '-mindepth', '1', + '-exec', 'mv', '-n', '{}', public_dir + '/.', ';'] + + target = '{user}@{host}'.format( + user=self.settings['download-server-username'], + host=self.settings['download-server-address']) + cliapp.ssh_runcmd(target, argv) + + def create_symlinks_to_new_release_artifacts(self, files): + self.status(msg='FIXME: Create symlinks to new releas artifacts') + + +def rsync_files_to_server( + source_dir, source_filenames, user, host, target_dir): + + if not source_filenames: + return + + argv = [ + 'rsync', + '-a', + '--progress', + '--partial', + '--human-readable', + '--sparse', + '--protect-args', + '-0', + '--files-from=-', + source_dir, + '{user}@{host}:{path}'.format(user=user, host=host, path=target_dir), + ] + + files_list = '\0'.join(filename for filename in source_filenames) + cliapp.runcmd(argv, feed_stdin=files_list, stdout=None, stderr=None) + + +def set_permissions_on_server(user, host, target_dir, filenames): + # If we have no files, we can't form a valid command to run on the server + if not filenames: + return + target = '{user}@{host}'.format(user=user, host=host) + argv = ['xargs', '-0', 'chmod', '0644'] + files_list = ''.join( + '{0}\0'.format(os.path.join(target_dir, filename)) for filename in filenames) + cliapp.ssh_runcmd(target, argv, feed_stdin=files_list, stdout=None, stderr=None) + + +ReleaseUploader(description=__doc__).run() diff --git a/old/scripts/release-upload.test.conf b/old/scripts/release-upload.test.conf new file mode 100644 index 00000000..13227983 --- /dev/null +++ b/old/scripts/release-upload.test.conf @@ -0,0 +1,10 @@ +[config] +download-server-address = localhost +download-server-private-dir = /tmp/private +download-server-public-dir = /tmp/public +build-trove-host = ct-mcr-1.ducie.codethink.co.uk +public-trove-host = localhost +public-trove-username = root +public-trove-artifact-dir = /tmp/artifacts +release-artifact-dir = t.release-files +morph-cmd = /home/root/git-morph diff --git a/old/scripts/scriptslib.py b/old/scripts/scriptslib.py new file mode 100644 index 00000000..53c6ca8e --- /dev/null +++ b/old/scripts/scriptslib.py @@ -0,0 +1,156 @@ +# Copyright (C) 2016 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. + +# Small library of useful things for the scripts that live here. + +import yaml +import subprocess +import os +import sys + +aliases = { + 'baserock:': 'git://%(trove)s/baserock/', + 'freedesktop:': 'git://anongit.freedesktop.org/', + 'github:': 'git://github.com/', + 'gnome:': 'git://git.gnome.org/', + 'upstream:': 'git://%(trove)s/delta/' +} + +def parse_repo_alias(repo, trove_host='git.baserock.org'): + global aliases + remote = repo[:repo.find(':') + 1] + aliases = {k: v % {'trove': trove_host} for k, v in aliases.iteritems()} + try: + return repo.replace(remote, aliases[remote]) + except KeyError as e: + raise Exception("Unknown repo-alias \"%s\"" % repo) + +def definitions_root(): + return subprocess.check_output( + ["git", "rev-parse", "--show-toplevel"]).strip() + +def load_yaml_file(yaml_file): + with open(yaml_file, 'r') as f: + return yaml.safe_load(f) + + +class BaserockMeta(object): + '''An object representing Baserock metadata contained in a Baserock + system image, for available metadata formats''' + + def __init__(self): + self.metas = {} + + def get_each(self): + '''Yield an iterable for the whole list of metas''' + for key in self.metas: + yield self.metas[key] + + def get_name(self, name): + '''Yield an iterable of metadata matched by name, e.g. `bash`''' + for key in self.metas: + if self.metas[key]['source-name'] == name: + yield self.metas[key] + + def import_meta(self, meta_text): + importers = (self.import_meta_ybd, + self.import_meta_morph) + + for i in importers: + try: + i(meta_text) + return + except (KeyError, Exception) as err: + pass + + # Shouldn't get here + sys.stderr.write('Metadata format not recognised.\n' + 'Error:\n') + raise err + + def import_meta_morph(self, meta_text): + self._add_meta(yaml.load(meta_text)) + + def import_meta_ybd(self, meta_text): + source = yaml.load(meta_text) + + null = '0' * 32 + + if 'configuration' in source: + # This is the deployment metadata, ignore + return + elif 'repo' not in source: + kind = 'stratum' + contents = 'components' + source['repo'] = 'upstream:definitions' + source['ref'] = null # No ref info + else: + kind = 'chunk' + contents = 'components' + + repo = parse_repo_alias(source['repo']) + source_name = '-'.join( + source['products'][0]['artifact'].split('-')[:-1]) + + # Needed until YBD provides cache-key in metadata + if not 'cache-key' in source: + source['cache-key'] = null + + for product in source['products']: + + self._add_meta({ + 'kind': kind, + 'source-name': source_name, + 'artifact-name': product['artifact'], + 'contents': product[contents], + 'repo': repo, + 'repo-alias': source['repo'], + 'sha1': source['ref'], + 'original_ref': source['ref'], + 'cache-key': source['cache-key'] + }) + + def _add_meta(self, meta_dict): + '''Validate and add a meta''' + + ignore = ('configuration', + 'system-artifact-name') + + for i in ignore: + if i in meta_dict: + return + + required_fields = ('repo', 'sha1', 'contents') + for f in required_fields: + if not f in meta_dict: + raise Exception('Metadata format not recognised, no ' + 'value for \'%s\'. Data: \'%s\''% (f, str(meta_dict))) + + self.metas[meta_dict['artifact-name']] = meta_dict + + +def meta_load_from_dir(meta_dir_path): + '''Read Baserock metadata from a directory''' + + files = [f for f in os.listdir(meta_dir_path) + if os.path.isfile(os.path.join(meta_dir_path, f))] + + meta = BaserockMeta() + for f in files: + if f.endswith('.meta'): + meta.import_meta( + open(os.path.join(meta_dir_path, f), 'r').read()) + + return meta diff --git a/old/scripts/yaml-jsonschema b/old/scripts/yaml-jsonschema new file mode 100755 index 00000000..64f52a79 --- /dev/null +++ b/old/scripts/yaml-jsonschema @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright (C) 2015 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, see . + + +'''A tool to validate YAML files against the JSON-Schema schemas. + +This wraps Python `jsonschema` module so that YAML schemas can be understood +and YAML data can be validated. + +Usage: yaml-jsonschema SCHEMA INPUT1 [INPUT2, ...] + +''' + + +import jsonschema +import yaml + +import sys + + +schema_file = sys.argv[1] +input_files = sys.argv[2:] + + +with open(schema_file) as f: + schema = yaml.load(f) + + +for input_file in input_files: + with open(input_file) as f: + data = yaml.load(f) + + try: + jsonschema.validate(data, schema) + print("%s: valid" % input_file) + except jsonschema.ValidationError as e: + # Print 'e' instead of 'e.message' for more information! + print("%s: %s" % (input_file, e.message)) diff --git a/old/strata/CPAN-Mini-Inject.morph b/old/strata/CPAN-Mini-Inject.morph new file mode 100644 index 00000000..d4566bd3 --- /dev/null +++ b/old/strata/CPAN-Mini-Inject.morph @@ -0,0 +1,306 @@ +name: CPAN-Mini-Inject +kind: stratum +description: A collection of perl distributions used by CPAN::Mini::Inject +build-depends: +- morph: strata/core.morph +- morph: strata/perl-common.morph +chunks: +- name: Archive-Zip + repo: upstream:cpan/Archive-Zip-tarball + ref: 42c8b23669eac442a303190dad44d78cea63cf59 + unpetrify-ref: Archive-Zip-1.49 + build-system: cpan +- name: CPAN-DistnameInfo + repo: upstream:cpan/CPAN-DistnameInfo-tarball + ref: 56f58177bddb4002f0dc57811fe0f72a8fc9e479 + unpetrify-ref: CPAN-DistnameInfo-0.12 + build-system: cpan +- name: Compress-Bzip2 + repo: upstream:cpan/Compress-Bzip2-tarball + ref: efd32dfb6c52e28f3b158930b64f986ff8760409 + unpetrify-ref: Compress-Bzip2-2.22 + build-system: cpan +- name: Encode-Locale + repo: upstream:cpan/Encode-Locale-tarball + ref: e4bf16d2fde5df6eadd91475e3dcca56b87b1eb0 + unpetrify-ref: Encode-Locale-1.05 + build-system: cpan +- name: File-Slurp + repo: upstream:cpan/File-Slurp-tarball + ref: 9d4173f2716c2f9a2d26f8f9ab0f47b351b87de7 + unpetrify-ref: File-Slurp-9999.19 + build-system: cpan +- name: File-Spec-Native + repo: upstream:cpan/File-Spec-Native-tarball + ref: 475e3c7cb559a68109d8c90ab8ff0b6a37c98793 + unpetrify-ref: File-Spec-Native-1.004 + build-system: cpan +- name: File-Which + repo: upstream:cpan/File-Which-tarball + ref: a276db189a656a4cc5881a2ebc4cad3113685030 + unpetrify-ref: File-Which-1.19 + build-system: cpan +- name: File-HomeDir + repo: upstream:cpan/File-HomeDir-tarball + ref: d08b8685307cd5e8980f3c9409d4b3c1d06b2c24 + unpetrify-ref: File-HomeDir-1.00 + build-system: cpan + build-depends: + - File-Which +- name: HTML-Tagset + repo: upstream:cpan/HTML-Tagset-tarball + ref: 85713405a9d0b06f3abba0c2ddfaab2077344e8f + unpetrify-ref: HTML-Tagset-3.20 + build-system: cpan +- name: HTML-Parser + repo: upstream:cpan/HTML-Parser-tarball + ref: 2f253cfc85ffd55a8acb988e91f0bc5ab348124c + unpetrify-ref: HTML-Parser-3.71 + build-system: cpan + build-depends: + - HTML-Tagset +- name: CGI + repo: upstream:cpan/CGI-tarball + ref: f9f3ab3056d94292adb4ab2e1451645bee989769 + unpetrify-ref: CGI-4.21 + build-system: cpan + build-depends: + - HTML-Tagset + - HTML-Parser +- name: HTTP-Date + repo: upstream:cpan/HTTP-Date-tarball + ref: f1f9b3164e11c877ed5d509738551a56ac9b37f0 + unpetrify-ref: HTTP-Date-6.02 + build-system: cpan +- name: File-Listing + repo: upstream:cpan/File-Listing-tarball + ref: c1655656f083337cbfd901455db96695890f2d89 + unpetrify-ref: File-Listing-6.04 + build-system: cpan + build-depends: + - HTTP-Date +- name: HTTP-Server-Simple + repo: upstream:cpan/HTTP-Server-Simple-tarball + ref: e2d680ac7c6f0bb36808aa45e1453c8b585d2717 + unpetrify-ref: HTTP-Server-Simple-0.50 + build-system: cpan + build-depends: + - CGI + - HTML-Tagset + - HTML-Parser +- name: IO-HTML + repo: upstream:cpan/IO-HTML-tarball + ref: adc9c8b29ed1144626af564f936811a9d5e319a6 + unpetrify-ref: IO-HTML-1.001 + build-system: cpan +- name: LWP-MediaTypes + repo: upstream:cpan/LWP-MediaTypes-tarball + ref: d550937a3b104e53897b8f51dd528724f721858a + unpetrify-ref: LWP-MediaTypes-6.02 + build-system: cpan +- name: Number-Compare + repo: upstream:cpan/Number-Compare-tarball + ref: af206af84f17997c2967416423e9cdf516e17203 + unpetrify-ref: Number-Compare-0.03 + build-system: cpan +- name: Path-Class + repo: upstream:cpan/Path-Class-tarball + ref: 5f549fcb4056f8b314c7f7336a020ef9735fb384 + unpetrify-ref: Path-Class-0.35 + build-system: cpan +- name: Text-Glob + repo: upstream:cpan/Text-Glob-tarball + ref: 7c186823d68db1d2bd078fb91a95d30cd12890da + unpetrify-ref: Text-Glob-0.09 + build-system: cpan +- name: File-Find-Rule + repo: upstream:cpan/File-Find-Rule-tarball + ref: 5e7c9d8e7b80b54baa3f8161222b5a8e9077c0aa + unpetrify-ref: File-Find-Rule-0.33 + build-system: cpan + build-depends: + - Text-Glob + - Number-Compare +- name: Data-Compare + repo: upstream:cpan/Data-Compare-tarball + ref: 8fddd4400d09891094843fe9e77fec74e4510c67 + unpetrify-ref: Data-Compare-1.25 + build-system: cpan + build-depends: + - File-Find-Rule + - Text-Glob + - Number-Compare +- name: CPAN-Checksums + repo: upstream:cpan/CPAN-Checksums-tarball + ref: 26d8d4d1d2a7a8ebcffc6ff5c6b13495f74dd129 + unpetrify-ref: CPAN-Checksums-2.10 + build-system: cpan + build-depends: + - Text-Glob + - Data-Compare + - File-Find-Rule + - Number-Compare + - Compress-Bzip2 +- name: Dist-Metadata + repo: upstream:cpan/Dist-Metadata-tarball + ref: 2ca9db53e3e8164ecf0c95bf93fa289019e1b92c + unpetrify-ref: Dist-Metadata-0.926 + build-system: cpan + build-depends: + - Path-Class + - File-Spec-Native + - Archive-Zip + - CPAN-DistnameInfo +- name: URI + repo: upstream:cpan/URI-tarball + ref: 9165b237ad8fae18b36d4d40d6e2ccfde7b136c7 + unpetrify-ref: URI-1.69 + build-system: cpan +- name: Net-HTTP + repo: upstream:cpan/Net-HTTP-tarball + ref: 8780c70ceb3019aa50e129cb62daa3bfaebd0e82 + unpetrify-ref: Net-HTTP-6.09 + build-system: cpan + build-depends: + - URI +- name: HTTP-Message + repo: upstream:cpan/HTTP-Message-tarball + ref: d403562e3f7ac96df7cee2c1709ecd970b6c9761 + unpetrify-ref: HTTP-Message-6.10 + build-system: cpan + build-depends: + - Encode-Locale + - HTTP-Date + - IO-HTML + - URI + - LWP-MediaTypes +- name: HTTP-Negotiate + repo: upstream:cpan/HTTP-Negotiate-tarball + ref: ab7c5218426d7424b8f7b5c333870958ad6609da + unpetrify-ref: HTTP-Negotiate-6.01 + build-system: cpan + build-depends: + - Encode-Locale + - HTTP-Date + - IO-HTML + - LWP-MediaTypes + - URI + - HTTP-Message +- name: HTTP-Cookies + repo: upstream:cpan/HTTP-Cookies-tarball + ref: 4861af5daed8f4ba6d0041aed25e98f403d96fc0 + unpetrify-ref: HTTP-Cookies-6.01 + build-system: cpan + build-depends: + - Encode-Locale + - HTTP-Date + - IO-HTML + - URI + - LWP-MediaTypes + - HTTP-Message +- name: HTTP-Daemon + repo: upstream:cpan/HTTP-Daemon-tarball + ref: 64ffbaec18717f99cb80441d8b474868e39939fb + unpetrify-ref: HTTP-Daemon-6.01 + build-system: cpan + build-depends: + - Encode-Locale + - HTTP-Date + - IO-HTML + - LWP-MediaTypes + - URI + - HTTP-Message +- name: WWW-RobotRules + repo: upstream:cpan/WWW-RobotRules-tarball + ref: 80c86924c3437c0ad64852ea29c7eab1197dfe90 + unpetrify-ref: WWW-RobotRules-6.02 + build-system: cpan + build-depends: + - URI +- name: YAML + repo: upstream:cpan/YAML-tarball + ref: 2fe5b8de1e9d06482aa76303e7342bc6605700ea + unpetrify-ref: YAML-1.15 + build-system: cpan +- name: libwww-perl + repo: upstream:cpan/libwww-perl-tarball + ref: 20f161ca116b8a4fc7ac986a317d7f6d43e5c173 + unpetrify-ref: libwww-perl-6.13 + build-system: cpan + build-depends: + - Encode-Locale + - Net-HTTP + - HTTP-Daemon + - HTTP-Date + - HTTP-Negotiate + - HTTP-Message + - IO-HTML + - LWP-MediaTypes + - HTML-Tagset + - WWW-RobotRules + - HTTP-Cookies + - File-Listing + - HTML-Parser + - URI +- name: CPAN-Mini + repo: upstream:cpan/CPAN-Mini-tarball + ref: 2a051e40a3fc09bba24c335060e8df327d313e55 + unpetrify-ref: CPAN-Mini-1.111016 + build-system: cpan + build-depends: + - Encode-Locale + - File-Which + - HTTP-Date + - HTTP-Cookies + - HTTP-Daemon + - LWP-MediaTypes + - HTTP-Negotiate + - File-Listing + - URI + - File-HomeDir + - HTML-Tagset + - HTTP-Message + - Net-HTTP + - IO-HTML + - libwww-perl + - HTML-Parser + - WWW-RobotRules +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph + repo: upstream:cpan/CPAN-Mini-Inject-tarball + ref: 74e30d582ac01d80a7f1b28af247d0a5ee913d55 + unpetrify-ref: master + build-depends: + - File-Spec-Native + - HTTP-Negotiate + - LWP-MediaTypes + - Dist-Metadata + - File-Which + - Compress-Bzip2 + - libwww-perl + - CGI + - File-Slurp + - IO-HTML + - Number-Compare + - CPAN-Mini + - HTML-Tagset + - HTTP-Server-Simple + - HTTP-Message + - File-HomeDir + - Path-Class + - Archive-Zip + - Text-Glob + - Data-Compare + - HTTP-Date + - URI + - File-Listing + - HTTP-Cookies + - CPAN-DistnameInfo + - HTML-Parser + - Encode-Locale + - HTTP-Daemon + - File-Find-Rule + - YAML + - WWW-RobotRules + - Net-HTTP + - CPAN-Checksums diff --git a/old/strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph b/old/strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph new file mode 100644 index 00000000..a92c26f3 --- /dev/null +++ b/old/strata/CPAN-Mini-Inject/CPAN-Mini-Inject.morph @@ -0,0 +1,3 @@ +name: CPAN-Mini-Inject +kind: chunk +build-system: module-build diff --git a/old/strata/NetworkManager-common.morph b/old/strata/NetworkManager-common.morph new file mode 100644 index 00000000..720a277f --- /dev/null +++ b/old/strata/NetworkManager-common.morph @@ -0,0 +1,46 @@ +name: NetworkManager-common +kind: stratum +build-depends: +- morph: strata/bluetooth.morph +- morph: strata/connectivity.morph +- morph: strata/device-management.morph +- morph: strata/network-security.morph +- morph: strata/privileges-management.morph +chunks: +- name: libmbim + repo: upstream:libmbim + ref: 50cddf48823f05ec124afad80c0d948184e19b00 + unpetrify-ref: 1.14.0 + build-system: autotools +- name: libqmi + repo: upstream:libqmi + ref: 7bdb9347cf08cf26ed8e420a11b358befa81824b + unpetrify-ref: 1.16.0 + build-system: autotools +- name: ModemManager + morph: strata/NetworkManager-common/ModemManager.morph + repo: upstream:ModemManager + ref: 397761c9758c3a8c2d130afaf36dab645d6e0ecf + unpetrify-ref: 1.6.0 + build-depends: + - libmbim + - libqmi +- name: libndp + repo: upstream:libndp + ref: 2f721c4ff519f38f46695a60d9f9d88f35bf3c1d + unpetrify-ref: v1.6 + build-system: autotools +- name: readline6 + repo: upstream:readline + ref: 7628b745a813aac53586b640da056a975f1c443e + unpetrify-ref: readline-6.3 + build-system: autotools +- name: NetworkManager + morph: strata/NetworkManager-common/NetworkManager.morph + repo: upstream:NetworkManager + ref: 8f6d416768cf69932999b1fc2ab4231321761657 + unpetrify-ref: 1.2.2 + build-depends: + - ModemManager + - libndp + - readline6 diff --git a/old/strata/NetworkManager-common/ModemManager.morph b/old/strata/NetworkManager-common/ModemManager.morph new file mode 100644 index 00000000..909f6eca --- /dev/null +++ b/old/strata/NetworkManager-common/ModemManager.morph @@ -0,0 +1,9 @@ +name: ModemManager +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc +system-integration: + ModemManager-misc: + 00-enable-ModemManager-unit: + - systemctl enable ModemManager diff --git a/old/strata/NetworkManager-common/NetworkManager.morph b/old/strata/NetworkManager-common/NetworkManager.morph new file mode 100644 index 00000000..9b9a93de --- /dev/null +++ b/old/strata/NetworkManager-common/NetworkManager.morph @@ -0,0 +1,9 @@ +name: NetworkManager +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --with-session-tracking=systemd --disable-ppp --enable-more-warnings=yes +system-integration: + ModemManager-misc: + 00-enable-NetworkManager-unit: + - systemctl enable NetworkManager diff --git a/old/strata/ansible.morph b/old/strata/ansible.morph new file mode 100644 index 00000000..f21cb222 --- /dev/null +++ b/old/strata/ansible.morph @@ -0,0 +1,26 @@ +name: ansible +kind: stratum +description: A stratum with ansible and its dependencies +build-depends: +- morph: strata/core.morph +- morph: strata/python-common.morph +chunks: +- name: ansible + morph: strata/ansible/ansible.morph + repo: upstream:ansible + ref: ebc8d48d34296fe010096f044e2b7591df37a622 + unpetrify-ref: v1.8.4 + submodules: + lib/ansible/modules/core: + url: upstream:ansible-modules-core.git + v2/ansible/modules/core: + url: upstream:ansible-modules-core.git + v2/ansible/modules/extras: + url: upstream:ansible-modules-extras.git + lib/ansible/modules/extras: + url: upstream:ansible-modules-extras.git +- name: openstack-ansible-modules + morph: strata/ansible/openstack-ansible-modules.morph + repo: upstream:openstack/openstack-ansible-modules + ref: 451dcdeadfd35615a867d5e59a684e4aa82959ae + unpetrify-ref: master diff --git a/old/strata/ansible/ansible.morph b/old/strata/ansible/ansible.morph new file mode 100644 index 00000000..dbc6ec4b --- /dev/null +++ b/old/strata/ansible/ansible.morph @@ -0,0 +1,9 @@ +name: ansible +kind: chunk +build-system: python-distutils +post-install-commands: +- | + install -D -m644 /proc/self/fd/0 "$DESTDIR/etc/ansible/ansible.cfg" <= 3.18 +- scripts/config -e EXT4_USE_FOR_EXT23 +- scripts/config -e PACKET +- scripts/config -e UNIX +- scripts/config -e INET +- scripts/config -e IP_MULTICAST +- scripts/config -e IP_PNP +- scripts/config -e IP_PNP_DHCP +- scripts/config -e IP_PNP_BOOTP +- scripts/config -e MSDOS_FS +- scripts/config -e NETWORK_FILESYSTEMS +- scripts/config -e NET_KEY +- scripts/config -e NFS_FS +- scripts/config -e NFS_V3 +- scripts/config -e ROOT_NFS +- scripts/config -e LOCKD +- scripts/config -e LOCKD_V4 +- scripts/config -e NFS_COMMON +- scripts/config -e SUNRPC +- scripts/config -e SYSVIPC +- scripts/config -e BTRFS_FS +- scripts/config -e DEVTMPFS +- scripts/config -e DEVTMPFS_MOUNT +- scripts/config -e CONFIG_FHANDLE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config --set-str UEVENT_HELPER_PATH '' +- scripts/config -e DM_SNAPSHOT +- scripts/config -e IKCONFIG +- scripts/config -e IKCONFIG_PROC +- 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 +- scripts/config -e VETH +- yes '' | make oldconfig +build-commands: +- make zImage $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/arm/boot/zImage "$DESTDIR"/boot/zImage diff --git a/old/strata/bsp-armv7-versatile.morph b/old/strata/bsp-armv7-versatile.morph new file mode 100644 index 00000000..470f6c56 --- /dev/null +++ b/old/strata/bsp-armv7-versatile.morph @@ -0,0 +1,12 @@ +name: bsp-armv7-versatile +kind: stratum +description: The platform dependent components required to boot an ARM versatile development + board. +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-armv7-versatile + morph: strata/bsp-armv7-versatile/linux-armv7-versatile.morph + repo: upstream:linux-stable + ref: 660613d1a4e94144490850b6c3d350331860fac4 + unpetrify-ref: v3.19.2 diff --git a/old/strata/bsp-armv7-versatile/linux-armv7-versatile.morph b/old/strata/bsp-armv7-versatile/linux-armv7-versatile.morph new file mode 100644 index 00000000..ed0194b8 --- /dev/null +++ b/old/strata/bsp-armv7-versatile/linux-armv7-versatile.morph @@ -0,0 +1,31 @@ +name: linux-armv7-versatile +kind: chunk +configure-commands: +- make ARCH=arm vexpress_defconfig +- scripts/config -e BTRFS_FS +- scripts/config -e BTRFS_FS_POSIX_ACL +- scripts/config -d BTRFS_FS_CHECK_INTEGRITY +- scripts/config -e DEVTMPFS +- scripts/config -e DEVTMPFS_MOUNT +- scripts/config -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e CONFIG_FHANDLE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config -e CGROUPS +- scripts/config -e AUTOFS4_FS +- scripts/config -e BLK_DEV_LOOP +- scripts/config --set-str UEVENT_HELPER_PATH '' +- scripts/config -e DM_SNAPSHOT +- scripts/config -e IKCONFIG +- scripts/config -e IKCONFIG_PROC +- 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 +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/arm/boot/zImage "$DESTDIR"/boot/zImage diff --git a/old/strata/bsp-armv7b-highbank.morph b/old/strata/bsp-armv7b-highbank.morph new file mode 100644 index 00000000..397b9fcb --- /dev/null +++ b/old/strata/bsp-armv7b-highbank.morph @@ -0,0 +1,17 @@ +name: bsp-armv7b-highbank +kind: stratum +description: The platform dependent components required to boot an ARM highbank board. +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-armv7b-highbank + morph: strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph + repo: upstream:linux-stable + + # Linux 3.16 and later do not boot on Calxeda. They fail just before + # starting 'init' with this sort of message: + # + # Unhandled fault: imprecise external abort (0xc06) at 0xb6fea878 + + ref: f35b5e46feabab668a44df5b33f3558629f94dfc + unpetrify-ref: v3.15.10 diff --git a/old/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph b/old/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph new file mode 100644 index 00000000..1b86d320 --- /dev/null +++ b/old/strata/bsp-armv7b-highbank/linux-armv7b-highbank.morph @@ -0,0 +1,53 @@ +name: linux-armv7b-highbank +kind: chunk +configure-commands: +- make multi_v7_defconfig +- scripts/config -e CPU_BIG_ENDIAN +- scripts/config -e CPU_ENDIAN_BE8 +- scripts/config -e CPU_BE8_BOOT_LE +- scripts/config -e PACKET +- scripts/config -e UNIX +- scripts/config -e NET_KEY +- scripts/config -e INET +- scripts/config -e IP_MULTICAST +- scripts/config -e IP_PNP +- scripts/config -e IP_PNP_DHCP +- scripts/config -e IP_PNP_BOOTP +- scripts/config --set-str UEVENT_HELPER_PATH '' +- scripts/config -e DM_SNAPSHOT +- scripts/config -e DEVTMPFS +- scripts/config -e DEVTMPFS_MOUNT +- scripts/config -e CONFIG_FHANDLE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config -e BLK_DEV_LOOP +- scripts/config -e BTRFS_FS +- scripts/config -e TMPFS +- scripts/config -e FUSE_FS +#- scripts/config -e OVERLAY_FS # Activate when we build Linux >= 3.18 +- scripts/config -e IKCONFIG +- scripts/config -e IKCONFIG_PROC +- scripts/config -e CGROUPS +- scripts/config -e AUTOFS4_FS +- scripts/config -e NETWORK_FILESYSTEMS +- scripts/config -e NFS_FS +- scripts/config -e NFS_V3 +- scripts/config -e ROOT_NFS +- scripts/config -e LOCKD +- scripts/config -e LOCKD_V4 +- scripts/config -e NFS_COMMON +- scripts/config -e SUNRPC +- scripts/config -e SYSVIPC +- scripts/config -e CONFIG_POSIX_MQUEUE +- scripts/config -e CPU_IDLE +- scripts/config -e EXT4_FS +- 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 +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/arm/boot/zImage "$DESTDIR"/boot/zImage diff --git a/old/strata/bsp-armv7b-vexpress-tc2.morph b/old/strata/bsp-armv7b-vexpress-tc2.morph new file mode 100644 index 00000000..ea67c386 --- /dev/null +++ b/old/strata/bsp-armv7b-vexpress-tc2.morph @@ -0,0 +1,11 @@ +name: bsp-armv7b-vexpress-tc2 +kind: stratum +description: The platform dependent components required to boot Versatile TC2 board +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-armv7b-vexpress-tc2 + morph: strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph + repo: upstream:linux-stable + ref: 660613d1a4e94144490850b6c3d350331860fac4 + unpetrify-ref: v3.19.2 diff --git a/old/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph b/old/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph new file mode 100644 index 00000000..fd6fab15 --- /dev/null +++ b/old/strata/bsp-armv7b-vexpress-tc2/linux-armv7b-vexpress-tc2.morph @@ -0,0 +1,57 @@ +name: linux-armv7b-vexpress-tc2 +kind: chunk +configure-commands: +- make vexpress_defconfig +- scripts/config -e CPU_BIG_ENDIAN +- scripts/config -e CPU_ENDIAN_BE8 +- scripts/config -e CPU_BE8_BOOT_LE +- scripts/config -e PACKET +- scripts/config -e UNIX +- scripts/config -e NET_KEY +- scripts/config -e INET +- scripts/config -e IP_MULTICAST +- scripts/config -e IP_PNP +- scripts/config -e IP_PNP_DHCP +- scripts/config -e IP_PNP_BOOTP +- scripts/config --set-str UEVENT_HELPER_PATH '' +- scripts/config -e DM_SNAPSHOT +- scripts/config -e DEVTMPFS +- scripts/config -e DEVTMPFS_MOUNT +- scripts/config -e BLK_DEV_LOOP +- scripts/config -e BTRFS_FS +- scripts/config -e TMPFS +- scripts/config -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e IKCONFIG +- scripts/config -e IKCONFIG_PROC +- scripts/config -e CGROUPS +- scripts/config -e CONFIG_FHANDLE +- scripts/config -e DEVPTS_MULTIPLE_INSTANCES +- scripts/config -e AUTOFS4_FS +- scripts/config -e NETWORK_FILESYSTEMS +- scripts/config -e NFS_FS +- scripts/config -e NFS_V3 +- scripts/config -e ROOT_NFS +- scripts/config -e LOCKD +- scripts/config -e LOCKD_V4 +- scripts/config -e NFS_COMMON +- scripts/config -e SUNRPC +- scripts/config -e SYSVIPC +- scripts/config -e CONFIG_POSIX_MQUEUE +- scripts/config -e CPU_IDLE +- scripts/config -e EXT4_FS +- 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 +- scripts/config -e VETH +- yes '' | make oldconfig +build-commands: +- make zImage vexpress-v2p-ca15_a7.dtb +- | + cat arch/arm/boot/zImage arch/arm/boot/dts/vexpress-v2p-ca15_a7.dtb | + dd conv=sync bs=4 of=kernel.bin +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp kernel.bin "$DESTDIR"/boot/zImage diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit.morph new file mode 100644 index 00000000..403e04e1 --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit.morph @@ -0,0 +1,39 @@ +name: bsp-armv7l-altera-socfpga-devkit +kind: stratum +description: | + The platform dependent components required to boot the Altera Cortex-A9 + HPS core on an Altera SoCFPGA development kit. +build-depends: +- morph: strata/coreutils-common.morph +- morph: strata/tools.morph +chunks: +- name: u-boot-tools@socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit/u-boot-tools@socfpga-devkit.morph + repo: upstream:u-boot + ref: 905e8f9e53766e606bd4a0ed46d804889e613f32 + unpetrify-ref: v2015.07-rc1 +- name: u-boot@socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit/u-boot@socfpga-devkit.morph + repo: upstream:u-boot-socfpga + ref: 32c1d91bc0d10beca54c2dfc5b475d4ffeffc15a + unpetrify-ref: socfpga_v2013.01.01 +- name: bsp-support@socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit/bsp-support@socfpga-devkit.morph + repo: baserock:baserock/bsp-support + ref: 95e6be2188ad9dfd13cb8887cdc698519831871d + unpetrify-ref: master + build-depends: + - u-boot-tools@socfpga-devkit +- name: preloader@socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit/preloader@socfpga-devkit.morph + repo: upstream:u-boot-socfpga + ref: 32c1d91bc0d10beca54c2dfc5b475d4ffeffc15a + unpetrify-ref: socfpga_v2013.01.01 + build-depends: + - bsp-support@socfpga-devkit + - u-boot-tools@socfpga-devkit +- name: linux-armv7l-altera-socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit/linux-armv7l-altera-socfpga-devkit.morph + repo: upstream:linux + ref: e26081808edadfd257c6c9d81014e3b25e9a6118 + unpetrify-ref: v4.1-rc4 diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit/bsp-support@socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/bsp-support@socfpga-devkit.morph new file mode 100644 index 00000000..2e206b4e --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/bsp-support@socfpga-devkit.morph @@ -0,0 +1,17 @@ +name: bsp-support@socfpga-devkit +kind: chunk +build-commands: +# Modify auto-generated source files: +- mv altera-socfpga/* . +- for file in patches/*.diff; do patch -p 1 < "$file"; done +- sed -i 's/^PRELOADER_SETTINGS_DIR := .*$/PRELOADER_SETTINGS_DIR := .\/hps_hps_0/' hardware-handoff/spl_bsp/Makefile +- sed -i 's/^CROSS_COMPILE := .*$/CROSS_COMPILE := \/usr\/bin\//' hardware-handoff/spl_bsp/Makefile +- mkenvimage -s 4096 -o socfpga-devkit-env.img socfpga-devkit-env.txt +- dtc -f -I dts -O dtb dts-generated/socfpga-devkit.dts > socfpga-devkit.dtb +install-commands: +- mkdir -p "$DESTDIR/boot" +- install -m 755 socfpga-devkit-env.img "$DESTDIR/boot" +- install -m 755 socfpga-devkit.dtb "$DESTDIR/boot" +# These files are required later, to be built against U-Boot: +- mkdir -p "$DESTDIR/tmp/preloader" +- cp -R ./hardware-handoff/* "$DESTDIR/tmp/preloader" diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit/device-tree-compiler.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/device-tree-compiler.morph new file mode 100644 index 00000000..8abfafc8 --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/device-tree-compiler.morph @@ -0,0 +1,6 @@ +name: device-tree-compiler +kind: chunk +build-commands: +- make all +install-commands: +- make install DESTDIR="$DESTDIR" PREFIX="$PREFIX" diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit/linux-armv7l-altera-socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/linux-armv7l-altera-socfpga-devkit.morph new file mode 100644 index 00000000..be372265 --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/linux-armv7l-altera-socfpga-devkit.morph @@ -0,0 +1,34 @@ +name: linux-armv7l-altera-socfpga-devkit +kind: chunk +configure-commands: +- git status +- make ARCH=arm socfpga_defconfig +- scripts/config -e BTRFS_FS +- scripts/config -e BTRFS_FS_POSIX_ACL +- scripts/config -d BTRFS_FS_CHECK_INTEGRITY +- scripts/config -e DEVTMPFS +- scripts/config -e DEVTMPFS_MOUNT +- scripts/config -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e CONFIG_FHANDLE +- scripts/config -e CGROUPS +- scripts/config -e AUTOFS4_FS +- scripts/config -e BLK_DEV_LOOP +- scripts/config --set-str UEVENT_HELPER_PATH '' +- scripts/config -e DM_SNAPSHOT +- scripts/config -e IKCONFIG +- scripts/config -e IKCONFIG_PROC +- 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 +- scripts/config -e IPV6 +- scripts/config -d MTD_NAND +- yes '' | make oldconfig +build-commands: +- make ARCH=arm LOADADDR=0x8000 zImage dtbs $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/arm/boot/zImage "$DESTDIR"/boot/zImage +- cp arch/arm/boot/dts/socfpga_cyclone5*.dtb "$DESTDIR"/boot/ diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit/preloader@socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/preloader@socfpga-devkit.morph new file mode 100644 index 00000000..c61b10a7 --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/preloader@socfpga-devkit.morph @@ -0,0 +1,17 @@ +name: preloader@socfpga-devkit +kind: chunk +configure-commands: +- mkdir uboot-socfpga +- find -maxdepth 1 | egrep -v '^./uboot-socfpga|\.$' | xargs -I {} mv {} uboot-socfpga +- cp -R /tmp/preloader/spl_bsp/* . +- cp -R /tmp/preloader/hps_hps_0 . +build-commands: +- make +- mkimage -T socfpgaimage -d uboot-socfpga/spl/u-boot-spl.bin preloader.bin +# Signed preloader needs to be duplicated four times +# which U-Boot's mkimage tool doesn't support +- dd if=/dev/zero of=socfpga-preloader.img bs=64K count=4 +- for i in $(seq 0 3); do dd if=preloader.bin of=socfpga-preloader.img bs=64K seek="$i" conv=notrunc; done +install-commands: +- mkdir -p "$DESTDIR/boot" +- install -m 755 socfpga-preloader.img "$DESTDIR/boot" diff --git a/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot-tools@socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot-tools@socfpga-devkit.morph new file mode 100644 index 00000000..f7d3f7cb --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot-tools@socfpga-devkit.morph @@ -0,0 +1,14 @@ +name: u-boot-tools@socfpga-devkit +kind: chunk +configure-commands: +- git status +- make ARCH=arm socfpga_cyclone5_config +build-commands: +- make ARCH=arm tools +install-commands: +- mkdir -p "$DESTDIR$PREFIX/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/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot@socfpga-devkit.morph b/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot@socfpga-devkit.morph new file mode 100644 index 00000000..2b7ce450 --- /dev/null +++ b/old/strata/bsp-armv7l-altera-socfpga-devkit/u-boot@socfpga-devkit.morph @@ -0,0 +1,9 @@ +name: u-boot@socfpga-devkit +kind: chunk +configure-commands: +- make ARCH=arm socfpga_cyclone5_config +build-commands: +- make ARCH=arm +install-commands: +- mkdir -p "$DESTDIR/boot" +- install -m 755 u-boot.img "$DESTDIR/boot" diff --git a/old/strata/bsp-armv8b64-generic.morph b/old/strata/bsp-armv8b64-generic.morph new file mode 100644 index 00000000..636e62b4 --- /dev/null +++ b/old/strata/bsp-armv8b64-generic.morph @@ -0,0 +1,15 @@ +name: bsp-armv8b64-generic +kind: stratum +description: | + The set of platform specific components required for booting generic ARMv8 + systems in big-endian mode, such as the 64-bit APM XGene ARM based m400 + Moonshot cartridge. +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-armv8b64-generic + morph: strata/bsp-armv8b64-generic/linux-armv8b64-generic.morph + repo: upstream:linux + ref: cd1397b1f6e429b82e94565b0af93c6bd44e4271 + unpetrify-ref: baserock/bjdooks/m400-be3 + build-depends: [] diff --git a/old/strata/bsp-armv8b64-generic/linux-armv8b64-generic.morph b/old/strata/bsp-armv8b64-generic/linux-armv8b64-generic.morph new file mode 100644 index 00000000..9362eb6e --- /dev/null +++ b/old/strata/bsp-armv8b64-generic/linux-armv8b64-generic.morph @@ -0,0 +1,278 @@ +name: linux-armv8b64-generic +kind: chunk +configure-commands: +- make ARCH=arm64 defconfig +- 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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e XFS_FS +- scripts/config -e LIBCRC32C +- scripts/config -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -d JBD_DEBUG +- scripts/config -d JBD2_DEBUG +- scripts/config -e BLK_DEV_LOOP +- scripts/config -d BLK_DEV_CRYPTOLOOP +- scripts/config -e CEPH_FS +- scripts/config --set-val BLK_DEV_LOOP_MIN_COUNT 8 +- scripts/config -e DM_SNAPSHOT +- scripts/config -e VIRTIO +- scripts/config -e VIRTIO_RING +- scripts/config -e VIRTIO_PCI +- scripts/config -e VIRTIO_BALLOON +- scripts/config -e VIRTIO_BLK +- scripts/config -e VIRTIO_NET +- scripts/config -e VIRTIO_CONSOLE +- scripts/config -e HW_RANDOM_VIRTIO +- scripts/config -e 9P_FS +- scripts/config -e 9P_FSCACHE +- scripts/config -e 9P_FS_POSIX_ACL +- scripts/config -e NET_9P +- scripts/config -e NET_9P_VIRTIO +- scripts/config -e R8169 +- scripts/config -e 8139TOO +- scripts/config -e 8139CP +- 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 +- scripts/config -e KVM +- scripts/config -e TUN +- scripts/config -e BRIDGE +- scripts/config -e VHOST_NET +- scripts/config -e NF_NAT +- scripts/config -e IP_NF_NAT +- scripts/config -e IP_NF_TARGET_MASQUERADE +- 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 +- scripts/config -e IPV6 +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +# Required for M400 +- scripts/config -e SATA_AHCI_PLATFORM +- scripts/config -e AHCI_XGENE +- scripts/config -e GENERIC_PHY +- scripts/config -e PHY_XGENE +- scripts/config -e NET_VENDOR_MELLANOX +- scripts/config -e MLX4_EN +- scripts/config -e MLX4_EN_DCB +- scripts/config -e MLX4_EN_VXLAN +- scripts/config -e MLX4_CORE +- scripts/config -e MLX5_CORE +- scripts/config -e NET_IP_TUNNEL +- scripts/config -e VXLAN +- scripts/config -e UIO +- scripts/config -e UIO_PDRV_GENIRQ +- scripts/config -e GPIO_DWAPB +- scripts/config -e KEYBOARD_GPIO +- scripts/config -e INPUT_POLLDEV +- scripts/config -e KEYBOARD_GPIO_POLLED +- scripts/config -d DMA_CMA +- scripts/config -e POWER_RESET +- scripts/config -e POWER_RESET_GPIO +- scripts/config -e POWER_RESET_SYSCON +- scripts/config -e POWER_AVS +# Big endian kernel +- scripts/config -e CPU_BIG_ENDIAN +- yes '' | make ARCH=arm64 oldconfig +build-commands: +# Only generate Image here, uImage generated in deployment +# due to availability of mkimage build systems +- make vmlinux dtbs $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make install dtbs_install INSTALL_PATH="$DESTDIR/boot" +- cp arch/arm64/boot/Image "$DESTDIR/boot/vmlinux" diff --git a/old/strata/bsp-armv8l64-generic.morph b/old/strata/bsp-armv8l64-generic.morph new file mode 100644 index 00000000..ca74dbe3 --- /dev/null +++ b/old/strata/bsp-armv8l64-generic.morph @@ -0,0 +1,14 @@ +name: bsp-armv8l64-generic +kind: stratum +description: | + The set of platform specific components required for booting + armv8l64-based systems, like the 64-bit APM XGene ARM based m400 + Moonshot cartridge. +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-armv8l64-generic + morph: strata/bsp-armv8l64-generic/linux-armv8l64-generic.morph + repo: upstream:linux + ref: 5f06398ae6a04f414932243de38b5cf3d264ff84 + unpetrify-ref: baserock/apm-xgene-m400-moonshot-cartridge diff --git a/old/strata/bsp-armv8l64-generic/linux-armv8l64-generic.morph b/old/strata/bsp-armv8l64-generic/linux-armv8l64-generic.morph new file mode 100644 index 00000000..dd54b4e4 --- /dev/null +++ b/old/strata/bsp-armv8l64-generic/linux-armv8l64-generic.morph @@ -0,0 +1,276 @@ +name: linux-armv8l64-generic +kind: chunk +configure-commands: +- make ARCH=arm64 defconfig +- 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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e XFS_FS +- scripts/config -e LIBCRC32C +- scripts/config -d JBD_DEBUG +- scripts/config -d JBD2_DEBUG +- scripts/config -e BLK_DEV_LOOP +- scripts/config -d BLK_DEV_CRYPTOLOOP +- scripts/config -e CEPH_FS +- scripts/config --set-val BLK_DEV_LOOP_MIN_COUNT 8 +- scripts/config -e DM_SNAPSHOT +- scripts/config -e VIRTIO +- scripts/config -e VIRTIO_RING +- scripts/config -e VIRTIO_PCI +- scripts/config -e VIRTIO_BALLOON +- scripts/config -e VIRTIO_BLK +- scripts/config -e VIRTIO_NET +- scripts/config -e VIRTIO_CONSOLE +- scripts/config -e HW_RANDOM_VIRTIO +- scripts/config -e 9P_FS +- scripts/config -e 9P_FSCACHE +- scripts/config -e 9P_FS_POSIX_ACL +- scripts/config -e NET_9P +- scripts/config -e NET_9P_VIRTIO +- scripts/config -e R8169 +- scripts/config -e 8139TOO +- scripts/config -e 8139CP +- 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 +- scripts/config -e KVM +- scripts/config -e TUN +- scripts/config -e BRIDGE +- scripts/config -e VHOST_NET +- scripts/config -e NF_NAT +- scripts/config -e IP_NF_NAT +- scripts/config -e IP_NF_TARGET_MASQUERADE +- 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 +- scripts/config -e IPV6 +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +# Required for M400 +- scripts/config -e SATA_AHCI_PLATFORM +- scripts/config -e AHCI_XGENE +- scripts/config -e GENERIC_PHY +- scripts/config -e PHY_XGENE +- scripts/config -e NET_VENDOR_MELLANOX +- scripts/config -e MLX4_EN +- scripts/config -e MLX4_EN_DCB +- scripts/config -e MLX4_EN_VXLAN +- scripts/config -e MLX4_CORE +- scripts/config -e MLX5_CORE +- scripts/config -e NET_IP_TUNNEL +- scripts/config -e VXLAN +- scripts/config -e UIO +- scripts/config -e UIO_PDRV_GENIRQ +- scripts/config -e GPIO_DWAPB +- scripts/config -e KEYBOARD_GPIO +- scripts/config -e INPUT_POLLDEV +- scripts/config -e KEYBOARD_GPIO_POLLED +- scripts/config -d DMA_CMA +- scripts/config -e POWER_RESET +- scripts/config -e POWER_RESET_GPIO +- scripts/config -e POWER_RESET_SYSCON +- scripts/config -e POWER_AVS +- yes '' | make ARCH=arm64 oldconfig +build-commands: +# Only generate Image here, uImage generated in deployment +# due to availability of mkimage build systems +- make vmlinux dtbs $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make install dtbs_install INSTALL_PATH="$DESTDIR/boot" +- cp arch/arm64/boot/Image "$DESTDIR/boot/vmlinux" diff --git a/old/strata/bsp-jetson.morph b/old/strata/bsp-jetson.morph new file mode 100644 index 00000000..746c17a6 --- /dev/null +++ b/old/strata/bsp-jetson.morph @@ -0,0 +1,36 @@ +name: bsp-jetson +kind: stratum +description: | + 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 + accelerated graphics stack on this platform. Note that the SATA and + networking will not work unless you have flashed the bootloader on + your board to the version of U-Boot built in this stratum. Also, the + CPUs on the Jetson run at a slow speed with this version of Linux. +build-depends: +- morph: strata/core.morph +chunks: +- name: device-tree-compiler@jetson + morph: strata/bsp-jetson/device-tree-compiler@jetson.morph + repo: upstream:device-tree-compiler + ref: 302fca9f4c283e1994cf0a5a9ce1cf43ca15e6d2 + unpetrify-ref: v1.4.1 +- name: u-boot@jetson + morph: strata/bsp-jetson/u-boot@jetson.morph + repo: upstream:u-boot + ref: 5ec0003b19cbdf06ccd6941237cbc0d1c3468e2d + unpetrify-ref: v2015.10 + build-depends: + - device-tree-compiler@jetson +- name: linux-jetson-tk1 + morph: strata/bsp-jetson/linux-jetson-tk1.morph + repo: upstream:linux + ref: 69973b830859bc6529a7a0468ba0d80ee5117826 + unpetrify-ref: v4.9 +- name: linux-firmware@jetson + morph: strata/bsp-jetson/linux-firmware@jetson.morph + repo: upstream:linux-firmware + ref: 6ebf5d57d9f6d0cf05558baef1af2b90a3fe98ed + unpetrify-ref: master diff --git a/old/strata/bsp-jetson/device-tree-compiler@jetson.morph b/old/strata/bsp-jetson/device-tree-compiler@jetson.morph new file mode 100644 index 00000000..52c57739 --- /dev/null +++ b/old/strata/bsp-jetson/device-tree-compiler@jetson.morph @@ -0,0 +1,6 @@ +name: device-tree-compiler@jetson +kind: chunk +build-commands: +- make all +install-commands: +- make install DESTDIR="$DESTDIR" PREFIX="$PREFIX" diff --git a/old/strata/bsp-jetson/linux-firmware@jetson.morph b/old/strata/bsp-jetson/linux-firmware@jetson.morph new file mode 100644 index 00000000..e8415e09 --- /dev/null +++ b/old/strata/bsp-jetson/linux-firmware@jetson.morph @@ -0,0 +1,15 @@ +name: linux-firmware@jetson +kind: chunk +install-commands: +- install -d "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -d "$DESTDIR/lib/firmware/nvidia/tegra124" +- install -m644 nvidia/gk20a/fecs_data.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/fecs_inst.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/gpccs_data.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/gpccs_inst.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/sw_bundle_init.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/sw_ctx.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/sw_method_init.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/gk20a/sw_nonctx.bin "$DESTDIR/lib/firmware/nvidia/gk20a" +- install -m644 nvidia/tegra124/xusb.bin "$DESTDIR/lib/firmware/nvidia/tegra124" +- install -m644 LICENCE.nvidia "$DESTDIR/lib/firmware" diff --git a/old/strata/bsp-jetson/linux-jetson-tk1.morph b/old/strata/bsp-jetson/linux-jetson-tk1.morph new file mode 100644 index 00000000..b2d56d54 --- /dev/null +++ b/old/strata/bsp-jetson/linux-jetson-tk1.morph @@ -0,0 +1,252 @@ +name: linux-jetson-tk1 +kind: chunk +configure-commands: +- make ARCH=arm tegra_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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e OVERLAY_FS +- scripts/config -e XFS_FS +- scripts/config -e LIBCRC32C +- 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 DM_SNAPSHOT +- 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 +- scripts/config -e DRM_TEGRA_STAGING +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +- scripts/config -e NOUVEAU_PLATFORM_DRIVER +- scripts/config -e DRM_TEGRA_STAGING +- scripts/config -e BT +- 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-jetson-tk1.dtb "$DESTDIR"/boot/. +- make modules +- make INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -d "$DESTDIR$PREFIX/src/linux" +- | + ( + printf 'Makefile\0' + printf 'Module.symvers\0' + find arch/arm -maxdepth 1 -name 'Makefile*' -print0 + find arch/arm \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print0 + find arch/arm \( -type d -a \( -name include -o -name scripts \) \) -o \ + \! -type d -a \( -path '*include/*' -o -path '*scripts/*' \) -print0 + find include -name 'asm*' -prune -o -print0 + find include/asm-generic -print0 + find include/uapi -print0 + find scripts -print0 + ) | cpio -0pumd "$DESTDIR$PREFIX/src/linux" +system-integration: + linux-jetson-tk1-misc: + # This is required for any modules to work correctly. However, it depends + # `depmod` from the 'kmod' chunk in the 'foundation' stratum, so it runs + # conditionally on `depmod` existing to avoid breaking in + # minimal-system-x86_64. + 00-depmod: + - if which depmod; then (cd /usr/lib/modules && for version in *; do depmod -a "$version"; done) fi diff --git a/old/strata/bsp-jetson/u-boot@jetson.morph b/old/strata/bsp-jetson/u-boot@jetson.morph new file mode 100644 index 00000000..533f253a --- /dev/null +++ b/old/strata/bsp-jetson/u-boot@jetson.morph @@ -0,0 +1,20 @@ +name: u-boot@jetson +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" +- 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/." +- install -m 755 tools/mkenvimage "$DESTDIR$PREFIX/bin/." +- install -m 755 tools/mkimage "$DESTDIR$PREFIX/bin/." diff --git a/old/strata/bsp-ppc64-generic.morph b/old/strata/bsp-ppc64-generic.morph new file mode 100644 index 00000000..ea606a75 --- /dev/null +++ b/old/strata/bsp-ppc64-generic.morph @@ -0,0 +1,11 @@ +name: bsp-ppc64-generic +kind: stratum +description: The platform dependent components required to boot a ppc64 board. +build-depends: +- morph: strata/core.morph +chunks: +- name: linux-ppc64 + morph: strata/bsp-ppc64-generic/linux-ppc64.morph + repo: upstream:linux + ref: 39a8804455fb23f09157341d3ba7db6d7ae6ee76 + unpetrify-ref: v4.0 diff --git a/old/strata/bsp-ppc64-generic/linux-ppc64.morph b/old/strata/bsp-ppc64-generic/linux-ppc64.morph new file mode 100644 index 00000000..d2ef0747 --- /dev/null +++ b/old/strata/bsp-ppc64-generic/linux-ppc64.morph @@ -0,0 +1,226 @@ +name: linux-ppc64 +kind: chunk +configure-commands: +- make ARCH=powerpc ppc64_defconfig +- 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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e XFS_FS +- scripts/config -e LIBCRC32C +- 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 DM_SNAPSHOT +- 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 +- scripts/config -e IP_PNP +- scripts/config -e IP_PNP_DHCP +- scripts/config -e NFS_FS +- scripts/config -e ROOT_NFS +- scripts/config -e PCI +- scripts/config -e TIGON3 +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS ARCH=powerpc zImage +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/powerpc/boot/zImage "$DESTDIR"/boot/zImage diff --git a/old/strata/bsp-wandboard.morph b/old/strata/bsp-wandboard.morph new file mode 100644 index 00000000..ba704b1b --- /dev/null +++ b/old/strata/bsp-wandboard.morph @@ -0,0 +1,18 @@ +name: bsp-wandboard +kind: stratum +description: The platform dependent components required to boot an wandboard ARM board. +build-depends: +- morph: strata/core.morph +chunks: +- name: u-boot@wandboard + morph: strata/bsp-wandboard/u-boot@wandboard.morph + repo: upstream:u-boot + ref: fe57382d04b46c37f34cf8d3b3ad876554fd12bf + unpetrify-ref: baserock/morph +- name: linux-armv7-wandboard + morph: strata/bsp-wandboard/linux-armv7-wandboard.morph + repo: upstream:linux-stable + ref: 660613d1a4e94144490850b6c3d350331860fac4 + unpetrify-ref: v3.19.2 + build-depends: + - u-boot@wandboard diff --git a/old/strata/bsp-wandboard/linux-armv7-wandboard.morph b/old/strata/bsp-wandboard/linux-armv7-wandboard.morph new file mode 100644 index 00000000..8137198e --- /dev/null +++ b/old/strata/bsp-wandboard/linux-armv7-wandboard.morph @@ -0,0 +1,70 @@ +name: linux-armv7-wandboard +kind: chunk +configure-commands: +- make ARCH=arm imx_v6_v7_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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e FUSE_FS +- scripts/config -e OVERLAY_FS +- 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 DM_SNAPSHOT +- 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 +- scripts/config -e VLAN_8021Q +- scripts/config -e BRIDGE_VLAN_FILTERING +- scripts/config -e VETH +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS ARCH=arm LOADADDR=0x10800000 uImage dtbs +- | + cat >boot.script <<'EOF' + setenv image_addr "0x12000000" + setenv bootargs "console=ttymxc0,115200 root=/dev/nfs rw ip=dhcp nfsroot=${fileserver}:${nfsroot},v3,tcp" + dhcp ${image_addr} ${fileserver}:${tfpboot}/uImage + bootm ${image_addr} + EOF +- mkimage -A arm -T script -C none -n "Wandboard TFTP Boot Script" -d boot.script + boot.scr +install-commands: +- mkdir -p "$DESTDIR"/boot +- cp arch/arm/boot/uImage "$DESTDIR"/boot/uImage +- cp boot.scr "$DESTDIR"/boot/boot.scr +- cp arch/arm/boot/dts/imx6*-wandboard.dtb "$DESTDIR"/boot/. diff --git a/old/strata/bsp-wandboard/u-boot@wandboard.morph b/old/strata/bsp-wandboard/u-boot@wandboard.morph new file mode 100644 index 00000000..8a51ee7c --- /dev/null +++ b/old/strata/bsp-wandboard/u-boot@wandboard.morph @@ -0,0 +1,11 @@ +name: u-boot@wandboard +kind: chunk +build-commands: +- make tools +install-commands: +- mkdir -p "$DESTDIR$PREFIX/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/old/strata/bsp-x86_32-generic.morph b/old/strata/bsp-x86_32-generic.morph new file mode 100644 index 00000000..949a77ad --- /dev/null +++ b/old/strata/bsp-x86_32-generic.morph @@ -0,0 +1,26 @@ +name: bsp-x86_32-generic +kind: stratum +description: The set of platform specific components required for booting a 32-bit + x86 based system. +build-depends: +# nasm wants asciidoc and xmlto for generating its docs +# so include docutils here +- morph: strata/docutils.morph +chunks: +- name: linux-x86-32-generic + morph: strata/bsp-x86_32-generic/linux-x86-32-generic.morph + repo: upstream:linux + ref: 69973b830859bc6529a7a0468ba0d80ee5117826 + unpetrify-ref: v4.9 +- name: nasm + morph: strata/bsp-x86_32-generic/nasm.morph + repo: upstream:nasm + ref: 8fa0fe16408afc76ce1ae4387e1a9d46893cfda6 + unpetrify-ref: nasm-2.11.08 +- name: syslinux + morph: strata/bsp-x86_32-generic/syslinux.morph + repo: upstream:syslinux + ref: f92b88bc6c65ba71dad92fe7da7b7085607b439a + unpetrify-ref: baserock/syslinux-4.06-gcc5-glibc2.20 + build-depends: + - nasm diff --git a/old/strata/bsp-x86_32-generic/linux-x86-32-generic.morph b/old/strata/bsp-x86_32-generic/linux-x86-32-generic.morph new file mode 100644 index 00000000..a28e43d7 --- /dev/null +++ b/old/strata/bsp-x86_32-generic/linux-x86-32-generic.morph @@ -0,0 +1,299 @@ +name: linux-x86-32-generic +kind: chunk +products: +- artifact: linux-x86-32-generic-devel + include: + - (usr/)?src/linux/.* +- artifact: linux-x86-32-generic-bins + include: + - boot/.* +- artifact: linux-x86-32-generic-libs + include: + - lib/.* +configure-commands: +- make defconfig +- 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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e XFS_FS +- scripts/config -e LIBCRC32C +- scripts/config -d JBD_DEBUG +- scripts/config -d JBD2_DEBUG +- scripts/config -e BLK_DEV_LOOP +- scripts/config -d BLK_DEV_CRYPTOLOOP +- scripts/config -e CEPH_FS +- scripts/config --set-val BLK_DEV_LOOP_MIN_COUNT 8 +- scripts/config -e DM_SNAPSHOT +- scripts/config -e VIRTIO +- scripts/config -e VIRTIO_RING +- scripts/config -e VIRTIO_PCI +- scripts/config -e VIRTIO_BALLOON +- scripts/config -e VIRTIO_BLK +- scripts/config -e VIRTIO_NET +- scripts/config -e VIRTIO_CONSOLE +- scripts/config -e HW_RANDOM_VIRTIO +- scripts/config -e 9P_FS +- scripts/config -e 9P_FSCACHE +- scripts/config -e 9P_FS_POSIX_ACL +- scripts/config -e NET_9P +- scripts/config -e NET_9P_VIRTIO +- scripts/config -e R8169 +- scripts/config -e 8139TOO +- scripts/config -e 8139CP +- scripts/config -e ATL1 +- scripts/config -e ATL1C +- scripts/config -e ATL1E +- scripts/config -e E100 +- scripts/config -e E1000 +- scripts/config -e E1000E +- scripts/config -e USB_USBNET +- scripts/config -e USB_NET_AX8817X +- scripts/config -e USB_NET_AX88179_178A +- scripts/config -e USB_NET_DM9601 +- 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 +- scripts/config -e KVM +- scripts/config -e TUN +- scripts/config -e BRIDGE +- scripts/config -e VHOST_NET +- scripts/config -e NF_NAT +- scripts/config -e IP_NF_NAT +- scripts/config -e IP_NF_TARGET_MASQUERADE +- 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 +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e KVM_INTEL +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +- scripts/config -e SCSI_VIRTIO +- scripts/config -e HYPERVISOR_GUEST +- scripts/config -e PARAVIRT +- scripts/config -e CONFIG_SND_INTEL8X0 +- scripts/config -m CONFIG_DRM_CIRRUS_QEMU +- scripts/config -m CONFIG_DRM_BOCHS +- scripts/config -e BT +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make INSTALL_PATH="$DESTDIR"/boot install +- make INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -d "$DESTDIR$PREFIX/src/linux" +- | + ( + printf 'Makefile\0' + printf 'Module.symvers\0' + find arch/x86 -maxdepth 1 -name 'Makefile*' -print0 + find arch/x86 \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print0 + find arch/x86 \( -type d -a \( -name include -o -name scripts \) \) -o \ + \! -type d -a \( -path '*include/*' -o -path '*scripts/*' \) -print0 + find include -name 'asm*' -prune -o -print0 + find include/asm-generic -print0 + find include/uapi -print0 + find scripts -print0 + ) | cpio -0pumd "$DESTDIR$PREFIX/src/linux" +system-integration: + linux-x86-32-generic-misc: + # This is required for any modules to work correctly. However, it depends + # `depmod` from the 'kmod' chunk in the 'foundation' stratum, so it runs + # conditionally on `depmod` existing to avoid breaking in + # minimal-system-x86_32. + 00-depmod: + - if which depmod; then (cd /usr/lib/modules && for version in *; do depmod -a "$version"; done) fi diff --git a/old/strata/bsp-x86_32-generic/nasm.morph b/old/strata/bsp-x86_32-generic/nasm.morph new file mode 100644 index 00000000..0ab1a629 --- /dev/null +++ b/old/strata/bsp-x86_32-generic/nasm.morph @@ -0,0 +1,5 @@ +name: nasm +kind: chunk +build-system: autotools +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/bsp-x86_32-generic/syslinux.morph b/old/strata/bsp-x86_32-generic/syslinux.morph new file mode 100644 index 00000000..4570865b --- /dev/null +++ b/old/strata/bsp-x86_32-generic/syslinux.morph @@ -0,0 +1,12 @@ +name: syslinux +kind: chunk +products: +- artifact: syslinux-devel + include: + - (usr/)?share/syslinux/com32.* +build-commands: +- make clean +- make NO_WERROR=1 +- make NO_WERROR=1 installer +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/bsp-x86_64-generic.morph b/old/strata/bsp-x86_64-generic.morph new file mode 100644 index 00000000..8b9e3207 --- /dev/null +++ b/old/strata/bsp-x86_64-generic.morph @@ -0,0 +1,26 @@ +name: bsp-x86_64-generic +kind: stratum +description: The set of platform specific components required for booting a 64-bit + x86 based system. +build-depends: +# nasm wants asciidoc and xmlto for generating its docs +# so include docutils here +- morph: strata/docutils.morph +chunks: +- name: linux-x86-64-generic + morph: strata/bsp-x86_64-generic/linux-x86-64-generic.morph + repo: upstream:linux + ref: 69973b830859bc6529a7a0468ba0d80ee5117826 + unpetrify-ref: v4.9 +- name: nasm + morph: strata/bsp-x86_64-generic/nasm.morph + repo: upstream:nasm + ref: 8fa0fe16408afc76ce1ae4387e1a9d46893cfda6 + unpetrify-ref: nasm-2.11.08 +- name: syslinux + morph: strata/bsp-x86_64-generic/syslinux.morph + repo: upstream:syslinux + ref: f92b88bc6c65ba71dad92fe7da7b7085607b439a + unpetrify-ref: baserock/syslinux-4.06-gcc5-glibc2.20 + build-depends: + - nasm diff --git a/old/strata/bsp-x86_64-generic/linux-x86-64-generic.morph b/old/strata/bsp-x86_64-generic/linux-x86-64-generic.morph new file mode 100644 index 00000000..203ccea0 --- /dev/null +++ b/old/strata/bsp-x86_64-generic/linux-x86-64-generic.morph @@ -0,0 +1,300 @@ +name: linux-x86-64-generic +kind: chunk +products: +- artifact: linux-x86-64-generic-devel + include: + - (usr/)?src/linux/.* +- artifact: linux-x86-64-generic-bins + include: + - boot/.* +- artifact: linux-x86-64-generic-libs + include: + - lib/.* +configure-commands: +- make defconfig +- 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 DEVPTS_MULTIPLE_INSTANCES +- 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 -e FUSE_FS +- scripts/config -e OVERLAY_FS +- scripts/config -e XFS_FS +- scripts/config -e LIBCRC32C +- scripts/config -d JBD_DEBUG +- scripts/config -d JBD2_DEBUG +- scripts/config -e BLK_DEV_LOOP +- scripts/config -d BLK_DEV_CRYPTOLOOP +- scripts/config -e CEPH_FS +- scripts/config --set-val BLK_DEV_LOOP_MIN_COUNT 8 +- scripts/config -e DM_SNAPSHOT +- scripts/config -e VIRTIO +- scripts/config -e VIRTIO_RING +- scripts/config -e VIRTIO_PCI +- scripts/config -e VIRTIO_BALLOON +- scripts/config -e VIRTIO_BLK +- scripts/config -e VIRTIO_NET +- scripts/config -e VIRTIO_CONSOLE +- scripts/config -e HW_RANDOM_VIRTIO +- scripts/config -e 9P_FS +- scripts/config -e 9P_FSCACHE +- scripts/config -e 9P_FS_POSIX_ACL +- scripts/config -e NET_9P +- scripts/config -e NET_9P_VIRTIO +- scripts/config -e R8169 +- scripts/config -e 8139TOO +- scripts/config -e 8139CP +- scripts/config -e ATL1 +- scripts/config -e ATL1C +- scripts/config -e ATL1E +- scripts/config -e E100 +- scripts/config -e E1000 +- scripts/config -e E1000E +- scripts/config -e USB_USBNET +- scripts/config -e USB_NET_AX8817X +- scripts/config -e USB_NET_AX88179_178A +- scripts/config -e USB_NET_DM9601 +- 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 +- scripts/config -e KVM +- scripts/config -e TUN +- scripts/config -e BRIDGE +- scripts/config -e VHOST_NET +- scripts/config -e NF_NAT +- scripts/config -e IP_NF_NAT +- scripts/config -e IP_NF_TARGET_MASQUERADE +- 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 +- scripts/config -e BLK_DEV_NBD +- scripts/config -e BRIDGE_NF_EBTABLES +- scripts/config -e NETFILTER +- scripts/config -e NETFILTER_ADVANCED +- scripts/config -e NETFILTER_XT_MATCH_ADDRTYPE +- scripts/config -e OPENVSWITCH +- scripts/config -e OPENVSWITCH_VXLAN +- scripts/config -e CONFIG_OPENVSWITCH_GRE +- scripts/config -e NET_CLS_BASIC +- scripts/config -e NET_SCH_INGRESS +- scripts/config -e NET_ACT_POLICE +- scripts/config -e NET_IPGRE_DEMUX +- scripts/config -e NET_SCH_HTB +- scripts/config -e NET_SCH_HFSC +- scripts/config -e VXLAN +- scripts/config -e VETH +- scripts/config -e IP_NF_MATCH_AH +- scripts/config -e IP_NF_MATCH_ECN +- scripts/config -e IP_NF_MATCH_RPFILTER +- scripts/config -e IP_NF_MATCH_TTL +- scripts/config -e IP_NF_TARGET_SYNPROXY +- scripts/config -e IP_NF_TARGET_NETMAP +- scripts/config -e IP_NF_TARGET_REDIRECT +- scripts/config -e IP_NF_TARGET_CLUSTERIP +- scripts/config -e IP_NF_TARGET_ECN +- scripts/config -e IP_NF_TARGET_TTL +- scripts/config -e IP_NF_RAW +- scripts/config -e IP_NF_SECURITY +- scripts/config -e IP_NF_ARPTABLES +- scripts/config -e KVM_INTEL +- scripts/config -e NETFILTER_NETLINK_QUEUE +- scripts/config -e SCSI_NETLINK +- scripts/config -e NETFILTER_XT_TARGET_MARK +- scripts/config -e NETFILTER_XT_SET +- scripts/config -e IP_SET +- scripts/config -e IP_SET_BITMAP_IP +- scripts/config -e IP_SET_BITMAP_IPMAC +- scripts/config -e IP_SET_BITMAP_PORT +- scripts/config -e IP_SET_HASH_IP +- scripts/config -e IP_SET_HASH_IPMARK +- scripts/config -e IP_SET_HASH_IPPORT +- scripts/config -e IP_SET_HASH_IPPORTIP +- scripts/config -e IP_SET_HASH_IPPORTNET +- scripts/config -e IP_SET_HASH_MAC +- scripts/config -e IP_SET_HASH_NETPORTNET +- scripts/config -e IP_SET_HASH_NET +- scripts/config -e IP_SET_HASH_NETNET +- scripts/config -e IP_SET_HASH_NETPORT +- scripts/config -e IP_SET_HASH_NETIFACE +- scripts/config -e IP_SET_LIST_SET +- scripts/config -e NF_CONNTRACK_TIMEOUT +- scripts/config -e NF_CONNTRACK_TIMESTAMP +- scripts/config -e NF_CONNTRACK_EVENTS +- scripts/config -e NF_CONNTRACK_LABELS +- scripts/config -e NETFILTER_NETLINK_ACCT +- scripts/config -e NETFILTER_NETLINK_QUEUE_CT +- scripts/config -e NF_CT_PROTO_DCCP +- scripts/config -e NF_CT_PROTO_GRE +- scripts/config -e NF_CT_PROTO_SCTP +- scripts/config -e NF_CT_PROTO_UDPLITE +- scripts/config -e NF_CT_NETLINK_TIMEOUT +- scripts/config -e NF_CT_NETLINK_HELPER +- scripts/config -e NF_CONNTRACK_AMANDA +- scripts/config -e NF_CONNTRACK_H323 +- scripts/config -e NF_CONNTRACK_BROADCAST +- scripts/config -e NF_CONNTRACK_NETBIOS_NS +- scripts/config -e NF_CONNTRACK_SNMP +- scripts/config -e NF_CONNTRACK_PPTP +- scripts/config -e NF_CONNTRACK_SANE +- scripts/config -e NF_CONNTRACK_TFTP +- scripts/config -e NF_LOG_COMMON +- scripts/config -e NF_NAT_PROTO_DCCP +- scripts/config -e NF_NAT_PROTO_UDPLITE +- scripts/config -e NF_NAT_PROTO_SCTP +- scripts/config -e NF_NAT_AMANDA +- scripts/config -e NF_NAT_TFTP +- scripts/config -e NF_TABLES +- scripts/config -e NF_TABLES_INET +- scripts/config -e NFT_COMPAT +- scripts/config -e NFT_EXTHDR +- scripts/config -e NFT_META +- scripts/config -e NFT_CT +- scripts/config -e NFT_LIMIT +- scripts/config -e NFT_NAT +- scripts/config -e NFT_QUEUE +- scripts/config -e NFT_REJECT +- scripts/config -e NFT_REJECT_INET +- scripts/config -e NFT_RBTREE +- scripts/config -e NFT_HASH +- scripts/config -e NFT_COUNTER +- scripts/config -e NFT_LOG +- scripts/config -e NFT_MASQ +- scripts/config -e NETFILTER_XT_CONNMARK +- scripts/config -e NETFILTER_XT_TARGET_AUDIT +- scripts/config -e NETFILTER_XT_TARGET_CHECKSUM +- scripts/config -e NETFILTER_XT_TARGET_CLASSIFY +- scripts/config -e NETFILTER_XT_TARGET_CT +- scripts/config -e NETFILTER_XT_TARGET_DSCP +- scripts/config -e NETFILTER_XT_TARGET_HMARK +- scripts/config -e NETFILTER_XT_TARGET_LED +- scripts/config -e NETFILTER_XT_TARGET_LOG +- scripts/config -e NETFILTER_XT_TARGET_NFQUEUE +- scripts/config -e NETFILTER_XT_TARGET_RATEEST +- scripts/config -e NETFILTER_XT_TARGET_TPROXY +- scripts/config -e NETFILTER_XT_TARGET_TCPOPTSTRIP +- scripts/config -e NETFILTER_XT_TARGET_TEE +- scripts/config -e NETFILTER_XT_TARGET_TRACE +- scripts/config -e NETFILTER_XT_TARGET_IDLETIMER +- scripts/config -e NETFILTER_XT_MATCH_BPF +- scripts/config -e NETFILTER_XT_MATCH_CLUSTER +- scripts/config -e NETFILTER_XT_MATCH_COMMENT +- scripts/config -e NETFILTER_XT_MATCH_CONNBYTES +- scripts/config -e NETFILTER_XT_MATCH_CONNLABEL +- scripts/config -e NETFILTER_XT_MATCH_CONNLIMIT +- scripts/config -e NETFILTER_XT_MATCH_CPU +- scripts/config -e NETFILTER_XT_MATCH_DCCP +- scripts/config -e NETFILTER_XT_MATCH_DEVGROUP +- scripts/config -e NETFILTER_XT_MATCH_DSCP +- scripts/config -e NETFILTER_XT_MATCH_ESP +- scripts/config -e NETFILTER_XT_MATCH_HASHLIMIT +- scripts/config -e NETFILTER_XT_MATCH_HELPER +- scripts/config -e NETFILTER_XT_MATCH_IPCOMP +- scripts/config -e NETFILTER_XT_MATCH_IPRANGE +- scripts/config -e NETFILTER_XT_MATCH_IPVS +- scripts/config -e NETFILTER_XT_MATCH_L2TP +- scripts/config -e NETFILTER_XT_MATCH_LENGTH +- scripts/config -e NETFILTER_XT_MATCH_LIMIT +- scripts/config -e NETFILTER_XT_MATCH_MAC +- scripts/config -e NETFILTER_XT_MATCH_MULTIPORT +- scripts/config -e NETFILTER_XT_MATCH_NFACCT +- scripts/config -e NETFILTER_XT_MATCH_OSF +- scripts/config -e NETFILTER_XT_MATCH_OWNER +- scripts/config -e NETFILTER_XT_MATCH_CGROUP +- scripts/config -e NETFILTER_XT_MATCH_PHYSDEV +- scripts/config -e NETFILTER_XT_MATCH_PKTTYPE +- scripts/config -e NETFILTER_XT_MATCH_QUOTA +- scripts/config -e NETFILTER_XT_MATCH_RATEEST +- scripts/config -e NETFILTER_XT_MATCH_REALM +- scripts/config -e NETFILTER_XT_MATCH_RECENT +- scripts/config -e NETFILTER_XT_MATCH_SCTP +- scripts/config -e NETFILTER_XT_MATCH_SOCKET +- scripts/config -e NETFILTER_XT_MATCH_STATISTIC +- scripts/config -e NETFILTER_XT_MATCH_STRING +- scripts/config -e NETFILTER_XT_MATCH_TCPMSS +- scripts/config -e NETFILTER_XT_MATCH_TIME +- scripts/config -e NETFILTER_XT_MATCH_U32 +- scripts/config -e IP_VS +- scripts/config -e BRIDGE_NETFILTER +- scripts/config -e CRYPTO_CRC32C +- scripts/config -e CONFIGFS_FS +- scripts/config -e EXPERT +- scripts/config -e TARGET_CORE +- scripts/config -e ISCSI_TARGET +- scripts/config -e TCM_IBLOCK +- scripts/config -e TCM_FILEIO +- scripts/config -e TCM_PSCSI +- scripts/config -e TCM_USER +- scripts/config -e CONFIG_UIO +- scripts/config -e LOOPBACK_TARGET +- scripts/config -e TCM_FC +- scripts/config -e LIBFC +- scripts/config -e SCSI_FC_ATTRS +- scripts/config -e SCSI_ISCSI_ATTRS +- scripts/config -e ISCSI_TCP +- scripts/config -e SCSI_LOWLEVEL +- scripts/config -e SCSI_VIRTIO +- scripts/config -e HYPERVISOR_GUEST +- scripts/config -e PARAVIRT +- scripts/config -e CONFIG_SND_INTEL8X0 +- scripts/config -m CONFIG_DRM_CIRRUS_QEMU +- scripts/config -m CONFIG_DRM_BOCHS +- scripts/config -m CONFIG_DRM_VIRTIO_GPU +- scripts/config -e BT +- yes '' | make oldconfig +build-commands: +- make $MAKEFLAGS +install-commands: +- mkdir -p "$DESTDIR"/boot +- make INSTALL_PATH="$DESTDIR"/boot install +- make INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -d "$DESTDIR$PREFIX/src/linux" +- | + ( + printf 'Makefile\0' + printf 'Module.symvers\0' + find arch/x86 -maxdepth 1 -name 'Makefile*' -print0 + find arch/x86 \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print0 + find arch/x86 \( -type d -a \( -name include -o -name scripts \) \) -o \ + \! -type d -a \( -path '*include/*' -o -path '*scripts/*' \) -print0 + find include -name 'asm*' -prune -o -print0 + find include/asm-generic -print0 + find include/uapi -print0 + find scripts -print0 + ) | cpio -0pumd "$DESTDIR$PREFIX/src/linux" +system-integration: + linux-x86-64-generic-misc: + # This is required for any modules to work correctly. However, it depends + # `depmod` from the 'kmod' chunk in the 'foundation' stratum, so it runs + # conditionally on `depmod` existing to avoid breaking in + # minimal-system-x86_64. + 00-depmod: + - if which depmod; then (cd /usr/lib/modules && for version in *; do depmod -a "$version"; done) fi diff --git a/old/strata/bsp-x86_64-generic/nasm.morph b/old/strata/bsp-x86_64-generic/nasm.morph new file mode 100644 index 00000000..0ab1a629 --- /dev/null +++ b/old/strata/bsp-x86_64-generic/nasm.morph @@ -0,0 +1,5 @@ +name: nasm +kind: chunk +build-system: autotools +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/bsp-x86_64-generic/syslinux.morph b/old/strata/bsp-x86_64-generic/syslinux.morph new file mode 100644 index 00000000..4570865b --- /dev/null +++ b/old/strata/bsp-x86_64-generic/syslinux.morph @@ -0,0 +1,12 @@ +name: syslinux +kind: chunk +products: +- artifact: syslinux-devel + include: + - (usr/)?share/syslinux/com32.* +build-commands: +- make clean +- make NO_WERROR=1 +- make NO_WERROR=1 installer +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/bsp-x86_both-tools.morph b/old/strata/bsp-x86_both-tools.morph new file mode 100644 index 00000000..f5102cc0 --- /dev/null +++ b/old/strata/bsp-x86_both-tools.morph @@ -0,0 +1,21 @@ +name: bsp-x86_both-tools +kind: stratum +description: The set of platform specific components required for configuring a bootable + x86 based system. +build-depends: +# nasm wants asciidoc and xmlto for generating its docs +# so include docutils here +- morph: strata/docutils.morph +chunks: +- name: nasm + morph: strata/bsp-x86_both-tools/nasm.morph + repo: upstream:nasm + ref: 8fa0fe16408afc76ce1ae4387e1a9d46893cfda6 + unpetrify-ref: nasm-2.11.08 +- name: syslinux + morph: strata/bsp-x86_both-tools/syslinux.morph + repo: upstream:syslinux + ref: f92b88bc6c65ba71dad92fe7da7b7085607b439a + unpetrify-ref: baserock/syslinux-4.06-gcc5-glibc2.20 + build-depends: + - nasm diff --git a/old/strata/bsp-x86_both-tools/nasm.morph b/old/strata/bsp-x86_both-tools/nasm.morph new file mode 100644 index 00000000..0ab1a629 --- /dev/null +++ b/old/strata/bsp-x86_both-tools/nasm.morph @@ -0,0 +1,5 @@ +name: nasm +kind: chunk +build-system: autotools +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/bsp-x86_both-tools/syslinux.morph b/old/strata/bsp-x86_both-tools/syslinux.morph new file mode 100644 index 00000000..4570865b --- /dev/null +++ b/old/strata/bsp-x86_both-tools/syslinux.morph @@ -0,0 +1,12 @@ +name: syslinux +kind: chunk +products: +- artifact: syslinux-devel + include: + - (usr/)?share/syslinux/com32.* +build-commands: +- make clean +- make NO_WERROR=1 +- make NO_WERROR=1 installer +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/strata/build-essential.morph b/old/strata/build-essential.morph new file mode 100644 index 00000000..e56d7579 --- /dev/null +++ b/old/strata/build-essential.morph @@ -0,0 +1,412 @@ +name: build-essential +kind: stratum +description: | + Toolchain stratum + + Stage 1: build a minimal cross compiler with the host's tools. + + Starting with a cross compiler ensures that (a) nothing from the host + can leak into the build-essential artifacts, and (b) cross-compiling + build-essential is fully tested and supported, since we always use the + cross code paths. + + Stage 2: cross-build the whole of build-essential, using the host's tools + but the cross-compiler toolchain. + + Stage 2 GCC outputs code for the same 'bootstrap' machine as stage 1 GCC, + but because stage 2 GCC is also built to *run* on the bootstrap machine + it can only execute inside the stage 3 chroot (due to being built against + a libc with a non-standard prefix). + + Stage 3: build the whole of build-essential again, this time using a + staging area containing only the output of stage 2. The result of this + build is fully reproducible. + + We do a switch-a-roo between stage 2 and 3: stages 2 chunks are all built + to run on a host *-bootstrap-* while stage 3 chunks are native-built for + a *-baserock-* machine. This works, because the cross build was all for + show (and cleanliness) and the binaries actually still run on the host. + + After build-essential is built we do another trick. See + stage2-fhs-dirs.morph for details. Basically, /bin is a symlink to + /tools/bin during stage 2 but in stage 3 it becomes a real directory + again. + + PLEASE KEEP THE REFS IN 'armv7lhf-cross-toolchain' STRATUM UP TO DATE WITH + THIS ONE! + + Please note that the chunk 'build-depends' field is treated differently in + this stratum to how other strata in definitions.git use it. Other strata + rely on the fact that dependencies of a dependency (called 'transitive + dependencies') are implicitly included in the staging area. Within + build-essential, some chunks list transitive dependencies explicitly to + make clearer what is going on. +products: +- artifact: build-essential-minimal + include: + - fhs-dirs-.* + - busybox-.* + - glibc-nss +chunks: +- name: stage1-binutils + morph: strata/build-essential/stage1-binutils.morph + repo: upstream:binutils-tarball + ref: 5500a97a2ad1735db5b35bc51cfb825c1f4c38df + unpetrify-ref: binutils-2.25 + build-mode: bootstrap + prefix: /tools + +- name: stage1-gcc + morph: strata/build-essential/stage1-gcc.morph + repo: upstream:gcc-tarball + ref: 7ccad68acf3805b35721e861fb9bc5a9e40effc8 + unpetrify-ref: baserock/gcc-5.3.0 + build-depends: + - stage1-binutils + build-mode: bootstrap + prefix: /tools + +- name: stage2-linux-api-headers + morph: strata/build-essential/stage2-linux-api-headers.morph + repo: upstream:linux + ref: 39a8804455fb23f09157341d3ba7db6d7ae6ee76 + unpetrify-ref: v4.0 + build-depends: + - stage1-binutils + - stage1-gcc + build-mode: bootstrap + prefix: /tools + +- name: stage2-glibc + morph: strata/build-essential/stage2-glibc.morph + repo: upstream:glibc + ref: fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2 + unpetrify-ref: glibc-2.24 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + build-mode: bootstrap + prefix: /tools + +- name: stage2-libstdc++ + morph: strata/build-essential/stage2-libstdc++.morph + repo: upstream:gcc-tarball + ref: 7ccad68acf3805b35721e861fb9bc5a9e40effc8 + unpetrify-ref: baserock/gcc-5.3.0 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + build-mode: bootstrap + prefix: /tools + +- name: stage2-binutils + morph: strata/build-essential/stage2-binutils.morph + repo: upstream:binutils-tarball + ref: 5500a97a2ad1735db5b35bc51cfb825c1f4c38df + unpetrify-ref: binutils-2.25 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - 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: 7ccad68acf3805b35721e861fb9bc5a9e40effc8 + unpetrify-ref: baserock/gcc-5.3.0 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + build-mode: bootstrap + prefix: /tools + +- name: stage2-gcc + morph: strata/build-essential/stage2-gcc.morph + repo: upstream:gcc-tarball + ref: 7ccad68acf3805b35721e861fb9bc5a9e40effc8 + unpetrify-ref: baserock/gcc-5.3.0 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + - stage2-gcc-fixed-headers + - stage2-libstdc++ + build-mode: bootstrap + prefix: /tools + +- name: stage2-busybox + morph: strata/build-essential/stage2-busybox.morph + repo: upstream:busybox + ref: 1ecfe811fe2f70380170ef7d820e8150054e88ca + unpetrify-ref: '1_23_1' + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - 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-mode: bootstrap + prefix: /tools + +- name: stage2-fhs-dirs + morph: strata/build-essential/stage2-fhs-dirs.morph + repo: baserock:baserock/fhs-dirs + ref: 9fafca436000bb57ddd5c498f8a75ea7b274f6c5 + unpetrify-ref: baserock/usr_merge + build-mode: bootstrap + prefix: /tools + +- name: stage2-gawk + morph: strata/build-essential/stage2-gawk.morph + repo: upstream:gawk + ref: 925f9363c4b0a5bb9375298afcdcf404efb32587 + unpetrify-ref: gawk-4.1-stable + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + build-mode: bootstrap + prefix: /tools + +- name: stage2-make + morph: strata/build-essential/stage2-make.morph + repo: upstream:make-tarball + ref: 4978d7129e42340ab9efeb0cb9cae4ad0fa052d4 + unpetrify-ref: baserock/make-4.1-ttyname-segfault-fix + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + build-mode: bootstrap + prefix: /tools + +- name: stage2-reset-specs + morph: strata/build-essential/stage2-reset-specs.morph + repo: upstream:glibc + ref: fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2 + unpetrify-ref: glibc-2.24 + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-glibc + build-mode: bootstrap + prefix: /tools + +- name: fhs-dirs + morph: strata/build-essential/fhs-dirs.morph + repo: baserock:baserock/fhs-dirs + ref: 9fafca436000bb57ddd5c498f8a75ea7b274f6c5 + unpetrify-ref: baserock/usr_merge + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + +- name: linux-api-headers + morph: strata/build-essential/linux-api-headers.morph + repo: upstream:linux + ref: 39a8804455fb23f09157341d3ba7db6d7ae6ee76 + unpetrify-ref: v4.0 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - fhs-dirs + +- name: glibc + morph: strata/build-essential/glibc.morph + repo: upstream:glibc + ref: fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2 + unpetrify-ref: glibc-2.24 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-fake-bash + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - linux-api-headers + artifacts: + 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 + ref: 50893291621658f355bc5b4d450a8d06a563053d + unpetrify-ref: v1.2.8 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + artifacts: + zlib-libs: build-essential-minimal + +- name: binutils + morph: strata/build-essential/binutils.morph + repo: upstream:binutils-tarball + ref: 5500a97a2ad1735db5b35bc51cfb825c1f4c38df + unpetrify-ref: binutils-2.25 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + - zlib + +- name: busybox + morph: strata/build-essential/busybox.morph + repo: upstream:busybox + ref: 1ecfe811fe2f70380170ef7d820e8150054e88ca + unpetrify-ref: '1_23_1' + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + +- name: gawk + morph: strata/build-essential/gawk.morph + repo: upstream:gawk + ref: dc5af665700d9b04fdf9c18930526d28eef5d5d9 + unpetrify-ref: gawk-4.1.1 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + +- name: m4-tarball + morph: strata/build-essential/m4-tarball.morph + repo: upstream:m4-tarball + ref: 23c11479b3ad787adc7a651ee0c4347839e47723 + unpetrify-ref: m4-1.4.17 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + +- name: gcc + morph: strata/build-essential/gcc.morph + repo: upstream:gcc-tarball + ref: 7ccad68acf3805b35721e861fb9bc5a9e40effc8 + unpetrify-ref: baserock/gcc-5.3.0 + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + - zlib + - m4-tarball + - linux-api-headers + artifacts: + gcc-libs: build-essential-minimal + +- name: make + morph: strata/build-essential/make.morph + repo: upstream:make-tarball + ref: 4978d7129e42340ab9efeb0cb9cae4ad0fa052d4 + unpetrify-ref: baserock/make-4.1-ttyname-segfault-fix + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + +- name: ccache + morph: strata/build-essential/ccache.morph + repo: upstream:ccache + ref: 567631456f0899cdf0c382f898d38aadc8901d32 + unpetrify-ref: baserock/build-essential + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-glibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - stage2-reset-specs + - glibc + - zlib diff --git a/old/strata/build-essential/binutils.morph b/old/strata/build-essential/binutils.morph new file mode 100644 index 00000000..bab52672 --- /dev/null +++ b/old/strata/build-essential/binutils.morph @@ -0,0 +1,8 @@ +name: binutils +kind: chunk +build-system: autotools + +configure-commands: +- | + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --with-system-zlib diff --git a/old/strata/build-essential/busybox.morph b/old/strata/build-essential/busybox.morph new file mode 100644 index 00000000..1bbd97a6 --- /dev/null +++ b/old/strata/build-essential/busybox.morph @@ -0,0 +1,89 @@ +name: busybox +kind: chunk + +configure-commands: +# Busybox's default config has everything enabled. +- make defconfig KCONFIG_NOTIMESTAMP=1 + +- sed -e 's|.*UDHCPC_DEFAULT_SCRIPT.*|CONFIG_UDHCPC_DEFAULT_SCRIPT="'"$PREFIX"/share/udhcpc/default.script'"|' + -i .config +- sed -e 's|.*IFUPDOWN_IFSTATE_PATH.*|CONFIG_IFUPDOWN_IFSTATE_PATH="/run/ifstate"|' + -i .config + +# Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin. +- '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' + -i .config' +# We have GAWK, but in GENIVI baseline we want to get rid of it +# - sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config + +# Depends on stuff that was removed since eglibc 2.14. +- sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config + +# Busybox Patch is incompatible enough with GNU Patch that it can't be +# used for GNULib projects built from Git. +- sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config + +# None of this is needed because we have kmod; and it actually breaks the +# Linux build because depmod isn't compatible enough with util-linux's. +- sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config +- sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config +- sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config +- sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config + +# General features that we don't need. +- sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not + set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config +- sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config +- sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config +- sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config +- sed -e 's/CONFIG_LSPCI=y.*/# CONFIG_LSPCI is not set/' -i .config +- sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config +- sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config +- sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config +- sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config +- sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config +- sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config +- sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config + +# Now turn on some little bits we do need +- sed -e 's/# CONFIG_BBCONFIG is not set/CONFIG_BBCONFIG=y/' -i .config +- sed -e 's/# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set/CONFIG_FEATURE_COMPRESS_BBCONFIG=y/' + -i .config +- sed -e 's/# CONFIG_FEATURE_MOUNT_HELPERS is not set/CONFIG_FEATURE_MOUNT_HELPERS=y/' + -i .config + + +build-commands: +- make KCONFIG_NOTIMESTAMP=1 + +install-commands: +- | + if [ "$PREFIX" = /usr ]; then PREFIX=; fi && + make CONFIG_PREFIX="$DESTDIR$PREFIX" KCONFIG_NOTIMESTAMP=1 install && + chmod 6755 "$DESTDIR$PREFIX"/bin/busybox +# Set up man environment variables +- mkdir -p "$DESTDIR"/etc +- | + cat << EOF > "$DESTDIR/etc/man.conf" + # This file is used by man to provide a manpath for those without one by + # examining their PATH environment variable. + # + # Lines beginning with `#' are comments and are ignored. Any combination of + # tabs or spaces may be used as `whitespace' separators. + + MANDATORY_MANPATH /usr/man + MANDATORY_MANPATH /usr/share/man + MANDATORY_MANPATH /usr/local/share/man + EOF diff --git a/old/strata/build-essential/ccache.morph b/old/strata/build-essential/ccache.morph new file mode 100644 index 00000000..383eee8a --- /dev/null +++ b/old/strata/build-essential/ccache.morph @@ -0,0 +1,12 @@ +name: ccache +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" +install-commands: +- make DESTDIR="$DESTDIR" install +- mkdir -p "$DESTDIR/$PREFIX/lib/ccache" +- for cc in gcc cc g++ c++; do ln -sf "$PREFIX/bin/ccache" "$DESTDIR/$PREFIX/lib/ccache/$cc"; + done +- for cc in gcc cc g++ c++; do ln -sf "$PREFIX/bin/ccache" "$DESTDIR/$PREFIX/lib/ccache/$TARGET-$cc"; + done diff --git a/old/strata/build-essential/fhs-dirs.morph b/old/strata/build-essential/fhs-dirs.morph new file mode 100644 index 00000000..f4a1b1e9 --- /dev/null +++ b/old/strata/build-essential/fhs-dirs.morph @@ -0,0 +1,49 @@ +name: fhs-dirs +kind: chunk +description: create the FHS 2.3 directory hierarchy and the usual files +install-commands: +- sh ./create-fhs-dirs "$DESTDIR" +- install -m 644 passwd "$DESTDIR/etc/passwd" +- install -m 600 shadow "$DESTDIR/etc/shadow" +- install -m 644 interfaces "$DESTDIR/etc/network/interfaces" +- install -m 644 group "$DESTDIR/etc/group" +- install -m 644 issue "$DESTDIR/etc/issue" +- install -m 644 services "$DESTDIR/etc/services" +- install -m 644 protocols "$DESTDIR/etc/protocols" +- echo baserock > "$DESTDIR"/etc/hostname +devices: +- type: c + filename: /dev/console + gid: 0 + major: 5 + minor: 1 + permissions: '0600' + uid: 0 +- type: c + filename: /dev/full + gid: 0 + major: 1 + minor: 7 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/null + gid: 0 + major: 1 + minor: 3 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/urandom + gid: 0 + major: 1 + minor: 9 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/zero + gid: 0 + major: 1 + minor: 5 + permissions: '0666' + uid: 0 diff --git a/old/strata/build-essential/gawk.morph b/old/strata/build-essential/gawk.morph new file mode 100644 index 00000000..1ad871c6 --- /dev/null +++ b/old/strata/build-essential/gawk.morph @@ -0,0 +1,5 @@ +name: gawk +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-nls diff --git a/old/strata/build-essential/gcc.morph b/old/strata/build-essential/gcc.morph new file mode 100644 index 00000000..18459b73 --- /dev/null +++ b/old/strata/build-essential/gcc.morph @@ -0,0 +1,62 @@ +name: gcc +kind: chunk + +products: +- artifact: gcc-libs + include: + - (usr/)lib/lib.*\.so(\.\d+)*$ +- artifact: gcc-doc + include: + - (usr/)?share/doc/.* + - (usr/)?share/man/.* + - (usr/)?share/info/.* +- artifact: gcc-devel + # devel includes everything which isn't documentation or libs, since + # everything else gcc produces is required for compiling + # this is the -devel artifact instead of -misc, since it goes in -devel + # stratum artifacts by default + include: [.*] +configure-commands: +- mkdir o + +# Configure flag notes: +# 1. An attempt to stop anything going in $PREFIX/lib64 (which doesn't +# fully work; we will need to hobble the multilib configuration in +# config/i386/t-linux64 if we really want to kill /lib64). +# 2. Avoid having more than one copy of ZLib in use on the system +# 3. Multilib does not make sense in Baserock. +- | + case "$MORPH_ARCH" in + armv7lhf) ARCH_FLAGS="--with-arch=armv7-a \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_FLAGS="--with-arch=armv7-a" ;; + esac + + cd o && ../configure \ + $ARCH_FLAGS \ + --prefix="$PREFIX" \ + `# [1]` --libdir=$PREFIX/lib \ + --disable-bootstrap \ + `# [2]` --with-system-zlib \ + `# [3]` --disable-multilib \ + --enable-languages=c,c++,fortran + +build-commands: +- | + case "$MORPH_ARCH" in + armv5*) sed -i "s/--host=none/--host=armv5/" o/Makefile + sed -i "s/--target=none/--target=armv5/" o/Makefile ;; + armv7*) sed -i "s/--host=none/--host=armv7a/" o/Makefile + sed -i "s/--target=none/--target=armv7a/" o/Makefile ;; + esac + cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install +- ln -s gcc "$DESTDIR/$PREFIX/bin/cc" +- | + for fortran_alias in f77 f90 f95; do + ln -s gfortran "$DESTDIR/$PREFIX/bin/$fortran_alias" + done diff --git a/old/strata/build-essential/glibc.morph b/old/strata/build-essential/glibc.morph new file mode 100644 index 00000000..6c87c5d9 --- /dev/null +++ b/old/strata/build-essential/glibc.morph @@ -0,0 +1,100 @@ +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(32|64)?/libSegFault\.so(\.\d+)*$ +- artifact: glibc-libs + include: + # This is processed after bins, so bins can take libSegFault.so + - (usr/)?lib(32|64)?/lib[^/]*\.so(\.\d+)*$ + - etc/ld.so.conf + - etc/ld.so.conf.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/)?lib/locale/.* + - (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=3.0.0 \ + --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 +- cd o && make install_root="$DESTDIR" localtime=UTC localedata/install-locales +- mkdir -p "$DESTDIR/etc" +- mkdir -p "$DESTDIR/etc/ld.so.conf.d" +- | + cat < 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" +- | + cat < ld.so.conf + /lib + /usr/lib + /usr/local/lib + include /etc/ld.so.conf.d/*.conf + EOF +- install -m 644 -o root -g root ld.so.conf "$DESTDIR/etc/ld.so.conf" diff --git a/old/strata/build-essential/linux-api-headers.morph b/old/strata/build-essential/linux-api-headers.morph new file mode 100644 index 00000000..62aa22b8 --- /dev/null +++ b/old/strata/build-essential/linux-api-headers.morph @@ -0,0 +1,24 @@ +name: linux-api-headers +kind: chunk +install-commands: +- | + case "$MORPH_ARCH" in + armv5l) + ARCH="arm" ;; + armv7b|armv7l|armv7lhf) + ARCH="arm" ;; + armv8l64|armv8b64) + ARCH="arm64" ;; + x86_32) + ARCH="i386" ;; + x86_64) + ARCH="x86_64" ;; + ppc64) + ARCH="powerpc" ;; + *) + echo "Error: unsupported Morph architecture: $MORPH_ARCH" >&2 + exit 1 + esac + ARCH=$ARCH make INSTALL_HDR_PATH=dest headers_install +- install -d "$DESTDIR${PREFIX-/usr}/include" +- cp -r dest/include/* "$DESTDIR/${PREFIX-/usr}/include" diff --git a/old/strata/build-essential/m4-tarball.morph b/old/strata/build-essential/m4-tarball.morph new file mode 100644 index 00000000..eb16726a --- /dev/null +++ b/old/strata/build-essential/m4-tarball.morph @@ -0,0 +1,5 @@ +name: m4-tarball +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-gcc-warnings diff --git a/old/strata/build-essential/make.morph b/old/strata/build-essential/make.morph new file mode 100644 index 00000000..1259b342 --- /dev/null +++ b/old/strata/build-essential/make.morph @@ -0,0 +1,5 @@ +name: make +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-nls diff --git a/old/strata/build-essential/stage1-binutils.morph b/old/strata/build-essential/stage1-binutils.morph new file mode 100644 index 00000000..69a79d14 --- /dev/null +++ b/old/strata/build-essential/stage1-binutils.morph @@ -0,0 +1,23 @@ +name: stage1-binutils +kind: chunk +build-system: autotools + +configure-commands: +# We set the sysroot location dynamically at runtime by passing +# `--sysroot` to GCC, so we need to build a linker with sysroot support. +# We set it to a non-existent directory as a safety net to avoid looking +# at the host dirs in case we forget to set the sysroot. Setting the +# lib path is vital to avoid the tools we build linking to the libraries +# on the host system; the '=' makes the path we give relative to the +# sysroot, which we can then set at runtime by passing -Wl,--sysroot to +# GCC. Although nothing should be installed on /lib64, we configure the +# linker to look at that directory as well to make things more robust +# (currently GCC installs libraries to this directory at least on +# x86_64). + +- | + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --build=$(sh config.guess) \ + --host=$(sh config.guess) \ + --target=$TARGET_STAGE1 \ + --with-sysroot=/nonexistentdir --with-lib-path="=$PREFIX/lib:=$PREFIX/lib64" diff --git a/old/strata/build-essential/stage1-gcc.morph b/old/strata/build-essential/stage1-gcc.morph new file mode 100644 index 00000000..175cfdee --- /dev/null +++ b/old/strata/build-essential/stage1-gcc.morph @@ -0,0 +1,82 @@ +name: stage1-gcc +kind: chunk + +configure-commands: +# Workaround from LFS due GCC not detecting stack protection correctly +- | + sed -i -e '/k prot/a \ + gcc_cv_libc_provides_ssp=yes + ' gcc/configure + +- mkdir o + +# Configure flag notes: +# 1. See gcc.morph. +# 2. Although we will be setting a sysroot at runtime, giving a +# temporary one at configuration time seems necessary so that +# `--with-native-system-header-dir` produces effect and +# /tools/include is in the include path for the newly built GCC. We +# set it by default to a non-existent directory to avoid GCC looking +# at the host dirs, in case we forget to give it at runtime. +# 3. Disable searching /usr/local/include for headers +# 4. The pass 1 compiler needs to find the libraries we build in pass +# 2. Include path must be set explicility, because it defaults to +# $SYSROOT/usr/include rather than $SYSROOT/include. +# 5. Disable stuff that doesn't work when building a cross compiler +# without an existing libc, and generally try to keep this build as +# simple as possible. +- | + case "$MORPH_ARCH" in + armv7lhf) ARCH_FLAGS="--with-arch=armv7-a \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_FLAGS="--with-arch=armv7-a" ;; + esac + + cd o && CXX="g++ -std=gnu++98" ../configure \ + $ARCH_FLAGS \ + --build=$(sh ../config.guess) \ + --host=$(sh ../config.guess) \ + --target=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + `# [1]` --libdir="$PREFIX/lib" \ + `# [2]` --with-sysroot=/nonexistentdir \ + --with-newlib \ + `# [3]` --with-local-prefix="$PREFIX" \ + `# [4]` --with-native-system-header-dir="$PREFIX/include" \ + --without-headers \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + `# [5]` --disable-decimal-float \ + `# [5]` --disable-threads \ + `# [5]` --disable-libatomic \ + `# [5]` --disable-libgomp \ + `# [5]` --disable-libitm \ + `# [5]` --disable-libquadmath \ + `# [5]` --disable-libsanitizer \ + `# [5]` --disable-libssp \ + `# [5]` --disable-libvtv \ + `# [5]` --disable-libcilkrts \ + `# [5]` --disable-libstdc++-v3 \ + --enable-languages=c,c++ + +build-commands: +- | + # GCC is not passing the correct host/target flags to GMP's configure + # script, which causes it to not use the machine-dependent code for + # the platform and use the generic one instead. However, the generic + # code results on an undefined reference to `__gmpn_invert_limb' in + # ARMv7. Fix the invocation of GMP's configure script so that GMP can + # use the machine-dependent code. + case "$MORPH_ARCH" in + armv5*) sed -i "s/--host=none/--host=armv5/" o/Makefile + sed -i "s/--target=none/--target=armv5/" o/Makefile ;; + armv7*) sed -i "s/--host=none/--host=armv7a/" o/Makefile + sed -i "s/--target=none/--target=armv7a/" o/Makefile ;; + esac + cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install diff --git a/old/strata/build-essential/stage2-binutils.morph b/old/strata/build-essential/stage2-binutils.morph new file mode 100644 index 00000000..b07b56a4 --- /dev/null +++ b/old/strata/build-essential/stage2-binutils.morph @@ -0,0 +1,21 @@ +name: stage2-binutils +kind: chunk +build-system: autotools + +configure-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CXX="$TARGET_STAGE1-g++ --sysroot=$STAGE2_SYSROOT" + # binutils has its own embedded libtool, which is old and strips out + # `--sysroot`. Work around by modifying the compiler command to + # include the sysroot flag + export CC="$TARGET_STAGE1-gcc --sysroot=$STAGE2_SYSROOT" + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --build=$(sh config.guess) \ + --host=$TARGET_STAGE1 \ + --target=$TARGET_STAGE1 + +build-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + make diff --git a/old/strata/build-essential/stage2-busybox.morph b/old/strata/build-essential/stage2-busybox.morph new file mode 100644 index 00000000..f271a40d --- /dev/null +++ b/old/strata/build-essential/stage2-busybox.morph @@ -0,0 +1,80 @@ +name: stage2-busybox +kind: chunk + +configure-commands: +# Explicitly setting HOSTCC is required because we have a 'gcc' earlier in +# the PATH supplied by the stage2-gcc chunk, which can't execute outside of +# the stage 3 staging area. +- make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- KCONFIG_NOTIMESTAMP=1 defconfig + +# Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin. +- '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' + -i .config' +# We have GAWK. +- sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config + +# Depends on stuff that was removed since eglibc 2.14. +- sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config + +# Busybox Patch is incompatible enough with GNU Patch that it can't be +# used for GNULib projects built from Git. +- sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config + +# None of this is needed because we have kmod; and it actually breaks the +# Linux build because depmod isn't compatible enough with util-linux's. +- sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config +- sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config +- sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config +- sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config + +# General features that we don't need. +- sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not + set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' + -i .config +- sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config +- sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config +- sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config +- sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config +- sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=""/' -i .config +- sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config +- sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config +- sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config +- sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config +- sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config +- sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config +- sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config +- sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config +- sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config +- sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config + +build-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export LDFLAGS="--sysroot=$STAGE2_SYSROOT" + make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- KCONFIG_NOTIMESTAMP=1 + +install-commands: +# We expect to be built with a non-standard prefix in stage 2 (i.e. not +# /usr). The install will break if prefix is set to /usr. +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export LDFLAGS="--sysroot=$STAGE2_SYSROOT" + make CONFIG_PREFIX="$DESTDIR$PREFIX" \ + HOSTCC="/usr/bin/gcc" \ + CROSS_COMPILE=$TARGET_STAGE1- \ + KCONFIG_NOTIMESTAMP=1 install && + chmod 6755 "$DESTDIR$PREFIX"/bin/busybox diff --git a/old/strata/build-essential/stage2-fake-bash.morph b/old/strata/build-essential/stage2-fake-bash.morph new file mode 100644 index 00000000..021fd366 --- /dev/null +++ b/old/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/old/strata/build-essential/stage2-fhs-dirs.morph b/old/strata/build-essential/stage2-fhs-dirs.morph new file mode 100644 index 00000000..6f842403 --- /dev/null +++ b/old/strata/build-essential/stage2-fhs-dirs.morph @@ -0,0 +1,51 @@ +name: stage2-fhs-dirs +kind: chunk +description: create the FHS 2.3 directory hierarchy and the usual files +install-commands: +- sh ./create-fhs-dirs "$DESTDIR" +- rmdir "$DESTDIR/usr/bin" +- ln -s "$PREFIX/bin" "$DESTDIR/usr/bin" +- install -m 644 passwd "$DESTDIR/etc/passwd" +- install -m 600 shadow "$DESTDIR/etc/shadow" +- install -m 644 interfaces "$DESTDIR/etc/network/interfaces" +- install -m 644 group "$DESTDIR/etc/group" +- install -m 644 issue "$DESTDIR/etc/issue" +- install -m 644 services "$DESTDIR/etc/services" +- install -m 644 protocols "$DESTDIR/etc/protocols" +- echo baserock > "$DESTDIR"/etc/hostname +devices: +- type: c + filename: /dev/console + gid: 0 + major: 5 + minor: 1 + permissions: '0600' + uid: 0 +- type: c + filename: /dev/full + gid: 0 + major: 1 + minor: 7 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/null + gid: 0 + major: 1 + minor: 3 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/urandom + gid: 0 + major: 1 + minor: 9 + permissions: '0666' + uid: 0 +- type: c + filename: /dev/zero + gid: 0 + major: 1 + minor: 5 + permissions: '0666' + uid: 0 diff --git a/old/strata/build-essential/stage2-gawk.morph b/old/strata/build-essential/stage2-gawk.morph new file mode 100644 index 00000000..15c838b6 --- /dev/null +++ b/old/strata/build-essential/stage2-gawk.morph @@ -0,0 +1,9 @@ +name: stage2-gawk +kind: chunk +build-system: autotools +configure-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" CPPFLAGS="--sysroot=$STAGE2_SYSROOT" CXX=false + LDFLAGS="--sysroot=$STAGE2_SYSROOT" ./configure --prefix="$PREFIX" --disable-nls + --build=$(sh config.guess) --host=$TARGET_STAGE1 +build-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" make diff --git a/old/strata/build-essential/stage2-gcc-fixed-headers.morph b/old/strata/build-essential/stage2-gcc-fixed-headers.morph new file mode 100644 index 00000000..10794872 --- /dev/null +++ b/old/strata/build-essential/stage2-gcc-fixed-headers.morph @@ -0,0 +1,19 @@ +name: stage2-gcc-fixed-headers +kind: chunk +install-commands: +# Stage 1 GCC's fixincludes process created a limits.h before there was +# a real limits.h available for the target. This step (taken from Linux +# Linux From Scratch) creates a better one so that stage 2 GCC can compile. +# +# THIS IS A FRAGILE HACK! We need to replace the headers. The only way to +# overwrite files in a staging area is to install a new chunk. +# This is undesired behaviour in the long term, as we want to never +# have overlaps, so this functionality may go away. +- | + libgcc_dir=$(dirname $($TARGET_STAGE1-gcc -print-libgcc-file-name)) + sysroot="$(dirname "$(pwd)")" + target_libgcc_dir="${libgcc_dir#$sysroot}" + mkdir -p "$DESTDIR/$target_libgcc_dir/include-fixed" + cat "gcc/limitx.h" "gcc/glimits.h" "gcc/limity.h" \ + >"$DESTDIR/$target_libgcc_dir/include-fixed/limits.h" + diff --git a/old/strata/build-essential/stage2-gcc.morph b/old/strata/build-essential/stage2-gcc.morph new file mode 100644 index 00000000..6f211e83 --- /dev/null +++ b/old/strata/build-essential/stage2-gcc.morph @@ -0,0 +1,81 @@ +name: stage2-gcc +kind: chunk + +configure-commands: +- mkdir o + +# In other projects we specify the sysroot location using CPPFLAGS. +# Here, that breaks because GCC compiles stuff for the *build* machine, +# too ... and this requires using the host's compiler, which cannot use +# the same set of CPPFLAGS as the target. If we specify the sysroot +# using CC instead then we don't interfere, because we are only +# specifying the *host* C compiler. +# +# Configure flag notes: +# 1. It's vital that this compiler runs in the bootstrap machine, and +# targets the same machine (TARGET_STAGE1) so that the stage 1 GCC +# is used instead of the compiler of the build machine. +# 2. See gcc.morph. +# 3. Disable searching /usr/local/include for headers +# 4. This flag causes the correct --sysroot flag to be passed when +# calling stage 1 GCC. +- | + case "$MORPH_ARCH" in + armv7lhf) ARCH_FLAGS="--with-arch=armv7-a \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_FLAGS="--with-arch=armv7-a" ;; + esac + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CC="$TARGET_STAGE1-gcc --sysroot=$STAGE2_SYSROOT" + export CXX="$TARGET_STAGE1-g++ --sysroot=$STAGE2_SYSROOT" + export AR="$TARGET_STAGE1-ar" + export RANLIB="$TARGET_STAGE1-ranlib" + cd o && ../configure \ + $ARCH_FLAGS \ + --build=$(sh ../config.guess) \ + `# [1]` --host=$TARGET_STAGE1 \ + `# [1]` --target=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + `# [2]` --libdir=$PREFIX/lib \ + `# [3]` --with-local-prefix=$PREFIX \ + `# [4]` --with-build-sysroot="$STAGE2_SYSROOT" \ + --disable-bootstrap \ + --disable-nls \ + --disable-multilib \ + --disable-libgomp \ + --disable-libstdcxx-pch \ + --enable-languages=c,c++ + +build-commands: +- | + case "$MORPH_ARCH" in + armv5*) sed -i "s/--host=none/--host=armv5/" o/Makefile + sed -i "s/--target=none/--target=armv5/" o/Makefile ;; + armv7*) sed -i "s/--host=none/--host=armv7a/" o/Makefile + sed -i "s/--target=none/--target=armv7a/" o/Makefile ;; + esac + export STAGE2_SYSROOT="$(dirname $(pwd))" + cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install + +# Stage 3 builds need to link against this file in the location that +# it will be in the final system, so we make a temporary link now. +# +# On x86_64 GCC resolutely installs its libraries into lib64. To fix this +# would require hobbling the MULTILIB_OSDIRNAMES field in +# gcc/config/i386/t-linux64 and this might break things, so for now we +# tolerate the inconsistency. +- | + if [ "$(echo $TARGET | cut -c -6)" = "x86_64" ]; then + libdir=lib64 + else + libdir=lib + fi + + install -d "$DESTDIR/lib" + ln -s "$PREFIX/$libdir/libgcc_s.so" "$DESTDIR/lib/" + ln -s "$PREFIX/$libdir/libgcc_s.so.1" "$DESTDIR/lib/" diff --git a/old/strata/build-essential/stage2-glibc.morph b/old/strata/build-essential/stage2-glibc.morph new file mode 100644 index 00000000..f3b7cc5d --- /dev/null +++ b/old/strata/build-essential/stage2-glibc.morph @@ -0,0 +1,104 @@ +name: stage2-glibc +kind: chunk +build-system: manual + +configure-commands: +- mkdir o + +# Configure flag notes: +# 1. Avoid installing to PREFIX/lib64 on x86_64. +# 2. Location of linux-api-headers. +# 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 && ../configure \ + $ARCH_FLAGS \ + --build=$(../scripts/config.guess) --host=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + --enable-obsolete-rpc \ + `# [1]` --libdir="$PREFIX/lib" \ + `# [2]` --with-headers="$(pwd)/../../$PREFIX/include" \ + `# [3]` --disable-profile --enable-kernel=2.6.25 \ + `# [4]` libc_cv_c_cleanup=yes libc_cv_ctors_header=yes \ + libc_cv_forced_unwind=yes libc_cv_ssp=no + +build-commands: +- cd o && make localtime=UTC + +install-commands: +- cd o && make install_root="$DESTDIR" localtime=UTC install +- mkdir -p "$DESTDIR/etc" +- mkdir -p "$DESTDIR/etc/ld.so.conf.d" +- | + cat < ld.so.conf + /lib + /usr/lib + /usr/local/lib + include /etc/ld.so.conf.d/*.conf + EOF +- install -m 644 -o root -g root ld.so.conf "$DESTDIR/etc/ld.so.conf" +- | + # Fix up GCC to handle the sysroot containing glibc being in a different + # location for each chunk build. + # + # For headers, it's enough to pass -B in the CPPFLAGS. This would work for + # the startup files (crt*.o) as well, except where libtool is involved (in + # which case it strips -B out of your LDFLAGS before calling GCC). We get + # around this by making GCC locate them relative to the environment variable + # STAGE2_SYSROOT, which we can then set along with CPPFLAGS in each stage 2 + # chunk build. + # + # We also force the use of the program loader at PREFIX/lib/ld.so instead + # of its usual home in /lib or /lib64, which is necessary for the output of + # stage 2 to work as a chroot when building stage 3. + + sysroot="$(dirname "$(pwd)")" + specs_dir="$(dirname $($TARGET_STAGE1-gcc --print-libgcc-file-name))" + target_specs_dir="$DESTDIR/${specs_dir#$sysroot}" + mkdir -p "$target_specs_dir" + + $TARGET_STAGE1-gcc -dumpspecs | + sed -e "s@[gMS]\?crt[1in].o%s@%:getenv(STAGE2_SYSROOT $PREFIX/lib/&)@g" \ + -e "s@/lib\(64\)\?/ld@$PREFIX/lib/ld@g" \ + > "$target_specs_dir/specs-for-sysroot" + + # NASTY HACK # + # We create a symlink to the actual specs here, so that later the + # symlink can be replaced with a dangling link. + # + # This is necessary as we need to have gcc use its internal specs, + # which can differ to the specs generated by `gcc -dumpspecs`. + # + # The dangling symlink will not make it onto the final system, just + # like all other bootstrap only components. + ln -s specs-for-sysroot "$target_specs_dir/specs" + +# Install a symlink for the program interpreter (ld.so) so that binaries +# 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 glibc in the file +# sysdeps/unix/sysv/linux/configure. +- install -d $DESTDIR/lib +- | + case "$MORPH_ARCH" in + x86_64) + install -d "$DESTDIR/lib64" + ln -s "$PREFIX/lib/ld-linux-x86-64.so.2" \ + "$DESTDIR/lib64/ld-linux-x86-64.so.2" ;; + ppc64) + install -d "$DESTDIR/lib64" + ln -s "$PREFIX/lib/ld64.so.1" \ + "$DESTDIR/lib64/ld64.so.1" ;; + *) + loader=$(basename $(ls "$DESTDIR$PREFIX"/lib/ld-linux*)) + [ -z $loader ] && loader=$(basename $(ls "$DESTDIR$PREFIX"/lib/ld.so*)) + [ -z $loader ] && ( echo "Bug in stage2-glibc ld.so symlinks" ; exit 1 ) + ln -s "$PREFIX/lib/$loader" "$DESTDIR/lib/$loader" + esac diff --git a/old/strata/build-essential/stage2-libstdc++.morph b/old/strata/build-essential/stage2-libstdc++.morph new file mode 100644 index 00000000..7ebd2da3 --- /dev/null +++ b/old/strata/build-essential/stage2-libstdc++.morph @@ -0,0 +1,36 @@ +name: stage2-libstdc++ +kind: chunk +configure-commands: +- mkdir o + +# Configure flag notes: +# 1. The thread C++ library cannot be built, as the thread C library +# was not build in stage1-gcc. +# 2. Prevents the installation of precompiled include files, which are +# not needed at this stage. +# 3. From LFS: the header location of C++ needs to be explicitly given +# as we are running the configure script from the top-level +# directory. +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + # -fPIC must be given, otherwise it will not be possible to create + # shared libraries linked to libstdc++ + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT -fPIC" + export LDFLAGS="--sysroot=$STAGE2_SYSROOT" + cd o && ../libstdc++-v3/configure \ + --build=$(sh ../config.guess) \ + --host="$TARGET_STAGE1" \ + --target="$TARGET_STAGE1" \ + --prefix="$PREFIX" \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + `# [1]` --disable-libstdcxx-threads \ + `# [2]` --disable-libstdcxx-pch \ + `# [3]` --with-gxx-include-dir=/tools/"$TARGET_STAGE1"/include/c++/5.3.0 + +build-commands: +- cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install diff --git a/old/strata/build-essential/stage2-linux-api-headers.morph b/old/strata/build-essential/stage2-linux-api-headers.morph new file mode 100644 index 00000000..1da94ee9 --- /dev/null +++ b/old/strata/build-essential/stage2-linux-api-headers.morph @@ -0,0 +1,24 @@ +name: stage2-linux-api-headers +kind: chunk +install-commands: +- | + case "$MORPH_ARCH" in + armv5l) + ARCH="arm" ;; + armv7b|armv7l|armv7lhf) + ARCH="arm" ;; + armv8l64|armv8b64) + ARCH="arm64" ;; + x86_32) + ARCH="i386" ;; + x86_64) + ARCH="x86_64" ;; + ppc64) + ARCH="powerpc" ;; + *) + echo "Error: unsupported Morph architecture: $MORPH_ARCH" >&2 + exit 1 + esac + ARCH=$ARCH make INSTALL_HDR_PATH=dest headers_install +- install -d "$DESTDIR${PREFIX-/usr}/include" +- cp -r dest/include/* "$DESTDIR/${PREFIX-/usr}/include" diff --git a/old/strata/build-essential/stage2-make.morph b/old/strata/build-essential/stage2-make.morph new file mode 100644 index 00000000..af5e5347 --- /dev/null +++ b/old/strata/build-essential/stage2-make.morph @@ -0,0 +1,9 @@ +name: stage2-make +kind: chunk +build-system: autotools +configure-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" CPPFLAGS="--sysroot=$STAGE2_SYSROOT" CXX=false + LDFLAGS="--sysroot=$STAGE2_SYSROOT" ./configure --prefix="$PREFIX" --disable-nls --without-guile + --build=$(sh config/config.guess) --host=$TARGET_STAGE1 +build-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" make diff --git a/old/strata/build-essential/stage2-reset-specs.morph b/old/strata/build-essential/stage2-reset-specs.morph new file mode 100644 index 00000000..8892f67c --- /dev/null +++ b/old/strata/build-essential/stage2-reset-specs.morph @@ -0,0 +1,21 @@ +name: stage2-reset-specs +kind: chunk + +# Nasty hack to get around being unable to reliably add configuration to gcc, +# hence the gcc specs are modified, combined with Baserock's rootfs protection +# preventing specs being modified before builds. +# The limitation is overcome by installing files as part of a chunk, which +# overwrites previous files. +# New specs were added for the bootstrap builds, but after stage2 we start +# having chrooted builds, so the old specs need to be replaced. +# Unfortunately we can't just replace the specs with the ones gcc produces, +# since gcc behaves differently without specs to with specs it produces! +# So we use a **NASTY HACK** to replace the specs symlink with one that +# points to a file that doesn't exist. +install-commands: +- | + STAGE2_SYSROOT="$(dirname "$(pwd)")" + specs_dir="$(dirname $($TARGET_STAGE1-gcc -print-libgcc-file-name))" + target_specs_dir="$DESTDIR/${specs_dir#$STAGE2_SYSROOT}" + mkdir -p "$target_specs_dir" + ln -s "temporary specs removed by baserock bootstrap" "$target_specs_dir/specs" diff --git a/old/strata/build-essential/zlib.morph b/old/strata/build-essential/zlib.morph new file mode 100644 index 00000000..900648b6 --- /dev/null +++ b/old/strata/build-essential/zlib.morph @@ -0,0 +1,9 @@ +name: zlib +kind: chunk +build-system: manual +configure-commands: +- ./configure --prefix="$PREFIX" +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/strata/cloudinit-support.morph b/old/strata/cloudinit-support.morph new file mode 100644 index 00000000..4cb15542 --- /dev/null +++ b/old/strata/cloudinit-support.morph @@ -0,0 +1,21 @@ +name: cloudinit-support +kind: stratum +description: A stratum with cloudinit to fit a system in the OpenStack cloud. +build-depends: +- morph: strata/build-essential.morph +- morph: strata/python2-core.morph +- morph: strata/python-common.morph +- morph: strata/foundation.morph +chunks: +- name: python-cheetah + repo: upstream:python-cheetah + ref: 831aa6b99d9b4fb012ee644d8e80e0bc0eb6d6ed + unpetrify-ref: baserock/morph + build-system: python-distutils +- name: cloud-init + morph: strata/cloudinit-support/cloud-init.morph + repo: upstream:cloud-init + ref: 130d51acc5b0becd64e7007f9dfe41a6e022eaec + unpetrify-ref: baserock/morph + build-depends: + - python-cheetah diff --git a/old/strata/cloudinit-support/cloud-init.morph b/old/strata/cloudinit-support/cloud-init.morph new file mode 100644 index 00000000..5933dbf8 --- /dev/null +++ b/old/strata/cloudinit-support/cloud-init.morph @@ -0,0 +1,6 @@ +name: cloud-init +kind: chunk +build-system: python-distutils +post-install-commands: +- mkdir -p "$DESTDIR"/lib/systemd/system +- cp systemd/* "$DESTDIR"/lib/systemd/system/ diff --git a/old/strata/connectivity.morph b/old/strata/connectivity.morph new file mode 100644 index 00000000..9d1a1b04 --- /dev/null +++ b/old/strata/connectivity.morph @@ -0,0 +1,27 @@ +name: connectivity +kind: stratum +build-depends: +- morph: strata/foundation.morph +chunks: +- name: mobile-broadband-provider-info + repo: upstream:mobile-broadband-provider-info + ref: 4ed19e11c2975105b71b956440acdb25d46a347d + unpetrify-ref: baserock/morph + build-system: autotools +- name: libnl + repo: upstream:libnl + ref: a2c4bd8f094a7247903578860a9c42049991860b + unpetrify-ref: baserock/morph + build-system: autotools +- name: wpa_supplicant + morph: strata/connectivity/wpa_supplicant.morph + repo: upstream:hostap + ref: 2462f347bca0a7cce7e06ff88adbe3aa47c52d54 + unpetrify-ref: hostap_2_6 + build-depends: + - libnl +- name: iptables + repo: upstream:iptables + ref: 482c6d3731e2681cb4baae835c294840300197e6 + unpetrify-ref: v1.4.21 + build-system: autotools diff --git a/old/strata/connectivity/wpa_supplicant.morph b/old/strata/connectivity/wpa_supplicant.morph new file mode 100644 index 00000000..3fdc68a2 --- /dev/null +++ b/old/strata/connectivity/wpa_supplicant.morph @@ -0,0 +1,36 @@ +name: wpa_supplicant +kind: chunk +configure-commands: +- | + cat >"wpa_supplicant/.config" < "$ACE_ROOT"/ace/config.h + echo "include "$ACE_ROOT"/include/makeinclude/platform_linux.GNU" > "$ACE_ROOT"/include/makeinclude/platform_macros.GNU + export LD_LIBRARY_PATH="$ACE_ROOT"/lib:$LD_LIBRARY_PATH + cd "$TAO_ROOT" + make +install-commands: +- | + export ACE_ROOT="$PWD/ACE" + export TAO_ROOT="$PWD/TAO" + export MPC_ROOT='/usr/src/MPC' + cd "$TAO_ROOT" + make DESTDIR="$DESTDIR" INSTALL_PREFIX="$PREFIX" install +system-integration: + ACE_TAO-misc: + 00-remove-build-dependencies: + - rm -rf /usr/src/MPC diff --git a/old/strata/corba/MPC.morph b/old/strata/corba/MPC.morph new file mode 100644 index 00000000..84b015ec --- /dev/null +++ b/old/strata/corba/MPC.morph @@ -0,0 +1,6 @@ +name: MPC +kind: chunk +build-system: manual +install-commands: +- mkdir -p "$DESTDIR/usr/src/MPC" +- cp -r * "$DESTDIR/usr/src/MPC" diff --git a/old/strata/core.morph b/old/strata/core.morph new file mode 100644 index 00000000..f47218b1 --- /dev/null +++ b/old/strata/core.morph @@ -0,0 +1,457 @@ +name: core +kind: stratum +description: Core components of a Baserock base system that are build tools required + for the BSP and Foundation strata, but a step above build-essential +build-depends: +- morph: strata/build-essential.morph +chunks: +- name: gdbm + morph: strata/core/gdbm.morph + repo: upstream:gdbm-tarball + ref: e5faeaaf75ecfb705a9b643b3e4cb881ebb69f48 + unpetrify-ref: gdbm-1.11 +- name: perl + morph: strata/core/perl.morph + repo: upstream:perl + ref: 70f63a4c7dba89e8e48b44de7978faae4319e693 + unpetrify-ref: v5.22.0 + build-depends: + - gdbm +- name: ncurses + morph: strata/core/ncurses.morph + repo: upstream:ncurses + ref: f6d73a10a980bc78969c3af93665cbe7d06c3646 + unpetrify-ref: ncurses-5.9-20150131 +- name: texinfo-tarball + morph: strata/core/texinfo-tarball.morph + repo: upstream:texinfo-tarball + ref: 6a55f074b1f67d02149c13931eb1df9f0e539b15 + unpetrify-ref: texinfo-5.2 + build-depends: + - ncurses + - perl +- name: autoconf-tarball + morph: strata/core/autoconf-tarball.morph + repo: upstream:autoconf-tarball + ref: 55d1d2c339bc5f935f6d8d702e98b7bd5d968e9d + unpetrify-ref: autoconf-2.69 + build-depends: + - perl +- name: automake + morph: strata/core/automake.morph + repo: upstream:automake + ref: db43dd473361d90d8b00362cfef5bac8e722000d + unpetrify-ref: v1.15 + build-depends: + - autoconf-tarball + - perl + - texinfo-tarball +- name: help2man + repo: upstream:help2man + ref: 83bab7e2e8e24a380266a9a247c029c49b0de666 + unpetrify-ref: baserock/v1.46.5 + build-system: autotools + build-depends: + - autoconf-tarball + - automake + - perl + - texinfo-tarball +# Note: autoconf's version number must be set in autoconf's chunk morph, +# so if you update autoconf be sure to also update the version number +# in strata/core/autoconf.morph +- name: autoconf + morph: strata/core/autoconf.morph + repo: upstream:autoconf + ref: 218f9347c9c34919c2b8eef8d9a0513ac567a3c1 + unpetrify-ref: baserock/v2.69-texinfo-fix + build-depends: + - autoconf-tarball + - automake + - help2man + - texinfo-tarball + - perl +- name: libtool-tarball + morph: strata/core/libtool-tarball.morph + repo: upstream:libtool-tarball + ref: c026ca36e37d2643623a75d0d3e9e451023139f3 + unpetrify-ref: libtool-2.4.6 +- name: file + repo: upstream:file + ref: 670c2bbcffe873a2b8589ed140c12e7923ef20c0 + unpetrify-ref: file-5.22 + build-system: autotools +- name: libexpat + morph: strata/core/libexpat.morph + repo: upstream:libexpat + ref: 7cfc09db3e258129ab05811f2f9e351746ddab9f + unpetrify-ref: R_2_1_0 + build-depends: + - autoconf + - automake + - file + - libtool-tarball + - perl +- name: openssl-new + morph: strata/core/openssl-new.morph + repo: upstream:openssl-new + ref: 081314d07705aa58912845c213a48414d8f616a9 + unpetrify-ref: OpenSSL_1_0_2k + build-depends: + - perl +- name: bzip2 + morph: strata/core/bzip2.morph + repo: upstream:bzip2 + ref: 8deafa68e52b230018c0318dc7959ff9af3ad2a5 + unpetrify-ref: baserock/morph +- name: readline + morph: strata/core/readline.morph + repo: upstream:readline + ref: 518937ab89be812ccd45e9b8c1ce4ad721d35ef6 + unpetrify-ref: baserock/genivi/baseline + build-depends: + - automake +- name: libffi + morph: strata/core/libffi.morph + repo: upstream:libffi + ref: 77d4586cc47e8f4c02278afbc220145bba0d442b + unpetrify-ref: baserock/morph + build-depends: + - autoconf + - automake +- name: sqlite3 + repo: upstream:sqlite3 + ref: 24adc227bc29cd17e39df097fbca389c7724cd14 + unpetrify-ref: sqlite-autoconf-3080801 + build-system: autotools +- name: python3 + morph: strata/core/python3.morph + repo: upstream:cpython + ref: 609bc370055e03b3c74c4321a5990929c29a226d + unpetrify-ref: v3.5.2 + build-depends: + - openssl-new + - bzip2 + - libexpat + - libffi + - sqlite3 + - ncurses + - readline +- name: ca-certificates + morph: strata/core/ca-certificates.morph + repo: upstream:ca-certificates + ref: 642c21872876ce2f9ec323b1df44f1cd6c47e91c + unpetrify-ref: baserock/debian/20150426 + build-depends: + - automake + - python3 +- name: curl + morph: strata/core/curl.morph + repo: upstream:curl + ref: 44b9b4d4f56d6f6de92c89636994c03984e9cd01 + unpetrify-ref: curl-7_52_1 + build-depends: + - autoconf + - automake + - file + - libtool-tarball + - openssl-new + - perl +- name: gettext-tarball + morph: strata/core/gettext-tarball.morph + repo: upstream:gettext-tarball + ref: 482840e61f86ca321838a91e902c41d40c098bbb + unpetrify-ref: gettext-0.19.4 + build-depends: + - libexpat +- name: git-minimal + morph: strata/core/git-minimal.morph + repo: upstream:git + ref: ed9067f705aa51819c7dfff7e4190dd267beaf5d + unpetrify-ref: v2.8.0-rc2 + build-depends: + - autoconf + - python3 + - curl + - gettext-tarball + - libexpat + - openssl-new + - perl +- name: flex + morph: strata/core/flex.morph + repo: upstream:flex + ref: de10f98e8a2dc2a021796811490d0f30c3cd90bf + unpetrify-ref: baserock/build-essential + build-depends: + - perl + - autoconf + - automake + - file + - gettext-tarball + - texinfo-tarball +- name: mini-utils + morph: strata/core/mini-utils.morph + repo: baserock:baserock/mini-utils + ref: 5293265b29bbf468ab9d7f3302b19dbc81d0f8b8 + unpetrify-ref: master +- name: bison + morph: strata/core/bison.morph + repo: upstream:bison + ref: c4e686a1abd817b4d4da5bdd5b3a5540566fd4a0 + unpetrify-ref: v3.0.4 + build-depends: + - autoconf + - automake + - flex + - gettext-tarball + - git-minimal + - openssl-new + - help2man + - mini-utils + - perl + - texinfo-tarball + submodules: + submodules/autoconf: + url: upstream:autoconf + gnulib: + url: upstream:gnulib +- name: patch + morph: strata/core/patch.morph + repo: upstream:patch + ref: 3b698ab6a13fd3e5890689cd85cf41312c682f8c + unpetrify-ref: v2.7.5 + build-depends: + - autoconf + - automake + - bison + - git-minimal + - openssl-new + - mini-utils + - perl + submodules: + gnulib: + url: upstream:gnulib +- name: xz + repo: upstream:xz + ref: a0cd05ee71d330b79ead6eb9222e1b24e1559d3a + unpetrify-ref: v5.2.0 + build-system: autotools + build-depends: + - autoconf + - automake + - file + - gettext-tarball + - libtool-tarball + - perl +- name: libtool + repo: upstream:libtool + ref: f09d00cbcf924c378573163e244fffeb8d28005f + unpetrify-ref: v2.4.6 + build-system: autotools + build-depends: + - autoconf + - automake + - file + - help2man + - git-minimal + - openssl-new + - patch + - texinfo-tarball + - xz + - perl + - mini-utils + submodules: + gnulib: + url: upstream:gnulib +- name: pkg-config + morph: strata/core/pkg-config.morph + repo: upstream:pkg-config + ref: 74ceac54ef6f9247c00f08eecd8cca811a3c5934 + unpetrify-ref: pkg-config-0.28 + build-depends: + - autoconf + - automake + - libtool + - perl +- name: attr + morph: strata/core/attr.morph + repo: upstream:attr + ref: 4b005410f865895d4dcd56e2c135278a7a315877 + unpetrify-ref: v2.4.47 + build-depends: + - file + - autoconf + - automake + - gettext-tarball + - libtool + - perl +- name: acl + morph: strata/core/acl.morph + repo: upstream:acl + ref: f13e09bd54fd4a501c4952f002ed2752bdd9f93b + unpetrify-ref: v2.2.52 + build-depends: + - autoconf + - automake + - gettext-tarball + - libtool + - attr + - perl +- name: linux-pam + morph: strata/core/linux-pam.morph + repo: upstream:linux-pam + ref: b1521c97e73b10469f7b34c0571d51c647eca83c + unpetrify-ref: Linux-PAM-1.1.8 + build-depends: + - autoconf + - automake + - gettext-tarball + - libtool + - pkg-config + - flex + - attr + - acl + - perl +- name: libcap2 + morph: strata/core/libcap2.morph + repo: upstream:libcap2 + ref: 4f7cca1bc9c2a274edb39d351b65747010d3ba7b + unpetrify-ref: baserock/morph + build-depends: + - autoconf + - automake + - gettext-tarball + - libtool + - pkg-config + - attr + - acl + - linux-pam + - perl +- name: shadow + morph: strata/core/shadow.morph + repo: upstream:shadow + ref: bfaa59229d61adb7fa0c570f0d94fd324c6e05aa + unpetrify-ref: upstream/4.2.1 + build-depends: + - autoconf + - automake + - gettext-tarball + - libtool + - bison + - attr + - acl + - linux-pam + - libcap2 + - perl +- name: util-linux + morph: strata/core/util-linux.morph + repo: upstream:util-linux + ref: 44338f7fe6a529cef1f206dccd95e7282625c483 + unpetrify-ref: v2.28 + build-depends: + - autoconf + - automake + - gettext-tarball + - git-minimal + - openssl-new + - libtool + - pkg-config + - linux-pam + - shadow + - perl +- name: e2fsprogs + morph: strata/core/e2fsprogs.morph + repo: upstream:e2fsprogs + ref: 6a3741ad293031447b95b88431eafa77401a8987 + unpetrify-ref: v1.42.12 + build-depends: + - pkg-config + - util-linux + - file +- name: libxml2 + repo: upstream:libxml2 + ref: 6657afe83a38278f124ace71dc85f60420beb2d5 + unpetrify-ref: v2.9.3 + build-system: autotools + build-depends: + - autoconf + - automake + - file + - libtool + - libexpat + - pkg-config + - python3 + - xz + - perl +- name: libxslt + repo: upstream:libxslt + ref: 73e08bf7c36a9145d38f51d37e66529b873c011a + unpetrify-ref: master + build-system: autotools + build-depends: + - autoconf + - libtool + - automake + - file + - libxml2 + - xz + - perl +- name: XML-Parser + repo: upstream:XML-Parser + ref: e1a3ec157140a699e3020836475a0df622f70f1b + unpetrify-ref: baserock/morph + build-system: cpan + build-depends: + - libexpat + - perl +- name: intltool + repo: upstream:intltool + ref: 12f04c88be9ff8a578d8fd6990ee2448c66dc5f4 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - libexpat + - XML-Parser + - autoconf + - automake + - perl +- name: bash + morph: strata/core/bash.morph + repo: upstream:bash + ref: 3590145af6f1c9fa321dff231f69ae696e7e740b + unpetrify-ref: baserock/bash-4.3-patch-27 +- name: cmake + morph: strata/core/cmake.morph + repo: upstream:cmake + ref: 732d8a467ab8a295b1bbf580f865980f8a1a9b29 + unpetrify-ref: v3.2.1 +- name: cython + repo: upstream:cython + ref: 4dd8e762fa51d01775506fbbc102c45dbcea065d + unpetrify-ref: '0.22' + build-system: python3-distutils + build-depends: + - python3 +- name: gperf + morph: strata/core/gperf.morph + repo: upstream:gperf + ref: 5094e4a539adf845111013f82c2c4fcaec637983 + unpetrify-ref: baserock/morph +- name: bc + repo: upstream:bc-tarball + ref: 0956d119432ff6a2e85bae1fa336df799cad70b0 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - perl + - flex + - texinfo-tarball +- name: libseccomp + repo: upstream:libseccomp + ref: 7932b4fa24c1add0d7a315de8387d216334fbcf7 + unpetrify-ref: v2.2.3 + build-system: autotools + build-depends: + - autoconf + - automake + - libtool + - perl diff --git a/old/strata/core/acl.morph b/old/strata/core/acl.morph new file mode 100644 index 00000000..23f08c1f --- /dev/null +++ b/old/strata/core/acl.morph @@ -0,0 +1,6 @@ +name: acl +kind: chunk +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install-lib install-dev diff --git a/old/strata/core/attr.morph b/old/strata/core/attr.morph new file mode 100644 index 00000000..c7b46d31 --- /dev/null +++ b/old/strata/core/attr.morph @@ -0,0 +1,19 @@ +name: attr +kind: chunk +build-system: autotools +pre-configure-commands: +- make configure +configure-commands: +- | + ./configure --prefix="$PREFIX" \ + --exec-prefix="$PREFIX" \ + --sbindir="$PREFIX"/bin \ + --bindir="$PREFIX"/bin \ + --libdir="$PREFIX"/lib \ + --libexecdir="$PREFIX"/lib \ + --enable-lib64=yes \ + --includedir="$PREFIX"/include \ + --mandir="$PREFIX"/share/man \ + --datadir="$PREFIX"/share +install-commands: +- make DESTDIR="$DESTDIR" install-lib install-dev diff --git a/old/strata/core/autoconf-tarball.morph b/old/strata/core/autoconf-tarball.morph new file mode 100644 index 00000000..fbdc5768 --- /dev/null +++ b/old/strata/core/autoconf-tarball.morph @@ -0,0 +1,5 @@ +name: autoconf-tarball +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" diff --git a/old/strata/core/autoconf.morph b/old/strata/core/autoconf.morph new file mode 100644 index 00000000..63b95ba8 --- /dev/null +++ b/old/strata/core/autoconf.morph @@ -0,0 +1,5 @@ +name: autoconf +kind: chunk +build-system: autotools +pre-configure-commands: +- echo "2.69" > .tarball-version diff --git a/old/strata/core/automake.morph b/old/strata/core/automake.morph new file mode 100644 index 00000000..282535d6 --- /dev/null +++ b/old/strata/core/automake.morph @@ -0,0 +1,8 @@ +name: automake +kind: chunk +build-system: autotools +configure-commands: +- ./bootstrap.sh +- ./configure --prefix="$PREFIX" +build-commands: +- unset DESTDIR; make diff --git a/old/strata/core/bash.morph b/old/strata/core/bash.morph new file mode 100644 index 00000000..59c9e8b4 --- /dev/null +++ b/old/strata/core/bash.morph @@ -0,0 +1,36 @@ +name: bash +kind: chunk +build-system: autotools +configure-commands: +- | + export CFLAGS="${CFLAGS} -DSYS_BASHRC='\"/etc/bash.bashrc\"'"; + ./configure --prefix="$PREFIX" \ + --without-bash-malloc \ + --with-installed-readline \ + --enable-readline +post-install-commands: +- | + cat <<'EOF' >> bash.bashrc + # + # /etc/bash.bashrc + # + + # If not running interactively, don't do anything + [[ $- != *i* ]] && return + + # Configure prompt for different terminals + case ${TERM} in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + + ;; + screen) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + ;; + esac + + # Enable bash completion if present + [ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion + EOF +- mkdir -p "$DESTDIR"/etc +- install -m 644 bash.bashrc "$DESTDIR"/etc/bash.bashrc diff --git a/old/strata/core/bison.morph b/old/strata/core/bison.morph new file mode 100644 index 00000000..7b880cb6 --- /dev/null +++ b/old/strata/core/bison.morph @@ -0,0 +1,6 @@ +name: bison +kind: chunk +build-system: autotools +configure-commands: +- sh bootstrap --skip-po --no-git --gnulib-srcdir=gnulib +- ./configure --prefix="$PREFIX" diff --git a/old/strata/core/bzip2.morph b/old/strata/core/bzip2.morph new file mode 100644 index 00000000..f4bdb794 --- /dev/null +++ b/old/strata/core/bzip2.morph @@ -0,0 +1,10 @@ +name: bzip2 +kind: chunk +configure-commands: +- sed -i -rf bzip2.morph-makefix.sed Makefile +build-commands: +- make -f Makefile-libbz2_so +- make +install-commands: +- make DESTDIR="$DESTDIR" PREFIX="$PREFIX" install +- install libbz2.so* "$DESTDIR$PREFIX/lib" diff --git a/old/strata/core/ca-certificates.morph b/old/strata/core/ca-certificates.morph new file mode 100644 index 00000000..0497b283 --- /dev/null +++ b/old/strata/core/ca-certificates.morph @@ -0,0 +1,26 @@ +name: ca-certificates +kind: chunk +build-system: manual +build-commands: +- make +install-commands: +# +# ca-certificates makefile does not properly take responsibility +# for creating the paths it installs to +# +- mkdir -p "$DESTDIR"/usr/share/ca-certificates +- mkdir -p "$DESTDIR"/usr/sbin +- make DESTDIR="$DESTDIR" install +- mkdir "$DESTDIR"/etc +# +# We create the config with all certificates provided +# by the debian package enabled. Some systems may want +# to override the ca-certificates.conf file. +# +- | + cd "$DESTDIR"/usr/share/ca-certificates + find * -type f > "$DESTDIR"/etc/ca-certificates.conf +system-integration: + ca-certificates-misc: + 00-update-ca-certs: + - update-ca-certificates diff --git a/old/strata/core/cmake.morph b/old/strata/core/cmake.morph new file mode 100644 index 00000000..1d310ef4 --- /dev/null +++ b/old/strata/core/cmake.morph @@ -0,0 +1,8 @@ +name: cmake +kind: chunk +configure-commands: +- ./bootstrap --prefix="$PREFIX" --docdir=/share/doc/cmake --mandir=/share/man +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/strata/core/curl.morph b/old/strata/core/curl.morph new file mode 100644 index 00000000..d445ee00 --- /dev/null +++ b/old/strata/core/curl.morph @@ -0,0 +1,15 @@ +name: curl +kind: chunk +configure-commands: +# +# Curl must be configured --with-ca-bundle in order to find the +# correct certificate bundle at runtime, which is later generated +# by update-ca-certificates. Other applications such as git, rely +# on curl knowing the default location of the certs. +# +- ./buildconf +- ./configure --disable-manual --prefix="$PREFIX" --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/strata/core/e2fsprogs.morph b/old/strata/core/e2fsprogs.morph new file mode 100644 index 00000000..6f32ad38 --- /dev/null +++ b/old/strata/core/e2fsprogs.morph @@ -0,0 +1,27 @@ +name: e2fsprogs +kind: chunk +build-system: autotools +configure-commands: +# Configure with the usual paths for binaries and config +# but also disable whatever we can that is already provided by util-linux +# Disabling e2fsprofs' libblkid does not work, but we don't have to +# install it. +- | + ./configure --prefix="$PREFIX" --sysconfdir=/etc \ + --disable-libuuid --disable-uuidd --disable-libblkid +build-commands: +# Without this, the static archive libcom_err is generated without +# position independant code; later when samba tries to create a shared +# library linking to this archive, we get errors. +- make CFLAGS="-g -O2 -DHAVE_CONFIG_H -fPIC" +install-commands: +# e2fsprogs also includes tools that are provided by util-linux, so we +# need to selectively exclude them. Removing them directly from DESTDIR +# causes problems, so we need to remove them beforehand. +- | + td="$(mktemp -d)" + make DESTDIR="$td" install + make DESTDIR="$td" install-libs + find "$td" \( -name blkid -o -name findfs -o \) -delete + find "$td" \( -name blkid.8 -o -name findfs.8 \) -delete + mv "$td"/* "$DESTDIR" diff --git a/old/strata/core/flex.morph b/old/strata/core/flex.morph new file mode 100644 index 00000000..615bf79e --- /dev/null +++ b/old/strata/core/flex.morph @@ -0,0 +1,14 @@ +name: flex +kind: chunk +pre-configure-commands: +- autoreconf -ivf +configure-commands: +- ./configure --prefix="$PREFIX" +build-commands: +- make dist_doc_DATA= +install-commands: +- make dist_doc_DATA= DESTDIR="$DESTDIR" install +- ln -s libfl.a "$DESTDIR$PREFIX/lib/libl.a" +- echo "#!$PREFIX/bin/sh" >"$DESTDIR$PREFIX/bin/lex" +- echo 'exec '"$PREFIX"'/bin/flex -l "$@"' >>"$DESTDIR$PREFIX/bin/lex" +- chmod 755 "$DESTDIR$PREFIX/bin/lex" diff --git a/old/strata/core/gdbm.morph b/old/strata/core/gdbm.morph new file mode 100644 index 00000000..6bec33e0 --- /dev/null +++ b/old/strata/core/gdbm.morph @@ -0,0 +1,8 @@ +name: gdbm +kind: chunk +configure-commands: +- ./configure --prefix="$PREFIX" --enable-libgdbm-compat --disable-nls +build-commands: +- make MANS= INFO_DEPS= +install-commands: +- make MANS= INFO_DEPS= DESTDIR="$DESTDIR" install diff --git a/old/strata/core/gettext-tarball.morph b/old/strata/core/gettext-tarball.morph new file mode 100644 index 00000000..4983b484 --- /dev/null +++ b/old/strata/core/gettext-tarball.morph @@ -0,0 +1,5 @@ +name: gettext-tarball +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" diff --git a/old/strata/core/git-minimal.morph b/old/strata/core/git-minimal.morph new file mode 100644 index 00000000..8b562ef6 --- /dev/null +++ b/old/strata/core/git-minimal.morph @@ -0,0 +1,7 @@ +name: git-minimal +kind: chunk +build-system: autotools +pre-configure-commands: +- make configure +build-commands: +- make all diff --git a/old/strata/core/gperf.morph b/old/strata/core/gperf.morph new file mode 100644 index 00000000..e4f598c5 --- /dev/null +++ b/old/strata/core/gperf.morph @@ -0,0 +1,3 @@ +name: gperf +kind: chunk +build-system: autotools diff --git a/old/strata/core/libcap2.morph b/old/strata/core/libcap2.morph new file mode 100644 index 00000000..3e4f205e --- /dev/null +++ b/old/strata/core/libcap2.morph @@ -0,0 +1,6 @@ +name: libcap2 +kind: chunk +build-commands: +- make prefix="$PREFIX" +install-commands: +- make prefix="$PREFIX" DESTDIR="$DESTDIR" RAISE_SETFCAP=no install lib=lib diff --git a/old/strata/core/libexpat.morph b/old/strata/core/libexpat.morph new file mode 100644 index 00000000..05285c0d --- /dev/null +++ b/old/strata/core/libexpat.morph @@ -0,0 +1,6 @@ +name: libexpat +kind: chunk +build-system: autotools +pre-configure-commands: +- ./buildconf.sh +- automake --add-missing --copy || true diff --git a/old/strata/core/libffi.morph b/old/strata/core/libffi.morph new file mode 100644 index 00000000..174477af --- /dev/null +++ b/old/strata/core/libffi.morph @@ -0,0 +1,8 @@ +name: libffi +kind: chunk +build-system: autotools +install-commands: +- make DESTDIR="$DESTDIR"/ install +- mkdir -p "$DESTDIR"/usr/include +- cp "$TARGET"/include/ffi.h "$DESTDIR"/usr/include/ +- cp "$TARGET"/include/ffitarget.h "$DESTDIR"/usr/include/ diff --git a/old/strata/core/libtool-tarball.morph b/old/strata/core/libtool-tarball.morph new file mode 100644 index 00000000..65a3edbc --- /dev/null +++ b/old/strata/core/libtool-tarball.morph @@ -0,0 +1,5 @@ +name: libtool-tarball +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" diff --git a/old/strata/core/linux-pam.morph b/old/strata/core/linux-pam.morph new file mode 100644 index 00000000..e65caa63 --- /dev/null +++ b/old/strata/core/linux-pam.morph @@ -0,0 +1,9 @@ +name: linux-pam +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -ivf +configure-commands: +# libdir has to be specified or it'll go into lib64. It has to be /usr/lib because +# systemd installs its pam library into /usr/lib/security. +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --libdir="$PREFIX/lib" diff --git a/old/strata/core/mini-utils.morph b/old/strata/core/mini-utils.morph new file mode 100644 index 00000000..a3d1109e --- /dev/null +++ b/old/strata/core/mini-utils.morph @@ -0,0 +1,7 @@ +name: mini-utils +kind: chunk +build-system: manual +build-commands: +- make +install-commands: +- make PREFIX="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/strata/core/ncurses.morph b/old/strata/core/ncurses.morph new file mode 100644 index 00000000..42acb481 --- /dev/null +++ b/old/strata/core/ncurses.morph @@ -0,0 +1,45 @@ +name: ncurses +kind: chunk +configure-commands: +- LDCONFIG=true ./configure --with-shared --without-debug --enable-widec +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install +post-install-commands: +- | + # lfs recommends some alterations for software that looks for + # libcurses instead of libncurses + # it's more convenient to have this in a separate file than the + # morph as less strings have to be escaped and comments are possible + + # some software expects to find libcurses in /lib + mkdir -p "$DESTDIR/lib" + mv "$DESTDIR"/"$PREFIX"/lib/libncursesw.so.5* "$DESTDIR"/lib + ln -sf ../../lib/libncursesw.so.5 "$DESTDIR"/"$PREFIX"/lib/libncursesw.so + + # some linker tricks for libraries that look for non-wide character + # versions of ncurses + for lib in ncurses form panel menu; do + # remove non-wide shared object + rm -f "$DESTDIR/${PREFIX}/lib/lib${lib}.so" + # use a linker script to find the wide character variant + echo "INPUT(-l${lib}w)" >"$DESTDIR/${PREFIX}/lib/lib${lib}.so" + # symlink the non-shared library + ln -sf "lib${lib}w.a" "$DESTDIR/${PREFIX}/lib/lib${lib}.a" + done + ln -sf libncurses++w.a "$DESTDIR/${PREFIX}/lib/libncurses++.a" + + # redirect software that looks for libcurses + rm -f "$DESTDIR/${PREFIX}/lib/libcursesw.so" + echo "INPUT(-lncursesw)" >"$DESTDIR/${PREFIX}/lib/libcursesw.so" + ln -sf libncurses.so "$DESTDIR/${PREFIX}/lib/libcurses.so" + ln -sf libncursesw.a "$DESTDIR/${PREFIX}/lib/libcursesw.a" + ln -sf libncurses.a "$DESTDIR/${PREFIX}/lib/libcurses.a" + + # install documentation + mkdir -p "$DESTDIR/${PREFIX}/share/doc/ncurses" + cp -R doc/* "$DESTDIR/${PREFIX}/share/doc/ncurses" + + # remove 'clear' and 'reset' executables, busybox provides them + rm -f "$DESTDIR/${PREFIX}/bin/clear" "$DESTDIR/${PREFIX}/bin/reset" diff --git a/old/strata/core/openssl-new.morph b/old/strata/core/openssl-new.morph new file mode 100644 index 00000000..2ed14ff2 --- /dev/null +++ b/old/strata/core/openssl-new.morph @@ -0,0 +1,15 @@ +name: openssl-new +kind: chunk +max-jobs: 1 +configure-commands: +- sed -i -e 's,^LIBNAMES=\\(.*\\) padlock \\(.*\\),LIBNAMES=\\1 \\2,g' engines/Makefile +- | + if [ "$(uname -m)" = "ppc64" ]; then + sh ./Configure linux-ppc64 --openssldir=/etc/ssl --prefix="${PREFIX-/usr}" --libdir=lib shared + else + ./config --openssldir=/etc/ssl --prefix="${PREFIX-/usr}" --libdir=lib shared + fi +build-commands: +- make +install-commands: +- make INSTALL_PREFIX="$DESTDIR" install_sw diff --git a/old/strata/core/patch.morph b/old/strata/core/patch.morph new file mode 100644 index 00000000..b7f146ef --- /dev/null +++ b/old/strata/core/patch.morph @@ -0,0 +1,5 @@ +name: patch +kind: chunk +build-system: autotools +pre-configure-commands: +- ./bootstrap --skip-po diff --git a/old/strata/core/perl.morph b/old/strata/core/perl.morph new file mode 100644 index 00000000..ce086aa7 --- /dev/null +++ b/old/strata/core/perl.morph @@ -0,0 +1,16 @@ +name: perl +kind: chunk +max-jobs: 1 +configure-commands: +- sh Configure -des -Dprefix="$PREFIX" -Darchlib="$PREFIX/lib/perl" -Dprivlib="$PREFIX/share/perl" + -Dbin="$PREFIX/bin" -Dscriptdir="$PREFIX/bin" -Dman1dir="$PREFIX/share/man/man1" + -Dman3dir="$PREFIX/share/man/man3" -Dsiteprefix="$PREFIX" -Dsitearch="$PREFIX/lib/perl" + -Dsitelib="$PREFIX/share/perl" -Dsitebin="$PREFIX/bin" -Dsitescript="$PREFIX/bin" + -Dsiteman1dir="$PREFIX/share/man/man1" -Dsiteman3dir="$PREFIX/share/man/man3" -Dvendorprefix="$PREFIX" + -Dvendorarch="$PREFIX/lib/perl" -Dvendorlib="$PREFIX/share/perl" -Dvendorbin="$PREFIX/bin" + -Dvendorscript="$PREFIX/bin" -Dvendorman1dir="$PREFIX/share/man/man1" -Dvendorman3dir="$PREFIX/share/man/man3" + -Dpager="$PREFIX/bin/less -isR" -Duseshrplib +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/strata/core/pkg-config.morph b/old/strata/core/pkg-config.morph new file mode 100644 index 00000000..ed35a2ac --- /dev/null +++ b/old/strata/core/pkg-config.morph @@ -0,0 +1,5 @@ +name: pkg-config +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --with-internal-glib diff --git a/old/strata/core/python3.morph b/old/strata/core/python3.morph new file mode 100644 index 00000000..54d2e9e7 --- /dev/null +++ b/old/strata/core/python3.morph @@ -0,0 +1,15 @@ +name: python3 +kind: chunk +build-system: autotools +configure-commands: +- | + ./configure --prefix="$PREFIX" \ + --sysconfdir=/etc \ + --enable-shared \ + --with-system-expat \ + --with-system-ffi +post-install-commands: +- test -x "$DESTDIR"/"$PREFIX"/bin/python || ln -s python3.5 "$DESTDIR"/"$PREFIX"/bin/python +- test -x "$DESTDIR"/"$PREFIX"/bin/python3 || ln -s python3.5 "$DESTDIR"/"$PREFIX"/bin/python3 +- test -x "$DESTDIR"/"$PREFIX"/bin/python-config || ln -s python3.5-config "$DESTDIR"/"$PREFIX"/bin/python-config +- test -x "$DESTDIR"/"$PREFIX"/bin/python3-config || ln -s python3.5-config "$DESTDIR"/"$PREFIX"/bin/python3-config diff --git a/old/strata/core/readline.morph b/old/strata/core/readline.morph new file mode 100644 index 00000000..08c9586c --- /dev/null +++ b/old/strata/core/readline.morph @@ -0,0 +1,8 @@ +name: readline +kind: chunk +build-system: autotools +pre-configure-commands: +- cp /usr/share/automake*/config.guess support +- cp /usr/share/automake*/config.sub support +build-commands: +- make SHLIB_LIBS=-lncurses diff --git a/old/strata/core/shadow.morph b/old/strata/core/shadow.morph new file mode 100644 index 00000000..5e3244ae --- /dev/null +++ b/old/strata/core/shadow.morph @@ -0,0 +1,53 @@ +name: shadow +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -vfi +configure-commands: +- | + ./configure --with-selinux=no \ + --sysconfdir=/etc \ + --with-libpam=yes \ + --prefix="$PREFIX" +post-install-commands: +# Disable things handled by pam instead +- | + for OPTION in FAIL_DELAY \ + FAILLOG_ENAB \ + LASTLOG_ENAB \ + MAIL_CHECK_ENAB \ + OBSCURE_CHECKS_ENAB \ + PORTTIME_CHECKS_ENAB \ + QUOTAS_ENAB \ + CONSOLE MOTD_FILE \ + FTMP_FILE \ + NOLOGINS_FILE \ + ENV_HZ \ + PASS_MIN_LEN \ + SU_WHEEL_ONLY \ + CRACKLIB_DICTPATH \ + PASS_CHANGE_TRIES \ + PASS_ALWAYS_WARN \ + CHFN_AUTH \ + ENVIRON_FILE + do + sed -i -e "s/^${OPTION}.*/# & #This option is handled by PAM instead./" \ + "$DESTDIR/etc/login.defs" + done +# ENCRYPT_METHOD is handled specially with PAM, it will use the default as +# provided in login.defs, but it may be overridden in the pam.d config. +# We do not currently override this though, and it's better to guard oursleves +# against accidentally reducing password security by forgetting to include the +# algorithm as an argument to the PAM module, so ENCRYPT_METHOD is configured +# here, rather than in PAM. +- | + if grep -q '[\s#]ENCRYPT_METHOD' "$DESTDIR/etc/login.defs"; then + sed -i -e '/^[\s#]*ENCRYPT_METHOD /s/.*/ENCRYPT_METHOD SHA512/g' "$DESTDIR/etc/login.defs" + else + echo 'ENCRYPT_METHOD SHA512' >>"$DESTDIR/etc/login.defs" + fi + +# The default pam.d config files have pam_selinux.so as a requirement, even +# when shadow is configured '--with-selinux=no'. We change this default config +# to make this requirement optional. +- sed -i -e 's/\(.*\)required\(.*pam_selinux.so.*\)/\1optional\2/' "$DESTDIR"/etc/pam.d/* diff --git a/old/strata/core/texinfo-tarball.morph b/old/strata/core/texinfo-tarball.morph new file mode 100644 index 00000000..5f784ba2 --- /dev/null +++ b/old/strata/core/texinfo-tarball.morph @@ -0,0 +1,9 @@ +name: texinfo-tarball +kind: chunk +configure-commands: +- ./configure --prefix="$PREFIX" +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install +- make DESTDIR="$DESTDIR" TEXMF="$PREFIX/share/texmf" install-tex diff --git a/old/strata/core/util-linux.morph b/old/strata/core/util-linux.morph new file mode 100644 index 00000000..dca8ad4c --- /dev/null +++ b/old/strata/core/util-linux.morph @@ -0,0 +1,10 @@ +name: util-linux +kind: chunk +build-system: autotools +pre-configure-commands: +- ./autogen.sh +configure-commands: +- | + ./configure --prefix="$PREFIX" \ + --enable-libmount-force-mountinfo \ + --disable-use-tty-group diff --git a/old/strata/coreutils-common.morph b/old/strata/coreutils-common.morph new file mode 100644 index 00000000..c22fcfac --- /dev/null +++ b/old/strata/coreutils-common.morph @@ -0,0 +1,67 @@ +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: 68f73f23866d6137e9c8d88d86073b33588d7b56 + unpetrify-ref: v8.25 + submodules: + gnulib: + url: upstream:gnulib +- name: sed + morph: strata/coreutils-common/sed.morph + repo: upstream:sed + ref: ed4b1d7c04f92b330b940d4f0d02cd51d2473ce9 + unpetrify-ref: baserock/morph + build-depends: + - coreutils + submodules: + gnulib: + url: upstream:gnulib +- name: diff + morph: strata/coreutils-common/diff.morph + repo: upstream:diffutils + ref: bd86eb1a1e87ab85a7c8dbb658fa829ce69c252e + unpetrify-ref: baserock/v3.3 + build-depends: + - coreutils + submodules: + gnulib: + url: upstream:gnulib +- name: tar + morph: strata/coreutils-common/tar.morph + repo: upstream:tar + ref: 20b55f0679d314568ec21ae6db1ea635494e292b + unpetrify-ref: baserock/release_1_29 + build-depends: + - coreutils + submodules: + paxutils: + url: upstream:paxutils + gnulib: + url: upstream:gnulib +- name: findutils + repo: upstream:findutils + ref: 992a6b62ab8061531dc0ad40325b8e4c222fce66 + unpetrify-ref: v4.6.0 + build-system: autotools + submodules: + gnulib: + url: upstream:gnulib +- name: less + repo: upstream:less + ref: 09a405d8f652b56944c93ebf5c673cdfe5319b04 + unpetrify-ref: baserock/morph + build-system: autotools +- name: jq + repo: upstream:jq + ref: a5b5cbefb83935ce95ec62b9cadc8ec73026d33a + unpetrify-ref: jq-1.5 + build-system: autotools diff --git a/old/strata/coreutils-common/coreutils.morph b/old/strata/coreutils-common/coreutils.morph new file mode 100644 index 00000000..ad6b2c32 --- /dev/null +++ b/old/strata/coreutils-common/coreutils.morph @@ -0,0 +1,12 @@ +name: coreutils +kind: chunk +build-system: autotools +pre-configure-commands: +- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf +- bash bootstrap --skip-po --no-git --gnulib-srcdir=gnulib +configure-commands: +- FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix="$PREFIX" --disable-nls +build-commands: +- make WERROR_CFLAGS= +install-commands: +- make INSTALL_PROGRAM=install DESTDIR="$DESTDIR" install diff --git a/old/strata/coreutils-common/diff.morph b/old/strata/coreutils-common/diff.morph new file mode 100644 index 00000000..c5eb809d --- /dev/null +++ b/old/strata/coreutils-common/diff.morph @@ -0,0 +1,8 @@ +name: diff +kind: chunk +build-system: autotools +pre-configure-commands: +- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf +- ./bootstrap --skip-po --no-git --gnulib-srcdir=gnulib +configure-commands: +- ./configure --prefix="$PREFIX" --disable-gcc-warnings diff --git a/old/strata/coreutils-common/sed.morph b/old/strata/coreutils-common/sed.morph new file mode 100644 index 00000000..87ace803 --- /dev/null +++ b/old/strata/coreutils-common/sed.morph @@ -0,0 +1,8 @@ +name: sed +kind: chunk +build-system: autotools +pre-configure-commands: +- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf +- ./bootstrap --skip-po --no-git --gnulib-srcdir=gnulib +configure-commands: +- ./configure --prefix="$PREFIX" --disable-gcc-warnings diff --git a/old/strata/coreutils-common/tar.morph b/old/strata/coreutils-common/tar.morph new file mode 100644 index 00000000..11ca9585 --- /dev/null +++ b/old/strata/coreutils-common/tar.morph @@ -0,0 +1,13 @@ +name: tar +kind: chunk +build-system: autotools +configure-commands: +- bash bootstrap --skip-po --gnulib-srcdir="$(pwd)/gnulib" + +# Configure flag notes: +# 1. Needed to run configure as root +# 2. Disable some warning that cause the build to fail +- | + `# [1]` env FORCE_UNSAFE_CONFIGURE=1 \ + ./configure --prefix="$PREFIX" \ + `# [2]` --disable-gcc-warnings diff --git a/old/strata/cpp-common-libs.morph b/old/strata/cpp-common-libs.morph new file mode 100644 index 00000000..470f0155 --- /dev/null +++ b/old/strata/cpp-common-libs.morph @@ -0,0 +1,11 @@ +name: cpp-common-libs +kind: stratum +description: C++ common libraries +build-depends: +- morph: strata/python2-core.morph +chunks: +- name: boost + morph: strata/cpp-common-libs/boost.morph + repo: upstream:boost-tarball + ref: ed232fdd34968697a68783b3195b1da4226915b5 + unpetrify-ref: boost_1_57_0 diff --git a/old/strata/cpp-common-libs/boost.morph b/old/strata/cpp-common-libs/boost.morph new file mode 100644 index 00000000..6aaee8ad --- /dev/null +++ b/old/strata/cpp-common-libs/boost.morph @@ -0,0 +1,9 @@ +name: boost +kind: chunk +build-system: manual +configure-commands: +- ./bootstrap.sh +build-commands: +- ./b2 $MAKEFLAGS +install-commands: +- ./b2 install --prefix="$DESTDIR$PREFIX" diff --git a/old/strata/cross-bootstrap.morph b/old/strata/cross-bootstrap.morph new file mode 100644 index 00000000..9248101a --- /dev/null +++ b/old/strata/cross-bootstrap.morph @@ -0,0 +1,29 @@ +name: cross-bootstrap +kind: stratum +description: The minimal development tools to build a baserock devel system +build-depends: +- morph: strata/core.morph +- morph: strata/python2-core.morph +chunks: +- name: groff + morph: strata/cross-bootstrap/groff.morph + repo: upstream:groff-git + ref: 16305a24e67966ace06d55e2a0b98cc0e3127a93 + unpetrify-ref: 1.22.3 +- name: openssh + morph: strata/cross-bootstrap/openssh.morph + repo: upstream:openssh-git + ref: 782fe9e725243eeb5ad6ab9a1783b5d6bedfe0d7 + unpetrify-ref: baserock/morph + build-depends: + - groff +- name: linux-user-chroot + repo: upstream:linux-user-chroot + ref: d25cc110f69e6e71a95b4ac532dcfc5423d4a16b + unpetrify-ref: baserock/morph + build-system: autotools +- name: rsync + morph: strata/cross-bootstrap/rsync.morph + repo: upstream:rsync + ref: 7cb0de6326c915a72253fd103dae93308031ec3f + unpetrify-ref: v3.1.1 diff --git a/old/strata/cross-bootstrap/groff.morph b/old/strata/cross-bootstrap/groff.morph new file mode 100644 index 00000000..8380a9cc --- /dev/null +++ b/old/strata/cross-bootstrap/groff.morph @@ -0,0 +1,13 @@ +name: groff +kind: chunk +max-jobs: 1 +configure-commands: +- PAGE=A4 ./configure --prefix="$PREFIX" +build-commands: +# hack to avoid a netpbm dependency +- touch doc/gnu.eps +- make +install-commands: +- make DESTDIR="$DESTDIR" install +- ln -s eqn "$DESTDIR$PREFIX/bin/geqn" +- ln -s tbl "$DESTDIR$PREFIX/bin/gtbl" diff --git a/old/strata/cross-bootstrap/openssh.morph b/old/strata/cross-bootstrap/openssh.morph new file mode 100644 index 00000000..6c759cb0 --- /dev/null +++ b/old/strata/cross-bootstrap/openssh.morph @@ -0,0 +1,28 @@ +name: openssh +kind: chunk +configure-commands: +- autoreconf -if +- | + OPENSSL_SEEDS_ITSELF=yes ./configure \ + --prefix="$PREFIX" --sysconfdir=/etc/ssh \ + --datadir="$PREFIX/share/sshd" \ + --libexecdir="$PREFIX/lib/openssh" \ + --with-privsep-path=/var/lib/sshd +build-commands: +- make +- | + sed -e "s|@prefix@|$PREFIX|g" \ + -e 's|@STARTUP_SCRIPT_SHELL@|/bin/sh|g' \ + -e 's|@sysconfdir@|/etc/ssh|g' \ + -e 's|@COMMENT_OUT_ECC@||g' \ + sshd-keygen.in >sshd-keygen +- sed -e "s|@prefix@|$PREFIX|g" opensshd.service.in >opensshd.service +install-commands: +- make DESTDIR="$DESTDIR" install +- mkdir -p "$DESTDIR/$PREFIX/sbin" +- chmod go= "$DESTDIR"/var/lib/sshd +- install -m 744 sshd-keygen "$DESTDIR/$PREFIX/sbin/sshd-keygen" +- install -m 755 contrib/ssh-copy-id "$DESTDIR/$PREFIX/bin/ssh-copy-id" +- mkdir -p "$DESTDIR/lib/systemd/system/multi-user.target.wants" +- install -m 644 opensshd.service "$DESTDIR/lib/systemd/system/opensshd.service" +- ln -s ../opensshd.service "$DESTDIR/lib/systemd/system/multi-user.target.wants/opensshd.service" diff --git a/old/strata/cross-bootstrap/rsync.morph b/old/strata/cross-bootstrap/rsync.morph new file mode 100644 index 00000000..9a92878d --- /dev/null +++ b/old/strata/cross-bootstrap/rsync.morph @@ -0,0 +1,6 @@ +name: rsync +kind: chunk +build-system: autotools +build-commands: +- make proto +- make diff --git a/old/strata/cross-tools.morph b/old/strata/cross-tools.morph new file mode 100644 index 00000000..795d3936 --- /dev/null +++ b/old/strata/cross-tools.morph @@ -0,0 +1,11 @@ +name: cross-tools +kind: stratum +description: Tools used together with cross compilers +build-depends: +- morph: strata/core.morph +chunks: +- name: patchelf + repo: upstream:patchelf + ref: 21a85cc1c63cf3ef060ece59cdd82455e2884703 + unpetrify-ref: baserock/morph + build-system: autotools diff --git a/old/strata/cups.morph b/old/strata/cups.morph new file mode 100644 index 00000000..b10bcd6c --- /dev/null +++ b/old/strata/cups.morph @@ -0,0 +1,11 @@ +name: cups +kind: stratum +description: Cups printer driver +build-depends: +- morph: strata/core.morph +chunks: +- name: cups + morph: strata/cups/cups.morph + repo: upstream:cups + ref: f28bae1aeae3964fba4f0728263657405f63c417 + unpetrify-ref: release-1.7.0 diff --git a/old/strata/cups/cups.morph b/old/strata/cups/cups.morph new file mode 100644 index 00000000..a3c2edf8 --- /dev/null +++ b/old/strata/cups/cups.morph @@ -0,0 +1,12 @@ +name: cups +kind: chunk +build-system: manual +configure-commands: +- autoconf +- ./configure --prefix="$PREFIX" +build-commands: +- make +# Note: BUILDROOT is the variable recommended in INSTALL.txt for the +# destination directory. +install-commands: +- make BUILDROOT="$DESTDIR" install diff --git a/old/strata/data-indexing-management.morph b/old/strata/data-indexing-management.morph new file mode 100644 index 00000000..097f2d72 --- /dev/null +++ b/old/strata/data-indexing-management.morph @@ -0,0 +1,40 @@ +name: data-indexing-management +kind: stratum +description: Components to index data +build-depends: +- morph: strata/graphics-common.morph +- morph: strata/icu-common.morph +- morph: strata/multimedia-gstreamer.morph +- morph: strata/vala-common.morph +chunks: +- name: libexif + repo: upstream:libexif-tarball + ref: 0c6a5fa0d9719a40748d8726b4543f02f70518c1 + unpetrify-ref: libexif-0.6.21 + build-system: autotools +- name: libmediaart + morph: strata/data-indexing-management/libmediaart.morph + repo: upstream:gnome/libmediaart + ref: 52eb6498c97ce0005186946bc9162d87597abc2c + unpetrify-ref: baserock/1.9.0-8-g52eb649 +- name: gmime + morph: strata/data-indexing-management/gmime.morph + repo: upstream:gnome/gmime + ref: 496313fbe956b350c22fa705edbcfdde3d7c9e50 + unpetrify-ref: baserock/GMIME_2_6_20-24-g496313f +- name: totem-pl-parser + repo: upstream:gnome/totem-pl-parser + ref: 1be3144e9a6bf183a61c9596165d52bbe405b5cc + unpetrify-ref: baserock/V_3_10_5-16-g1be3144 + build-system: autotools + build-depends: + - gmime +- name: tracker + repo: upstream:gnome/tracker + ref: ad31f26e3c45dbe3365ff4aaae39269d9210f4a9 + unpetrify-ref: 1.6.0 + build-system: autotools + build-depends: + - libexif + - libmediaart + - totem-pl-parser diff --git a/old/strata/data-indexing-management/gmime.morph b/old/strata/data-indexing-management/gmime.morph new file mode 100644 index 00000000..f71efac4 --- /dev/null +++ b/old/strata/data-indexing-management/gmime.morph @@ -0,0 +1,6 @@ +name: gmime +kind: chunk +build-system: autotools +pre-configure-commands: +# Work around upstream bug: https://bugzilla.gnome.org/show_bug.cgi?id=757720 +- sed -i 's/$(INCLUDES)/$(AM_CPPFLAGS)/g' gmime/Makefile.am diff --git a/old/strata/data-indexing-management/libmediaart.morph b/old/strata/data-indexing-management/libmediaart.morph new file mode 100644 index 00000000..43e0812f --- /dev/null +++ b/old/strata/data-indexing-management/libmediaart.morph @@ -0,0 +1,5 @@ +name: libmediaart +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --disable-qt diff --git a/old/strata/device-management.morph b/old/strata/device-management.morph new file mode 100644 index 00000000..e0ed4a25 --- /dev/null +++ b/old/strata/device-management.morph @@ -0,0 +1,12 @@ +name: device-management +kind: stratum +description: libraries that provides access to devices +build-depends: +- morph: strata/foundation.morph +- morph: strata/glib-common.morph +chunks: +- name: libgudev + repo: upstream:libgudev + ref: d722339aae9065a379acc0c421e8bbab866d5a38 + unpetrify-ref: "230" + build-system: autotools diff --git a/old/strata/devtools.morph b/old/strata/devtools.morph new file mode 100644 index 00000000..41dd501c --- /dev/null +++ b/old/strata/devtools.morph @@ -0,0 +1,55 @@ +name: devtools +kind: stratum +description: | + Extra development tools included in the devel system, this stratum + is here to help reduce unnecessary building, chunks added to this + stratum should not have any dependants (please don't build-depend on this + stratum) +build-depends: +- morph: strata/core.morph +- morph: strata/python2-core.morph +- morph: strata/docutils.morph +chunks: +- name: nano + morph: strata/devtools/nano.morph + repo: upstream:nano-tarball + ref: fb040ea36cb8e2158ccd9100600652f94ae90af1 + unpetrify-ref: baserock/morph +- name: vim + morph: strata/devtools/vim.morph + repo: upstream:vim + ref: 07c2c06799e0579e6bfb1a7d98acf38e36a98f79 + unpetrify-ref: baserock/morph +- name: pv + repo: upstream:pv + ref: d6ce7cfec684fa72d7a919d7b1aa817a0ca6102a + unpetrify-ref: baserock/morph + build-system: autotools +- name: screen + morph: strata/devtools/screen.morph + repo: upstream:screen + ref: 7dd4a9e5f385c96a77e8ee5c977a1dde4c0ff467 + unpetrify-ref: baserock/morph +- name: git-review + repo: upstream:git-review + ref: 79262a52301c146a6b60d09a828661a83a5f5ba7 + unpetrify-ref: master + build-system: python-distutils +- name: wget + morph: strata/devtools/wget.morph + repo: upstream:wget + ref: f65f522f58606f125535306e712c2c29921ee8b4 + unpetrify-ref: v1.17.1 + submodules: + gnulib: + url: upstream:gnulib +- name: git + morph: strata/devtools/git.morph + repo: upstream:git + ref: ed9067f705aa51819c7dfff7e4190dd267beaf5d + unpetrify-ref: v2.8.0-rc2 +- name: iotop + repo: upstream:iotop + ref: 59e2537794d91c1375d391293f8fd89ca8b794a8 + unpetrify-ref: iotop-0.6 + build-system: python-distutils diff --git a/old/strata/devtools/git.morph b/old/strata/devtools/git.morph new file mode 100644 index 00000000..40945640 --- /dev/null +++ b/old/strata/devtools/git.morph @@ -0,0 +1,11 @@ +name: git +kind: chunk +build-system: autotools +pre-configure-commands: +- make configure +build-commands: +- make all doc +install-commands: +- make install install-doc +post-install-commands: +- install -D -m 644 -t "$DESTDIR"/etc/bash_completion.d/. contrib/completion/git-completion.bash diff --git a/old/strata/devtools/nano.morph b/old/strata/devtools/nano.morph new file mode 100644 index 00000000..3eeee120 --- /dev/null +++ b/old/strata/devtools/nano.morph @@ -0,0 +1,16 @@ +name: nano +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --sysconfdir=/etc +post-install-commands: +- | + cat <> nanorc + set smooth + include /usr/share/nano/c.nanorc + include /usr/share/nano/patch.nanorc + include /usr/share/nano/python.nanorc + include /usr/share/nano/sh.nanorc + EOF +- mkdir -p "$DESTDIR"/etc +- install -m 644 nanorc "$DESTDIR"/etc/nanorc diff --git a/old/strata/devtools/screen.morph b/old/strata/devtools/screen.morph new file mode 100644 index 00000000..0b23c5d4 --- /dev/null +++ b/old/strata/devtools/screen.morph @@ -0,0 +1,11 @@ +name: screen +kind: chunk +description: A terminal multiplexer and sanity tool for many +max-jobs: 1 +configure-commands: +- cd ./src && sh autogen.sh +- cd ./src && ./configure --prefix="$PREFIX" +build-commands: +- cd ./src && make +install-commands: +- cd ./src && make DESTDIR="$DESTDIR" install diff --git a/old/strata/devtools/vim.morph b/old/strata/devtools/vim.morph new file mode 100644 index 00000000..58e1403f --- /dev/null +++ b/old/strata/devtools/vim.morph @@ -0,0 +1,10 @@ +name: vim +kind: chunk +build-system: autotools +configure-commands: +- echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >>src/feature.h +- ./configure --prefix="$PREFIX" --enable-multibyte +install-commands: +- make DESTDIR="$DESTDIR" install +- mkdir -p "$DESTDIR"/etc +- install -m 644 runtime/vimrc_example.vim "$DESTDIR"/etc/vimrc diff --git a/old/strata/devtools/wget.morph b/old/strata/devtools/wget.morph new file mode 100644 index 00000000..a3a7995a --- /dev/null +++ b/old/strata/devtools/wget.morph @@ -0,0 +1,10 @@ +name: wget +kind: chunk +build-system: autotools +pre-configure-commands: +# rsync is needed if we want the bootstrap script to download .po files, +# we can't download into our chroot so we remove this dependency +- sed -i '/^buildreq="/,/"/ { /^rsync.*/ d }' bootstrap.conf +- ./bootstrap --no-bootstrap-sync --skip-po +configure-commands: +- ./configure --prefix="$PREFIX" --with-ssl=openssl diff --git a/old/strata/dlna-services.morph b/old/strata/dlna-services.morph new file mode 100644 index 00000000..2c4f1104 --- /dev/null +++ b/old/strata/dlna-services.morph @@ -0,0 +1,51 @@ +name: dlna-services +kind: stratum +description: provides DLNA services +build-depends: +- morph: strata/data-indexing-management.morph +- morph: strata/docutils.morph +- morph: strata/vala-common.morph +chunks: +- name: gssdp + morph: strata/dlna-services/gssdp.morph + repo: upstream:gnome/gssdp + ref: a53a6ac85f1b70192bc75fbbd4601582d6095cfd + unpetrify-ref: gssdp-0.14.12 +- name: gupnp + repo: upstream:gnome/gupnp + ref: c42b9cdda466ae9fef91f6beb370f8dfdebc295c + unpetrify-ref: gupnp-0.20.14 + build-system: autotools + build-depends: + - gssdp +- name: gupnp-av + repo: upstream:gnome/gupnp-av + ref: d277511ae1f456ba804f4c9beb5d36043f5a1659 + unpetrify-ref: gupnp-av-0.12.7 + build-system: autotools + build-depends: + - gupnp +- name: gupnp-igd + repo: upstream:gnome/gupnp-igd + ref: f679a8ad782eee72e2ff7a0a7598b4523ef03bb3 + unpetrify-ref: 0.2.4 + build-system: autotools + build-depends: + - gupnp +- name: gupnp-dlna + repo: upstream:gnome/gupnp-dlna + ref: 1aad765f223e3338d86bc975a2b4925fca43bf58 + unpetrify-ref: gupnp-dlna-0.10.3 + build-system: autotools + build-depends: + - gupnp +- name: rygel + repo: upstream:rygel + ref: 4a42aee4afda9509db1e3d259c5a2907407a7261 + unpetrify-ref: RYGEL_0_28_2 + build-system: autotools + build-depends: + - gssdp + - gupnp + - gupnp-av + - gupnp-dlna diff --git a/old/strata/dlna-services/gssdp.morph b/old/strata/dlna-services/gssdp.morph new file mode 100644 index 00000000..14b810b0 --- /dev/null +++ b/old/strata/dlna-services/gssdp.morph @@ -0,0 +1,5 @@ +name: gssdp +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --disable-Werror diff --git a/old/strata/docutils.morph b/old/strata/docutils.morph new file mode 100644 index 00000000..e76cc7a2 --- /dev/null +++ b/old/strata/docutils.morph @@ -0,0 +1,52 @@ +name: docutils +kind: stratum +description: Stuff for generating documentation +build-depends: +- morph: strata/python2-core.morph +chunks: +- name: xml-catalog + morph: strata/docutils/xml-catalog.morph + repo: baserock:baserock/xml-catalog + ref: 1d4a2abc875c4dda1b5eadc0a097a48a8d2ec82b + unpetrify-ref: master +- name: docbook-xml + morph: strata/docutils/docbook-xml.morph + repo: upstream:docbook-xml + ref: c8f0ce32a8075e9ab21e5cf734fb96195455264d + unpetrify-ref: docbook-xml-4.5 + build-depends: + # This is a little awkward, we don't really build-depend on xml-catalog, + # but if we don't include it as a build dependency + # then we won't have the existing xml catalog in our staging area + # which would cause this chunk to create a new catalog which would + # overwrite the catalog created by the 'xml-catalog' chunk. + # + # construction of the catalog cannot be done at system-integration time + # because we need the catalog *here* in order to build nasm complete with + # man pages. + - xml-catalog +- name: docbook-xsl + morph: strata/docutils/docbook-xsl.morph + repo: upstream:docbook-xsl + ref: 802da9dd5d4bc18f46a916eedc0c5c1980a15e59 + unpetrify-ref: docbook-xsl-1.78.1 + build-depends: + # Same issue as above, except this time we don't want to overwrite + # the catalog that now contains the XML DTDs. + - docbook-xml +- name: asciidoc + repo: upstream:asciidoc + ref: d3a6df0caa94edaf8180bd71bf2fc68390f56520 + unpetrify-ref: 8.6.9 + build-system: autotools + build-depends: + - docbook-xml + - docbook-xsl +- name: xmlto + repo: upstream:xmlto-tarball + ref: 6a590aba95cbcce0f184381fb19d16558e56832d + unpetrify-ref: xmlto-0.0.26 + build-system: autotools + build-depends: + - docbook-xml + - docbook-xsl diff --git a/old/strata/docutils/docbook-xml.morph b/old/strata/docutils/docbook-xml.morph new file mode 100644 index 00000000..91233b6d --- /dev/null +++ b/old/strata/docutils/docbook-xml.morph @@ -0,0 +1,104 @@ +name: docbook-xml +kind: chunk +build-system: manual +install-commands: +- install -v -d -m755 "$DESTDIR$PREFIX/share/xml/docbook/xml-dtd-4.5" +- install -v -d -m755 "$DESTDIR/etc/xml" +- | + cp -v -af docbook.cat *.dtd ent/ *.mod \ + "$DESTDIR$PREFIX/share/xml/docbook/xml-dtd-4.5" +post-install-commands: +- | + # Create (or update) and populate the "$DESTDIR/etc/xml/docbook" catalog file + if [ ! -e /etc/xml/docbook ]; then + xmlcatalog --noout --create "$DESTDIR/etc/xml/docbook" + else + # Copy the existing catalog so we can update it + cp /etc/xml/docbook "$DESTDIR/etc/xml/docbook" + fi + +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.5//EN" \ + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5" \ + "$DESTDIR/etc/xml/docbook" +- | + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5" \ + "$DESTDIR/etc/xml/docbook" + +- | + # Create (or update) and populate the "$DESTDIR/etc/xml/catalog" catalog file + if [ ! -e /etc/xml/catalog ]; then + echo 'Creating new xml catalog' + xmlcatalog --noout --create "$DESTDIR/etc/xml/catalog" + else + # Copy the existing catalog so we can update it + cp /etc/xml/catalog "$DESTDIR/etc/xml/catalog" + fi + +- | + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//ENTITIES DocBook XML" \ + "file:///etc/xml/docbook" \ + "$DESTDIR/etc/xml/catalog" +- | + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//DTD DocBook XML" \ + "file:///etc/xml/docbook" \ + "$DESTDIR/etc/xml/catalog" +- | + xmlcatalog --noout --add "delegateSystem" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook" \ + "$DESTDIR/etc/xml/catalog" +- | + xmlcatalog --noout --add "delegateURI" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook" \ + "$DESTDIR/etc/xml/catalog" diff --git a/old/strata/docutils/docbook-xsl.morph b/old/strata/docutils/docbook-xsl.morph new file mode 100644 index 00000000..b3bf396d --- /dev/null +++ b/old/strata/docutils/docbook-xsl.morph @@ -0,0 +1,50 @@ +name: docbook-xsl +kind: chunk +install-commands: +- install -v -m755 -d "$DESTDIR$PREFIX/share/xml/docbook/xsl-stylesheets-1.78.1" +- | + cp -v -R VERSION common eclipse epub extensions fo highlighting html \ + htmlhelp images javahelp lib manpages params profiling \ + roundtrip slides template tests tools webhelp website \ + xhtml xhtml-1_1 \ + "$DESTDIR$PREFIX/share/xml/docbook/xsl-stylesheets-1.78.1" + +- ln -s VERSION "$DESTDIR$PREFIX/share/xml/docbook/xsl-stylesheets-1.78.1/VERSION.xsl" + +- install -v -m644 -D README "$DESTDIR$PREFIX/share/doc/docbook-xsl-1.78.1/README.txt" +- | + install -v -m644 RELEASE-NOTES* NEWS* \ + "$DESTDIR$PREFIX/share/doc/docbook-xsl-1.78.1" +post-install-commands: +- if [ ! -d "$DESTDIR/etc/xml" ]; then install -v -m755 -d "$DESTDIR/etc/xml"; fi +- | + if [ ! -e /etc/xml/catalog ]; then + echo "Creating new xml catalog" + xmlcatalog --noout --create "$DESTDIR/etc/xml/catalog" + else + cp /etc/xml/catalog "$DESTDIR/etc/xml/catalog" + fi + +- | + xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/1.78.1" \ + "/usr/share/xml/docbook/xsl-stylesheets-1.78.1" \ + "$DESTDIR/etc/xml/catalog" + +- | + xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/1.78.1" \ + "/usr/share/xml/docbook/xsl-stylesheets-1.78.1" \ + "$DESTDIR/etc/xml/catalog" + +- | + xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "/usr/share/xml/docbook/xsl-stylesheets-1.78.1" \ + "$DESTDIR/etc/xml/catalog" + +- | + xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "/usr/share/xml/docbook/xsl-stylesheets-1.78.1" \ + "$DESTDIR/etc/xml/catalog" diff --git a/old/strata/docutils/xml-catalog.morph b/old/strata/docutils/xml-catalog.morph new file mode 100644 index 00000000..34ba0306 --- /dev/null +++ b/old/strata/docutils/xml-catalog.morph @@ -0,0 +1,6 @@ +name: xml-catalog +kind: chunk +install-commands: +- make DESTDIR="$DESTDIR" install +post-install-commands: +- ./post-install.sh diff --git a/old/strata/elixir.morph b/old/strata/elixir.morph new file mode 100644 index 00000000..dd46ed64 --- /dev/null +++ b/old/strata/elixir.morph @@ -0,0 +1,11 @@ +name: elixir +kind: stratum +description: stratum for elixir +build-depends: +- morph: strata/erlang.morph +chunks: +- name: elixir + morph: strata/elixir/elixir.morph + repo: upstream:elixir + ref: 737ac62926db7a692e2fe67c27b696cfd0866674 + unpetrify-ref: v1.2.3 diff --git a/old/strata/elixir/elixir.morph b/old/strata/elixir/elixir.morph new file mode 100644 index 00000000..1efbea87 --- /dev/null +++ b/old/strata/elixir/elixir.morph @@ -0,0 +1,6 @@ +name: elixir +kind: chunk +build-commands: +- make clean +install-commands: +- make install diff --git a/old/strata/erlang.morph b/old/strata/erlang.morph new file mode 100644 index 00000000..3aad68e8 --- /dev/null +++ b/old/strata/erlang.morph @@ -0,0 +1,18 @@ +name: erlang +kind: stratum +description: stratum for erlang/otp and stuff +build-depends: +- morph: strata/core.morph +chunks: +- name: erlang + morph: strata/erlang/erlang.morph + repo: upstream:erlang + ref: 1ab69efa960703b86a13ea6ba96f4fd56f1565f9 + unpetrify-ref: OTP-18.3.3 +- name: rebar + morph: strata/erlang/rebar.morph + repo: upstream:erlang-modules/rebar + ref: d42ed4683576d995f60e3222f076e99f0b081f79 + unpetrify-ref: master + build-depends: + - erlang diff --git a/old/strata/erlang/erlang.morph b/old/strata/erlang/erlang.morph new file mode 100644 index 00000000..feaf04f1 --- /dev/null +++ b/old/strata/erlang/erlang.morph @@ -0,0 +1,9 @@ +name: erlang +kind: chunk +configure-commands: +- ./otp_build autoconf +- ./configure --prefix=$PREFIX +build-commands: +- make +install-commands: +- make install diff --git a/old/strata/erlang/rebar.morph b/old/strata/erlang/rebar.morph new file mode 100644 index 00000000..fa5fd64f --- /dev/null +++ b/old/strata/erlang/rebar.morph @@ -0,0 +1,6 @@ +name: rebar +kind: chunk +build-commands: +- ./bootstrap +install-commands: +- install -D -m 755 rebar "$DESTDIR$PREFIX"/bin/rebar diff --git a/old/strata/foundation.morph b/old/strata/foundation.morph new file mode 100644 index 00000000..cb8ea2dc --- /dev/null +++ b/old/strata/foundation.morph @@ -0,0 +1,131 @@ +name: foundation +kind: stratum +description: Basic userland runtime system +build-depends: +- morph: strata/coreutils-common.morph +chunks: +- name: bash-completion + repo: upstream:bash-completion + ref: 3085c7e12179817a02a611016606391295c69942 + unpetrify-ref: '2.1' + build-system: autotools +- name: groff + morph: strata/foundation/groff.morph + repo: upstream:groff-git + ref: 16305a24e67966ace06d55e2a0b98cc0e3127a93 + unpetrify-ref: 1.22.3 +- name: kmod + morph: strata/foundation/kmod.morph + repo: upstream:kmod + ref: 42f32b8ae45ad8e3a1da29c9b20af9b5e2e9e676 + unpetrify-ref: v22 +- name: time-zone-database + morph: strata/foundation/time-zone-database.morph + repo: upstream:tz + ref: a0782484f101ac55c916568bc1c490d7761fc904 + unpetrify-ref: 2015a +- name: pciutils + morph: strata/foundation/pciutils.morph + repo: upstream:pciutils + ref: 37c9315c504f266c23d51e62e59d32422dbbe9e7 + unpetrify-ref: v3.4.1 +- name: dbus-pre + morph: strata/foundation/dbus-pre.morph + repo: upstream:dbus + ref: 8f71063e75fd6e06e985c1de711bf62231b504af + unpetrify-ref: baserock/dbus-1.10.14-capi-patches +- name: libgpg-error + morph: strata/foundation/libgpg-error.morph + repo: upstream:libgpg-error + ref: d77c33ae608d67086ea057cca5ddee99a7202f8b + unpetrify-ref: libgpg-error-1.19 +- name: libgcrypt + morph: strata/foundation/libgcrypt.morph + repo: upstream:libgcrypt + ref: e74d6f537498fea347b6073ba90c55d2693c4696 + unpetrify-ref: baserock/libgcrypt-1.5.5 + build-depends: + - libgpg-error +- name: systemd + morph: strata/foundation/systemd.morph + repo: upstream:systemd + ref: a1e2ef7ec912902d8142e7cb5830cbfb47dba86c + unpetrify-ref: v232 + build-depends: + - dbus-pre + - kmod + - libgcrypt + - libgpg-error +- name: libusb + repo: upstream:libusb + ref: 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3 + unpetrify-ref: v1.0.21 + build-system: autotools + build-depends: + - systemd +- name: usbutils + repo: upstream:usbutils + ref: 3bafa6940f512357d7aa54d3a76de01662a19e48 + unpetrify-ref: v008 + build-system: autotools + build-depends: + - libusb + - systemd + submodules: + usbhid-dump: + url: upstream:usbhid-dump +- name: lzo + morph: strata/foundation/lzo.morph + repo: upstream:lzo + ref: 338906b389d616a50da0447038d4ec3e1e3f190f + unpetrify-ref: lzo-2.08 +- name: fuse + morph: strata/foundation/fuse.morph + repo: upstream:fuse + ref: e9b2eec7c5856032652bb8ff734174764e444c74 + unpetrify-ref: baserock/fuse_2_9_4-fix-armv8 +- name: btrfs-progs + morph: strata/foundation/btrfs-progs.morph + repo: upstream:btrfs-progs + ref: 19a806f575cd010734fa5793c4b3bfb49926dc62 + unpetrify-ref: v4.0 + build-depends: + - lzo +- name: dbus + morph: strata/foundation/dbus.morph + repo: upstream:dbus + ref: 8f71063e75fd6e06e985c1de711bf62231b504af + unpetrify-ref: baserock/dbus-1.10.14-capi-patches + build-depends: + - systemd + - libgcrypt + - libgpg-error +- name: openssh + morph: strata/foundation/openssh.morph + repo: upstream:openssh-git + ref: 782fe9e725243eeb5ad6ab9a1783b5d6bedfe0d7 + unpetrify-ref: baserock/morph + build-depends: + - groff +- name: tbdiff + morph: strata/foundation/tbdiff.morph + repo: baserock:baserock/tbdiff + ref: e17a444c651451724046e7da1ae2559e71478b3a + unpetrify-ref: master +- name: rsync + morph: strata/foundation/rsync.morph + repo: upstream:rsync + ref: 7cb0de6326c915a72253fd103dae93308031ec3f + unpetrify-ref: v3.1.1 +- name: python-systemd + build-system: python3-distutils + repo: upstream:python-packages/python-systemd + ref: 8ccd64789ab030b76a99b578b5b1e9812b7a8cd8 + unpetrify-ref: v231 + build-depends: + - systemd +- name: libarchive + morph: strata/foundation/libarchive.morph + repo: upstream:libarchive + ref: 19f23e191f9d3e1dd2a518735046100419965804 + unpetrify-ref: v3.1.2 diff --git a/old/strata/foundation/btrfs-progs.morph b/old/strata/foundation/btrfs-progs.morph new file mode 100644 index 00000000..807a115f --- /dev/null +++ b/old/strata/foundation/btrfs-progs.morph @@ -0,0 +1,8 @@ +name: btrfs-progs +kind: chunk +build-system: autotools +pre-configure-commands: +- ./autogen.sh +configure-commands: +# The change in the CFLAGS is needed to make the compilation succeed in armv5l +- export CFLAGS="-O2 $CFLAGS"; ./configure --prefix="$PREFIX" --disable-documentation diff --git a/old/strata/foundation/dbus-pre.morph b/old/strata/foundation/dbus-pre.morph new file mode 100644 index 00000000..3ec008bf --- /dev/null +++ b/old/strata/foundation/dbus-pre.morph @@ -0,0 +1,10 @@ +name: dbus-pre +kind: chunk +build-system: autotools +configure-commands: +- sh autogen.sh --no-configure +- ./configure --prefix="$PREFIX" --localstatedir=/var --sysconfdir=/etc --disable-systemd +build-commands: +- make XMLTO_OUTPUT= +install-commands: +- make XMLTO_OUTPUT= DESTDIR="$DESTDIR" install diff --git a/old/strata/foundation/dbus.morph b/old/strata/foundation/dbus.morph new file mode 100644 index 00000000..23840ce1 --- /dev/null +++ b/old/strata/foundation/dbus.morph @@ -0,0 +1,10 @@ +name: dbus +kind: chunk +build-system: autotools +configure-commands: +- sh autogen.sh --no-configure +- ./configure --prefix="$PREFIX" --localstatedir=/var --sysconfdir=/etc --enable-user-session +build-commands: +- make XMLTO_OUTPUT= +install-commands: +- make XMLTO_OUTPUT= DESTDIR="$DESTDIR" install diff --git a/old/strata/foundation/fuse.morph b/old/strata/foundation/fuse.morph new file mode 100644 index 00000000..5d431307 --- /dev/null +++ b/old/strata/foundation/fuse.morph @@ -0,0 +1,5 @@ +name: fuse +kind: chunk +build-system: autotools +pre-configure-commands: +- ./makeconf.sh diff --git a/old/strata/foundation/groff.morph b/old/strata/foundation/groff.morph new file mode 100644 index 00000000..8380a9cc --- /dev/null +++ b/old/strata/foundation/groff.morph @@ -0,0 +1,13 @@ +name: groff +kind: chunk +max-jobs: 1 +configure-commands: +- PAGE=A4 ./configure --prefix="$PREFIX" +build-commands: +# hack to avoid a netpbm dependency +- touch doc/gnu.eps +- make +install-commands: +- make DESTDIR="$DESTDIR" install +- ln -s eqn "$DESTDIR$PREFIX/bin/geqn" +- ln -s tbl "$DESTDIR$PREFIX/bin/gtbl" diff --git a/old/strata/foundation/kmod.morph b/old/strata/foundation/kmod.morph new file mode 100644 index 00000000..ee1b1254 --- /dev/null +++ b/old/strata/foundation/kmod.morph @@ -0,0 +1,23 @@ +name: kmod +kind: chunk +configure-commands: +- rm -rf libkmod/docs +- sed -i -e'/SUBDIRS/{s/\S*doc\S*//;s/\S*man\S*//}' Makefile.am +- sed -i -e'/AC_CONFIG_FILES(\[/,/])/{/docs/d}' configure.ac +- autoreconf -fiv +- | + ./configure --prefix="$PREFIX" --bindir="$PREFIX"/bin \ + --libdir="$PREFIX"/lib --sysconfdir=/etc \ + --without-xz --with-zlib \ + --disable-manpages --enable-python +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" pkgconfigdir="$PREFIX"/lib/pkgconfig install +post-install-commands: +- ln -s kmod "$DESTDIR/$PREFIX"/bin/modprobe +- ln -s kmod "$DESTDIR/$PREFIX"/bin/lsmod +- ln -s kmod "$DESTDIR/$PREFIX"/bin/rmmod +- ln -s kmod "$DESTDIR/$PREFIX"/bin/insmod +- ln -s kmod "$DESTDIR/$PREFIX"/bin/modinfo +- ln -s kmod "$DESTDIR/$PREFIX"/bin/depmod diff --git a/old/strata/foundation/libarchive.morph b/old/strata/foundation/libarchive.morph new file mode 100644 index 00000000..bf840f58 --- /dev/null +++ b/old/strata/foundation/libarchive.morph @@ -0,0 +1,6 @@ +name: libarchive +kind: chunk +build-system: autotools +configure-commands: +- autoreconf -ivf +- ./configure --prefix="$PREFIX" --disable-acl diff --git a/old/strata/foundation/libgcrypt.morph b/old/strata/foundation/libgcrypt.morph new file mode 100644 index 00000000..78018a48 --- /dev/null +++ b/old/strata/foundation/libgcrypt.morph @@ -0,0 +1,5 @@ +name: libgcrypt +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -fi diff --git a/old/strata/foundation/libgpg-error.morph b/old/strata/foundation/libgpg-error.morph new file mode 100644 index 00000000..bc8dcdab --- /dev/null +++ b/old/strata/foundation/libgpg-error.morph @@ -0,0 +1,7 @@ +name: libgpg-error +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -fi +configure-commands: +- ./configure --prefix="$PREFIX" --disable-doc diff --git a/old/strata/foundation/lzo.morph b/old/strata/foundation/lzo.morph new file mode 100644 index 00000000..a1a7bbc7 --- /dev/null +++ b/old/strata/foundation/lzo.morph @@ -0,0 +1,5 @@ +name: lzo +kind: chunk +build-system: autotools +configure-commands: +- ./configure --enable-shared=yes --prefix="$PREFIX" diff --git a/old/strata/foundation/openssh.morph b/old/strata/foundation/openssh.morph new file mode 100644 index 00000000..7d38791f --- /dev/null +++ b/old/strata/foundation/openssh.morph @@ -0,0 +1,32 @@ +name: openssh +kind: chunk +configure-commands: +- autoreconf -if +- | + OPENSSL_SEEDS_ITSELF=yes ./configure \ + --prefix="$PREFIX" --sysconfdir=/etc/ssh \ + --datadir="$PREFIX/share/sshd" \ + --libexecdir="$PREFIX/lib/openssh" \ + --with-privsep-path=/var/lib/sshd \ + --with-pam +build-commands: +- make +- | + sed -e "s|@prefix@|$PREFIX|g" \ + -e 's|@STARTUP_SCRIPT_SHELL@|/bin/sh|g' \ + -e 's|@sysconfdir@|/etc/ssh|g' \ + -e 's|@COMMENT_OUT_ECC@||g' \ + sshd-keygen.in >sshd-keygen +- sed -e "s|@prefix@|$PREFIX|g" opensshd.service.in >opensshd.service +install-commands: +- make DESTDIR="$DESTDIR" install +- mkdir -p "$DESTDIR/$PREFIX/sbin" +- chmod go= "$DESTDIR"/var/lib/sshd +- install -m 744 sshd-keygen "$DESTDIR/$PREFIX/sbin/sshd-keygen" +- install -m 755 contrib/ssh-copy-id "$DESTDIR/$PREFIX/bin/ssh-copy-id" +- mkdir -p "$DESTDIR$PREFIX/lib/systemd/system/" +- install -m 644 opensshd.service "$DESTDIR$PREFIX/lib/systemd/system/opensshd.service" +system-integration: + openssh-misc: + 00-enable-opensshd-unit: + - systemctl enable opensshd diff --git a/old/strata/foundation/pciutils.morph b/old/strata/foundation/pciutils.morph new file mode 100644 index 00000000..03bd4a23 --- /dev/null +++ b/old/strata/foundation/pciutils.morph @@ -0,0 +1,11 @@ +name: pciutils +kind: chunk +configure-commands: +- make PREFIX="$PREFIX" ZLIB=no lib/config.mk +- echo PREFIX="$PREFIX" >>lib/config.mk +- echo MANDIR="$PREFIX/share/man" >>lib/config.mk # ensure manpages are always installed in share/man +build-commands: +- make PREFIX="$PREFIX" +install-commands: +- make PREFIX="$PREFIX" DESTDIR="$DESTDIR" install +- make PREFIX="$PREFIX" DESTDIR="$DESTDIR" install-lib diff --git a/old/strata/foundation/rsync.morph b/old/strata/foundation/rsync.morph new file mode 100644 index 00000000..54337412 --- /dev/null +++ b/old/strata/foundation/rsync.morph @@ -0,0 +1,9 @@ +name: rsync +kind: chunk +build-system: autotools +build-commands: +- make proto +- make +install-commands: +- make install +- install -D -m 644 packaging/systemd/rsync.service "$DESTDIR$PREFIX"/lib/systemd/system/rsync.service diff --git a/old/strata/foundation/systemd.morph b/old/strata/foundation/systemd.morph new file mode 100644 index 00000000..d0f962a8 --- /dev/null +++ b/old/strata/foundation/systemd.morph @@ -0,0 +1,31 @@ +name: systemd +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var + --disable-manpages + --disable-tests + --libexecdir="$PREFIX/libexec" + --enable-split-usr +post-install-commands: +- mkdir -p "$DESTDIR"/sbin +- ln -s "$PREFIX"/lib/systemd/systemd "$DESTDIR"/sbin/init +- for f in telinit runlevel shutdown poweroff reboot halt; do ln -s "$PREFIX"/bin/systemctl + "$DESTDIR/sbin/$f"; done +- touch "$DESTDIR/etc/machine-id" +- | + cat > "$DESTDIR/etc/systemd/network/10-dhcp.network" << "EOF" + [Match] + Name=e* + + [Network] + DHCP=yes + EOF +# Use the pam config systemd provides +- cp -a "$DESTDIR/$PREFIX"/share/factory/etc/pam.d/* "$DESTDIR/etc/pam.d" + +# Add pam_deny.so to the default systemd-auth pam.d config file. Without +# it, if shadow is configured to use PAM, it would be possible to login +# to a system with the wrong password. +- echo 'auth requisite pam_deny.so' >> "$DESTDIR"/etc/pam.d/system-auth diff --git a/old/strata/foundation/tbdiff.morph b/old/strata/foundation/tbdiff.morph new file mode 100644 index 00000000..a907a109 --- /dev/null +++ b/old/strata/foundation/tbdiff.morph @@ -0,0 +1,3 @@ +name: tbdiff +kind: chunk +build-system: autotools diff --git a/old/strata/foundation/time-zone-database.morph b/old/strata/foundation/time-zone-database.morph new file mode 100644 index 00000000..701d781a --- /dev/null +++ b/old/strata/foundation/time-zone-database.morph @@ -0,0 +1,11 @@ +name: time-zone-database +kind: chunk +description: | + Time zone database. +build-system: manual +install-commands: +# ETCDIR is actually where the 'tzselect', 'zdump' and 'zic' commands get +# installed. Note that tzselect from this chunk will overlap with and override +# the tzselect binary from GLIBC. +- make TOPDIR="$PREFIX" ETCDIR="$PREFIX/bin" TZDIR="$PREFIX/share/zoneinfo" DESTDIR="$DESTDIR" + install diff --git a/old/strata/geolocation.morph b/old/strata/geolocation.morph new file mode 100644 index 00000000..f6d654fc --- /dev/null +++ b/old/strata/geolocation.morph @@ -0,0 +1,18 @@ +name: geolocation +kind: stratum +description: libraries/services that provides location information +build-depends: +- morph: strata/glib-common.morph +- morph: strata/libsoup-common.morph +- morph: strata/NetworkManager-common.morph +chunks: +- name: geocode-glib + repo: upstream:gnome/geocode-glib + ref: a3e183e40053b4bd0fd0b25a070f60597270397a + unpetrify-ref: master + build-system: autotools +- name: geoclue + morph: strata/geolocation/geoclue.morph + repo: upstream:geoclue + ref: ae8f7ab2f1e90f61931c652f2f65996c30c79e87 + unpetrify-ref: 2.4.0 diff --git a/old/strata/geolocation/geoclue.morph b/old/strata/geolocation/geoclue.morph new file mode 100644 index 00000000..3be946bb --- /dev/null +++ b/old/strata/geolocation/geoclue.morph @@ -0,0 +1,13 @@ +name: geoclue +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc \ + --disable-nmea-source \ + --with-dbus-service-user=geoclue +system-integration: + geoclue-misc: + 00-add-geoclue-user: + - groupadd geoclue + - useradd -c "GeoClue Owner" -r -g geoclue -s /bin/false geoclue diff --git a/old/strata/glib-common.morph b/old/strata/glib-common.morph new file mode 100644 index 00000000..218c206e --- /dev/null +++ b/old/strata/glib-common.morph @@ -0,0 +1,38 @@ +name: glib-common +kind: stratum +description: GLib and dependencies +build-depends: +- morph: strata/python2-core.morph +- morph: strata/pcre-utils.morph +chunks: +- name: gtk-doc-stub + repo: upstream:gtk-doc-stub + ref: 58ec0d8593541ef7ae522ce42ebec6f98536c4e0 + unpetrify-ref: baserock/morph + build-system: autotools +- name: gnome-common + repo: upstream:gnome-common + ref: 5d61b55e8bea32fe2b52e21682ee4b3719b290c5 + unpetrify-ref: 3.14.0 + build-system: autotools +- name: glib + morph: strata/glib-common/glib.morph + repo: upstream:glib + ref: ee1434632b1b397e5355ef31a79fc1d8b89156a0 + unpetrify-ref: 2.48.1 +- name: gobject-introspection + repo: upstream:gobject-introspection + ref: 42bf17a25c7379689fe78f31f332a64e3eded5d2 + unpetrify-ref: 1.48.0 + build-system: autotools + build-depends: + - glib +- name: json-glib + repo: upstream:json-glib + ref: 19f5626b70e72a81dae7ee11b4c3a4d75779a7be + unpetrify-ref: 1.2.0 + build-system: autotools + build-depends: + - glib + - gobject-introspection + - gtk-doc-stub diff --git a/old/strata/glib-common/glib.morph b/old/strata/glib-common/glib.morph new file mode 100644 index 00000000..cdfceed2 --- /dev/null +++ b/old/strata/glib-common/glib.morph @@ -0,0 +1,8 @@ +name: glib +kind: chunk +build-system: autotools +system-integration: + glib-misc: + 01-compile-schemas: + - mkdir -p /usr/share/glib-2.0/schemas + - /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas diff --git a/old/strata/graphics-common.morph b/old/strata/graphics-common.morph new file mode 100644 index 00000000..c3848719 --- /dev/null +++ b/old/strata/graphics-common.morph @@ -0,0 +1,110 @@ +name: graphics-common +kind: stratum +build-depends: +- morph: strata/glib-common.morph +- morph: strata/mesa-common.morph +- morph: strata/x-common.morph +- morph: strata/icu-common.morph +chunks: +- name: pixman + morph: strata/graphics-common/pixman.morph + repo: upstream:pixman + ref: 87eea99e443b389c978cf37efc52788bf03a0ee0 + unpetrify-ref: pixman-0.32.6 +- name: freetype2 + repo: upstream:freetype2 + ref: 66cf29b1bc869b44863b0de2115bd017dfcce849 + unpetrify-ref: VER-2-6-2 + build-system: autotools +- name: colm-tarball + repo: upstream:colm-tarball + ref: 404ae0f284a3b2d41fcdb53826550e4dfec5c65c + unpetrify-ref: colm-0.12.0 + build-system: autotools +- name: ragel-tarball + repo: upstream:ragel-tarball + ref: eafd7a3974e8605fd02794269db6114a3446e016 + unpetrify-ref: ragel-6.9 + build-system: autotools + build-depends: + - colm-tarball +- name: harfbuzz + repo: upstream:harfbuzz + ref: 432ffc47a46d41bea17d839d0d3980e654c6e638 + unpetrify-ref: 1.0.4 + build-system: autotools + build-depends: + - freetype2 + - ragel-tarball +- name: freetype2-harfbuzz + repo: upstream:freetype2 + ref: 66cf29b1bc869b44863b0de2115bd017dfcce849 + unpetrify-ref: VER-2-6-2 + build-system: autotools +- name: fontconfig + morph: strata/graphics-common/fontconfig.morph + repo: upstream:fontconfig + ref: 9260b7ec39c34ce68d74e16d47917290a8c3f35a + unpetrify-ref: 2.11.1 + build-depends: + - freetype2-harfbuzz +- name: freefont-otf + morph: strata/graphics-common/freefont-otf.morph + repo: upstream:freefont-otf + ref: 75fa95a912718bb94a135d4bf6b13bb38e186ce7 + unpetrify-ref: baserock/morph +- name: ttf-alee + morph: strata/graphics-common/ttf-alee.morph + repo: upstream:ttf-alee + ref: 97ededc81c03d0a7333a15a9a1e6acc4d0e5ac50 + unpetrify-ref: fonts-alee_13.1 +- name: chinese-fonts-truetype-bkai00mp + morph: strata/graphics-common/chinese-fonts-truetype-bkai00mp.morph + repo: upstream:chinese-fonts-truetype/bkai00mp + ref: aa20d88b0ae7945f0956d7d662e8e5cf1e50b53a + unpetrify-ref: bkai00mp.ttf +- name: chinese-fonts-truetype-gkai00mp + morph: strata/graphics-common/chinese-fonts-truetype-gkai00mp.morph + repo: upstream:chinese-fonts-truetype/gkai00mp + ref: 7569dd2d8f31617a87229a4446b294a0d48055dd + unpetrify-ref: gkai00mp.ttf +- name: chinese-fonts-truetype-bsmi00lp + morph: strata/graphics-common/chinese-fonts-truetype-bsmi00lp.morph + repo: upstream:chinese-fonts-truetype/bsmi00lp + ref: 8f1febdd4f74d56670777c8a5fc25dc6d8cf972c + unpetrify-ref: bsmi00lp.ttf +- name: chinese-fonts-truetype-gbsn00lp + morph: strata/graphics-common/chinese-fonts-truetype-gbsn00lp.morph + repo: upstream:chinese-fonts-truetype/gbsn00lp + ref: be390396044728b4b535a067e3a0dca7daa0b8b6 + unpetrify-ref: gbsn00lp.ttf +- name: libpng + repo: upstream:libpng + ref: 88dd30b232362b65cca374dda39096888163dd6b + unpetrify-ref: libpng-1.6.16-signed + build-system: autotools +- name: libjpeg + repo: upstream:libjpeg + ref: f57ac58ac664ede6bc6e8cd9d88e0edaa366e21a + unpetrify-ref: baserock/morph + build-system: autotools +- name: libtiff + repo: upstream:libtiff + ref: 2f83c385ff3d5493602308b62ca6d7707725b4fd + unpetrify-ref: Release-v4-0-3 + build-system: autotools +- name: cairo + morph: strata/graphics-common/cairo.morph + repo: upstream:cairo + ref: f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8 + unpetrify-ref: 1.14.0 + build-depends: + - fontconfig + - freetype2-harfbuzz + - pixman + - libpng +- name: libwebp + repo: upstream:libwebp + ref: fcd94e925a9377cccfcf9de6db278126a52b97a4 + unpetrify-ref: v0.4.3-rc1 + build-system: autotools diff --git a/old/strata/graphics-common/cairo.morph b/old/strata/graphics-common/cairo.morph new file mode 100644 index 00000000..cc5a0725 --- /dev/null +++ b/old/strata/graphics-common/cairo.morph @@ -0,0 +1,5 @@ +name: cairo +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-glesv2 diff --git a/old/strata/graphics-common/chinese-fonts-truetype-bkai00mp.morph b/old/strata/graphics-common/chinese-fonts-truetype-bkai00mp.morph new file mode 100644 index 00000000..8dcde50f --- /dev/null +++ b/old/strata/graphics-common/chinese-fonts-truetype-bkai00mp.morph @@ -0,0 +1,5 @@ +name: chinese-fonts-truetype-bkai00mp +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/truetype/chinese +- install -p *.ttf "$DESTDIR"/usr/share/fonts/truetype/chinese diff --git a/old/strata/graphics-common/chinese-fonts-truetype-bsmi00lp.morph b/old/strata/graphics-common/chinese-fonts-truetype-bsmi00lp.morph new file mode 100644 index 00000000..8e0c060d --- /dev/null +++ b/old/strata/graphics-common/chinese-fonts-truetype-bsmi00lp.morph @@ -0,0 +1,5 @@ +name: chinese-fonts-truetype-bsmi00lp +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/truetype/chinese +- install -p *.ttf "$DESTDIR"/usr/share/fonts/truetype/chinese diff --git a/old/strata/graphics-common/chinese-fonts-truetype-gbsn00lp.morph b/old/strata/graphics-common/chinese-fonts-truetype-gbsn00lp.morph new file mode 100644 index 00000000..f1a0d15f --- /dev/null +++ b/old/strata/graphics-common/chinese-fonts-truetype-gbsn00lp.morph @@ -0,0 +1,5 @@ +name: chinese-fonts-truetype-gbsn00lp +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/truetype/chinese +- install -p *.ttf "$DESTDIR"/usr/share/fonts/truetype/chinese diff --git a/old/strata/graphics-common/chinese-fonts-truetype-gkai00mp.morph b/old/strata/graphics-common/chinese-fonts-truetype-gkai00mp.morph new file mode 100644 index 00000000..c08e0736 --- /dev/null +++ b/old/strata/graphics-common/chinese-fonts-truetype-gkai00mp.morph @@ -0,0 +1,5 @@ +name: chinese-fonts-truetype-gkai00mp +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/truetype/chinese +- install -p *.ttf "$DESTDIR"/usr/share/fonts/truetype/chinese diff --git a/old/strata/graphics-common/fontconfig.morph b/old/strata/graphics-common/fontconfig.morph new file mode 100644 index 00000000..08a228f5 --- /dev/null +++ b/old/strata/graphics-common/fontconfig.morph @@ -0,0 +1,7 @@ +name: fontconfig +kind: chunk +build-system: autotools +system-integration: + fontconfig-misc: + 00-update-fc-cache: + - fc-cache -f -v diff --git a/old/strata/graphics-common/freefont-otf.morph b/old/strata/graphics-common/freefont-otf.morph new file mode 100644 index 00000000..f021480d --- /dev/null +++ b/old/strata/graphics-common/freefont-otf.morph @@ -0,0 +1,5 @@ +name: freefont-otf +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/opentype/freefont +- install -p *.otf "$DESTDIR"/usr/share/fonts/opentype/freefont diff --git a/old/strata/graphics-common/pixman.morph b/old/strata/graphics-common/pixman.morph new file mode 100644 index 00000000..7942a964 --- /dev/null +++ b/old/strata/graphics-common/pixman.morph @@ -0,0 +1,5 @@ +name: pixman +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-arm-iwmmxt --disable-arm-iwmmxt2 diff --git a/old/strata/graphics-common/ttf-alee.morph b/old/strata/graphics-common/ttf-alee.morph new file mode 100644 index 00000000..b25e699f --- /dev/null +++ b/old/strata/graphics-common/ttf-alee.morph @@ -0,0 +1,5 @@ +name: ttf-alee +kind: chunk +install-commands: +- mkdir -p "$DESTDIR"/usr/share/fonts/truetype/alee +- install -p *.ttf "$DESTDIR"/usr/share/fonts/truetype/alee diff --git a/old/strata/gtk-deps.morph b/old/strata/gtk-deps.morph new file mode 100644 index 00000000..8b1c7b00 --- /dev/null +++ b/old/strata/gtk-deps.morph @@ -0,0 +1,55 @@ +name: gtk-deps +kind: stratum +description: the GTK+ dependencies stratum +build-depends: +- morph: strata/core.morph +- morph: strata/graphics-common.morph +- morph: strata/x-common.morph +chunks: +- name: pango + repo: upstream:pango + ref: 8daf1de02f8ac7e05b4788dcd6a209ef06e6e03a + unpetrify-ref: 1.40.1 + build-system: autotools +- name: shared-mime-info + morph: strata/gtk-deps/shared-mime-info.morph + repo: upstream:shared-mime-info + ref: f4e094740c36c629b5284ac270a0b08d8c75cb85 + unpetrify-ref: Release-1-6 +- name: gdk-pixbuf + morph: strata/gtk-deps/gdk-pixbuf.morph + repo: upstream:gdk-pixbuf + ref: 807bdc165f3c560d12326ebfd12820ef3130664b + unpetrify-ref: 2.34.0 +- name: atk + repo: upstream:atk + ref: 5a0a8577d29eba636aa0573c469a6200cc93db30 + unpetrify-ref: ATK_2_20_0 + build-system: autotools +- name: at-spi2-core + morph: strata/gtk-deps/at-spi2-core.morph + repo: upstream:at-spi2-core + ref: 5c3aa9275bb4d143ed9b0a94c7e7d92f88eb1520 + unpetrify-ref: AT_SPI2_CORE_2_20_1 +- name: at-spi2-atk + morph: strata/gtk-deps/at-spi2-atk.morph + repo: upstream:at-spi2-atk + ref: 176a34174403ab09cd633b04cbbb2219cfe58a9d + unpetrify-ref: AT_SPI2_ATK_2_20_1 + build-depends: + - at-spi2-core + - atk +- name: libcroco + repo: upstream:libcroco + ref: d8a1a160186a45a5852abc06916f9e452ace9e00 + unpetrify-ref: 0.6.11 + build-system: autotools +- name: librsvg + repo: upstream:librsvg + ref: e68ec17827a7116fc418189d474c5fafa08555b5 + unpetrify-ref: 2.40.16 + build-system: autotools + build-depends: + - gdk-pixbuf + - libcroco + - pango diff --git a/old/strata/gtk-deps/at-spi2-atk.morph b/old/strata/gtk-deps/at-spi2-atk.morph new file mode 100644 index 00000000..ae15e7f1 --- /dev/null +++ b/old/strata/gtk-deps/at-spi2-atk.morph @@ -0,0 +1,5 @@ +name: at-spi2-atk +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc diff --git a/old/strata/gtk-deps/at-spi2-core.morph b/old/strata/gtk-deps/at-spi2-core.morph new file mode 100644 index 00000000..ec641284 --- /dev/null +++ b/old/strata/gtk-deps/at-spi2-core.morph @@ -0,0 +1,5 @@ +name: at-spi2-core +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc diff --git a/old/strata/gtk-deps/gdk-pixbuf.morph b/old/strata/gtk-deps/gdk-pixbuf.morph new file mode 100644 index 00000000..92655e30 --- /dev/null +++ b/old/strata/gtk-deps/gdk-pixbuf.morph @@ -0,0 +1,8 @@ +name: gdk-pixbuf +kind: chunk +build-system: autotools +system-integration: + gdk-pixbuf-misc: + 01-query-loaders: + - mkdir -p /usr/lib/gdk-pixbuf-2.0/2.10.0/ + - /usr/bin/gdk-pixbuf-query-loaders > /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache diff --git a/old/strata/gtk-deps/shared-mime-info.morph b/old/strata/gtk-deps/shared-mime-info.morph new file mode 100644 index 00000000..02ae5555 --- /dev/null +++ b/old/strata/gtk-deps/shared-mime-info.morph @@ -0,0 +1,8 @@ +name: shared-mime-info +kind: chunk +max-jobs: 1 +build-system: autotools +system-integration: + shared-mime-info-misc: + 00-update-mime-database: + - update-mime-database /usr/share/mime diff --git a/old/strata/gtk2.morph b/old/strata/gtk2.morph new file mode 100644 index 00000000..4c8db88a --- /dev/null +++ b/old/strata/gtk2.morph @@ -0,0 +1,12 @@ +name: gtk2 +kind: stratum +description: the gtk2 stratum +build-depends: +- morph: strata/gtk-deps.morph +- morph: strata/x-common.morph +chunks: +- name: gtk+ + morph: strata/gtk2/gtk+.morph + repo: upstream:gtk+ + ref: b5b055721378ffe0269613e49ab5741a315eeb00 + unpetrify-ref: 2.24.28 diff --git a/old/strata/gtk2/gtk+.morph b/old/strata/gtk2/gtk+.morph new file mode 100644 index 00000000..bdc14cc6 --- /dev/null +++ b/old/strata/gtk2/gtk+.morph @@ -0,0 +1,15 @@ +name: gtk+ +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" +system-integration: + gtk2-misc: + 00-update-im2-cache: + - gtk-query-immodules-2.0 --update-cache diff --git a/old/strata/gtk3.morph b/old/strata/gtk3.morph new file mode 100644 index 00000000..280d671e --- /dev/null +++ b/old/strata/gtk3.morph @@ -0,0 +1,13 @@ +name: gtk3 +kind: stratum +description: the gtk3 stratum +build-depends: +- morph: strata/gtk-deps.morph +- morph: strata/wayland-generic.morph +- morph: strata/x-common.morph +chunks: +- name: gtk3 + morph: strata/gtk3/gtk3.morph + repo: upstream:gtk+ + ref: bbf775301a08b9a578ef7f647bc35fe13e816241 + unpetrify-ref: 3.20.6 diff --git a/old/strata/gtk3/gtk3.morph b/old/strata/gtk3/gtk3.morph new file mode 100644 index 00000000..86e15e89 --- /dev/null +++ b/old/strata/gtk3/gtk3.morph @@ -0,0 +1,15 @@ +name: gtk3 +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" --sysconfdir=/etc +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" +system-integration: + gtk3-misc: + 00-update-im3-cache: + - gtk-query-immodules-3.0 --update-cache diff --git a/old/strata/icu-common.morph b/old/strata/icu-common.morph new file mode 100644 index 00000000..3ac48524 --- /dev/null +++ b/old/strata/icu-common.morph @@ -0,0 +1,10 @@ +name: icu-common +kind: stratum +build-depends: +- morph: strata/coreutils-common.morph +chunks: +- name: icu + morph: strata/icu-common/icu.morph + repo: upstream:icu + ref: e2bd11ca1374cccfa50b7d27507ba9fe581be76a + unpetrify-ref: icu4c-52_1-src diff --git a/old/strata/icu-common/icu.morph b/old/strata/icu-common/icu.morph new file mode 100644 index 00000000..5c269ee0 --- /dev/null +++ b/old/strata/icu-common/icu.morph @@ -0,0 +1,19 @@ +name: icu +kind: chunk +configure-commands: +- | + # As per commit 8874a7c7, We issue this sed command when + # building ICU libraries on arm architectures. + case "$MORPH_ARCH" in + *arm*) + sed -e 's/LDFLAGSICUDT/#LDFLAGSICUDT/' -i source/config/mh-linux + ;; + *) + ;; + esac + cd source + ./runConfigureICU Linux --prefix=/usr --sysconfdir=/etc +build-commands: +- cd source; unset TARGET ; make +install-commands: +- cd source; unset TARGET ; make DESTDIR="$DESTDIR" install diff --git a/old/strata/initramfs-utils.morph b/old/strata/initramfs-utils.morph new file mode 100644 index 00000000..610997f3 --- /dev/null +++ b/old/strata/initramfs-utils.morph @@ -0,0 +1,11 @@ +name: initramfs-utils +kind: stratum +description: stratum for initramfs +build-depends: +- morph: strata/build-essential.morph +chunks: +- name: initramfs-scripts + repo: baserock:baserock/initramfs-scripts + ref: e5c71f0ca075bd29ffd55ec0c25804585bc21046 + unpetrify-ref: master + build-system: autotools diff --git a/old/strata/input-common.morph b/old/strata/input-common.morph new file mode 100644 index 00000000..a2df41cd --- /dev/null +++ b/old/strata/input-common.morph @@ -0,0 +1,45 @@ +name: input-common +kind: stratum +build-depends: +- morph: strata/device-management.morph +- morph: strata/foundation.morph +- morph: strata/glib-common.morph +- morph: strata/xorg-util-macros-common.morph +- morph: strata/x-common.morph +chunks: +- name: mtdev + repo: upstream:mtdev-git + ref: 4381b78fea54de0e775bf54952b2f95e5a06c57d + unpetrify-ref: v1.1.5 + build-system: autotools +- name: xkeyboard-config + morph: strata/input-common/xkeyboard-config.morph + repo: upstream:xkeyboard-config + ref: 26f344c93f8c6141e9233eb68088ba4fd56bc9ef + unpetrify-ref: xkeyboard-config-2.14 +- name: libevdev + repo: upstream:libevdev + ref: 6f03fd49fb949e46ebccb5dfb54489584896c791 + unpetrify-ref: libevdev-1.4.2 + build-system: autotools +- name: libwacom + repo: upstream:linuxwacom/libwacom + ref: c707d0f98c79260cb72b5d2bdded50b4e816e350 + unpetrify-ref: libwacom-0.15 + build-system: autotools +- name: libinput + repo: upstream:libinput + ref: 45e5847bf3e755532b2b6a62b74b85fcdadf2e36 + unpetrify-ref: 1.2.0 + build-system: autotools + build-depends: + - mtdev + - libevdev + - libwacom +- name: libxkbcommon-no-x11 + repo: upstream:xorg-lib-libxkbcommon + ref: c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28 + morph: strata/input-common/libxkbcommon-no-x11.morph + unpetrify-ref: xkbcommon-0.5.0 + build-depends: + - xkeyboard-config diff --git a/old/strata/input-common/libxkbcommon-no-x11.morph b/old/strata/input-common/libxkbcommon-no-x11.morph new file mode 100644 index 00000000..95165aaf --- /dev/null +++ b/old/strata/input-common/libxkbcommon-no-x11.morph @@ -0,0 +1,12 @@ +name: libxkbcommon-no-x11 +kind: chunk + +description: | + xkbcommon is a library to handle keyboard descriptions. + + This version is built without X11 support. If built with X11 support, + it depends on the xcb-xkb library. + +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-x11 diff --git a/old/strata/input-common/xkeyboard-config.morph b/old/strata/input-common/xkeyboard-config.morph new file mode 100644 index 00000000..2195befe --- /dev/null +++ b/old/strata/input-common/xkeyboard-config.morph @@ -0,0 +1,7 @@ +name: xkeyboard-config +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-runtime-deps +install-commands: +- mkdir -p "$DESTDIR"/"$PREFIX"/share/X11/xkb/ +- make install DESTDIR="$DESTDIR" diff --git a/old/strata/installer-utils.morph b/old/strata/installer-utils.morph new file mode 100644 index 00000000..ddc714b6 --- /dev/null +++ b/old/strata/installer-utils.morph @@ -0,0 +1,11 @@ +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: a1629ded9eb499b55b547cd8caa0ade8233b32f4 + unpetrify-ref: master diff --git a/old/strata/installer-utils/installer-scripts.morph b/old/strata/installer-utils/installer-scripts.morph new file mode 100644 index 00000000..e42313a8 --- /dev/null +++ b/old/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/old/strata/ivi-common.morph b/old/strata/ivi-common.morph new file mode 100644 index 00000000..80c519b1 --- /dev/null +++ b/old/strata/ivi-common.morph @@ -0,0 +1,12 @@ +name: ivi-common +kind: stratum +description: Components shared with different IVI systems +build-depends: +- morph: strata/cpp-common-libs.morph +- morph: strata/glib-common.morph +chunks: +- name: automotive-message-broker + morph: strata/ivi-common/automotive-message-broker.morph + repo: upstream:automotive-message-broker + ref: 5cac4bd2958ea24ac6913be5baa0dfcda6466089 + unpetrify-ref: '0.14' diff --git a/old/strata/ivi-common/automotive-message-broker.morph b/old/strata/ivi-common/automotive-message-broker.morph new file mode 100644 index 00000000..50428735 --- /dev/null +++ b/old/strata/ivi-common/automotive-message-broker.morph @@ -0,0 +1,20 @@ +name: automotive-message-broker +kind: chunk +description: Automotive Message Broker framework +build-system: cmake +post-install-commands: +- mkdir -p "$DESTDIR/usr/lib/systemd/system" +- | + cat >"$DESTDIR/usr/lib/systemd/system/ambd.service" <"$DESTDIR/lib/systemd/system/nmb.service" + [Unit] + Description=Samba NMB Daemon + After=syslog.target network-online.target + + [Service] + Type=forking + PIDFile=/var/run/samba/nmbd.pid + EnvironmentFile=-/etc/sysconfig/samba + ExecStart=$PREFIX/sbin/nmbd \$NMBDOPTIONS + ExecReload=$PREFIX/bin/kill -HUP \$MAINPID + + [Install] + WantedBy=multi-user.target + EOF +- | + cat <"$DESTDIR/lib/systemd/system/smb.service" + [Unit] + Description=Samba SMB Daemon + After=syslog.target network-online.target nmb.service winbind.service + + [Service] + Type=forking + PIDFile=/var/run/samba/smbd.pid + EnvironmentFile=-/etc/sysconfig/samba + ExecStart=$PREFIX/sbin/smbd \$NMBDOPTIONS + ExecReload=$PREFIX/bin/kill -HUP \$MAINPID + + [Install] + WantedBy=multi-user.target + EOF +- | + cat <"$DESTDIR/lib/systemd/system/winbind.service" + [Unit] + Description=Samba winbind Daemon + After=syslog.target network-online.target nmb.service + + [Service] + Type=forking + PIDFile=/var/run/samba/winbindd.pid + EnvironmentFile=-/etc/sysconfig/samba + ExecStart=$PREFIX/sbin/winbindd \$NMBDOPTIONS + ExecReload=$PREFIX/bin/kill -HUP \$MAINPID + + [Install] + WantedBy=multi-user.target + EOF +- | + for i in nmb smb winbind + do + ln -s ../$i.service "$DESTDIR/lib/systemd/system/multi-user.target.wants/$i.service" + done +- mkdir -p "$DESTDIR/var/log/samba" +# Install a sample configuration +- mkdir -p "$DESTDIR/etc/samba" +- | + cat <"$DESTDIR/etc/samba/smb.conf" + [global] + workgroup = WORKGROUP + dns proxy = no + local master = yes + preferred master = yes + os level = 2 + log file = /var/log/samba/log.%m + max log size = 1000 + syslog = 0 + server role = standalone server + passdb backend = tdbsam + obey pam restrictions = yes + unix password sync = yes + pam password change = yes + map to guest = bad user + usershare allow guests = yes + [homes] + comment = Home Directories + browseable = no + read only = yes + create mask = 0700 + valid users = %S + ;[printers] + ;comment = All Printers + ;browseable = no + ;path = /var/spool/samba + ;printable = yes + ;guest ok = no + ;read only = yes + ;create mask = 0700 + ;[src] + ;comment = Source code + ;path = /src + ;read only = yes + ;guest ok = yes + EOF diff --git a/old/strata/sandboxing.morph b/old/strata/sandboxing.morph new file mode 100644 index 00000000..64de36c3 --- /dev/null +++ b/old/strata/sandboxing.morph @@ -0,0 +1,18 @@ +name: sandboxing +kind: stratum +description: | + Libraries/tools for running programs/commands in a (partially) isolated + environment. +build-depends: +- morph: strata/python2-core.morph +chunks: +- name: sandboxlib + repo: upstream:sandboxlib + ref: ce30050daa10fa32801e8f798911b36aa82343a4 + unpetrify-ref: master + build-system: python-distutils +- name: linux-user-chroot + repo: upstream:linux-user-chroot + ref: 40e0b71d556414dfe150a74937f2c8a68d351d6d + unpetrify-ref: v2015.1 + build-system: autotools diff --git a/old/strata/secret-service.morph b/old/strata/secret-service.morph new file mode 100644 index 00000000..b6f9e896 --- /dev/null +++ b/old/strata/secret-service.morph @@ -0,0 +1,27 @@ +name: secret-service +kind: stratum +description: Service implementing the DBus Secret Service API +build-depends: +- morph: strata/foundation.morph +- morph: strata/glib-common.morph +- morph: strata/gtk3.morph +- morph: strata/network-security.morph +- morph: strata/vala-common.morph +chunks: +- name: gcr + repo: upstream:gnome/gcr + ref: 289ba4859fd170285f51e6bbfe91f2aac3b9170d + unpetrify-ref: 3.18.0 + build-system: autotools +- name: gnome-keyring + morph: strata/secret-service/gnome-keyring.morph + repo: upstream:gnome-keyring + ref: eb16c037431da14d4f1c396357f82f2b35e76e23 + unpetrify-ref: baserock/3.18.3-5-geb16c03 + build-depends: + - gcr +- name: libsecret + morph: strata/secret-service/libsecret.morph + repo: upstream:gnome/libsecret + ref: 4d76cf7dd8e55d93bb58164a1fff38113ba97af5 + unpetrify-ref: master diff --git a/old/strata/secret-service/gnome-keyring.morph b/old/strata/secret-service/gnome-keyring.morph new file mode 100644 index 00000000..73fe5298 --- /dev/null +++ b/old/strata/secret-service/gnome-keyring.morph @@ -0,0 +1,5 @@ +name: gnome-keyring +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-selinux --enable-pam --with-pam-dir=/lib/security --disable-doc diff --git a/old/strata/secret-service/libsecret.morph b/old/strata/secret-service/libsecret.morph new file mode 100644 index 00000000..b8af29b1 --- /dev/null +++ b/old/strata/secret-service/libsecret.morph @@ -0,0 +1,5 @@ +name: libsecret +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-manpages diff --git a/old/strata/sound-server-pulseaudio.morph b/old/strata/sound-server-pulseaudio.morph new file mode 100644 index 00000000..e9f9d830 --- /dev/null +++ b/old/strata/sound-server-pulseaudio.morph @@ -0,0 +1,74 @@ +name: sound-server-pulseaudio +kind: stratum +description: Components required for pulseaudio. +build-depends: +- morph: strata/bluetooth.morph +chunks: +- name: libatomic_ops + repo: upstream:libatomic_ops + ref: 0a58f5d63969c10d2141af89cb7a53df786909ab + unpetrify-ref: baserock/morph + build-system: autotools +- name: alsa-lib + repo: upstream:alsa-lib + ref: 7e86c8c56fba6fd8cdb57ee97aaa731c351a8892 + # Note: ref anchored because alsa-lib is known for rebasing + # tags, and master + unpetrify-ref: baserock/v1.1.3 + build-system: autotools +- name: alsa-utils + morph: strata/sound-server-pulseaudio/alsa-utils.morph + repo: upstream:alsa-utils + ref: 84591f0de015e5c40f5bfea83ca62360b9eaa349 + # Note: ref anchored because alsa-utils is known for rebasing + # tags, and master + unpetrify-ref: baserock/v1.1.3 + build-depends: + - alsa-lib +- name: speex + repo: upstream:speex + ref: e5dc987a403426ee3d0d81768afffa0fe74e20fa + unpetrify-ref: baserock/morph + build-system: autotools +- name: libsndfile + morph: strata/sound-server-pulseaudio/libsndfile.morph + repo: upstream:libsndfile + ref: 6c05c615c95ffef7a8a5a707cde0bb52bdd74244 + unpetrify-ref: baserock/morph +- name: libdaemon + repo: upstream:libdaemon + ref: 9fcc28e0e8f84968d1fb8b6d544a42efb13803ec + unpetrify-ref: v0.14 + build-system: autotools +- name: avahi + morph: strata/sound-server-pulseaudio/avahi.morph + repo: upstream:avahi + ref: 4c0b4cbf9c597f6df6a3220dec5438f4fe9e551b + unpetrify-ref: v0.6.31 + build-depends: + - libdaemon +- name: sbc + repo: upstream:sbc + ref: 24812c660036a693f8770766aa6fdea667de05d0 + unpetrify-ref: "1.3" + build-system: autotools + build-depends: + - libsndfile +- name: webrtc-audio-processing + morph: strata/sound-server-pulseaudio/webrtc-audio-processing.morph + repo: upstream:webrtc-audio-processing + ref: 9a0e28cab06f43d10cd00b69fc14dee78a73c2d0 + unpetrify-ref: v0.2 +- name: pulseaudio + morph: strata/sound-server-pulseaudio/pulseaudio.morph + repo: upstream:pulseaudio + ref: 84952e6a092b6a0c5b153bd7a4f6e490810681c8 + unpetrify-ref: v10.0 + build-depends: + - avahi + - libsndfile + - libatomic_ops + - speex + - alsa-lib + - sbc + - webrtc-audio-processing diff --git a/old/strata/sound-server-pulseaudio/alsa-utils.morph b/old/strata/sound-server-pulseaudio/alsa-utils.morph new file mode 100644 index 00000000..a6a1e041 --- /dev/null +++ b/old/strata/sound-server-pulseaudio/alsa-utils.morph @@ -0,0 +1,7 @@ +name: alsa-utils +kind: chunk +description: ALSA utilities +build-system: autotools +configure-commands: +- autoreconf -ifv +- ./configure --prefix="$PREFIX" --disable-xmlto diff --git a/old/strata/sound-server-pulseaudio/avahi.morph b/old/strata/sound-server-pulseaudio/avahi.morph new file mode 100644 index 00000000..a255ce1e --- /dev/null +++ b/old/strata/sound-server-pulseaudio/avahi.morph @@ -0,0 +1,16 @@ +name: avahi +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var --disable-werror \ + --with-distro=none --disable-qt3 --disable-qt4 --disable-gtk --disable-gtk3 \ + --disable-pygtk --disable-python-dbus --disable-mono --disable-manpages +system-integration: + avahi-misc: + 00-add-avahi-user: + - groupadd -fg 86 netdev + - groupadd -fg 84 avahi + - useradd -c "Avahi Daemon Owner" -d /var/run/avahi-daemon -u 84 -g avahi -s /bin/false avahi + 00-enable-avahi-service: + - systemctl enable avahi-daemon diff --git a/old/strata/sound-server-pulseaudio/libsndfile.morph b/old/strata/sound-server-pulseaudio/libsndfile.morph new file mode 100644 index 00000000..8d6c2fe0 --- /dev/null +++ b/old/strata/sound-server-pulseaudio/libsndfile.morph @@ -0,0 +1,5 @@ +name: libsndfile +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-external-libs diff --git a/old/strata/sound-server-pulseaudio/pulseaudio.morph b/old/strata/sound-server-pulseaudio/pulseaudio.morph new file mode 100644 index 00000000..dfaa9b0d --- /dev/null +++ b/old/strata/sound-server-pulseaudio/pulseaudio.morph @@ -0,0 +1,18 @@ +name: pulseaudio +kind: chunk +description: PulseAudio System +build-system: autotools +pre-configure-commands: +- NOCONFIGURE=1 ./bootstrap.sh +configure-commands: +- ./configure --prefix="$PREFIX" --localstatedir=/var --sysconfdir=/etc --with-database=simple + --with-systemduserunitdir=/usr/lib/systemd/user + --with-system-user=pulse --with-system-group=pulse --with-access-group=pulse-access + --enable-webrtc-aec +system-integration: + pulseaudio-misc: + 00-add-pulse-users: + - groupadd -rf pulse-access + - groupadd -rf pulse-rt + - groupadd -f -g 171 -r pulse + - useradd -r -g pulse -d /var/run/pulse -s /bin/false -c "PulseAudio System Daemon" pulse || exit 0 diff --git a/old/strata/sound-server-pulseaudio/webrtc-audio-processing.morph b/old/strata/sound-server-pulseaudio/webrtc-audio-processing.morph new file mode 100644 index 00000000..ea8cd4e0 --- /dev/null +++ b/old/strata/sound-server-pulseaudio/webrtc-audio-processing.morph @@ -0,0 +1,14 @@ +name: webrtc-audio-processing +kind: chunk +build-system: autotools +configure-commands: +- | + NOCONFIGURE=1 ./autogen.sh + + case "$MORPH_ARCH" in + x86_32) + sed -i -e "s/-O2/& -msse2/" configure + ;; + esac + + ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var diff --git a/old/strata/spell-checking.morph b/old/strata/spell-checking.morph new file mode 100644 index 00000000..dfe8b997 --- /dev/null +++ b/old/strata/spell-checking.morph @@ -0,0 +1,16 @@ +name: spell-checking +kind: stratum +description: Spell checking libraries +build-depends: +- morph: strata/glib-common.morph +chunks: +- name: enchant + repo: upstream:enchant + ref: 6d8b6bb15f09a14c90fb900eb2ecf1172d7cf6cf + unpetrify-ref: master + build-system: autotools +- name: hyphen + repo: upstream:hyphen + ref: 7f28cf7edb54cc1bc4eaa09672e0bc043b1da70b + unpetrify-ref: master + build-system: autotools diff --git a/old/strata/storage-management.morph b/old/strata/storage-management.morph new file mode 100644 index 00000000..c972d0d3 --- /dev/null +++ b/old/strata/storage-management.morph @@ -0,0 +1,40 @@ +name: storage-management +kind: stratum +description: libraries/services that provides access to storage +build-depends: +- morph: strata/device-management.morph +- morph: strata/glib-common.morph +- morph: strata/privileges-management.morph +- morph: strata/secret-service.morph +chunks: +- name: libatasmart + morph: strata/storage-management/libatasmart.morph + repo: upstream:libatasmart + ref: de6258940960443038b4c1651dfda3620075e870 + unpetrify-ref: master +- name: udisks + morph: strata/storage-management/udisks.morph + repo: upstream:udisks + ref: 410cab8f3d749ad2660cda3ba38b6aece42bf10f + unpetrify-ref: master + build-depends: + - libatasmart +- name: libgphoto2 + repo: upstream:libgphoto2 + ref: 3745402108932b457d73b102cbf8b2da8d383a18 + unpetrify-ref: libgphoto2-2_5_9-release + build-system: autotools +- name: libmtp + morph: strata/storage-management/libmtp.morph + repo: upstream:libmtp + ref: 83820ced69dca750b2edd6ac6d5640f246022a10 + unpetrify-ref: libmtp-1-1-11 +- name: gvfs + morph: strata/storage-management/gvfs.morph + repo: upstream:gvfs + ref: d037b5fd56cae878ed7bb5269a40e4bd046551d7 + unpetrify-ref: master + build-depends: + - libgphoto2 + - libmtp + - udisks diff --git a/old/strata/storage-management/gvfs.morph b/old/strata/storage-management/gvfs.morph new file mode 100644 index 00000000..bafd3158 --- /dev/null +++ b/old/strata/storage-management/gvfs.morph @@ -0,0 +1,5 @@ +name: gvfs +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --disable-documentation diff --git a/old/strata/storage-management/libatasmart.morph b/old/strata/storage-management/libatasmart.morph new file mode 100644 index 00000000..e8df654e --- /dev/null +++ b/old/strata/storage-management/libatasmart.morph @@ -0,0 +1,6 @@ +name: libatasmart +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh +- ./configure CFLAGS='-g -O0 -Wp,-U_FORTIFY_SOURCE' --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --libexecdir=/usr/lib diff --git a/old/strata/storage-management/libmtp.morph b/old/strata/storage-management/libmtp.morph new file mode 100644 index 00000000..8dbb22ba --- /dev/null +++ b/old/strata/storage-management/libmtp.morph @@ -0,0 +1,8 @@ +name: libmtp +kind: chunk +build-system: autotools +configure-commands: +# autogen.sh asks user about autoupdate config.sub and config.guess +- touch config.rpath +- autoreconf -if +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var diff --git a/old/strata/storage-management/udisks.morph b/old/strata/storage-management/udisks.morph new file mode 100644 index 00000000..785fab39 --- /dev/null +++ b/old/strata/storage-management/udisks.morph @@ -0,0 +1,5 @@ +name: udisks +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc --enable-fhs-media --disable-gtk-doc --disable-man diff --git a/old/strata/swift.morph b/old/strata/swift.morph new file mode 100644 index 00000000..41fd0c75 --- /dev/null +++ b/old/strata/swift.morph @@ -0,0 +1,53 @@ +name: swift +kind: stratum +description: Distributed object storage +build-depends: +# openstack-common is required for simplejson, cffi, greenlet, +# eventlet, pastedeploy, netifaces +- morph: strata/openstack-common.morph +chunks: +- name: dnspython + repo: upstream:python-packages/dnspython + ref: e1369c62d14f82b80ef11197a490ace5d43bb3f3 + unpetrify-ref: v1.12.0 + build-system: python-distutils +- name: xattr + morph: strata/swift/xattr.morph + repo: upstream:python-packages/xattr + ref: dd10d44e3eb9a1d2303c1f7d5126c099d56e97fc + unpetrify-ref: v0.7.6 +- name: liberasurecode + morph: strata/swift/liberasurecode.morph + repo: upstream:liberasurecode + ref: a380246762c16ea8eb7dbfccd50d296c3743b39e + unpetrify-ref: v1.0.7 +- name: gf-complete + morph: strata/swift/gf-complete.morph + repo: upstream:gf-complete + ref: 715443661c00558fe32f004a4be5f93f341b6e59 + unpetrify-ref: v2 +- name: jerasure + repo: upstream:jerasure + ref: ff7032153ea230fb59596f1f8a0e9ad8653addfb + unpetrify-ref: v2 + build-system: autotools + build-depends: + - gf-complete +- name: pyeclib + repo: upstream:python-packages/pyeclib + ref: aa58aa887c2327e1394d6f28b3b6b7ab8f190b2b + unpetrify-ref: v1.0.7 + build-system: python-distutils + build-depends: + - liberasurecode + - gf-complete + - jerasure +- name: swift + repo: upstream:openstack/swift + ref: f8dee761bd36f857aa1288c27e095907032fad68 + unpetrify-ref: 2.3.0 + build-system: python-distutils + build-depends: + - dnspython + - xattr + - pyeclib diff --git a/old/strata/swift/gf-complete.morph b/old/strata/swift/gf-complete.morph new file mode 100644 index 00000000..adbe5a48 --- /dev/null +++ b/old/strata/swift/gf-complete.morph @@ -0,0 +1,19 @@ +name: gf-complete +kind: chunk +build-system: autotools +pre-configure-commands: +- ./autogen.sh +configure-commands: +- | + case "$MORPH_ARCH" in + x86_64) + SSE= + ;; + *) + # Disable SSE4 for any architecture which are not x86_64 bits + # see more information about architecture which support SSE in + # https://en.wikipedia.org/wiki/SSE4#Supporting_CPUs. + SSE=--disable-sse + ;; + esac + ./configure --prefix="$PREFIX" "$SSE" diff --git a/old/strata/swift/liberasurecode.morph b/old/strata/swift/liberasurecode.morph new file mode 100644 index 00000000..68839403 --- /dev/null +++ b/old/strata/swift/liberasurecode.morph @@ -0,0 +1,5 @@ +name: liberasurecode +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -ivf diff --git a/old/strata/swift/xattr.morph b/old/strata/swift/xattr.morph new file mode 100644 index 00000000..65f47dae --- /dev/null +++ b/old/strata/swift/xattr.morph @@ -0,0 +1,8 @@ +name: xattr +kind: chunk +configure-commands: +- cp -r /usr/lib/python2.7/site-packages/cffi . +build-commands: +- python setup.py build +install-commands: +- python setup.py install --prefix "$PREFIX" --root "$DESTDIR" diff --git a/old/strata/tools.morph b/old/strata/tools.morph new file mode 100644 index 00000000..c17da999 --- /dev/null +++ b/old/strata/tools.morph @@ -0,0 +1,69 @@ +name: tools +kind: stratum +description: Various tools +build-depends: +- morph: strata/core.morph +chunks: +- name: distcc + morph: strata/tools/distcc.morph + repo: upstream:distcc + ref: c9691a9604fdf9d6711204999787d332b7141692 + unpetrify-ref: baserock/morph +- name: gdb + morph: strata/tools/gdb.morph + repo: upstream:binutils-gdb + ref: 129ee12d013f4a2f09fe40a33072e6e47e949890 + unpetrify-ref: gdb-7.8-branch +- name: lsof + morph: strata/tools/lsof.morph + repo: upstream:lsof + ref: fffb8558208586338587027c265fd0eca44466be + unpetrify-ref: baserock/morph +- name: strace + repo: upstream:strace + ref: 6d8c0637e8dd0f65c667af33c612230552419db1 + unpetrify-ref: v4.8 + build-system: autotools +- name: u-boot + morph: strata/tools/u-boot.morph + repo: upstream:u-boot + ref: fe57382d04b46c37f34cf8d3b3ad876554fd12bf + unpetrify-ref: baserock/morph +- name: kexec-tools + morph: strata/tools/kexec-tools.morph + repo: upstream:kexec-tools + ref: f4d1d2ad474e882df13418239aa3050673a844d7 + unpetrify-ref: baserock/morph +- name: device-tree-compiler + morph: strata/tools/device-tree-compiler.morph + repo: upstream:device-tree-compiler + ref: c92f284c3cf76d471eb27a271de3a51cb45ed058 + unpetrify-ref: baserock/morph +- name: sudo + repo: upstream:sudo + ref: a4769dc7999b53260325fb89945bef85714fb338 + unpetrify-ref: baserock/morph + build-system: autotools +- name: procps-ng + morph: strata/tools/procps-ng.morph + repo: upstream:procps-ng + ref: 85fff468fa263cdd2ff1c0144579527c32333695 + unpetrify-ref: v3.3.9 +- name: ipmitool + morph: strata/tools/ipmitool.morph + repo: upstream:ipmitool + ref: be7917f9f58c8a354bc0960ed57516af5d2bd29a + unpetrify-ref: IPMITOOL_1_8_14 +- name: parted + morph: strata/tools/parted.morph + repo: upstream:parted + ref: 387e96e6eac59d84e9a688422b4b321ae9beaa20 + unpetrify-ref: baserock/v3.2 + submodules: + gnulib: + url: upstream:gnulib +- name: zip + morph: strata/tools/zip.morph + repo: upstream:zip + ref: e52e9d6a339aad5fcff464cf207da51c02996e39 + unpetrify-ref: zip30 diff --git a/old/strata/tools/device-tree-compiler.morph b/old/strata/tools/device-tree-compiler.morph new file mode 100644 index 00000000..8abfafc8 --- /dev/null +++ b/old/strata/tools/device-tree-compiler.morph @@ -0,0 +1,6 @@ +name: device-tree-compiler +kind: chunk +build-commands: +- make all +install-commands: +- make install DESTDIR="$DESTDIR" PREFIX="$PREFIX" diff --git a/old/strata/tools/distcc.morph b/old/strata/tools/distcc.morph new file mode 100644 index 00000000..82adbe50 --- /dev/null +++ b/old/strata/tools/distcc.morph @@ -0,0 +1,10 @@ +name: distcc +kind: chunk +build-system: autotools +pre-configure-commands: +- NOCONFIGURE=1 ./autogen.sh +# distcc doesn't use automake, so we cannot autoreconf it +- cp /usr/share/automake*/config.guess . +- cp /usr/share/automake*/config.sub . +configure-commands: +- ./configure --prefix="$PREFIX" --disable-Werror diff --git a/old/strata/tools/gdb.morph b/old/strata/tools/gdb.morph new file mode 100644 index 00000000..6f60da9e --- /dev/null +++ b/old/strata/tools/gdb.morph @@ -0,0 +1,6 @@ +name: gdb +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-werror --disable-gas --disable-binutils + --disable-ld --disable-gold --disable-gprof diff --git a/old/strata/tools/git-fat.morph b/old/strata/tools/git-fat.morph new file mode 100644 index 00000000..c971b07f --- /dev/null +++ b/old/strata/tools/git-fat.morph @@ -0,0 +1,4 @@ +name: git-fat +kind: chunk +install-commands: +- install -D -m 755 git-fat "$DESTDIR/usr/bin/git-fat" diff --git a/old/strata/tools/ipmitool.morph b/old/strata/tools/ipmitool.morph new file mode 100644 index 00000000..db0d5a3a --- /dev/null +++ b/old/strata/tools/ipmitool.morph @@ -0,0 +1,5 @@ +name: ipmitool +kind: chunk +build-system: autotools +pre-configure-commands: +- touch NEWS diff --git a/old/strata/tools/kexec-tools.morph b/old/strata/tools/kexec-tools.morph new file mode 100644 index 00000000..118c1ac2 --- /dev/null +++ b/old/strata/tools/kexec-tools.morph @@ -0,0 +1,6 @@ +name: kexec-tools +kind: chunk +build-system: autotools +configure-commands: +- ./bootstrap +- ./configure --prefix="$PREFIX" diff --git a/old/strata/tools/lsof.morph b/old/strata/tools/lsof.morph new file mode 100644 index 00000000..38183ae6 --- /dev/null +++ b/old/strata/tools/lsof.morph @@ -0,0 +1,12 @@ +name: lsof +kind: chunk +configure-commands: +- tar xf lsof_*_src.tar --no-same-owner +- cd lsof_*_src/ && ./Configure -n linux +build-commands: +- cd lsof_*_src/ && make +install-commands: +- mkdir -p "$DESTDIR$PREFIX"/bin +- mv lsof_*_src/lsof "$DESTDIR$PREFIX"/bin/lsof +- mkdir -p "$DESTDIR$PREFIX"/man/man8 +- mv lsof_*_src/lsof.8 "$DESTDIR$PREFIX"/man/man8 diff --git a/old/strata/tools/parted.morph b/old/strata/tools/parted.morph new file mode 100644 index 00000000..0f279950 --- /dev/null +++ b/old/strata/tools/parted.morph @@ -0,0 +1,12 @@ +name: parted +kind: chunk +build-system: autotools +pre-configure-commands: +- sed -i -e '/^buildreq="/,/^"/{/rsync/d}' bootstrap.conf +- sed -i -e '/^buildreq="/,/^"/{/perl/d}' bootstrap.conf +- ./bootstrap --skip-po --no-git --gnulib-srcdir=gnulib +configure-commands: +# Disable device-mapper as it is not installed on Baserock +- ./configure --prefix="$PREFIX" --disable-device-mapper +build-commands: +- make WERROR_CFLAGS="" diff --git a/old/strata/tools/procps-ng.morph b/old/strata/tools/procps-ng.morph new file mode 100644 index 00000000..fb742a23 --- /dev/null +++ b/old/strata/tools/procps-ng.morph @@ -0,0 +1,16 @@ +name: procps-ng +kind: chunk + +description: | + Process management tools. + + procps-ng is a fork of the original procps project. + +build-system: autotools + +configure-commands: +- NOCONFIGURE=1 ./autogen.sh + # Setting exec-prefix to /usr causes a bunch of stuff to go in /usr/usr/bin + # Setting prefix to / causes files to go in /include and /share + # So don't do either of those things! +- ./configure --prefix="$PREFIX" --exec-prefix=/ diff --git a/old/strata/tools/u-boot.morph b/old/strata/tools/u-boot.morph new file mode 100644 index 00000000..9be30bc7 --- /dev/null +++ b/old/strata/tools/u-boot.morph @@ -0,0 +1,11 @@ +name: u-boot +kind: chunk +build-commands: +- make tools +install-commands: +- mkdir -p "$DESTDIR$PREFIX/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/old/strata/tools/zip.morph b/old/strata/tools/zip.morph new file mode 100644 index 00000000..070467e0 --- /dev/null +++ b/old/strata/tools/zip.morph @@ -0,0 +1,9 @@ +name: zip +kind: chunk +configure-commands: +- cp unix/Makefile . +build-commands: +- sed -i -e 's/^prefix = .*$/prefix = $$DESTDIR\/$$PREFIX/' Makefile +- make generic +install-commands: +- make install diff --git a/old/strata/unionfs-fuse-group.morph b/old/strata/unionfs-fuse-group.morph new file mode 100644 index 00000000..acb094ea --- /dev/null +++ b/old/strata/unionfs-fuse-group.morph @@ -0,0 +1,20 @@ +name: unionfs-fuse-group +kind: stratum + +description: | + User-space union file system. + + This is used by Morph for systems which are unable to use 'overlayfs'. It is slower + than 'overlayfs', because it runs outside rather than inside the kernel, but 'overlayfs' + is only available in Linux 3.18 and newer. + +build-depends: +# Depends on foundation for 'fuse', and maybe other stuff. +- morph: strata/foundation.morph + +chunks: +- name: unionfs-fuse + morph: strata/unionfs-fuse-group/unionfs-fuse.morph + repo: upstream:unionfs-fuse + ref: efac5b7aa91ec860f8f430a8d21060fe53a07002 + unpetrify-ref: v0.26 diff --git a/old/strata/unionfs-fuse-group/unionfs-fuse.morph b/old/strata/unionfs-fuse-group/unionfs-fuse.morph new file mode 100644 index 00000000..98e1ce1f --- /dev/null +++ b/old/strata/unionfs-fuse-group/unionfs-fuse.morph @@ -0,0 +1,12 @@ +name: unionfs-fuse +kind: chunk + +description: User-space union file system. + +build-system: manual + +build-commands: +- make PREFIX="$PREFIX" + +install-commands: +- make PREFIX="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/strata/vala-common.morph b/old/strata/vala-common.morph new file mode 100644 index 00000000..e1438de3 --- /dev/null +++ b/old/strata/vala-common.morph @@ -0,0 +1,35 @@ +name: vala-common +kind: stratum +description: Vala compiler +build-depends: +- morph: strata/core.morph +- morph: strata/glib-common.morph +chunks: +- name: vala-bootstrap + morph: strata/vala-common/vala-bootstrap.morph + repo: upstream:vala + ref: 4e4a02c03445336237b36723b23a91670ef7621b + unpetrify-ref: baserock/bootstrap +- name: vala + repo: upstream:vala + ref: 5f6ebe007050be12bdc4aa7c902ae4059f28874a + unpetrify-ref: 0.28.0 + build-system: autotools + build-depends: + - vala-bootstrap +- name: m4-common + repo: upstream:m4-common + ref: 6e9a4d3b35c5ce8af050e66d8caff96070c57d34 + unpetrify-ref: baserock/2015-12-15 + build-system: autotools + submodules: + autoconf-archive: + url: upstream:autoconf-archive +- name: libgee + repo: upstream:gnome/libgee + ref: 4301ab58efc217409c588a5527f68990b4e3d220 + unpetrify-ref: master + build-system: autotools + build-depends: + - m4-common + - vala diff --git a/old/strata/vala-common/vala-bootstrap.morph b/old/strata/vala-common/vala-bootstrap.morph new file mode 100644 index 00000000..e55b1887 --- /dev/null +++ b/old/strata/vala-common/vala-bootstrap.morph @@ -0,0 +1,7 @@ +name: vala-bootstrap +kind: chunk +build-system: autotools +pre-configure-commands: +- autoreconf -ivf +configure-commands: +- ./configure --prefix="$PREFIX" diff --git a/old/strata/virtualbox-guest-x86_64.morph b/old/strata/virtualbox-guest-x86_64.morph new file mode 100644 index 00000000..fadcec92 --- /dev/null +++ b/old/strata/virtualbox-guest-x86_64.morph @@ -0,0 +1,22 @@ +name: virtualbox-guest-x86_64 +kind: stratum +description: | + VirtualBox Guest Additions for x86_64 +build-depends: +- morph: strata/tools.morph +- morph: strata/bsp-x86_64-generic.morph +- morph: strata/x-common.morph +- morph: strata/x-generic.morph +chunks: +- name: yasm + morph: strata/virtualbox-guest-x86_64/yasm.morph + repo: upstream:yasm + ref: fefefe262eb29081f0bcb4d48f2d476ce5730562 + unpetrify-ref: baserock/morph +- name: vboxguest + morph: strata/virtualbox-guest-x86_64/vboxguest.morph + repo: upstream:VirtualBox + ref: 617aeb5a3c13f4a46423e8c2fb560449403ad56d + unpetrify-ref: baserock/morph + build-depends: + - yasm diff --git a/old/strata/virtualbox-guest-x86_64/vboxguest.morph b/old/strata/virtualbox-guest-x86_64/vboxguest.morph new file mode 100644 index 00000000..1ab7f0f1 --- /dev/null +++ b/old/strata/virtualbox-guest-x86_64/vboxguest.morph @@ -0,0 +1,34 @@ +name: vboxguest +kind: chunk +description: | + VirtualBox guest additions +max-jobs: 1 +build-commands: +- truncate -s0 src/VBox/Additions/common/pam/Makefile.kmk +- env PATH="${PATH}:$(pwd)/kBuild/bin/linux.amd64/" VBOX_ONLY_ADDITIONS=1 VBOX_ONLY_BUILD=1 + kmk +- cd out/linux.amd64/release/bin/additions/src/ && make M="$(pwd)" -C /usr/src/linux + modules +install-commands: +- cd out/linux.amd64/release/bin/additions/src && make M="$(pwd)" -C /usr/src/linux + INSTALL_MOD_PATH="$DESTDIR" modules_install +- install -m 755 -D -o 0 -g 0 out/linux.amd64/release/bin/additions/mount.vboxsf "$DESTDIR/sbin/mount.vboxsf" +- install -m 755 -D -o 0 -g 0 out/linux.amd64/release/bin/additions/VBoxService "$DESTDIR/sbin/VBoxService" +- install -m 755 -D -o 0 -g 0 out/linux.amd64/release/bin/additions/VBoxControl "$DESTDIR/sbin/VBoxControl" +- | + install -m 644 -D -o 0 -g 0 /proc/self/fd/0 "$DESTDIR/lib/systemd/system/virtualbox-guest.service" < "$DESTDIR/etc/modules-load.d/virtualbox-guest-filesystem.conf" +system-integration: + vboxguest-misc: + 00-depmod: + - depmod -a $(cd /usr/lib/modules; ls | head -n 1) diff --git a/old/strata/virtualbox-guest-x86_64/yasm.morph b/old/strata/virtualbox-guest-x86_64/yasm.morph new file mode 100644 index 00000000..437ae97d --- /dev/null +++ b/old/strata/virtualbox-guest-x86_64/yasm.morph @@ -0,0 +1,4 @@ +name: yasm +kind: chunk +max-jobs: 1 +build-system: autotools diff --git a/old/strata/wayland-generic.morph b/old/strata/wayland-generic.morph new file mode 100644 index 00000000..cdcfae4c --- /dev/null +++ b/old/strata/wayland-generic.morph @@ -0,0 +1,17 @@ +name: wayland-generic +kind: stratum +build-depends: +- morph: strata/core.morph +chunks: +- name: wayland + morph: strata/wayland-generic/wayland.morph + repo: upstream:wayland + ref: 47163797f810373c81b6e13b7a8a245eb9877785 + unpetrify-ref: 1.11.0 +- name: wayland-protocols + repo: upstream:wayland-protocols + ref: 65d09ef404fb26cb513f4f836e904f415c425a8f + unpetrify-ref: "1.4" + build-system: autotools + build-depends: + - wayland diff --git a/old/strata/wayland-generic/wayland.morph b/old/strata/wayland-generic/wayland.morph new file mode 100644 index 00000000..a65afd05 --- /dev/null +++ b/old/strata/wayland-generic/wayland.morph @@ -0,0 +1,7 @@ +name: wayland +kind: chunk +description: Wayland server +build-system: autotools +configure-commands: +- autoreconf -ivf +- ./configure --prefix="$PREFIX" --sysconfdir=/etc --disable-documentation diff --git a/old/strata/weston-common.morph b/old/strata/weston-common.morph new file mode 100644 index 00000000..93818920 --- /dev/null +++ b/old/strata/weston-common.morph @@ -0,0 +1,14 @@ +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: weston + morph: strata/weston-common/weston.morph + repo: upstream:weston + ref: 2e5232b980eaa1074023a65dd7941e80b72a763c + unpetrify-ref: baserock/weston-1.11.0/tegra diff --git a/old/strata/weston-common/weston.morph b/old/strata/weston-common/weston.morph new file mode 100644 index 00000000..af0844ed --- /dev/null +++ b/old/strata/weston-common/weston.morph @@ -0,0 +1,7 @@ +name: weston +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --sysconfdir=/etc + --enable-demo-clients-install + --enable-systemd-notify diff --git a/old/strata/x-common.morph b/old/strata/x-common.morph new file mode 100644 index 00000000..a1149ae0 --- /dev/null +++ b/old/strata/x-common.morph @@ -0,0 +1,405 @@ +name: x-common +kind: stratum +build-depends: +- morph: strata/xorg-util-macros-common.morph +chunks: +- name: xorg-proto-bigreqsproto + repo: upstream:xorg-proto-bigreqsproto + ref: d6ed3e927a756900ad4c9fd7235f8f7f34f376db + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-compositeproto + repo: upstream:xorg-proto-compositeproto + ref: 39738dbe9438dc80fc6b9e221d9ed26a6d42da6b + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-damageproto + repo: upstream:xorg-proto-damageproto + ref: 015b980e5091492dbe681af59569768ba89fbfe0 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-dmxproto + repo: upstream:xorg-proto-dmxproto + ref: 395f6fcc0a5635907b5e45829e86b29431316184 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-fixesproto + repo: upstream:xorg-proto-fixesproto + ref: b6c6bc2aa4b83f8763c75c90e6671052272a2af2 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-fontsproto + repo: upstream:xorg-proto-fontsproto + ref: df8c05f7c0253a36589d96efa52938215eff9d4d + unpetrify-ref: fontsproto-2.1.3 + build-system: autotools +- name: xorg-proto-glproto + repo: upstream:xorg-proto-glproto + ref: f84853d97d5749308992412a215fa518b6536eb3 + unpetrify-ref: glproto-1.4.17 + build-system: autotools +- name: xorg-proto-inputproto + repo: upstream:xorg-proto-inputproto + ref: 343ff0938f592876b9d82c966f166bf45a78c3c8 + unpetrify-ref: inputproto-2.3.1 + build-system: autotools +- name: xorg-proto-kbproto + repo: upstream:xorg-proto-kbproto + ref: f7022f5775350dce3348b7151845a32390e98791 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-xineramaproto + repo: upstream:xorg-proto-xineramaproto + ref: 4e77b45e0d6b42a448dab2ec316eeb5c490ecfed + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-randrproto + repo: upstream:xorg-proto-randrproto + ref: 79b63f0e57cd5baf06ff24252d3f1675dcb64467 + unpetrify-ref: randrproto-1.5.0 + build-system: autotools +- name: xorg-proto-recordproto + repo: upstream:xorg-proto-recordproto + ref: 0fd4f8e57c1e637b2aaaaa0f539ddbac8cc50575 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-renderproto + repo: upstream:xorg-proto-renderproto + ref: 935f5ec95a3718c184ff685f5b79b467483b7844 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-resourceproto + repo: upstream:xorg-proto-resourceproto + ref: ada91f54c98b5a61d3e116fca6bf239a8604730f + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-scrnsaverproto + repo: upstream:xorg-proto-scrnsaverproto + ref: 614532026e8ec7496216316fb584d6f2af6a7f7b + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-videoproto + repo: upstream:xorg-proto-videoproto + ref: e42cf822e230cff5c6550ca2c050dfa27d2c9611 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-xcmiscproto + repo: upstream:xorg-proto-xcmiscproto + ref: 83549077a3c2140b9862709004cd873f1c55e395 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-xextproto + repo: upstream:xorg-proto-xextproto + ref: 66afec3f49e8eb0d4c2e9af7088fc3116d4bafd7 + unpetrify-ref: xextproto-7.3.0 + build-system: autotools +- name: xorg-proto-xf86bigfontproto + repo: upstream:xorg-proto-xf86bigfontproto + ref: f805b328b2195de384c0fb6b82ef5f88c179b2c0 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-xf86dgaproto + repo: upstream:xorg-proto-xf86dgaproto + ref: c52b205c3175309be7952774668c87dd2d5ce30e + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-xf86driproto + repo: upstream:xorg-proto-xf86driproto + ref: cb03b8d49bf063860859c1ed8bcecd055551e93a + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-x11proto + repo: upstream:xorg-proto-x11proto + ref: d5524e2b8d811aa03ed19c6e8fb2ee4162ca2b23 + unpetrify-ref: xproto-7.0.28 + build-system: autotools +- name: xorg-proto-dri2proto + repo: upstream:xorg-proto-dri2proto + ref: ead89ad84877551cc15d26b95cb19a3e205df71f + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-proto-dri3proto + repo: upstream:xorg-proto-dri3proto + ref: 91df0f88b70c268f3580385a7b37543ab8c544c8 + build-system: autotools +- name: xorg-proto-presentproto + repo: upstream:xorg-proto-presentproto + ref: ef84007fc4a23d3897b4776906139de9d0698c2a + build-system: autotools +- name: xcb-proto + repo: upstream:xcb-proto + ref: 4b384d2a015c50d0e93dcacda4b8260a3fd37640 + unpetrify-ref: '1.11' + build-system: autotools +- name: xorg-lib-libxshmfence + repo: upstream:xorg-lib-libxshmfence + ref: 9c4f070e1304a3503cfab08f68573443025fc4c9 + unpetrify-ref: master + build-system: autotools + build-depends: + - xorg-proto-x11proto +- name: xorg-lib-libXau + repo: upstream:xorg-lib-libXau + ref: 1a8a1b2c68967b48c07b56142799b1020f017027 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xorg-proto-x11proto +- name: xcb-libxcb + repo: upstream:xcb-libxcb + ref: d1e8ec96fca4862f37ec9f0e9407bb989c4c161a + unpetrify-ref: '1.11' + build-system: autotools + build-depends: + - xcb-proto + - xorg-lib-libXau +- name: xcb-util + repo: upstream:xcb-util + ref: 4de010f122da40e17b52866d07d1d501a66bf007 + unpetrify-ref: baserock/0.4.0 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + submodules: + m4: + url: upstream:xcb/util-common-m4 +- name: util-wm + repo: upstream:util-wm + ref: fb7afc3f291c8cc072d327cd8d97ab1db3283c21 + unpetrify-ref: baserock/0.4.1 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + submodules: + m4: + url: upstream:xcb/util-common-m4 +- name: util-keysyms + repo: upstream:util-keysyms + ref: edb763a8837d3932690b9d6d77cb7e20a9ab8013 + unpetrify-ref: baserock/0.4.0 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + submodules: + m4: + url: upstream:xcb/util-common-m4 +- name: util-image + repo: upstream:util-image + ref: f20f25a1c017c58d5d7dfffc6e9adc8d31879152 + unpetrify-ref: baserock/0.4.0 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xcb-util + submodules: + m4: + url: upstream:xcb/util-common-m4 +- name: xorg-lib-libxtrans + repo: upstream:xorg-lib-libxtrans + ref: 7cbad9fe2e61cd9d5caeaf361826a6f4bd320f03 + unpetrify-ref: xtrans-1.3.5 + build-system: autotools +- name: xorg-lib-libX11 + repo: upstream:xorg-lib-libX11 + ref: cb107760df33ffc8630677e66e2e50aa37950a5c + unpetrify-ref: libX11-1.6.2 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libxtrans + - xorg-proto-inputproto + - xorg-proto-kbproto + - xorg-proto-x11proto + - xorg-proto-xextproto + - xorg-proto-xf86bigfontproto +- name: xorg-lib-libXext + repo: upstream:xorg-lib-libXext + ref: 8eee1236041d46a21faba32e0d27c26985267d89 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libX11 + - xorg-lib-libXau + - xorg-proto-x11proto + - xorg-proto-xextproto +- name: xorg-lib-libXfixes + repo: upstream:xorg-lib-libXfixes + ref: 0cb446962381f750e05d97bfb974ca1e32481d5d + unpetrify-ref: libXfixes-5.0.1 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libXext + - xorg-proto-fixesproto +- name: xorg-lib-libXi + repo: upstream:xorg-lib-libXi + ref: f180dff710dc54d00e0e26b84de053151f8f207e + unpetrify-ref: libXi-1.7.5 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-lib-libXfixes + - xorg-proto-fixesproto + - xorg-proto-inputproto + - xorg-proto-x11proto + - xorg-proto-xextproto +- name: xorg-lib-libXcomposite + repo: upstream:xorg-lib-libXcomposite + ref: eda48b1bedaa344ada8e13930c9ab3058b836190 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXfixes + - xorg-proto-compositeproto +- name: xorg-lib-libXrender + repo: upstream:xorg-lib-libXrender + ref: 1af52cb334377611233d7dc156bc1e6f7923756d + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-proto-renderproto +- name: xorg-lib-libXrandr + repo: upstream:xorg-lib-libXrandr + ref: 99a63d10cbbab7d69a52d25d78795a3278506ea9 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-lib-libXrender + - xorg-proto-randrproto + - xorg-proto-renderproto + - xorg-proto-xextproto +- name: xorg-lib-libXinerama + repo: upstream:xorg-lib-libXinerama + ref: 470b9356af961ff7d3968b164aa73872b49a5dcc + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-proto-xextproto + - xorg-proto-xineramaproto +- name: xorg-lib-libXtst + repo: upstream:xorg-lib-libXtst + ref: 2aafac9474a0a0a0c39797862f823255918cf368 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-lib-libXi + - xorg-proto-inputproto + - xorg-proto-recordproto + - xorg-proto-xextproto +- name: xorg-lib-libXdamage + repo: upstream:xorg-lib-libXdamage + ref: 0d35761dc39409b70e04dd0786aef6537f92976a + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libXfixes + - xorg-proto-damageproto +- name: xorg-lib-libXcursor + repo: upstream:xorg-lib-libXcursor + ref: 1b98fd6a2e8c00a563187849a585e68c7344468b + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXrender + - xorg-lib-libXfixes + - xorg-proto-fixesproto + - xorg-lib-libXau + - xorg-lib-libX11 +- name: xorg-lib-libICE + repo: upstream:xorg-lib-libICE + ref: 0dfab4253e26d5c6e5f058126eb5e9f7a7732ae8 + unpetrify-ref: libICE-1.0.9 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-proto-x11proto + - xorg-lib-libxtrans +- name: xorg-lib-libSM + repo: upstream:xorg-lib-libSM + ref: 0fd7aa17da41779129a3acfdad28e07c0072a160 + unpetrify-ref: libSM-1.2.2 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-proto-x11proto + - xorg-lib-libICE + - xorg-lib-libxtrans +- name: xorg-lib-libXt + repo: upstream:xorg-lib-libXt + ref: e7411e7e5299116604ff1f01d9415802607f1051 + unpetrify-ref: libXt-1.1.5 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-proto-kbproto + - xorg-lib-libX11 + - xorg-lib-libSM + - xorg-lib-libICE +- name: xorg-lib-libXmu + repo: upstream:xorg-lib-libXmu + ref: 2539e539eafdac88177c8ee30b043c5d52f017e4 + unpetrify-ref: libXmu-1.1.2 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-lib-libXt + - xorg-proto-xextproto + - xorg-lib-libICE + - xorg-lib-libSM +- name: xorg-lib-libXv + repo: upstream:xorg-lib-libXv + ref: 736d7ac5a94c7aa6761d50ab58339a3d9a116c51 + unpetrify-ref: libXv-1.0.10 + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-lib-libXext + - xorg-proto-xextproto + - xorg-proto-videoproto +- name: xorg-lib-libxkbfile + repo: upstream:xorg-lib-libxkbfile + ref: 7381c2f9013ef7784c78091fa671e652a62ca706 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xcb-libxcb + - xorg-lib-libXau + - xorg-lib-libX11 + - xorg-proto-kbproto diff --git a/old/strata/x-drivers.morph b/old/strata/x-drivers.morph new file mode 100644 index 00000000..faf646f2 --- /dev/null +++ b/old/strata/x-drivers.morph @@ -0,0 +1,26 @@ +name: x-drivers +kind: stratum +build-depends: +- morph: strata/input-common.morph +- morph: strata/x-generic.morph +chunks: +- name: xorg-driver-xf86-video-fbdev + repo: upstream:xorg-driver-xf86-video-fbdev + ref: 679ed9a4e6b54227df191c580e3ef641e075db19 + unpetrify-ref: xf86-video-fbdev-0.4.4 + build-system: autotools +- name: xorg-driver-xf86-video-vesa + repo: upstream:xorg-driver-xf86-video-vesa + ref: b49c293e67cd88424ff40a2ca4e58b28528691d7 + unpetrify-ref: xf86-video-vesa-2.3.4 + build-system: autotools +- name: xorg-driver-xf86-video-intel + repo: upstream:xorg-driver-xf86-video-intel + ref: 57725564179b8ddb48d5c9437fde91a6c02c0740 + unpetrify-ref: 2.99.917-381-g5772556 + build-system: autotools +- name: xorg-driver-xf86-input-libinput + repo: upstream:xorg-driver-xf86-input-libinput + ref: 44f4b2ed7075d424e3621f30815e11875b364c27 + unpetrify-ref: xf86-input-libinput-0.15.0 + build-system: autotools diff --git a/old/strata/x-generic.morph b/old/strata/x-generic.morph new file mode 100644 index 00000000..d9462426 --- /dev/null +++ b/old/strata/x-generic.morph @@ -0,0 +1,46 @@ +name: x-generic +kind: stratum +build-depends: +- morph: strata/foundation.morph +- morph: strata/libdrm-common.morph +- morph: strata/mesa-common.morph +- morph: strata/x-common.morph +- morph: strata/graphics-common.morph +chunks: +- name: xorg-font-util + repo: upstream:xorg-font-util + ref: 5f01ea79f1cb2328bfc4130b1e693f71be916b87 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-lib-libfontenc + repo: upstream:xorg-lib-libfontenc + ref: f5d1208172e965fdd7fae8927bd3e29b3cc3a975 + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xorg-font-util +- name: xorg-lib-libXfont + repo: upstream:xorg-lib-libXfont + ref: ad4f4d8a2d0730c0ea3c09210bf921638b4682bc + unpetrify-ref: libXfont-1.5.0 + build-system: autotools + build-depends: + - xorg-lib-libfontenc +- name: xserver + morph: strata/x-generic/xserver.morph + repo: upstream:xserver + ref: 93d4224ccf3dee5a51815a66f76c905450419b50 + unpetrify-ref: xorg-server-1.18.2 + build-depends: + - xorg-font-util + - xorg-lib-libXfont +- name: xorg-app-xkbcomp + repo: upstream:xorg-app-xkbcomp + ref: 705b9bbb426410f9510601c7010da51184919b36 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xorg-app-xinit + repo: upstream:xorg-app-xinit + ref: 4e85bce64acef1fa0ddff04d59737444e942ff12 + unpetrify-ref: baserock/morph + build-system: autotools diff --git a/old/strata/x-generic/xserver.morph b/old/strata/x-generic/xserver.morph new file mode 100644 index 00000000..4e15605b --- /dev/null +++ b/old/strata/x-generic/xserver.morph @@ -0,0 +1,12 @@ +name: xserver +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" \ + --disable-xvfb \ + --disable-xnest \ + --disable-xquartz \ + --disable-xwin \ + --enable-glamor \ + --enable-xwayland diff --git a/old/strata/xorg-util-macros-common.morph b/old/strata/xorg-util-macros-common.morph new file mode 100644 index 00000000..7e252a90 --- /dev/null +++ b/old/strata/xorg-util-macros-common.morph @@ -0,0 +1,17 @@ +name: xorg-util-macros-common +kind: stratum +build-depends: +- morph: strata/core.morph +chunks: +- name: xorg-util-macros + repo: upstream:xorg-util-macros + ref: 9a54b858601bd305de2737b06e609084a2a114c2 + unpetrify-ref: util-macros-1.19.0 + build-system: autotools +- name: xcb-pthread-stubs + repo: upstream:xcb-pthread-stubs + ref: 431d2c0be218d878b9dd3862e4232243c599df4b + unpetrify-ref: baserock/morph + build-system: autotools + build-depends: + - xorg-util-macros diff --git a/old/systems/armv7lhf-cross-toolchain-system-x86_32.morph b/old/systems/armv7lhf-cross-toolchain-system-x86_32.morph new file mode 100644 index 00000000..b0ac9cfe --- /dev/null +++ b/old/systems/armv7lhf-cross-toolchain-system-x86_32.morph @@ -0,0 +1,19 @@ +name: armv7lhf-cross-toolchain-system-x86_32 +kind: system +description: A system that contains an ARM cross compiler, intended to be used as + a sysroot. +arch: x86_32 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: armv7lhf-cross-toolchain + morph: strata/armv7lhf-cross-toolchain.morph +- name: cross-tools + morph: strata/cross-tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/armv7lhf-cross-toolchain-system-x86_64.morph b/old/systems/armv7lhf-cross-toolchain-system-x86_64.morph new file mode 100644 index 00000000..1bd1adc1 --- /dev/null +++ b/old/systems/armv7lhf-cross-toolchain-system-x86_64.morph @@ -0,0 +1,19 @@ +name: armv7lhf-cross-toolchain-system-x86_64 +kind: system +description: A system that contains an ARM cross compiler, intended to be used as + a sysroot. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: armv7lhf-cross-toolchain + morph: strata/armv7lhf-cross-toolchain.morph +- name: cross-tools + morph: strata/cross-tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7-highbank.morph b/old/systems/base-system-armv7-highbank.morph new file mode 100644 index 00000000..32d773e8 --- /dev/null +++ b/old/systems/base-system-armv7-highbank.morph @@ -0,0 +1,20 @@ +name: base-system-armv7-highbank +kind: system +description: The set of strata required to have a minimal system for an ARM highbank + system. +arch: armv7l +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7-highbank + morph: strata/bsp-armv7-highbank.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7-versatile.morph b/old/systems/base-system-armv7-versatile.morph new file mode 100644 index 00000000..4f039c02 --- /dev/null +++ b/old/systems/base-system-armv7-versatile.morph @@ -0,0 +1,20 @@ +name: base-system-armv7-versatile +kind: system +description: The set of strata required to have a minimal system for an ARM versatile + system. +arch: armv7l +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7-versatile + morph: strata/bsp-armv7-versatile.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7b-highbank.morph b/old/systems/base-system-armv7b-highbank.morph new file mode 100644 index 00000000..969967b5 --- /dev/null +++ b/old/systems/base-system-armv7b-highbank.morph @@ -0,0 +1,20 @@ +name: base-system-armv7b-highbank +kind: system +description: The set of strata required to have a minimal system for an ARM highbank + system. +arch: armv7b +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7b-highbank + morph: strata/bsp-armv7b-highbank.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7b-vexpress-tc2.morph b/old/systems/base-system-armv7b-vexpress-tc2.morph new file mode 100644 index 00000000..cbfedd89 --- /dev/null +++ b/old/systems/base-system-armv7b-vexpress-tc2.morph @@ -0,0 +1,19 @@ +name: base-system-armv7b-vexpress-tc2 +kind: system +description: A small system for Versatile TC2 boards system. +arch: armv7b +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7b-vexpress-tc2 + morph: strata/bsp-armv7b-vexpress-tc2.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7l-altera-socfpga-devkit.morph b/old/systems/base-system-armv7l-altera-socfpga-devkit.morph new file mode 100644 index 00000000..b8fe4c28 --- /dev/null +++ b/old/systems/base-system-armv7l-altera-socfpga-devkit.morph @@ -0,0 +1,21 @@ +name: base-system-armv7l-altera-socfpga-devkit +kind: system +description: | + The set of strata required to have a minimal system for use on Altera SoCFPGA + development kit, using little-endian word order. +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-armv7l-altera-socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv7lhf-highbank.morph b/old/systems/base-system-armv7lhf-highbank.morph new file mode 100644 index 00000000..399931a5 --- /dev/null +++ b/old/systems/base-system-armv7lhf-highbank.morph @@ -0,0 +1,20 @@ +name: base-system-armv7lhf-highbank +kind: system +description: The set of strata required to have a minimal system for an ARM highbank + system. +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-armv7-highbank + morph: strata/bsp-armv7-highbank.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-armv8b64.morph b/old/systems/base-system-armv8b64.morph new file mode 100644 index 00000000..d23bde9b --- /dev/null +++ b/old/systems/base-system-armv8b64.morph @@ -0,0 +1,22 @@ +name: base-system-armv8b64 +kind: system +description: | + The set of strata required to have a minimal + system for big endian 64-bit ARMv8 computers. +arch: armv8b64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8b64-generic + morph: strata/bsp-armv8b64-generic.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/old/systems/base-system-armv8l64.morph b/old/systems/base-system-armv8l64.morph new file mode 100644 index 00000000..24104a8b --- /dev/null +++ b/old/systems/base-system-armv8l64.morph @@ -0,0 +1,22 @@ +name: base-system-armv8l64 +kind: system +description: | + The set of strata required to have a minimal + system for little endian 64-bit ARMv8 computers. +arch: armv8l64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8l64-generic + morph: strata/bsp-armv8l64-generic.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/old/systems/base-system-ppc64-generic.morph b/old/systems/base-system-ppc64-generic.morph new file mode 100644 index 00000000..6da852e3 --- /dev/null +++ b/old/systems/base-system-ppc64-generic.morph @@ -0,0 +1,20 @@ +name: base-system-ppc64-generic +kind: system +description: The set of strata required to have a minimal system for a 64-bit ppc64 + system. +arch: ppc64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-ppc64-generic + morph: strata/bsp-ppc64-generic.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-x86_32-generic.morph b/old/systems/base-system-x86_32-generic.morph new file mode 100644 index 00000000..d89fd913 --- /dev/null +++ b/old/systems/base-system-x86_32-generic.morph @@ -0,0 +1,19 @@ +name: base-system-x86_32-generic +kind: system +description: The set of strata required to have a basic system for a 32-bit x86 system. +arch: x86_32 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_32-generic + morph: strata/bsp-x86_32-generic.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/base-system-x86_64-generic.morph b/old/systems/base-system-x86_64-generic.morph new file mode 100644 index 00000000..aa1659b3 --- /dev/null +++ b/old/systems/base-system-x86_64-generic.morph @@ -0,0 +1,20 @@ +name: base-system-x86_64-generic +kind: system +description: The set of strata required to have a minimal 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: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/systems/build-system-armv5l-openbmc-aspeed.morph b/old/systems/build-system-armv5l-openbmc-aspeed.morph new file mode 100644 index 00000000..b8799bb0 --- /dev/null +++ b/old/systems/build-system-armv5l-openbmc-aspeed.morph @@ -0,0 +1,49 @@ +name: build-system-armv5l-openbmc-aspeed +kind: system +description: | + The system that should be used for building other Baserock systems + for little endian ARMv5 computers. +arch: armv5l +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-armv5l-openbmc-aspeed + morph: strata/bsp-armv5l-openbmc-aspeed.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: mtd-utilities + morph: strata/mtd-utilities.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv7l-altera-socfpga-devkit.morph b/old/systems/build-system-armv7l-altera-socfpga-devkit.morph new file mode 100644 index 00000000..5d83cb6a --- /dev/null +++ b/old/systems/build-system-armv7l-altera-socfpga-devkit.morph @@ -0,0 +1,51 @@ +name: build-system-armv7l-altera-socfpga-devkit +kind: system +description: | + The system that should be used for building other Baserock systems. For + use on Altera SoCFPGA development kit, using little-endian word order. +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-armv7l-altera-socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit.morph +- name: python2-core + morph: strata/python2-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv7lhf-highbank.morph b/old/systems/build-system-armv7lhf-highbank.morph new file mode 100644 index 00000000..06262deb --- /dev/null +++ b/old/systems/build-system-armv7lhf-highbank.morph @@ -0,0 +1,63 @@ +name: build-system-armv7lhf-highbank +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-armv7-highbank + morph: strata/bsp-armv7-highbank.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: unionfs-fuse-group + morph: strata/unionfs-fuse-group.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv7lhf-jetson.morph b/old/systems/build-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..aa0deac7 --- /dev/null +++ b/old/systems/build-system-armv7lhf-jetson.morph @@ -0,0 +1,61 @@ +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: python2-core + morph: strata/python2-core.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv7lhf-rootfs.morph b/old/systems/build-system-armv7lhf-rootfs.morph new file mode 100644 index 00000000..4c934cc9 --- /dev/null +++ b/old/systems/build-system-armv7lhf-rootfs.morph @@ -0,0 +1,59 @@ +name: build-system-armv7lhf-rootfs +kind: system +description: The system that should be used for building all other Baserock systems + for ARMv7 little-endian hard-float, rootfs variant. +arch: armv7lhf +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv8b64.morph b/old/systems/build-system-armv8b64.morph new file mode 100644 index 00000000..d544cebb --- /dev/null +++ b/old/systems/build-system-armv8b64.morph @@ -0,0 +1,63 @@ +name: build-system-armv8b64 +kind: system +description: | + The system that should be used for building all other Baserock systems + for 64-bit ARMv8 computers running in big-endian mode. +arch: armv8b64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8b64-generic + morph: strata/bsp-armv8b64-generic.morph +- name: python2-core + morph: strata/python2-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-armv8l64.morph b/old/systems/build-system-armv8l64.morph new file mode 100644 index 00000000..effd0d40 --- /dev/null +++ b/old/systems/build-system-armv8l64.morph @@ -0,0 +1,63 @@ +name: build-system-armv8l64 +kind: system +description: | + The system that should be used for building all other Baserock systems + for little endian 64-bit ARMv8 computers. +arch: armv8l64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-armv8l64-generic + morph: strata/bsp-armv8l64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-ppc64.morph b/old/systems/build-system-ppc64.morph new file mode 100644 index 00000000..2a5ca04f --- /dev/null +++ b/old/systems/build-system-ppc64.morph @@ -0,0 +1,61 @@ +name: build-system-ppc64 +kind: system +description: The system that should be used for building all other Baserock systems + for 64-bit POWER computers. +arch: ppc64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-ppc64-generic + morph: strata/bsp-ppc64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-x86_32-chroot.morph b/old/systems/build-system-x86_32-chroot.morph new file mode 100644 index 00000000..868c3213 --- /dev/null +++ b/old/systems/build-system-x86_32-chroot.morph @@ -0,0 +1,61 @@ +name: build-system-x86_32-chroot +kind: system +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 +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: bsp-x86_both-tools + morph: strata/bsp-x86_both-tools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-x86_32.morph b/old/systems/build-system-x86_32.morph new file mode 100644 index 00000000..104d9a75 --- /dev/null +++ b/old/systems/build-system-x86_32.morph @@ -0,0 +1,61 @@ +name: build-system-x86_32 +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-x86_32-generic + morph: strata/bsp-x86_32-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-x86_64-chroot.morph b/old/systems/build-system-x86_64-chroot.morph new file mode 100644 index 00000000..339ecfb7 --- /dev/null +++ b/old/systems/build-system-x86_64-chroot.morph @@ -0,0 +1,61 @@ +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: python2-core + morph: strata/python2-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: bsp-x86_both-tools + morph: strata/bsp-x86_both-tools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/build-system-x86_64.morph b/old/systems/build-system-x86_64.morph new file mode 100644 index 00000000..f006df9a --- /dev/null +++ b/old/systems/build-system-x86_64.morph @@ -0,0 +1,61 @@ +name: build-system-x86_64 +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: python2-core + morph: strata/python2-core.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: devtools + morph: strata/devtools.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files +- extensions/hosts diff --git a/old/systems/cross-bootstrap-system-armv5l-generic.morph b/old/systems/cross-bootstrap-system-armv5l-generic.morph new file mode 100644 index 00000000..ff151deb --- /dev/null +++ b/old/systems/cross-bootstrap-system-armv5l-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-armv5l-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: armv5l +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/cross-bootstrap-system-armv7lhf-generic.morph b/old/systems/cross-bootstrap-system-armv7lhf-generic.morph new file mode 100644 index 00000000..52ac2de9 --- /dev/null +++ b/old/systems/cross-bootstrap-system-armv7lhf-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-armv7lhf-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: armv7lhf +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/cross-bootstrap-system-armv8b64-generic.morph b/old/systems/cross-bootstrap-system-armv8b64-generic.morph new file mode 100644 index 00000000..a3c3bc21 --- /dev/null +++ b/old/systems/cross-bootstrap-system-armv8b64-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-armv8b64-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: armv8b64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/cross-bootstrap-system-armv8l64-generic.morph b/old/systems/cross-bootstrap-system-armv8l64-generic.morph new file mode 100644 index 00000000..0ea68f8a --- /dev/null +++ b/old/systems/cross-bootstrap-system-armv8l64-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-armv8l64-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: armv8l64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/cross-bootstrap-system-ppc64-generic.morph b/old/systems/cross-bootstrap-system-ppc64-generic.morph new file mode 100644 index 00000000..17e40242 --- /dev/null +++ b/old/systems/cross-bootstrap-system-ppc64-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-ppc64-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: ppc64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/cross-bootstrap-system-x86_64-generic.morph b/old/systems/cross-bootstrap-system-x86_64-generic.morph new file mode 100644 index 00000000..8c597841 --- /dev/null +++ b/old/systems/cross-bootstrap-system-x86_64-generic.morph @@ -0,0 +1,25 @@ +name: cross-bootstrap-system-x86_64-generic +kind: system +description: A system that produces the minimum needed to build a devel system +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: cross-bootstrap + morph: strata/cross-bootstrap.morph diff --git a/old/systems/devel-system-armv7-chroot.morph b/old/systems/devel-system-armv7-chroot.morph new file mode 100644 index 00000000..78b9fd42 --- /dev/null +++ b/old/systems/devel-system-armv7-chroot.morph @@ -0,0 +1,72 @@ +name: devel-system-armv7-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7-highbank.morph b/old/systems/devel-system-armv7-highbank.morph new file mode 100644 index 00000000..02f8069e --- /dev/null +++ b/old/systems/devel-system-armv7-highbank.morph @@ -0,0 +1,75 @@ +name: devel-system-armv7-highbank +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7-highbank + morph: strata/bsp-armv7-highbank.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: unionfs-fuse-group + morph: strata/unionfs-fuse-group.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7-versatile.morph b/old/systems/devel-system-armv7-versatile.morph new file mode 100644 index 00000000..f4f37b43 --- /dev/null +++ b/old/systems/devel-system-armv7-versatile.morph @@ -0,0 +1,73 @@ +name: devel-system-armv7-versatile +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7-versatile + morph: strata/bsp-armv7-versatile.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7-wandboard.morph b/old/systems/devel-system-armv7-wandboard.morph new file mode 100644 index 00000000..5707e4a6 --- /dev/null +++ b/old/systems/devel-system-armv7-wandboard.morph @@ -0,0 +1,73 @@ +name: devel-system-armv7-wandboard +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-wandboard + morph: strata/bsp-wandboard.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7b-chroot.morph b/old/systems/devel-system-armv7b-chroot.morph new file mode 100644 index 00000000..18ca827b --- /dev/null +++ b/old/systems/devel-system-armv7b-chroot.morph @@ -0,0 +1,64 @@ +name: devel-system-armv7b-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7b-highbank.morph b/old/systems/devel-system-armv7b-highbank.morph new file mode 100644 index 00000000..04847e9d --- /dev/null +++ b/old/systems/devel-system-armv7b-highbank.morph @@ -0,0 +1,71 @@ +name: devel-system-armv7b-highbank +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7b-highbank + morph: strata/bsp-armv7b-highbank.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: unionfs-fuse-group + morph: strata/unionfs-fuse-group.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7l-altera-socfpga-devkit.morph b/old/systems/devel-system-armv7l-altera-socfpga-devkit.morph new file mode 100644 index 00000000..f4e74723 --- /dev/null +++ b/old/systems/devel-system-armv7l-altera-socfpga-devkit.morph @@ -0,0 +1,66 @@ +name: devel-system-armv7l-altera-socfpga-devkit +kind: system +description: | + A system with useful tools for doing Baserock development. + + For use on Altera SoCFPGA development kit, using little-endian word + order. +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-armv7l-altera-socfpga-devkit + morph: strata/bsp-armv7l-altera-socfpga-devkit.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7lhf-chroot.morph b/old/systems/devel-system-armv7lhf-chroot.morph new file mode 100644 index 00000000..9bcb1f50 --- /dev/null +++ b/old/systems/devel-system-armv7lhf-chroot.morph @@ -0,0 +1,72 @@ +name: devel-system-armv7lhf-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7lhf-highbank.morph b/old/systems/devel-system-armv7lhf-highbank.morph new file mode 100644 index 00000000..6921c8ad --- /dev/null +++ b/old/systems/devel-system-armv7lhf-highbank.morph @@ -0,0 +1,78 @@ +name: devel-system-armv7lhf-highbank +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv7-highbank + morph: strata/bsp-armv7-highbank.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: unionfs-fuse-group + morph: strata/unionfs-fuse-group.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7lhf-jetson.morph b/old/systems/devel-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..ce3dee27 --- /dev/null +++ b/old/systems/devel-system-armv7lhf-jetson.morph @@ -0,0 +1,76 @@ +name: devel-system-armv7lhf-jetson +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv7lhf-wandboard.morph b/old/systems/devel-system-armv7lhf-wandboard.morph new file mode 100644 index 00000000..2d83c2fa --- /dev/null +++ b/old/systems/devel-system-armv7lhf-wandboard.morph @@ -0,0 +1,76 @@ +name: devel-system-armv7lhf-wandboard +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-wandboard + morph: strata/bsp-wandboard.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv8b64.morph b/old/systems/devel-system-armv8b64.morph new file mode 100644 index 00000000..5c5460cd --- /dev/null +++ b/old/systems/devel-system-armv8b64.morph @@ -0,0 +1,77 @@ +name: devel-system-armv8b64 +kind: system +description: | + A system with useful tools for doing Baserock development. + + For use on 64-bit ARMv8 computers using big-endian word. +arch: armv8b64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8b64-generic + morph: strata/bsp-armv8b64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/old/systems/devel-system-armv8l64.morph b/old/systems/devel-system-armv8l64.morph new file mode 100644 index 00000000..606ae102 --- /dev/null +++ b/old/systems/devel-system-armv8l64.morph @@ -0,0 +1,78 @@ +name: devel-system-armv8l64 +kind: system +description: | + A system with useful tools for doing Baserock development. + + For use on 64-bit ARMv8 computers using little-endian word. +arch: armv8l64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8l64-generic + morph: strata/bsp-armv8l64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: cloudinit-support + morph: strata/cloudinit-support.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-ppc64-chroot.morph b/old/systems/devel-system-ppc64-chroot.morph new file mode 100644 index 00000000..34ed6834 --- /dev/null +++ b/old/systems/devel-system-ppc64-chroot.morph @@ -0,0 +1,70 @@ +name: devel-system-ppc64-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-ppc64-generic.morph b/old/systems/devel-system-ppc64-generic.morph new file mode 100644 index 00000000..6b542186 --- /dev/null +++ b/old/systems/devel-system-ppc64-generic.morph @@ -0,0 +1,73 @@ +name: devel-system-ppc64-generic +kind: system +description: | + A system with useful tools for doing Baserock development. + + For use on 64-bit POWER computers. +arch: ppc64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-ppc64-generic + morph: strata/bsp-ppc64-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-x86_32-chroot.morph b/old/systems/devel-system-x86_32-chroot.morph new file mode 100644 index 00000000..6b4be0ea --- /dev/null +++ b/old/systems/devel-system-x86_32-chroot.morph @@ -0,0 +1,72 @@ +name: devel-system-x86_32-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-x86_32-generic.morph b/old/systems/devel-system-x86_32-generic.morph new file mode 100644 index 00000000..d17abc07 --- /dev/null +++ b/old/systems/devel-system-x86_32-generic.morph @@ -0,0 +1,78 @@ +name: devel-system-x86_32-generic +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_32-generic + morph: strata/bsp-x86_32-generic.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-x86_64-chroot.morph b/old/systems/devel-system-x86_64-chroot.morph new file mode 100644 index 00000000..be5ab108 --- /dev/null +++ b/old/systems/devel-system-x86_64-chroot.morph @@ -0,0 +1,74 @@ +name: devel-system-x86_64-chroot +kind: system +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 + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: foundation + morph: strata/foundation.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-x86_64-generic.morph b/old/systems/devel-system-x86_64-generic.morph new file mode 100644 index 00000000..3691b14a --- /dev/null +++ b/old/systems/devel-system-x86_64-generic.morph @@ -0,0 +1,83 @@ +name: devel-system-x86_64-generic +kind: system +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 + 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: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: erlang + morph: strata/erlang.morph +- name: elixir + morph: strata/elixir.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/devel-system-x86_64-vagrant.morph b/old/systems/devel-system-x86_64-vagrant.morph new file mode 100644 index 00000000..76d882e2 --- /dev/null +++ b/old/systems/devel-system-x86_64-vagrant.morph @@ -0,0 +1,76 @@ +name: devel-system-x86_64-vagrant +kind: system +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 + 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: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: perl-common + morph: strata/perl-common.morph +- name: CPAN-Mini-Inject + morph: strata/CPAN-Mini-Inject.morph +- name: sandboxing + morph: strata/sandboxing.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/vagrant +- extensions/fstab +- extensions/install-essential-files diff --git a/old/systems/initramfs-x86_32.morph b/old/systems/initramfs-x86_32.morph new file mode 100644 index 00000000..df817c13 --- /dev/null +++ b/old/systems/initramfs-x86_32.morph @@ -0,0 +1,11 @@ +name: initramfs-x86_32 +kind: system +description: Initramfs for x86_32 +arch: x86_32 +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: initramfs-utils + morph: strata/initramfs-utils.morph diff --git a/old/systems/initramfs-x86_64.morph b/old/systems/initramfs-x86_64.morph new file mode 100644 index 00000000..4bb0020d --- /dev/null +++ b/old/systems/initramfs-x86_64.morph @@ -0,0 +1,11 @@ +name: initramfs-x86_64 +kind: system +description: Initramfs for x86_64 +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: initramfs-utils + morph: strata/initramfs-utils.morph diff --git a/old/systems/installer-system-armv8b64.morph b/old/systems/installer-system-armv8b64.morph new file mode 100644 index 00000000..ded674c5 --- /dev/null +++ b/old/systems/installer-system-armv8b64.morph @@ -0,0 +1,41 @@ +name: installer-system-armv8b64 +kind: system +description: The system that should be used as an Installer to install other Baserock + systems. +arch: armv8b64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python2-core + morph: strata/python2-core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-armv8b64-generic + morph: strata/bsp-armv8b64-generic.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: installer-utils + morph: strata/installer-utils.morph +configuration-extensions: +- extensions/set-hostname +- extensions/install-files +- extensions/fstab +- extensions/installer +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/old/systems/installer-system-x86_64.morph b/old/systems/installer-system-x86_64.morph new file mode 100644 index 00000000..5623f82d --- /dev/null +++ b/old/systems/installer-system-x86_64.morph @@ -0,0 +1,40 @@ +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: python2-core + morph: strata/python2-core.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: installer-utils + morph: strata/installer-utils.morph +configuration-extensions: +- extensions/set-hostname +- extensions/install-files +- extensions/fstab +- extensions/installer +- extensions/install-essential-files diff --git a/old/systems/minimal-system-armv5l-openbmc-aspeed.morph b/old/systems/minimal-system-armv5l-openbmc-aspeed.morph new file mode 100644 index 00000000..602e05c7 --- /dev/null +++ b/old/systems/minimal-system-armv5l-openbmc-aspeed.morph @@ -0,0 +1,20 @@ +name: minimal-system-armv5l-openbmc-aspeed +kind: system +description: The set of strata required to have a minimal system for armv5l +arch: armv5l +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: bsp-armv5l-openbmc-aspeed + morph: strata/bsp-armv5l-openbmc-aspeed.morph + artifacts: + - bsp-armv5l-openbmc-aspeed-runtime +configuration-extensions: +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/old/systems/minimal-system-x86_32-generic.morph b/old/systems/minimal-system-x86_32-generic.morph new file mode 100644 index 00000000..2e9f79c5 --- /dev/null +++ b/old/systems/minimal-system-x86_32-generic.morph @@ -0,0 +1,21 @@ +name: minimal-system-x86_32-generic +kind: system +description: The set of strata required to have a minimal system for a 32-bit x86 + system. +arch: x86_32 +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: bsp-x86_32-generic + morph: strata/bsp-x86_32-generic.morph + artifacts: + - bsp-x86_32-generic-runtime +configuration-extensions: +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/old/systems/minimal-system-x86_64-chroot.morph b/old/systems/minimal-system-x86_64-chroot.morph new file mode 100644 index 00000000..d8635a64 --- /dev/null +++ b/old/systems/minimal-system-x86_64-chroot.morph @@ -0,0 +1,12 @@ +name: minimal-system-x86_64-chroot +kind: system +description: A minimal chroot system +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +configuration-extensions: +- extensions/set-hostname +- extensions/busybox-init diff --git a/old/systems/minimal-system-x86_64-generic.morph b/old/systems/minimal-system-x86_64-generic.morph new file mode 100644 index 00000000..afd9460c --- /dev/null +++ b/old/systems/minimal-system-x86_64-generic.morph @@ -0,0 +1,21 @@ +name: minimal-system-x86_64-generic +kind: system +description: The set of strata required to have a minimal system for a 64-bit x86 + system. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph + artifacts: + - bsp-x86_64-generic-runtime +configuration-extensions: +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/old/trove/clusters/mason-openstack.morph b/old/trove/clusters/mason-openstack.morph new file mode 100644 index 00000000..6a854bd5 --- /dev/null +++ b/old/trove/clusters/mason-openstack.morph @@ -0,0 +1,39 @@ +name: mason-openstack +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: 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: extensions/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: true + KERNEL_ARGS: console=ttyS0 console=tty0 + TEST_INFRASTRUCTURE_TYPE: openstack diff --git a/old/trove/clusters/mason.morph b/old/trove/clusters/mason.morph new file mode 100644 index 00000000..f69a9e11 --- /dev/null +++ b/old/trove/clusters/mason.morph @@ -0,0 +1,56 @@ +name: example-mason-cluster +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. + + It is suggested that you use mason/mason-generator.sh to adapt this + template to suit your needs. It also handles the generation of + keys to let the systems communicate. +systems: +- morph: trove/systems/trove-system-x86_64.morph + deploy: + red-box-v1-trove: + type: extensions/kvm + location: kvm+ssh://vm-user@vm-host/red-box-v1-trove/vm-path/red-box-v1-trove.img + AUTOSTART: true + DISK_SIZE: 20G + HOSTNAME: red-box-v1-trove + LORRY_SSH_KEY: ssh_keys/lorry.key + MASON_SSH_PUBKEY: ssh_keys/mason.key.pub + RAM_SIZE: 8G + TROVE_ADMIN_EMAIL: adminuser@example.com + TROVE_ADMIN_NAME: Nobody + TROVE_ADMIN_SSH_PUBKEY: ssh_keys/id_rsa.pub + TROVE_ADMIN_USER: adminuser + TROVE_COMPANY: Company name goes here + TROVE_HOST: red-box-v1 + TROVE_ID: red-box-v1-trove + UPSTREAM_TROVE: upstream-trove + VCPUS: 2 + VERSION_LABEL: 45 + WORKER_SSH_PUBKEY: ssh_keys/worker.key.pub +- 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 + DISTBUILD_CONTROLLER: false + DISTBUILD_WORKER: true + INSTALL_FILES: install-files/distbuild/manifest + RAM_SIZE: 8G + TROVE_HOST: upstream-trove + TROVE_ID: upstream-trove + VCPUS: 2 + WORKER_SSH_KEY: ssh_keys/worker.key + deploy: + red-box-v1-controller: + type: extensions/kvm + location: kvm+ssh://vm-user@vm-host/red-box-v1-controller/vm-path/red-box-v1-controller.img + DISK_SIZE: 60G + DISTBUILD_CONTROLLER: true + HOSTNAME: red-box-v1-controller + MASON_CLUSTER_MORPHOLOGY: clusters/ci.morph + MASON_DEFINITIONS_REF: master + MASON_DISTBUILD_ARCH: x86_64 + MASON_TEST_HOST: vm-user@vm-host:/vm-path/ + WORKERS: red-box-v1-controller diff --git a/old/trove/clusters/trove-example.morph b/old/trove/clusters/trove-example.morph new file mode 100644 index 00000000..13171846 --- /dev/null +++ b/old/trove/clusters/trove-example.morph @@ -0,0 +1,58 @@ +name: trove-example +kind: cluster +description: | + This is an example cluster morphology for deploying a Trove, + both the initial deployment and an upgrade. + + You need some ssh keys, which you can create like this: + + mkdir ssh_keys + ssh-keygen -N '' -f ssh_keys/lorry.key + ssh-keygen -N '' -f ssh_keys/worker.key + ssh-keygen -N '' -f ssh_keys/trove-admin.key + + You may also put in your own keys instead of creating new ones. + + To do the initial deployment: + + morph deploy clusters/trove-example.morph \ + initial \ + initial.location=kvm+ssh://liw@192.168.122.1/test-trove/tmp/test-trove.img + + To do an upgrade: + + morph deploy clusters/trove-example.morph \ + upgrade upgrade.VERSION_LABEL=123 + + where `VERSION_LABEL` gets a new unique value each time. + + Remember to always specify either initial or upgrade as the + deployment name to use, otherwise morph will attempt to deploy both. + + You can find documentation for Trove at the following web address: + http://wiki.baserock.org/Trove/ +systems: +- morph: trove/systems/trove-system-x86_64.morph + deploy-defaults: + HOSTNAME: test-trove + VCPUS: 2 + RAM_SIZE: 2G + DISK_SIZE: 8G + LORRY_SSH_KEY: ssh_keys/lorry.key + WORKER_SSH_PUBKEY: ssh_keys/worker.key.pub + TROVE_ADMIN_EMAIL: adminuser@example.com + TROVE_ADMIN_NAME: Nobody + TROVE_ADMIN_SSH_PUBKEY: ssh_keys/trove-admin.key.pub + TROVE_ADMIN_USER: adminuser + TROVE_COMPANY: Company name goes here + TROVE_HOST: test-trove + TROVE_ID: test-trove + UPSTREAM_TROVE: '' + deploy: + initial: + type: extensions/kvm + location: kvm+ssh://vm-user@vm-host/test-trove/vm-path/test-trove.img + VERSION_LABEL: 1 + upgrade: + type: extensions/ssh-rsync + location: test-trove diff --git a/old/trove/clusters/trove.baserock.org-upgrade.morph b/old/trove/clusters/trove.baserock.org-upgrade.morph new file mode 100644 index 00000000..cfd5d1cb --- /dev/null +++ b/old/trove/clusters/trove.baserock.org-upgrade.morph @@ -0,0 +1,19 @@ +name: trove.baserock.org-upgrade +kind: cluster +description: | + This is a cluster morphology for deploying an UPGRADE to + git.baserock.org. It doesn't work for the initial deployment. The + deployer MUST have ssh access to root@git.baserock.org. To use: + + morph upgrade clusters/trove.baserock.org-upgrade.morph gbo.VERSION_LABEL=2014-05-29 + + Replace the value of gbo.VERSION_LABEL above with the current date. + You can add letters if you need to upgrade multiple times in a day. +systems: +- morph: trove/systems/trove-system-x86_64.morph + deploy: + gbo: + upgrade-type: extensions/ssh-rsync + upgrade-location: root@git.baserock.org + HOSTNAME: baserock + TROVE_GENERIC: True diff --git a/old/trove/strata/fail2ban-common.morph b/old/trove/strata/fail2ban-common.morph new file mode 100644 index 00000000..23918a66 --- /dev/null +++ b/old/trove/strata/fail2ban-common.morph @@ -0,0 +1,14 @@ +name: fail2ban-common +kind: stratum +description: | + This stratum only installs fail2ban. You will need to + configure it afterwards. It's recommended to include + iptables in the system too. +build-depends: +- morph: strata/core.morph +chunks: +- name: fail2ban + morph: trove/strata/fail2ban-common/fail2ban.morph + repo: upstream:fail2ban + ref: 70ba5cb0054f0869930b8cd2dc1bb836653dd289 + unpetrify-ref: "0.9.3" diff --git a/old/trove/strata/fail2ban-common/fail2ban.morph b/old/trove/strata/fail2ban-common/fail2ban.morph new file mode 100644 index 00000000..2f267a5a --- /dev/null +++ b/old/trove/strata/fail2ban-common/fail2ban.morph @@ -0,0 +1,6 @@ +name: fail2ban +kind: chunk +build-system: python3-distutils +post-install-commands: +- install -D -m 640 files/fail2ban.service "$DESTDIR"/"$PREFIX"/lib/systemd/system/fail2ban.service +- install -D -m 640 files/fail2ban-tmpfiles.conf "$DESTDIR"/"$PREFIX"/lib/tmpfiles.d/fail2ban.conf diff --git a/old/trove/strata/lorry-controller.morph b/old/trove/strata/lorry-controller.morph new file mode 100644 index 00000000..87d3ed00 --- /dev/null +++ b/old/trove/strata/lorry-controller.morph @@ -0,0 +1,16 @@ +name: lorry-controller +kind: stratum +description: | + Lorry Controller mirroring service. + + This is a component of Trove, but can + also be used with other Git servers. +build-depends: +- morph: strata/python-cliapp.morph +- morph: strata/python-wsgi.morph +chunks: +- name: lorry-controller + morph: trove/strata/lorry-controller/lorry-controller.morph + repo: baserock:baserock/lorry-controller + ref: dddd2e37953d795e4004b1d2722c25ec652135ad + unpetrify-ref: master diff --git a/old/trove/strata/lorry-controller/lorry-controller.morph b/old/trove/strata/lorry-controller/lorry-controller.morph new file mode 100644 index 00000000..2f90a9a1 --- /dev/null +++ b/old/trove/strata/lorry-controller/lorry-controller.morph @@ -0,0 +1,10 @@ +name: lorry-controller +kind: chunk +build-system: python-distutils +post-install-commands: +- install -d 0755 "$DESTDIR/etc/lighttpd" +- install -m 0644 -D etc/lighttpd/*.conf "$DESTDIR/etc/lighttpd/." +- | + TGT="$DESTDIR/usr/lib/systemd/system" + install -d "$TGT/multi-user.target.wants" + install -m 0644 units/*.service units/*.timer "$TGT/." diff --git a/old/trove/strata/python3-core.morph b/old/trove/strata/python3-core.morph new file mode 100644 index 00000000..afacc3da --- /dev/null +++ b/old/trove/strata/python3-core.morph @@ -0,0 +1,58 @@ +name: python3-core +kind: stratum +description: | + Some "core" Python packages, for Python 3. + + The CPython interpreter for Python 3 is in core.morph. + +build-depends: +- morph: strata/core.morph + +chunks: +- name: mako + repo: upstream:python-packages/mako.git + ref: 285bc818a50ccc0f9549630f7c4f4c250585c3e7 + unpetrify-ref: rel_1_0_0 + build-system: python3-distutils + +- name: pbr + repo: upstream:pbr + ref: 6e472b4905411a39e993c81c382a27ca9c771ef5 + unpetrify-ref: 0.11.1 + build-system: python3-distutils + +- name: python-requests + repo: upstream:python-requests + ref: b83131779c701720a9ae9efae78996277d416269 + unpetrify-ref: v2.5.1 + build-system: python3-distutils + +- name: six + repo: upstream:six + ref: 8cfbff6b764af86d825086fa1637aa009e90d75a + unpetrify-ref: 1.9.0 + build-system: python3-distutils + +- name: pyyaml + morph: trove/strata/python3-core/pyyaml.morph + repo: upstream:pyyaml + ref: d9fbcceaed39d955f6871b07c61dc42f824285c1 + unpetrify-ref: baserock/morph + +- name: python-lxml + repo: upstream:python-lxml + ref: 14505bc62f5f1fc9fb0ff007955f3e67ab4562bb + unpetrify-ref: lxml-3.4.0 + build-system: python3-distutils + +- name: python-markdown + repo: upstream:python-markdown + ref: f0c5b71acbc02af60a33d67c59558bb513b25e74 + unpetrify-ref: 2.5.1-final + build-system: python3-distutils + +- name: jsonschema + repo: upstream:jsonschema + ref: 35b60f390098d3306c03eee27ceec8cf8a493579 + unpetrify-ref: v2.3.0 + build-system: python3-distutils diff --git a/old/trove/strata/python3-core/pyyaml.morph b/old/trove/strata/python3-core/pyyaml.morph new file mode 100644 index 00000000..001f392c --- /dev/null +++ b/old/trove/strata/python3-core/pyyaml.morph @@ -0,0 +1,6 @@ +name: pyyaml +kind: chunk +build-commands: +- python3 setup.py --without-libyaml build +install-commands: +- python3 setup.py --without-libyaml install --prefix="$PREFIX" --root "$DESTDIR" diff --git a/old/trove/strata/trove.morph b/old/trove/strata/trove.morph new file mode 100644 index 00000000..8306c630 --- /dev/null +++ b/old/trove/strata/trove.morph @@ -0,0 +1,101 @@ +name: trove +kind: stratum +description: Trove software +build-depends: +- morph: strata/python2-core.morph +- morph: strata/tools.morph +- morph: strata/morph-utils.morph +- morph: strata/pcre-utils.morph +chunks: +- name: lua + morph: trove/strata/trove/lua.morph + repo: upstream:lua + ref: 948063437e0350d9ef1649ec3a76d0c24a5c8642 + unpetrify-ref: baserock/5.1-morph +- name: lace + morph: trove/strata/trove/lace.morph + repo: upstream:gitano/lace + ref: d1b540b6d361d6a1f51e53cdaab69f053340efbb + unpetrify-ref: baserock/morph + build-depends: + - lua + submodules: + extras/luacov: + url: upstream:gitano/luacov +- name: luxio + morph: trove/strata/trove/luxio.morph + repo: upstream:luxio + ref: be9d125080b9ff2376273e21b75669b65dc88d46 + unpetrify-ref: baserock/morph + build-depends: + - lua +- name: supple + morph: trove/strata/trove/supple.morph + repo: upstream:gitano/supple + ref: 0963e5706d78d0ae7446ea91af986de1e196eb39 + unpetrify-ref: baserock/morph + build-depends: + - lua + - luxio + submodules: + extras/luacov: + url: upstream:gitano/luacov +- name: clod + morph: trove/strata/trove/clod.morph + repo: upstream:gitano/clod + ref: da15894f42f48d15db997c4355d6b672371a4163 + unpetrify-ref: baserock/morph + build-depends: + - lua + submodules: + extras/luacov: + url: upstream:gitano/luacov +- name: gall + morph: trove/strata/trove/gall.morph + repo: upstream:gitano/gall + ref: 11de77bd79c08a152932a3435d1921abc1020252 + unpetrify-ref: baserock/morph + build-depends: + - lua + - luxio + submodules: + libgit2: + url: upstream:gitano/libgit2 + luagit2: + url: upstream:gitano/luagit2 + extras/luacov: + url: upstream:gitano/luacov +- name: lrexlib-pcre + morph: trove/strata/trove/lrexlib-pcre.morph + repo: upstream:lrexlib + ref: 0524a6e3ab6d50cba63c8642a875e246de53d651 + unpetrify-ref: baserock/morph + build-depends: + - lua +- name: gitano + morph: trove/strata/trove/gitano.morph + repo: upstream:gitano/gitano + ref: 4b8ce6875266fdd6609a217dcf2924d7d4815cc2 + unpetrify-ref: baserock/morph + build-depends: + - lua +- name: cgit + morph: trove/strata/trove/cgit.morph + repo: upstream:cgit + ref: dc881acb0c857c783b611c03294d79a7553a4ec7 + unpetrify-ref: baserock/v0.12 + submodules: + git: + url: upstream:git +- name: trove-setup + morph: trove/strata/trove/trove-setup.morph + repo: baserock:baserock/trove-setup + ref: 1f2edd45b03a3e9d86d7c77847612c969b60b86f + unpetrify-ref: master +- name: lua-scrypt + morph: trove/strata/trove/lua-scrypt.morph + repo: upstream:lua-scrypt + ref: 0d7f74cd3eab7d54fbb13294194de7ea70ac34a5 + unpetrify-ref: baserock/morph + build-depends: + - lua diff --git a/old/trove/strata/trove/cgit.morph b/old/trove/strata/trove/cgit.morph new file mode 100644 index 00000000..bd373a51 --- /dev/null +++ b/old/trove/strata/trove/cgit.morph @@ -0,0 +1,6 @@ +name: cgit +kind: chunk +build-commands: +- make prefix="$PREFIX" +install-commands: +- make prefix="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/trove/strata/trove/clod.morph b/old/trove/strata/trove/clod.morph new file mode 100644 index 00000000..e31ca4fb --- /dev/null +++ b/old/trove/strata/trove/clod.morph @@ -0,0 +1,7 @@ +name: clod +kind: chunk +description: Configuration Language Organised (by) Dots. +build-commands: +- make +install-commands: +- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/trove/strata/trove/gall.morph b/old/trove/strata/trove/gall.morph new file mode 100644 index 00000000..c1f2fd47 --- /dev/null +++ b/old/trove/strata/trove/gall.morph @@ -0,0 +1,7 @@ +name: gall +kind: chunk +description: Git Abstraction Layer for Lua +build-commands: +- make +install-commands: +- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/trove/strata/trove/gitano.morph b/old/trove/strata/trove/gitano.morph new file mode 100644 index 00000000..962224d5 --- /dev/null +++ b/old/trove/strata/trove/gitano.morph @@ -0,0 +1,5 @@ +name: gitano +kind: chunk +install-commands: +- make install INST_ROOT="$PREFIX" DESTDIR="$DESTDIR" +- cp scripts/htpasswd "$DESTDIR/$PREFIX/bin" diff --git a/old/trove/strata/trove/lace.morph b/old/trove/strata/trove/lace.morph new file mode 100644 index 00000000..70752397 --- /dev/null +++ b/old/trove/strata/trove/lace.morph @@ -0,0 +1,7 @@ +name: lace +kind: chunk +description: Lua Access Control Engine. +build-commands: +- make +install-commands: +- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/trove/strata/trove/lrexlib-pcre.morph b/old/trove/strata/trove/lrexlib-pcre.morph new file mode 100644 index 00000000..63f3b034 --- /dev/null +++ b/old/trove/strata/trove/lrexlib-pcre.morph @@ -0,0 +1,9 @@ +name: lrexlib-pcre +kind: chunk +description: Lua regular expression library - PCRE build only +build-commands: +- gcc -fPIC -DPIC -DVERSION=\"2.7.2\" -o rex_pcre.so -shared src/common.c src/pcre/lpcre.c + src/pcre/lpcre_f.c -lpcre +install-commands: +- mkdir -p $DESTDIR/usr/lib/lua/5.1/ +- cp rex_pcre.so $DESTDIR/usr/lib/lua/5.1/ diff --git a/old/trove/strata/trove/lua-scrypt.morph b/old/trove/strata/trove/lua-scrypt.morph new file mode 100644 index 00000000..141b8ec3 --- /dev/null +++ b/old/trove/strata/trove/lua-scrypt.morph @@ -0,0 +1,4 @@ +name: lua-scrypt +kind: chunk +install-commands: +- make lua-5.1-install DESTDIR="$DESTDIR" diff --git a/old/trove/strata/trove/lua.morph b/old/trove/strata/trove/lua.morph new file mode 100644 index 00000000..32aeb5c1 --- /dev/null +++ b/old/trove/strata/trove/lua.morph @@ -0,0 +1,11 @@ +name: lua +kind: chunk +configure-commands: +- sed -e 's/defined(LUA_USE_READLINE)/0/g' src/luaconf.h.orig >src/luaconf.h +- sed -i -e '/^linux:/{n;s/-lreadline//g;s/-lhistory//g;s/-lncurses//g}' src/Makefile +build-commands: +- make debian_linux INSTALL_TOP="$PREFIX" RPATH="$PREFIX/lib" +install-commands: +- make INSTALL_TOP="$DESTDIR/$PREFIX" debian_install +- mkdir -p "$DESTDIR/$PREFIX/lib/pkgconfig" +- cp lua5.1.pc "$DESTDIR/$PREFIX/lib/pkgconfig/" diff --git a/old/trove/strata/trove/luxio.morph b/old/trove/strata/trove/luxio.morph new file mode 100644 index 00000000..29aabfaf --- /dev/null +++ b/old/trove/strata/trove/luxio.morph @@ -0,0 +1,7 @@ +name: luxio +kind: chunk +description: Lua Unix IO (and related stuff). +build-commands: +- make lua-5.1 +install-commands: +- make DESTDIR="$DESTDIR" lua-5.1-install diff --git a/old/trove/strata/trove/supple.morph b/old/trove/strata/trove/supple.morph new file mode 100644 index 00000000..6470ba28 --- /dev/null +++ b/old/trove/strata/trove/supple.morph @@ -0,0 +1,7 @@ +name: supple +kind: chunk +description: Sandbox (for) Untrusted Procedure Partitioning (in) Lua Engine. +build-commands: +- make +install-commands: +- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install diff --git a/old/trove/strata/trove/trove-setup.morph b/old/trove/strata/trove/trove-setup.morph new file mode 100644 index 00000000..1f49760f --- /dev/null +++ b/old/trove/strata/trove/trove-setup.morph @@ -0,0 +1,4 @@ +name: trove-setup +kind: chunk +install-commands: +- make install DESTDIR="$DESTDIR" diff --git a/old/trove/systems/trove-system-x86_64.morph b/old/trove/systems/trove-system-x86_64.morph new file mode 100644 index 00000000..fa691d62 --- /dev/null +++ b/old/trove/systems/trove-system-x86_64.morph @@ -0,0 +1,65 @@ +name: trove-system-x86_64 +kind: system +description: Trove server +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: foundation + morph: strata/foundation.morph +- name: core + morph: strata/core.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python3-core + morph: trove/strata/python3-core.morph +- name: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: lorry + morph: strata/lorry.morph +- name: lorry-controller + morph: trove/strata/lorry-controller.morph +- name: trove + morph: trove/strata/trove.morph +- name: lighttpd-server + morph: strata/lighttpd-server.morph +- name: nfs + morph: strata/nfs.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: devtools + morph: strata/devtools.morph +- name: fail2ban-common + morph: trove/strata/fail2ban-common.morph +- name: connectivity + morph: strata/connectivity.morph +configuration-extensions: +- extensions/set-hostname +- extensions/trove +- extensions/nfsboot-server +- extensions/fstab +- extensions/install-files +- extensions/cloud-init +- extensions/install-essential-files diff --git a/old/unmaintained/clusters/cephclient.morph b/old/unmaintained/clusters/cephclient.morph new file mode 100644 index 00000000..ad680a76 --- /dev/null +++ b/old/unmaintained/clusters/cephclient.morph @@ -0,0 +1,20 @@ +name: cephclient +kind: cluster +systems: +- morph: unmaintained/systems/ceph-service-x86_64-generic.morph + deploy: + ceph-node-virtualbox-image: + type: extensions/virtualbox-ssh + SYSTEM: systems/ceph-service-x86_64-generic.morph + location: vbox+ssh://user@machine/ChefNode4/home/user/chefnode4.vdi + # HOST_IPADDR and NETMASK should be set to the IP address and netmask of the virtualbox host on the host-only interface. + #HOST_IPADDR: 10.0.100.100 + #NETMASK: 255.255.255.0 + + # This is an example of how to configure the three interfaces necessary to support ceph in the BCPC configuration. + #NETWORK_CONFIG: lo:loopback;enp0s3:static,address=10.0.100.14,netmask=255.255.255.0;enp0s8:static,address=172.16.100.14,netmask=255.255.255.0;enp0s9:static,address=192.168.100.14,netmask=255.255.255.0 + DISK_SIZE: 8G + HOSTNAME: CephNode4 + + # You must install authorized_keys in chef/root/.ssh/ before this will work. + INSTALL_FILES: install-files/chef/manifest diff --git a/old/unmaintained/clusters/example-ceph-cluster-on-openstack.morph b/old/unmaintained/clusters/example-ceph-cluster-on-openstack.morph new file mode 100644 index 00000000..73f6729c --- /dev/null +++ b/old/unmaintained/clusters/example-ceph-cluster-on-openstack.morph @@ -0,0 +1,55 @@ +name: example-ceph-cluster-on-openstack +kind: cluster +description: | + This cluster morphology will deploy a 3 node ceph storage cluster to an + openstack server. + + It was written for use with the following guide on the baserock wiki: + http://wiki.baserock.org/guides/ceph-cluster-deploy/ + + See this guide for more information. + + See the ceph.configure file for more informatiion on the ceph + specific fields used in this cluster morphology. + +systems: +- morph: unmaintained/systems/ceph-service-x86_64-generic.morph + deploy: + ceph-mon-0-openstack: + # openstack info + <<: &common-config + type: openstack + location: http://:5000/v2.0/ + OPENSTACK_USER: demo + OPENSTACK_PASSWORD: demo + OPENSTACK_TENANT: demo + CLOUD_INIT: true + KERNEL_ARGS: console=ttyS0 console=tty0 + CEPH_CLUSTER: ceph + CEPH_CONF: ceph.conf + CEPH_CLIENT_ADMIN: ceph.client.admin.keyring + CEPH_MON_IP: + CEPH_CLUSTER_FSID: + + OPENSTACK_IMAGENAME: mon-0-nd + DISK_SIZE: 10G + # Ceph info + HOSTNAME: mon-0 + CEPH_MON: + ceph-osd-0-openstack: + <<: *common-config + OPENSTACK_IMAGENAME: osd-0 + DISK_SIZE: 7G + # ceph info + HOSTNAME: osd-0 + CEPH_OSD: + CEPH_OSD_STORAGE_DEV: /dev/vdb + ceph-osd-1-openstack: + <<: *common-config + OPENSTACK_IMAGENAME: osd-1 + DISK_SIZE: 7G + # ceph info + HOSTNAME: osd-1 + + CEPH_OSD: + CEPH_OSD_STORAGE_DEV: /dev/vdb diff --git a/old/unmaintained/clusters/example-swift-storage-cluster.morph b/old/unmaintained/clusters/example-swift-storage-cluster.morph new file mode 100644 index 00000000..42f52d8a --- /dev/null +++ b/old/unmaintained/clusters/example-swift-storage-cluster.morph @@ -0,0 +1,62 @@ +name: example-swift-storage-cluster +kind: cluster +systems: +- morph: unmaintained/systems/swift-system-x86_64.morph + deploy-defaults: + INSTALL_FILES: install-files/swift/manifest + + CONTROLLER_HOST_ADDRESS: + + SWIFT_PART_POWER: 10 + SWIFT_REPLICAS: 3 + SWIFT_MIN_PART_HOURS: 1 + + SWIFT_STORAGE_DEVICES: + - {ip: , device: sdb, weight: 100} + - {ip: , device: sdc, weight: 100} + - {ip: , device: sdd, weight: 100} + - {ip: , device: sdb, weight: 100} + - {ip: , device: sdc, weight: 100} + - {ip: , device: sdd, weight: 100} + + # This value can be any random string or number + # but each node in your swift cluster must have the same value + SWIFT_REBALANCE_SEED: 3828 + + # NOTE: Replace SWIFT_HASH_PATH_PREFIX and SWIFT_HASH_PATH_SUFFIX + # with your own unique values, + # + # `openssl rand -hex 10' can be used to generate unique values + # + # These values should be kept secret, do not lose them. + # + SWIFT_HASH_PATH_PREFIX: 041fc210e4e1d333ce1d + SWIFT_HASH_PATH_SUFFIX: 4d6f5362a356dda7fb7d + + FSTAB_SDB: /dev/sdb /srv/node/sdb xfs defaults,user,rw 0 0 + FSTAB_SDC: /dev/sdc /srv/node/sdc xfs defaults,user,rw 0 0 + FSTAB_SDD: /dev/sdd /srv/node/sdd xfs defaults,user,rw 0 0 + + deploy: + node0: + type: extensions/kvm + location: kvm+ssh://user@host/swift-storage-0/home/user/swift-storage-0.img + DISK_SIZE: 10G + RAM_SIZE: 1G + VCPUS: 1 + HOSTNAME: swift-storage-0 + NIC_CONFIG: network=default + NETWORK_CONFIG: ens3:static,address=,netmask=255.255.255.0 + MANAGEMENT_INTERFACE_IP_ADDRESS: + ATTACH_DISKS: /dev/node0_sdb:/dev/node0_sdc:/dev/node0_sdd + node1: + type: extensions/kvm + location: kvm+ssh://user@host/swift-storage-1/home/user/swift-storage-1.img + DISK_SIZE: 10G + RAM_SIZE: 1G + VCPUS: 1 + HOSTNAME: swift-storage-1 + NIC_CONFIG: network=default + NETWORK_CONFIG: ens3:static,address=,netmask=255.255.255.0 + MANAGEMENT_INTERFACE_IP_ADDRESS: + ATTACH_DISKS: /dev/node1_sdb:/dev/node1_sdc:/dev/node1_sdd diff --git a/old/unmaintained/clusters/openstack-one-node-swift.morph b/old/unmaintained/clusters/openstack-one-node-swift.morph new file mode 100644 index 00000000..b9d6502b --- /dev/null +++ b/old/unmaintained/clusters/openstack-one-node-swift.morph @@ -0,0 +1,142 @@ +name: openstack-one-node-swift +kind: cluster +description: | + This is a cluster morphology for deploying a x86_64 OpenStack system + all-in-one-node. + + Requirements to be able to run and test the system: + + - DISK_SIZE should be bigger than 5G + - The system has to have available at least 4G of RAM, but once + you start instantiating VMs you will need more. + - The IP of the system can't change, and you need to know it beforehand, + that is, the system needs a static IP address. + + This cluster is configurable, but with the following constraints: + + - The hostname in RABBITMQ_HOST has to match CONTROLLER_HOST_ADDRESS, + and HOST_CONTROLLER. + - HOSTS_CONTROLLER is only needed if the hostname (see previous point) + is not a FQDN. + - The IP listed in MANAGEMENT_INTERFACE_IP_ADDRESS has to match the one + used in HOSTS_CONTROLLER. + - CINDER_DEVICE should be a path to a storage device ready to be + used/formated for cinder data. + - EXTERNAL_INTERFACE is required when the system has more than one network + interface. + + You can also have a look at the following suggestions: + + - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the + system is being deployed to. + - We recommend changing all the PASSWORDs variables, also the + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET + - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure + Nova to schedule baremetal machines through the Ironic driver, instead of + sheduling virtual machines. + +systems: +- morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + release: + type: extensions/rawdisk + location: baserock-openstack-system-x86_64.img + DISK_SIZE: 10G + INSTALL_FILES: install-files/openstack/manifest install-files/swift/manifest + + HOSTNAME: onenode + + ######################################################################### + ## Swift config options + ######################################################################### + + SWIFT_CONTROLLER: true + + SWIFT_ADMIN_PASSWORD: insecure + + SWIFT_PART_POWER: 10 + SWIFT_REPLICAS: 3 + SWIFT_MIN_PART_HOURS: 1 + + SWIFT_STORAGE_DEVICES: + - {ip: , device: sdb, weight: 100} + - {ip: , device: sdc, weight: 100} + - {ip: , device: sdd, weight: 100} + - {ip: , device: sdb, weight: 100} + - {ip: , device: sdc, weight: 100} + - {ip: , device: sdd, weight: 100} + + # This value can be any random string or number + # but each node in your swift cluster must have the same values + SWIFT_REBALANCE_SEED: 3828 + + # NOTE: Replace SWIFT_HASH_PATH_PREFIX and SWIFT_HASH_PATH_SUFFIX + # with your own unique values, + # + # `openssl rand -hex 10' can be used to generate unique values + # + # These values should be kept secret, do not lose them. + # + SWIFT_HASH_PATH_PREFIX: 041fc210e4e1d333ce1d + SWIFT_HASH_PATH_SUFFIX: 4d6f5362a356dda7fb7d + + ######################################################################### + + RABBITMQ_HOST: onenode + RABBITMQ_PORT: 5672 + RABBITMQ_USER: rabbitmq + RABBITMQ_PASSWORD: veryinsecure + + CONTROLLER_HOST_ADDRESS: onenode + MANAGEMENT_INTERFACE_IP_ADDRESS: + + KEYSTONE_ENABLE_SERVICE: true + KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 + KEYSTONE_ADMIN_PASSWORD: veryinsecure + KEYSTONE_DB_USER: keystoneDB + KEYSTONE_DB_PASSWORD: veryinsecure + + GLANCE_ENABLE_SERVICE: true + GLANCE_SERVICE_USER: glance + GLANCE_SERVICE_PASSWORD: veryinsecure + GLANCE_DB_USER: glanceDB + GLANCE_DB_PASSWORD: veryinsecure + + NOVA_SERVICE_USER: nova + NOVA_SERVICE_PASSWORD: veryinsecure + NOVA_DB_USER: novaDB + NOVA_DB_PASSWORD: veryinsecure + NOVA_VIRT_TYPE: qemu + NOVA_BAREMETAL_SCHEDULING: false + + CINDER_SERVICE_USER: cinder + CINDER_SERVICE_PASSWORD: veryinsecure + CINDER_DB_USER: cinderDB + CINDER_DB_PASSWORD: veryinsecure + # Storage device to be used by Cinder + CINDER_DEVICE: /dev/sdb + + NEUTRON_SERVICE_USER: neutron + NEUTRON_SERVICE_PASSWORD: veryinsecure + NEUTRON_DB_USER: neutronDB + NEUTRON_DB_PASSWORD: veryinsecure + METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + + IRONIC_ENABLE_SERVICE: true + IRONIC_SERVICE_USER: ironic + IRONIC_SERVICE_PASSWORD: veryinsecure + IRONIC_DB_USER: ironicDB + IRONIC_DB_PASSWORD: veryinsecure + + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + METERING_SECRET: insecureceilometersecret + + HOSTS_CONTROLLER: onenode + + # Network interface to be used, only needed if there are more + # than one available. + # EXTERNAL_INTERFACE: eno1 diff --git a/old/unmaintained/clusters/openstack-one-node.morph b/old/unmaintained/clusters/openstack-one-node.morph new file mode 100644 index 00000000..ddecb6fc --- /dev/null +++ b/old/unmaintained/clusters/openstack-one-node.morph @@ -0,0 +1,104 @@ +name: openstack-one-node +kind: cluster +description: | + This is a cluster morphology for deploying a x86_64 OpenStack system + all-in-one-node. + + Requirements to be able to run and test the system: + + - DISK_SIZE should be bigger than 5G + - The system has to have available at least 4G of RAM, but once + you start instantiating VMs you will need more. + - The IP of the system can't change, and you need to know it beforehand, + that is, the system needs a static IP address. + + This cluster is configurable, but with the following constraints: + + - The hostname in RABBITMQ_HOST has to match CONTROLLER_HOST_ADDRESS, + and HOST_CONTROLLER. + - HOSTS_CONTROLLER is only needed if the hostname (see previous point) + is not a FQDN. + - The IP listed in MANAGEMENT_INTERFACE_IP_ADDRESS has to match the one + used in HOSTS_CONTROLLER. + - CINDER_DEVICE should be a path to a storage device ready to be + used/formated for cinder data. + - EXTERNAL_INTERFACE is required when the system has more than one network + interface. + + You can also have a look at the following suggestions: + + - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the + system is being deployed to. + - We recommend changing all the PASSWORDs variables, also the + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET + - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure + Nova to schedule baremetal machines through the Ironic driver, instead of + sheduling virtual machines. + +systems: +- morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + release: + type: extensions/rawdisk + location: baserock-openstack-system-x86_64.img + DISK_SIZE: 10G + INSTALL_FILES: install-files/openstack/manifest + + HOSTNAME: onenode + + RABBITMQ_HOST: onenode + RABBITMQ_PORT: 5672 + RABBITMQ_USER: rabbitmq + RABBITMQ_PASSWORD: veryinsecure + + CONTROLLER_HOST_ADDRESS: onenode + MANAGEMENT_INTERFACE_IP_ADDRESS: + + KEYSTONE_ENABLE_SERVICE: true + KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 + KEYSTONE_ADMIN_PASSWORD: veryinsecure + KEYSTONE_DB_USER: keystoneDB + KEYSTONE_DB_PASSWORD: veryinsecure + + GLANCE_ENABLE_SERVICE: true + GLANCE_SERVICE_USER: glance + GLANCE_SERVICE_PASSWORD: veryinsecure + GLANCE_DB_USER: glanceDB + GLANCE_DB_PASSWORD: veryinsecure + + NOVA_SERVICE_USER: nova + NOVA_SERVICE_PASSWORD: veryinsecure + NOVA_DB_USER: novaDB + NOVA_DB_PASSWORD: veryinsecure + NOVA_VIRT_TYPE: qemu + NOVA_BAREMETAL_SCHEDULING: false + + CINDER_SERVICE_USER: cinder + CINDER_SERVICE_PASSWORD: veryinsecure + CINDER_DB_USER: cinderDB + CINDER_DB_PASSWORD: veryinsecure + # Storage device to be used by Cinder + CINDER_DEVICE: /dev/sdb + + NEUTRON_SERVICE_USER: neutron + NEUTRON_SERVICE_PASSWORD: veryinsecure + NEUTRON_DB_USER: neutronDB + NEUTRON_DB_PASSWORD: veryinsecure + METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + + IRONIC_ENABLE_SERVICE: true + IRONIC_SERVICE_USER: ironic + IRONIC_SERVICE_PASSWORD: veryinsecure + IRONIC_DB_USER: ironicDB + IRONIC_DB_PASSWORD: veryinsecure + + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + METERING_SECRET: insecureceilometersecret + + # Network interface to be used, only needed if there are more + # than one available. + # EXTERNAL_INTERFACE: eno1 diff --git a/old/unmaintained/clusters/openstack-three-node-installer.morph b/old/unmaintained/clusters/openstack-three-node-installer.morph new file mode 100644 index 00000000..9274f9bf --- /dev/null +++ b/old/unmaintained/clusters/openstack-three-node-installer.morph @@ -0,0 +1,238 @@ +name: openstack-three-node-installer +kind: cluster +description: | + This is a cluster morphology for deploying an installer for an x86_64 + OpenStack system spread across three nodes. + + This cluster creates disk images that may be `dd`'d onto install media to + produce an OpenStack cluster when instantiated. + + Alternatively it may be used to install directly onto a physical disk by + running: + + morph deploy clusters/openstack-three-node-installer.morph \ + network-installer network-installer.location=/dev/vdb + + Substituting network-installer for either compute-installer or + controller-installer will produce different configurations, and it is possible + to substitue /dev/vdb for a different path to a disk image to install to a + different disk image. + + Substitute the values of HOSTNAME, NETWORK_CONFIG, EXTERNAL_INTERFACE, + MANAGEMENT_IP_ADDRESS, CONTROLLER_HOST_ADDRESS, RABBITMQ_HOST and HOSTS_* to + match your hardware and networking configuration. + + Requirements to be able to run and test the system: + + - DISK_SIZE should be bigger than 5G + - The system has to have available at least 4G of RAM, but once + you start instantiating VMs you will need more. + - The IP of the system can't change, and you need to know it beforehand, + that is, the system needs a static IP address. + + This cluster is configurable, but with the following constraints: + + - The hostname in RABBITMQ_HOST has to match CONTROLLER_HOST_ADDRESS, + and HOST_CONTROLLER. + - HOSTS_CONTROLLER is only needed if the hostname (see previous point) + is not a FQDN. + - The IP listed in MANAGEMENT_INTERFACE_IP_ADDRESS has to match the one + used in HOSTS_CONTROLLER. + - CINDER_DEVICE should be a path to a storage device ready to be + used/formated for cinder data. + - EXTERNAL_INTERFACE is required when the system has more than one network + interface. + + You can also have a look at the following suggestions: + + - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the + system is being deployed to. + - We recommend changing all the PASSWORDs variables, also the + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET. + - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure + Nova to schedule baremetal machines through the Ironic driver, instead of + sheduling virtual machines. + +systems: +- morph: systems/installer-system-x86_64.morph + deploy: + network-installer: &installer + type: extensions/rawdisk + location: installer-openstack-network-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 + INSTALLER_POST_INSTALL_COMMAND: sync; poweroff -f + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + network-initramfs: &initramfs + type: extensions/initramfs + location: boot/initramfs.gz + - morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + network-to-install: &stack-node + type: extensions/sysroot + location: rootfs + INSTALL_FILES: install-files/openstack/manifest + INITRAMFS_PATH: boot/initramfs.gz + + HOSTNAME: threenode-network + + RABBITMQ_HOST: threenode-controller.os-mgmt + RABBITMQ_PORT: 5672 + RABBITMQ_USER: rabbitmq + RABBITMQ_PASSWORD: veryinsecure + + # This token needs to be unique and secret + KEYSTONE_ENABLE_SERVICE: false + KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 + KEYSTONE_ADMIN_PASSWORD: veryinsecure + KEYSTONE_DB_USER: keystoneDB + KEYSTONE_DB_PASSWORD: veryinsecure + + GLANCE_ENABLE_SERVICE: false + GLANCE_SERVICE_USER: glance + GLANCE_SERVICE_PASSWORD: veryinsecure + GLANCE_DB_USER: glanceDB + GLANCE_DB_PASSWORD: veryinsecure + + NOVA_ENABLE_CONTROLLER: false + NOVA_ENABLE_COMPUTE: false + NOVA_SERVICE_USER: nova + NOVA_SERVICE_PASSWORD: veryinsecure + NOVA_DB_USER: novaDB + NOVA_DB_PASSWORD: veryinsecure + NOVA_VIRT_TYPE: kvm + NOVA_BAREMETAL_SCHEDULING: false + + CINDER_ENABLE_CONTROLLER: false + CINDER_ENABLE_COMPUTE: false + CINDER_ENABLE_STORAGE: false + CINDER_SERVICE_USER: cinder + CINDER_SERVICE_PASSWORD: veryinsecure + CINDER_DB_USER: cinderDB + CINDER_DB_PASSWORD: veryinsecure + # Storage device to be used by Cinder + CINDER_DEVICE: /dev/sdb + + NEUTRON_ENABLE_AGENT: false + NEUTRON_ENABLE_MANAGER: true + NEUTRON_ENABLE_CONTROLLER: false + NEUTRON_SERVICE_USER: neutron + NEUTRON_SERVICE_PASSWORD: veryinsecure + NEUTRON_DB_USER: neutronDB + NEUTRON_DB_PASSWORD: veryinsecure + METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + + IRONIC_ENABLE_SERVICE: false + IRONIC_SERVICE_USER: ironic + IRONIC_SERVICE_PASSWORD: veryinsecure + IRONIC_DB_USER: ironicDB + IRONIC_DB_PASSWORD: veryinsecure + + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + CEILOMETER_ENABLE_CONTROLLER: false + CEILOMETER_ENABLE_COMPUTE: false + METERING_SECRET: insecureceilometersecret + + CONTROLLER_HOST_ADDRESS: threenode-controller.os-mgmt + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.1 + + HOSTS_NETWORK: 10.0.0.1 threenode-network.os-mgmt + HOSTS_CONTROL: 10.0.0.2 threenode-controller.os-mgmt + HOSTS_COMPUTE: 10.0.0.3 threenode-compute.os-mgmt + + EXTERNAL_INTERFACE: enp3s0 + NETWORK_CONFIG: enp3s0:dhcp;enp2s0:static,address=10.0.0.1,netmask=255.255.255.0 + SYNC_TIME_WITH_CONTROLLER: true + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + network-to-install-initramfs: *initramfs +- morph: systems/installer-system-x86_64.morph + deploy: + controller-installer: + <<: *installer + location: installer-openstack-controller-x86_64.img + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + controller-initramfs: *initramfs + - morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + controller-to-install: + <<: *stack-node + HOSTNAME: threenode-controller + + KEYSTONE_ENABLE_SERVICE: true + + GLANCE_ENABLE_SERVICE: true + + NOVA_ENABLE_CONTROLLER: true + + CINDER_ENABLE_CONTROLLER: true + CINDER_ENABLE_COMPUTE: false + CINDER_ENABLE_STORAGE: false + + NEUTRON_ENABLE_AGENT: false + NEUTRON_ENABLE_MANAGER: false + NEUTRON_ENABLE_CONTROLLER: true + METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + + IRONIC_ENABLE_SERVICE: true + + CEILOMETER_ENABLE_CONTROLLER: true + CEILOMETER_ENABLE_COMPUTE: false + + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.2 + EXTERNAL_INTERFACE: enp2s0 + NETWORK_CONFIG: enp2s0:dhcp;enp0s26u1u2:static,address=10.0.0.2,netmask=255.255.255.0 + SYNC_TIME_WITH_CONTROLLER: false + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + controller-to-install-initramfs: *initramfs +- morph: systems/installer-system-x86_64.morph + deploy: + compute-installer: + <<: *installer + location: installer-openstack-compute-x86_64.img + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + compute-initramfs: *initramfs + - morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + compute-to-install: + <<: *stack-node + HOSTNAME: threenode-compute + + NOVA_ENABLE_COMPUTE: true + + CINDER_ENABLE_CONTROLLER: false + CINDER_ENABLE_COMPUTE: true + CINDER_ENABLE_STORAGE: true + + NEUTRON_ENABLE_AGENT: true + NEUTRON_ENABLE_MANAGER: false + NEUTRON_ENABLE_CONTROLLER: false + + CEILOMETER_ENABLE_CONTROLLER: false + CEILOMETER_ENABLE_COMPUTE: true + + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.3 + EXTERNAL_INTERFACE: eno1 + NETWORK_CONFIG: eno1:dhcp;enp0s29u1u3:static,address=10.0.0.3,netmask=255.255.255.0 + SYNC_TIME_WITH_CONTROLLER: true + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + compute-to-install-initramfs: *initramfs diff --git a/old/unmaintained/clusters/openstack-two-node-installer.morph b/old/unmaintained/clusters/openstack-two-node-installer.morph new file mode 100644 index 00000000..e75b5a5e --- /dev/null +++ b/old/unmaintained/clusters/openstack-two-node-installer.morph @@ -0,0 +1,199 @@ +name: openstack-two-node-installer +kind: cluster +description: | + This is a cluster morphology for deploying an installer for an x86_64 + OpenStack system spread across three nodes. + + This cluster creates disk images that may be `dd`'d onto install media to + produce an OpenStack cluster when instantiated. + + Alternatively it may be used to install directly onto a physical disk by + running: + + morph deploy clusters/openstack-two-node-installer.morph \ + controller-installer controller-installer.location=/dev/vdb + + Substituting contrller-installer for compute-installer will produce + different configurations, and it is possible to substitue /dev/vdb for a + different path to a disk image to install to a different disk image. + + Substitute the values of HOSTNAME, NETWORK_CONFIG, EXTERNAL_INTERFACE, + MANAGEMENT_IP_ADDRESS, CONTROLLER_HOST_ADDRESS, RABBITMQ_HOST and HOSTS_* to + match your hardware and networking configuration. + + Requirements to be able to run and test the system: + + - DISK_SIZE should be bigger than 5G + - The system has to have available at least 4G of RAM, but once + you start instantiating VMs you will need more. + - The IP of the system can't change, and you need to know it beforehand, + that is, the system needs a static IP address. + + This cluster is configurable, but with the following constraints: + + - The hostname in RABBITMQ_HOST has to match CONTROLLER_HOST_ADDRESS, + and HOST_CONTROLLER. + - HOSTS_CONTROLLER is only needed if the hostname (see previous point) + is not a FQDN. + - The IP listed in MANAGEMENT_INTERFACE_IP_ADDRESS has to match the one + used in HOSTS_CONTROLLER. + - CINDER_DEVICE should be a path to a storage device ready to be + used/formated for cinder data. + - EXTERNAL_INTERFACE is required when the system has more than one network + interface. + + You can also have a look at the following suggestions: + + - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the + system is being deployed to. + - We recommend changing all the PASSWORDs variables, also the + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET. + - Setting NOVA_BAREMETAL_SCHEDULING with a YAML truth value will configure + Nova to schedule baremetal machines through the Ironic driver, instead of + sheduling virtual machines. + +systems: +- morph: systems/installer-system-x86_64.morph + deploy: + controller-installer: &installer + type: extensions/rawdisk + location: installer-openstack-controller-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 + INSTALLER_POST_INSTALL_COMMAND: sync; poweroff -f + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + controller-initramfs: &initramfs + type: extensions/initramfs + location: boot/initramfs.gz + - morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + controller-to-install: &stack-node + type: extensions/sysroot + location: rootfs + INSTALL_FILES: install-files/openstack/manifest + INITRAMFS_PATH: boot/initramfs.gz + + HOSTNAME: twonode-controller + + RABBITMQ_HOST: twonode-controller.os-mgmt + RABBITMQ_PORT: 5672 + RABBITMQ_USER: rabbitmq + RABBITMQ_PASSWORD: veryinsecure + + # This token needs to be unique and secret + KEYSTONE_ENABLE_SERVICE: true + KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 + KEYSTONE_ADMIN_PASSWORD: veryinsecure + KEYSTONE_DB_USER: keystoneDB + KEYSTONE_DB_PASSWORD: veryinsecure + + GLANCE_ENABLE_SERVICE: true + GLANCE_SERVICE_USER: glance + GLANCE_SERVICE_PASSWORD: veryinsecure + GLANCE_DB_USER: glanceDB + GLANCE_DB_PASSWORD: veryinsecure + + NOVA_ENABLE_CONTROLLER: true + NOVA_ENABLE_COMPUTE: false + NOVA_SERVICE_USER: nova + NOVA_SERVICE_PASSWORD: veryinsecure + NOVA_DB_USER: novaDB + NOVA_DB_PASSWORD: veryinsecure + NOVA_VIRT_TYPE: kvm + NOVA_BAREMETAL_SCHEDULING: false + + CINDER_ENABLE_CONTROLLER: true + CINDER_ENABLE_COMPUTE: false + CINDER_ENABLE_STORAGE: false + CINDER_SERVICE_USER: cinder + CINDER_SERVICE_PASSWORD: veryinsecure + CINDER_DB_USER: cinderDB + CINDER_DB_PASSWORD: veryinsecure + # Storage device to be used by Cinder + CINDER_DEVICE: /dev/sdb + + NEUTRON_ENABLE_AGENT: false + NEUTRON_ENABLE_MANAGER: true + NEUTRON_ENABLE_CONTROLLER: true + NEUTRON_SERVICE_USER: neutron + NEUTRON_SERVICE_PASSWORD: veryinsecure + NEUTRON_DB_USER: neutronDB + NEUTRON_DB_PASSWORD: veryinsecure + METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + + IRONIC_ENABLE_SERVICE: true + IRONIC_SERVICE_USER: ironic + IRONIC_SERVICE_PASSWORD: veryinsecure + IRONIC_DB_USER: ironicDB + IRONIC_DB_PASSWORD: veryinsecure + + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + CEILOMETER_ENABLE_CONTROLLER: true + CEILOMETER_ENABLE_COMPUTE: false + METERING_SECRET: insecureceilometersecret + + CONTROLLER_HOST_ADDRESS: twonode-controller.os-mgmt + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.1 + + HOSTS_CONTROL: 10.0.0.1 twonode-controller.os-mgmt + HOSTS_COMPUTE: 10.0.0.3 twonode-compute.os-mgmt + EXTERNAL_INTERFACE: enp3s0 + NETWORK_CONFIG: enp3s0:dhcp;enp2s0:static,address=10.0.0.1,netmask=255.255.255.0 + SYNC_TIME_WITH_CONTROLLER: false + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + controller-to-install-initramfs: *initramfs +- morph: systems/installer-system-x86_64.morph + deploy: + compute-installer: + <<: *installer + location: installer-openstack-compute-x86_64.img + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + compute-initramfs: *initramfs + - morph: unmaintained/systems/openstack-system-x86_64.morph + deploy: + compute-to-install: + <<: *stack-node + HOSTNAME: twonode-compute + + KEYSTONE_ENABLE_SERVICE: false + + GLANCE_ENABLE_SERVICE: false + + NOVA_ENABLE_COMPUTE: true + NOVA_ENABLE_CONTROLLER: false + + CINDER_ENABLE_CONTROLLER: false + CINDER_ENABLE_COMPUTE: true + CINDER_ENABLE_STORAGE: true + + NEUTRON_ENABLE_AGENT: true + NEUTRON_ENABLE_MANAGER: false + NEUTRON_ENABLE_CONTROLLER: false + + IRONIC_ENABLE_SERVICE: false + + CEILOMETER_ENABLE_CONTROLLER: false + CEILOMETER_ENABLE_COMPUTE: true + + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.3 + EXTERNAL_INTERFACE: eno1 + NETWORK_CONFIG: eno1:dhcp;enp0s29u1u3:static,address=10.0.0.3,netmask=255.255.255.0 + SYNC_TIME_WITH_CONTROLLER: true + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + compute-to-install-initramfs: *initramfs diff --git a/old/unmaintained/clusters/xfce-system-x86_64-deploy.morph b/old/unmaintained/clusters/xfce-system-x86_64-deploy.morph new file mode 100644 index 00000000..465ba1d0 --- /dev/null +++ b/old/unmaintained/clusters/xfce-system-x86_64-deploy.morph @@ -0,0 +1,23 @@ +name: xfce-system-x86_64-deploy +kind: cluster +description: | + Deploy a stock XFCE system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: unmaintained/systems/xfce-system-x86_64.morph + deploy: + xfce-system-x86_64: + type: extensions/rawdisk + location: /xfce-system-x86_64.img + DISK_SIZE: 6G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/unmaintained/clusters/zookeeper.morph b/old/unmaintained/clusters/zookeeper.morph new file mode 100644 index 00000000..ba859bc1 --- /dev/null +++ b/old/unmaintained/clusters/zookeeper.morph @@ -0,0 +1,21 @@ +name: zookeeper +kind: cluster +systems: +- morph: unmaintained/systems/zookeeper-client-x86_64.morph + deploy: + my-client-system: + type: extensions/kvm + location: kvm+ssh://username@HOSTNAME/machinename/path/to/zookeeper-client.img + DISK_SIZE: 4G + RAM_SIZE: 1G + VCPUS: 1 + HOSTNAME: zkclient +- morph: unmaintained/systems/zookeeper-server-x86_64.morph + deploy: + my-server-system: + type: extensions/kvm + location: kvm+ssh://username@HOSTNAME/machinename/path/to/zookeeper-server.img + DISK_SIZE: 4G + RAM_SIZE: 1G + VCPUS: 1 + HOSTNAME: zkserver diff --git a/old/unmaintained/strata/apache-httpd-server.morph b/old/unmaintained/strata/apache-httpd-server.morph new file mode 100644 index 00000000..e434ca6f --- /dev/null +++ b/old/unmaintained/strata/apache-httpd-server.morph @@ -0,0 +1,41 @@ +name: apache-httpd-server +kind: stratum +description: apache http web server and some utilities related to it +build-depends: +- morph: strata/tools.morph +- morph: strata/pcre-utils.morph +- morph: strata/python2-core.morph +chunks: +- name: apr + morph: unmaintained/strata/apache-httpd-server/apr.morph + repo: upstream:apache/apr + ref: 3c818c6d7351f0130282d212a69035642f5fecad + unpetrify-ref: trunk +- name: httpd-server + morph: unmaintained/strata/apache-httpd-server/httpd-server.morph + repo: upstream:apache/httpd + ref: 6d8e0b2fd95268fcba96326ba9dce7bb8f712c19 + unpetrify-ref: 2.4.10 + build-depends: + - apr +- name: psutil + repo: upstream:python-packages/psutil + ref: 2bc8555f0428af81c2d067aa76168ed7bc5e0179 + unpetrify-ref: release-2.2.0 + build-system: python-distutils +- name: mod_wsgi-metrics + repo: upstream:python-packages/mod_wsgi-metrics + ref: ec715eb593255229f9f45f3f323edbb845c691d8 + unpetrify-ref: 1.1.1 + build-system: python-distutils + build-depends: + - psutil +- name: mod_wsgi + morph: unmaintained/strata/apache-httpd-server/mod_wsgi.morph + repo: upstream:python-packages/mod_wsgi + ref: 1be8b37aaf07d8cb3083da99d6fda12375221b07 + unpetrify-ref: 4.4.5 + build-depends: + - apr + - httpd-server + - mod_wsgi-metrics diff --git a/old/unmaintained/strata/apache-httpd-server/apr.morph b/old/unmaintained/strata/apache-httpd-server/apr.morph new file mode 100644 index 00000000..aaba1954 --- /dev/null +++ b/old/unmaintained/strata/apache-httpd-server/apr.morph @@ -0,0 +1,22 @@ +name: apr +kind: chunk +build-system: autotools +configure-commands: +- ./buildconf +- | + ./configure --prefix="$PREFIX" \ + --disable-static \ + --enable-threads \ + --with-installbuilddir="$PREFIX"/share/apr-1/build +post-install-commands: +# Install files required for apr-util and httpd +- | + for file in find_apr.m4 apr_common.m4 install.sh gen-build.py get-version.sh \ + config.guess config.sub; do + cp build/"$file" "$DESTDIR$PREFIX"/share/apr-1/build/"$file"; + done +# Create a symlink in the build directory to the include directory (this is needed for httpd) +- ln -sf /usr/include/apr-2 "$DESTDIR$PREFIX"/share/apr-1/build/ +# Copy apr headers needed for mod_wsgi +- cp include/private/apr_support.h "$DESTDIR$PREFIX"/include/apr-2 +- cp include/arch/unix/apr_private.h "$DESTDIR$PREFIX"/include/apr-2 diff --git a/old/unmaintained/strata/apache-httpd-server/httpd-server.morph b/old/unmaintained/strata/apache-httpd-server/httpd-server.morph new file mode 100644 index 00000000..41f0c36b --- /dev/null +++ b/old/unmaintained/strata/apache-httpd-server/httpd-server.morph @@ -0,0 +1,67 @@ +name: httpd-server +kind: chunk +build-system: autotools +configure-commands: +- ./buildconf --with-apr=/usr/share/apr-1 +# We override --libexecdir with the same value as --enable-layout=RPM +# ought to provide, because otherwise there is a bug where when mod_wsgi +# calls apxs, it fails as follows because the variable is empty. +# +#/usr/share/apr-1/build/libtool --silent --mode=link gcc -std=gnu99 +# -o src/server/mod_wsgi.la -rpath # -module -avoid-version +# src/server/wsgi_validate.lo src/server/wsgi_stream.lo +# src/server/wsgi_server.lo src/server/wsgi_restrict.lo +# src/server/wsgi_metrics.lo src/server/wsgi_logger.lo +# src/server/wsgi_interp.lo src/server/wsgi_daemon.lo +# src/server/wsgi_convert.lo src/server/wsgi_buckets.lo +# src/server/wsgi_apache.lo src/server/mod_wsgi.lo +# -L/usr/lib -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm +# libtool: error: only absolute run-paths are allowed +# apxs:Error: Command failed with rc=65536 +# +- | + ./configure --prefix="$PREFIX" \ + --libexecdir="$PREFIX"/lib/httpd/modules \ + --enable-layout=RPM \ + --enable-mpms-shared=all \ + --with-apr="$PREFIX"/bin/apr-2-config \ + --enable-suexec --with-suexec \ + --with-suexec-caller=apache \ + --with-suexec-docroot=/var/www \ + --with-suexec-logfile=/var/log/httpd/suexec.log \ + --with-suexec-bin="$PREFIX"/sbin/suexec \ + --with-suexec-uidmin=500 --with-suexec-gidmin=100\ + --with-suexec-userdir=public_html \ + --enable-pie \ + --with-pcre \ + --enable-mods-shared=all \ + --enable-ssl --with-ssl \ + --enable-case-filter --enable-case-filter-in \ + --enable-cgid --enable-cgi\ + --enable-so +post-install-commands: +# Add perl interpreter path to apxs script, required for loading mod_wsgi. +- | + sed -i 's|#!/replace/with/path/to/perl/interpreter -w|#!/usr/bin/perl -w|g' \ + "$DESTDIR$PREFIX"/bin/apxs +# Add conf.d directory where apache will look for other configurations to load. +- mkdir -p "$DESTDIR"/etc/httpd/conf.d +- echo 'Include /etc/httpd/conf.d/*.conf' >> "$DESTDIR"/etc/httpd/conf/httpd.conf +#################################################################################### +# This chunk should add an apache user and an apache group, create the apache home +# directory and move suexec to /usr/lib/httpd/suexec as system-integration time. +# This is not possible because linux-user-chroot drops all capabilities for security so +# it does not allow to change the owners of directories or files. +# So for now you should create a script which includes the following commands: +# - mkdir -p /var/www +# - groupadd -r apache +# - | +# useradd -c "Apache Server" -d /var/www -g apache \ +# -s /bin/false apache +# +# - mkdir -p /usr/lib/httpd +# - mv -v /usr/bin/suexec /usr/lib/httpd/suexec +# - chgrp apache /usr/lib/httpd/suexec +# - chmod 4754 /usr/lib/httpd/suexec +# - chown -R apache:apache /var/www +#################################################################################### diff --git a/old/unmaintained/strata/apache-httpd-server/mod_wsgi.morph b/old/unmaintained/strata/apache-httpd-server/mod_wsgi.morph new file mode 100644 index 00000000..86004ad3 --- /dev/null +++ b/old/unmaintained/strata/apache-httpd-server/mod_wsgi.morph @@ -0,0 +1,18 @@ +name: mod_wsgi +kind: chunk +build-system: autotools +configure-commands: +- | + ./configure --prefix="$PREFIX" \ + --with-apxs=/usr/bin/apxs +post-install-commands: +- | + install -D -m 644 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/httpd/conf.d/wsgi.conf + # NOTE: mod_wsgi can not coexist in the same apache process as + # mod_wsgi_python3. Only load if mod_wsgi_python3 is not + # already loaded. + + + LoadModule wsgi_module /usr/lib/httpd/modules/mod_wsgi.so + + EOF diff --git a/old/unmaintained/strata/ceph-service.morph b/old/unmaintained/strata/ceph-service.morph new file mode 100644 index 00000000..4daf2b38 --- /dev/null +++ b/old/unmaintained/strata/ceph-service.morph @@ -0,0 +1,73 @@ +name: ceph-service +kind: stratum +build-depends: +- morph: strata/cpp-common-libs.morph +- morph: strata/foundation.morph +- morph: strata/network-security.morph +chunks: +- name: libaio + morph: unmaintained/strata/ceph-service/libaio.morph + repo: upstream:libaio + ref: 08f50baec0e7731116d3f665c6155d7829edf5d7 + unpetrify-ref: libaio-0.3.110-1 +- name: keyutils + morph: unmaintained/strata/ceph-service/keyutils.morph + repo: upstream:keyutils + ref: 9209a0c8fd63afc59f644e078b40cec531409c30 + unpetrify-ref: v1.5.9 +- name: libunwind + repo: upstream:libunwind + ref: d7322f0f64dab715c4feb5f08edef5660d8719c0 + unpetrify-ref: v1.1 + build-system: autotools +- name: gperftools + repo: upstream:gperftools + ref: 846b775dfadb77901202ae7ddbac30ad1de7df01 + unpetrify-ref: gperftools-2.2 + build-system: autotools + build-depends: + - libunwind +- name: snappy + repo: upstream:snappy-git + ref: 1ff9be9b8fafc8528ca9e055646f5932aa5db9c4 + unpetrify-ref: master + build-system: autotools +- name: leveldb + morph: unmaintained/strata/ceph-service/leveldb.morph + repo: upstream:leveldb + ref: e353fbc7ea81f12a5694991b708f8f45343594b1 + unpetrify-ref: v1.17 + build-depends: + - snappy + - gperftools +- name: libeditline + repo: upstream:libeditline-tarball + ref: 7503ff5f8610734521f40e276b59b3b6291830e7 + unpetrify-ref: baserock/morph + build-system: autotools +- name: ceph + morph: unmaintained/strata/ceph-service/ceph.morph + repo: upstream:ceph + ref: f4f12a634b0a92938d54d77910134dbbcdf864e6 + unpetrify-ref: v0.94.1.1 + build-depends: + - libaio + - gperftools + - leveldb + - libeditline + - keyutils + submodules: + src/erasure-code/jerasure/gf-complete: + url: https://github.com/ceph/gf-complete.git + src/civetweb: + url: https://github.com/ceph/civetweb + ceph-erasure-code-corpus: + url: https://github.com/ceph/ceph-erasure-code-corpus.git + src/rocksdb: + url: https://github.com/ceph/rocksdb + src/erasure-code/jerasure/jerasure: + url: https://github.com/ceph/jerasure.git + src/libs3: + url: https://github.com/ceph/libs3.git + ceph-object-corpus: + url: https://github.com/ceph/ceph-object-corpus.git diff --git a/old/unmaintained/strata/ceph-service/ceph.morph b/old/unmaintained/strata/ceph-service/ceph.morph new file mode 100644 index 00000000..56d30ead --- /dev/null +++ b/old/unmaintained/strata/ceph-service/ceph.morph @@ -0,0 +1,26 @@ +name: ceph +kind: chunk +build-system: autotools +configure-commands: +- NOCONFIGURE=1 ./autogen.sh +- ./configure --with-nss --prefix="$PREFIX" --sysconfdir=/etc --without-fuse --without-libatomic-ops + --without-libxfs +build-commands: +- make +install-commands: +- make install +- install -D -m 755 src/init-ceph.in "$DESTDIR"/etc/init.d/ceph-SysV +- install -D -m 755 systemd/ceph "$DESTDIR"/etc/systemd/system/ceph +- install -D -m 644 systemd/ceph-mon@.service "$DESTDIR"/etc/systemd/system/ceph-mon@.service +- install -D -m 644 systemd/ceph-osd@.service "$DESTDIR"/etc/systemd/system/ceph-osd@.service +- install -D -m 644 systemd/ceph-mds@.service "$DESTDIR"/etc/systemd/system/ceph-mds@.service +- install -D -m 644 systemd/ceph.target "$DESTDIR"/etc/systemd/system/ceph.target +- install -d "$DESTDIR"/etc/ceph +- install -D -d "$DESTDIR"/var/lib/ceph +- install -d "$DESTDIR"/var/lib/ceph/mon +- install -d "$DESTDIR"/var/lib/ceph/osd +- install -d "$DESTDIR"/var/lib/ceph/mds +- install -d "$DESTDIR"/var/lib/ceph/tmp +- install -d "$DESTDIR"/var/lib/ceph/bootstrap-mds +- install -d "$DESTDIR"/var/lib/ceph/bootstrap-osd +- install -D -d "$DESTDIR"/var/log/ceph diff --git a/old/unmaintained/strata/ceph-service/keyutils.morph b/old/unmaintained/strata/ceph-service/keyutils.morph new file mode 100644 index 00000000..4d47e265 --- /dev/null +++ b/old/unmaintained/strata/ceph-service/keyutils.morph @@ -0,0 +1,7 @@ +name: keyutils +kind: chunk +build-commands: +- make clean +- make +install-commands: +- make DESTDIR="$DESTDIR" LIBDIR="$PREFIX/lib" USRLIBDIR="$PREFIX/lib" install diff --git a/old/unmaintained/strata/ceph-service/leveldb.morph b/old/unmaintained/strata/ceph-service/leveldb.morph new file mode 100644 index 00000000..2b97c6e6 --- /dev/null +++ b/old/unmaintained/strata/ceph-service/leveldb.morph @@ -0,0 +1,9 @@ +name: leveldb +kind: chunk +build-commands: +- make +install-commands: +- mkdir -p "$DESTDIR$PREFIX"/lib +- mkdir -p "$DESTDIR$PREFIX"/include +- cp --preserve=links libleveldb.* "$DESTDIR$PREFIX"/lib +- cp -r include/leveldb "$DESTDIR$PREFIX"/include diff --git a/old/unmaintained/strata/ceph-service/libaio.morph b/old/unmaintained/strata/ceph-service/libaio.morph new file mode 100644 index 00000000..62c24d37 --- /dev/null +++ b/old/unmaintained/strata/ceph-service/libaio.morph @@ -0,0 +1,7 @@ +name: libaio +kind: chunk +build-commands: +- make clean +- make +install-commands: +- make prefix="$DESTDIR$PREFIX" install diff --git a/old/unmaintained/strata/chef.morph b/old/unmaintained/strata/chef.morph new file mode 100644 index 00000000..feceac6e --- /dev/null +++ b/old/unmaintained/strata/chef.morph @@ -0,0 +1,193 @@ +name: chef +kind: stratum +description: Autogenerated by Baserock import tool +build-depends: +- morph: strata/ruby.morph +- morph: strata/core.morph +chunks: +- name: yajl + morph: unmaintained/strata/chef/yajl.morph + repo: upstream:yajl + ref: a0ecdde0c042b9256170f2f8890dd9451a4240aa + unpetrify-ref: 2.1.0 +- name: libyajl2-1.0.1 + morph: unmaintained/strata/chef/libyajl2-1.0.1.morph + repo: upstream:ruby-gems/libyajl2-gem + ref: 98aef032f536d13775bc7b3b69a25ebac9bdee0a + unpetrify-ref: 1.0.1 + build-depends: + - yajl + submodules: + ext/libyajl2/vendor/yajl: + url: https://github.com/lloyd/yajl.git +- name: chef-12.0.0.alpha.0 + morph: unmaintained/strata/chef/chef-12.0.0.alpha.0.morph + repo: upstream:ruby-gems/chef + ref: 9841bc9c6271c6d9add3aff0c2e11239cfb129ca + unpetrify-ref: 12.0.3 +- name: chef-zero-2.2 + morph: unmaintained/strata/chef/chef-zero-2.2.morph + repo: upstream:ruby-gems/chef-zero + ref: 231c3abd052e606820297a97e4bc32bdab656a02 + unpetrify-ref: v2.2 +- name: coderay-1.1.0.rc1 + morph: unmaintained/strata/chef/coderay-1.1.0.morph + repo: upstream:ruby-gems/coderay + ref: a48037b85a12228431b32103786456f36beb355f + unpetrify-ref: v1.1.0 +- name: erubis-master + morph: unmaintained/strata/chef/erubis-master.morph + repo: upstream:ruby-gems/erubis + ref: 14d3eab57fbc361312c8f3af350cbf9a5bafce17 + unpetrify-ref: master +- name: ffi-1.9.3 + morph: unmaintained/strata/chef/ffi-1.9.3.morph + repo: upstream:ruby-gems/ffi + ref: d982b7049336106c04f7721045dc5613b16d3545 + unpetrify-ref: 1.9.3 +- name: ffi-yajl-1.0.2 + morph: unmaintained/strata/chef/ffi-yajl-1.0.2.morph + repo: upstream:ruby-gems/ffi-yajl + ref: 3a4bc4259fd67af0ff4a8c1d3d71cfbaed9c112f + unpetrify-ref: master + build-depends: + - libyajl2-1.0.1 + submodules: + ext/libyajl2/vendored: + url: https://github.com/lloyd/yajl +- name: hashie-2.1.2 + morph: unmaintained/strata/chef/hashie-2.1.2.morph + repo: upstream:ruby-gems/hashie + ref: 95b97fbff2cac643d56ec718cb708665500682e5 + unpetrify-ref: v2.1.2 +- name: highline-1.6.21 + morph: unmaintained/strata/chef/highline-1.6.21.morph + repo: upstream:ruby-gems/highline + ref: 51de22e436e6d45696759d673d7b9ceba16cae39 + unpetrify-ref: master +- name: hoe-master + morph: unmaintained/strata/chef/hoe-master.morph + repo: upstream:ruby-gems/hoe + ref: d94b26b4687be0a24d04b7cb582753fbec33d7e4 + unpetrify-ref: master +- name: diff-lcs-1.2.5 + morph: unmaintained/strata/chef/diff-lcs-1.2.5.morph + repo: upstream:ruby-gems/diff-lcs + ref: d53e92242b9dd6745e56a0ff4ba15d2f62052b91 + unpetrify-ref: v1.2.5 + build-depends: + - hoe-master +- name: ipaddress-0.8.0 + morph: unmaintained/strata/chef/ipaddress-0.8.0.morph + repo: upstream:ruby-gems/ipaddress + ref: dae93ad0e4fb9a5d547a15dae0c3f2417078c845 + unpetrify-ref: master +- name: json-1.8.1 + morph: unmaintained/strata/chef/json-1.8.1.morph + repo: upstream:ruby-gems/json + ref: 92a96dea2b24b9c68856004d69491f46aedd0925 + unpetrify-ref: v1.8.1 +- name: method_source-0.8.1 + morph: unmaintained/strata/chef/method_source-0.8.2.morph + repo: upstream:ruby-gems/method_source + ref: 1b1f8323a7c25f29331fe32511f50697e5405dbd + unpetrify-ref: v0.8.2 +- name: mime-types-1.25.1 + morph: unmaintained/strata/chef/mime-types-1.25.1.morph + repo: upstream:ruby-gems/mime-types + ref: 6be836f59a041893cfc1c25668b3aa3552a7e334 + unpetrify-ref: v1.25.1 + build-depends: + - hoe-master +- name: mixlib-authentication-1.3.0 + morph: unmaintained/strata/chef/mixlib-authentication-1.3.0.morph + repo: upstream:ruby-gems/mixlib-authentication + ref: db24a56c6f5b99114998a50942220a7023060229 + unpetrify-ref: 1.3.0 +- name: mixlib-cli-1.5.0 + morph: unmaintained/strata/chef/mixlib-cli-1.5.0.morph + repo: upstream:ruby-gems/mixlib-cli + ref: b3b3c12141b5380ec61945770690fc1ae31d92b0 + unpetrify-ref: 1.5.0 +- name: mixlib-config-2.1.0 + morph: unmaintained/strata/chef/mixlib-config-2.1.0.morph + repo: upstream:ruby-gems/mixlib-config + ref: c5e2dee2beb5fdd17442ff92e520f2ef01d17ee5 + unpetrify-ref: v2.1.0 +- name: mixlib-log-1.6.0 + morph: unmaintained/strata/chef/mixlib-log-1.6.0.morph + repo: upstream:ruby-gems/mixlib-log + ref: 50ec55964ce19d3a8a14050be9a23c4b8990e2f0 + unpetrify-ref: master +- name: mixlib-shellout-1.4.0 + morph: unmaintained/strata/chef/mixlib-shellout-1.4.0.morph + repo: upstream:ruby-gems/mixlib-shellout + ref: a04ce6db22edf0575c50e18ae2db09adced7dedc + unpetrify-ref: 1.4.0 +- name: net-dhcp-1.2.1 + morph: unmaintained/strata/chef/net-dhcp-1.2.1.morph + repo: upstream:net-dhcp-ruby + ref: b644922a08aa09e2ce75f8f9f9fa1f0b8cecb2e9 + unpetrify-ref: v1.2.1 +- name: net-ssh-2.9.1 + morph: unmaintained/strata/chef/net-ssh-2.9.1.morph + repo: upstream:ruby-gems/net-ssh + ref: 9f8607984d8e904f211cc5edb39ab2a2ca94008e + unpetrify-ref: v2.9.1 +- name: net-ssh-gateway-1.2.0 + morph: unmaintained/strata/chef/net-ssh-gateway-1.2.0.morph + repo: upstream:ruby-gems/net-ssh-gateway + ref: 1de7611a7f7cedbe7a4c6cf3798c88d00637582d + unpetrify-ref: v1.2.0 +- name: net-ssh-multi-1.2.0 + morph: unmaintained/strata/chef/net-ssh-multi-1.2.0.morph + repo: upstream:ruby-gems/net-ssh-multi + ref: b659f2884b2c9abdbe3bbf3c844937a0799ed5ac + unpetrify-ref: v1.2.0 +- name: ohai-7.4.0.dev + morph: unmaintained/strata/chef/ohai-7.4.0.dev.morph + repo: upstream:ruby-gems/ohai + ref: 0bf2ed32744445a253082910ee4e07b2b38023a7 + unpetrify-ref: master +- name: plist-master + morph: unmaintained/strata/chef/plist-master.morph + repo: upstream:ruby-gems/plist + ref: 12eb82d283cab148183c37c07e3f75a309969dec + unpetrify-ref: master +- name: pry-0.10.1 + morph: unmaintained/strata/chef/pry-0.10.1.morph + repo: upstream:ruby-gems/pry + ref: 6d5eb0831b50ec729d2dc3356255b49535535e37 + unpetrify-ref: master +- name: rack-1.5.2 + morph: unmaintained/strata/chef/rack-1.5.2.morph + repo: upstream:ruby-gems/rack + ref: ac590d055c936bb9a618e955a690dc836c625211 + unpetrify-ref: 1.5.2 +- name: slop-3.6.0 + morph: unmaintained/strata/chef/slop-3.6.0.morph + repo: upstream:ruby-gems/slop + ref: c3f84e7e794004f9ae6958c13ef3dd3038c2c0eb + unpetrify-ref: v3.6.0 +- name: systemu-2.6.4 + morph: unmaintained/strata/chef/systemu-2.6.4.morph + repo: upstream:ruby-gems/systemu + ref: 35340f1e91941af47988b1b9d77705493b96d3db + unpetrify-ref: master +- name: wmi-lite-1.0.0 + morph: unmaintained/strata/chef/wmi-lite-1.0.0.morph + repo: upstream:ruby-gems/wmi-lite + ref: 9377836dc0a5487474038ec727f02f9b33facfa6 + unpetrify-ref: 1.0.0 +- name: libpopt + morph: unmaintained/strata/chef/libpopt.morph + repo: upstream:libpopt + ref: c224abf28f4ff9bbf292908324359cb5905addf8 + unpetrify-ref: master +- name: sgdisk + morph: unmaintained/strata/chef/sgdisk.morph + repo: upstream:sgdisk + ref: a920398fa393f9d6301b32b191bc01e086ab8bc8 + unpetrify-ref: master + build-depends: + - libpopt diff --git a/old/unmaintained/strata/chef/chef-12.0.0.alpha.0.morph b/old/unmaintained/strata/chef/chef-12.0.0.alpha.0.morph new file mode 100644 index 00000000..61c12ca0 --- /dev/null +++ b/old/unmaintained/strata/chef/chef-12.0.0.alpha.0.morph @@ -0,0 +1,20 @@ +name: chef-12.0.0.alpha.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: chef-12.0.0.alpha.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build chef.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./chef-12.0.0.alpha.0.gem +- mkdir -p "$DESTDIR"/etc +- | + cat << EOF > "$DESTDIR/etc/lsb-release" + DISTRIB_ID=Baserock + DISTRIB_CODENAME=baserock + DISTRIB_DESCRIPTION="Baserock" + EOF diff --git a/old/unmaintained/strata/chef/chef-zero-2.2.morph b/old/unmaintained/strata/chef/chef-zero-2.2.morph new file mode 100644 index 00000000..11407ae3 --- /dev/null +++ b/old/unmaintained/strata/chef/chef-zero-2.2.morph @@ -0,0 +1,13 @@ +name: chef-zero-2.2 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: chef-zero-2.2-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build chef-zero.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./chef-zero-2.2.gem diff --git a/old/unmaintained/strata/chef/coderay-1.1.0.morph b/old/unmaintained/strata/chef/coderay-1.1.0.morph new file mode 100644 index 00000000..a380b911 --- /dev/null +++ b/old/unmaintained/strata/chef/coderay-1.1.0.morph @@ -0,0 +1,13 @@ +name: coderay-1.1.0.rc1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: coderay-1.1.0.rc1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build coderay.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./coderay-1.1.0.rc1.gem diff --git a/old/unmaintained/strata/chef/diff-lcs-1.2.5.morph b/old/unmaintained/strata/chef/diff-lcs-1.2.5.morph new file mode 100644 index 00000000..3585467f --- /dev/null +++ b/old/unmaintained/strata/chef/diff-lcs-1.2.5.morph @@ -0,0 +1,13 @@ +name: diff-lcs-1.2.5 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: diff-lcs-1.2.5-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build diff-lcs.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./diff-lcs-1.2.5.gem diff --git a/old/unmaintained/strata/chef/erubis-master.morph b/old/unmaintained/strata/chef/erubis-master.morph new file mode 100644 index 00000000..05d1a9f9 --- /dev/null +++ b/old/unmaintained/strata/chef/erubis-master.morph @@ -0,0 +1,19 @@ +name: erubis-master +kind: chunk +build-system: manual +products: +- artifact: erubis-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +configure-commands: +# Manually do what it seems like the 'rook' build system would do, if it worked +# Values taken from 'Rookbook.props'. +- find -type f -exec sed -e 's/\$Release\$/2.7.0/g' -i \{} \; +- find -type f -exec sed -e 's/\$Copyright\$/copyright(c) 2006-2011 kuwata-lab.com + all rights reserved./g' -i \{} \; +build-commands: +- gem build erubis.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./erubis-2.7.0.gem diff --git a/old/unmaintained/strata/chef/ffi-1.9.3.morph b/old/unmaintained/strata/chef/ffi-1.9.3.morph new file mode 100644 index 00000000..672f0bd7 --- /dev/null +++ b/old/unmaintained/strata/chef/ffi-1.9.3.morph @@ -0,0 +1,13 @@ +name: ffi-1.9.3 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: ffi-1.9.3-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build ffi.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./ffi-1.9.3.gem diff --git a/old/unmaintained/strata/chef/ffi-yajl-1.0.2.morph b/old/unmaintained/strata/chef/ffi-yajl-1.0.2.morph new file mode 100644 index 00000000..5d3c0792 --- /dev/null +++ b/old/unmaintained/strata/chef/ffi-yajl-1.0.2.morph @@ -0,0 +1,13 @@ +name: ffi-yajl-1.0.2 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: ffi-yajl-1.0.2-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build ffi-yajl.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./ffi-yajl-1.0.2.gem diff --git a/old/unmaintained/strata/chef/hashie-2.1.2.morph b/old/unmaintained/strata/chef/hashie-2.1.2.morph new file mode 100644 index 00000000..a4fb46f6 --- /dev/null +++ b/old/unmaintained/strata/chef/hashie-2.1.2.morph @@ -0,0 +1,13 @@ +name: hashie-2.1.2 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: hashie-2.1.2-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build hashie.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./hashie-2.1.2.gem diff --git a/old/unmaintained/strata/chef/highline-1.6.21.morph b/old/unmaintained/strata/chef/highline-1.6.21.morph new file mode 100644 index 00000000..5615f6b2 --- /dev/null +++ b/old/unmaintained/strata/chef/highline-1.6.21.morph @@ -0,0 +1,13 @@ +name: highline-1.6.21 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: highline-1.6.21-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build highline.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./highline-1.6.21.gem diff --git a/old/unmaintained/strata/chef/hoe-master.morph b/old/unmaintained/strata/chef/hoe-master.morph new file mode 100644 index 00000000..1a468789 --- /dev/null +++ b/old/unmaintained/strata/chef/hoe-master.morph @@ -0,0 +1,13 @@ +name: hoe-master +kind: chunk +build-system: manual +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-3.12.0.gem diff --git a/old/unmaintained/strata/chef/ipaddress-0.8.0.morph b/old/unmaintained/strata/chef/ipaddress-0.8.0.morph new file mode 100644 index 00000000..fdaa5de6 --- /dev/null +++ b/old/unmaintained/strata/chef/ipaddress-0.8.0.morph @@ -0,0 +1,13 @@ +name: ipaddress-0.8.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: ipaddress-0.8.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build ipaddress.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./ipaddress-0.8.0.gem diff --git a/old/unmaintained/strata/chef/json-1.8.1.morph b/old/unmaintained/strata/chef/json-1.8.1.morph new file mode 100644 index 00000000..cf25abca --- /dev/null +++ b/old/unmaintained/strata/chef/json-1.8.1.morph @@ -0,0 +1,13 @@ +name: json-1.8.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: json-1.8.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build json.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./json-1.8.1.gem diff --git a/old/unmaintained/strata/chef/libpopt.morph b/old/unmaintained/strata/chef/libpopt.morph new file mode 100644 index 00000000..6adde30c --- /dev/null +++ b/old/unmaintained/strata/chef/libpopt.morph @@ -0,0 +1,6 @@ +name: libpopt +kind: chunk +build-system: autotools +configure-commands: +- autoreconf -if +- ./configure diff --git a/old/unmaintained/strata/chef/libyajl2-1.0.1.morph b/old/unmaintained/strata/chef/libyajl2-1.0.1.morph new file mode 100644 index 00000000..7a21831d --- /dev/null +++ b/old/unmaintained/strata/chef/libyajl2-1.0.1.morph @@ -0,0 +1,13 @@ +name: libyajl2-1.0.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: libyajl2-1.0.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- USE_SYSTEM_LIBYAJL2=yes gem build libyajl2.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- USE_SYSTEM_LIBYAJL2=yes gem install --install-dir "$DESTDIR/$(gem environment home)" + --bindir "$DESTDIR/$PREFIX/bin" --ignore-dependencies --local ./libyajl2-1.0.1.gem diff --git a/old/unmaintained/strata/chef/method_source-0.8.2.morph b/old/unmaintained/strata/chef/method_source-0.8.2.morph new file mode 100644 index 00000000..5ba20da6 --- /dev/null +++ b/old/unmaintained/strata/chef/method_source-0.8.2.morph @@ -0,0 +1,13 @@ +name: method_source-0.8.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: method_source-0.8.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build method_source.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./method_source-0.8.1.gem diff --git a/old/unmaintained/strata/chef/mime-types-1.25.1.morph b/old/unmaintained/strata/chef/mime-types-1.25.1.morph new file mode 100644 index 00000000..453c42d5 --- /dev/null +++ b/old/unmaintained/strata/chef/mime-types-1.25.1.morph @@ -0,0 +1,13 @@ +name: mime-types-1.25.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mime-types-1.25.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mime-types.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mime-types-1.25.1.gem diff --git a/old/unmaintained/strata/chef/mixlib-authentication-1.3.0.morph b/old/unmaintained/strata/chef/mixlib-authentication-1.3.0.morph new file mode 100644 index 00000000..8792ff2c --- /dev/null +++ b/old/unmaintained/strata/chef/mixlib-authentication-1.3.0.morph @@ -0,0 +1,13 @@ +name: mixlib-authentication-1.3.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mixlib-authentication-1.3.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mixlib-authentication.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mixlib-authentication-1.3.0.gem diff --git a/old/unmaintained/strata/chef/mixlib-cli-1.5.0.morph b/old/unmaintained/strata/chef/mixlib-cli-1.5.0.morph new file mode 100644 index 00000000..84f3a4b7 --- /dev/null +++ b/old/unmaintained/strata/chef/mixlib-cli-1.5.0.morph @@ -0,0 +1,13 @@ +name: mixlib-cli-1.5.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mixlib-cli-1.5.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mixlib-cli.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mixlib-cli-1.5.0.gem diff --git a/old/unmaintained/strata/chef/mixlib-config-2.1.0.morph b/old/unmaintained/strata/chef/mixlib-config-2.1.0.morph new file mode 100644 index 00000000..cc6077a5 --- /dev/null +++ b/old/unmaintained/strata/chef/mixlib-config-2.1.0.morph @@ -0,0 +1,13 @@ +name: mixlib-config-2.1.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mixlib-config-2.1.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mixlib-config.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mixlib-config-2.1.0.gem diff --git a/old/unmaintained/strata/chef/mixlib-log-1.6.0.morph b/old/unmaintained/strata/chef/mixlib-log-1.6.0.morph new file mode 100644 index 00000000..ddd956c1 --- /dev/null +++ b/old/unmaintained/strata/chef/mixlib-log-1.6.0.morph @@ -0,0 +1,13 @@ +name: mixlib-log-1.6.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mixlib-log-1.6.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mixlib-log.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mixlib-log-1.6.0.gem diff --git a/old/unmaintained/strata/chef/mixlib-shellout-1.4.0.morph b/old/unmaintained/strata/chef/mixlib-shellout-1.4.0.morph new file mode 100644 index 00000000..7087c1c6 --- /dev/null +++ b/old/unmaintained/strata/chef/mixlib-shellout-1.4.0.morph @@ -0,0 +1,13 @@ +name: mixlib-shellout-1.4.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: mixlib-shellout-1.4.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build mixlib-shellout.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./mixlib-shellout-1.4.0.gem diff --git a/old/unmaintained/strata/chef/net-dhcp-1.2.1.morph b/old/unmaintained/strata/chef/net-dhcp-1.2.1.morph new file mode 100644 index 00000000..88eb4963 --- /dev/null +++ b/old/unmaintained/strata/chef/net-dhcp-1.2.1.morph @@ -0,0 +1,13 @@ +name: net-dhcp-1.2.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: net-dhcp-1.2.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build net-dhcp.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./net-dhcp-1.2.1.gem diff --git a/old/unmaintained/strata/chef/net-ssh-2.9.1.morph b/old/unmaintained/strata/chef/net-ssh-2.9.1.morph new file mode 100644 index 00000000..c06495d5 --- /dev/null +++ b/old/unmaintained/strata/chef/net-ssh-2.9.1.morph @@ -0,0 +1,15 @@ +name: net-ssh-2.9.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: net-ssh-2.9.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +configure-commands: +- sed -e '/cert_chain\s*=/d' -e '/signing_key\s*=/d' -i net-ssh.gemspec +build-commands: +- gem build net-ssh.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./net-ssh-2.9.1.gem diff --git a/old/unmaintained/strata/chef/net-ssh-gateway-1.2.0.morph b/old/unmaintained/strata/chef/net-ssh-gateway-1.2.0.morph new file mode 100644 index 00000000..c0425002 --- /dev/null +++ b/old/unmaintained/strata/chef/net-ssh-gateway-1.2.0.morph @@ -0,0 +1,15 @@ +name: net-ssh-gateway-1.2.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: net-ssh-gateway-1.2.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +configure-commands: +- sed -e '/cert_chain\s*=/d' -e '/signing_key\s*=/d' -i net-ssh-gateway.gemspec +build-commands: +- gem build net-ssh-gateway.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./net-ssh-gateway-1.2.0.gem diff --git a/old/unmaintained/strata/chef/net-ssh-multi-1.2.0.morph b/old/unmaintained/strata/chef/net-ssh-multi-1.2.0.morph new file mode 100644 index 00000000..fc433a37 --- /dev/null +++ b/old/unmaintained/strata/chef/net-ssh-multi-1.2.0.morph @@ -0,0 +1,15 @@ +name: net-ssh-multi-1.2.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: net-ssh-multi-1.2.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +configure-commands: +- sed -e '/cert_chain\s*=/d' -e '/signing_key\s*=/d' -i net-ssh-multi.gemspec +build-commands: +- gem build net-ssh-multi.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./net-ssh-multi-1.2.0.gem diff --git a/old/unmaintained/strata/chef/ohai-7.4.0.dev.morph b/old/unmaintained/strata/chef/ohai-7.4.0.dev.morph new file mode 100644 index 00000000..f47dda35 --- /dev/null +++ b/old/unmaintained/strata/chef/ohai-7.4.0.dev.morph @@ -0,0 +1,13 @@ +name: ohai-7.4.0.dev +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: ohai-7.4.0.dev-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build ohai.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./ohai-7.4.0.dev.gem diff --git a/old/unmaintained/strata/chef/plist-master.morph b/old/unmaintained/strata/chef/plist-master.morph new file mode 100644 index 00000000..7cf7cbb6 --- /dev/null +++ b/old/unmaintained/strata/chef/plist-master.morph @@ -0,0 +1,13 @@ +name: plist-master +kind: chunk +build-system: manual +products: +- artifact: plist-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/plist-3.1.0.gem diff --git a/old/unmaintained/strata/chef/pry-0.10.1.morph b/old/unmaintained/strata/chef/pry-0.10.1.morph new file mode 100644 index 00000000..07ebca7a --- /dev/null +++ b/old/unmaintained/strata/chef/pry-0.10.1.morph @@ -0,0 +1,13 @@ +name: pry-0.10.1 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: pry-0.10.1-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build pry.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./pry-0.10.1.gem diff --git a/old/unmaintained/strata/chef/rack-1.5.2.morph b/old/unmaintained/strata/chef/rack-1.5.2.morph new file mode 100644 index 00000000..50fd960c --- /dev/null +++ b/old/unmaintained/strata/chef/rack-1.5.2.morph @@ -0,0 +1,13 @@ +name: rack-1.5.2 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: rack-1.5.2-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build rack.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./rack-1.5.2.gem diff --git a/old/unmaintained/strata/chef/sgdisk.morph b/old/unmaintained/strata/chef/sgdisk.morph new file mode 100644 index 00000000..e792f9d9 --- /dev/null +++ b/old/unmaintained/strata/chef/sgdisk.morph @@ -0,0 +1,7 @@ +name: sgdisk +kind: chunk +build-commands: +- make +install-commands: +- install -D -m 0755 -o root -g root sgdisk "$DESTDIR$PREFIX/bin/sgdisk" + diff --git a/old/unmaintained/strata/chef/slop-3.6.0.morph b/old/unmaintained/strata/chef/slop-3.6.0.morph new file mode 100644 index 00000000..32101078 --- /dev/null +++ b/old/unmaintained/strata/chef/slop-3.6.0.morph @@ -0,0 +1,13 @@ +name: slop-3.6.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: slop-3.6.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build slop.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./slop-3.6.0.gem diff --git a/old/unmaintained/strata/chef/systemu-2.6.4.morph b/old/unmaintained/strata/chef/systemu-2.6.4.morph new file mode 100644 index 00000000..3cc0a5e2 --- /dev/null +++ b/old/unmaintained/strata/chef/systemu-2.6.4.morph @@ -0,0 +1,13 @@ +name: systemu-2.6.4 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: systemu-2.6.4-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build systemu.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./systemu-2.6.4.gem diff --git a/old/unmaintained/strata/chef/wmi-lite-1.0.0.morph b/old/unmaintained/strata/chef/wmi-lite-1.0.0.morph new file mode 100644 index 00000000..bb4b4127 --- /dev/null +++ b/old/unmaintained/strata/chef/wmi-lite-1.0.0.morph @@ -0,0 +1,13 @@ +name: wmi-lite-1.0.0 +kind: chunk +description: Automatically generated by rubygems.to_chunk +products: +- artifact: wmi-lite-1.0.0-doc + include: + - usr/lib/ruby/gems/\d[\w.]*/doc/.* +build-commands: +- gem build wmi-lite.gemspec +install-commands: +- mkdir -p "$DESTDIR/$(gem environment home)" +- gem install --install-dir "$DESTDIR/$(gem environment home)" --bindir "$DESTDIR/$PREFIX/bin" + --ignore-dependencies --local ./wmi-lite-1.0.0.gem diff --git a/old/unmaintained/strata/chef/yajl.morph b/old/unmaintained/strata/chef/yajl.morph new file mode 100644 index 00000000..9dbc8dbf --- /dev/null +++ b/old/unmaintained/strata/chef/yajl.morph @@ -0,0 +1,6 @@ +name: yajl +kind: chunk +description: YAJL JSON parsing library +build-system: cmake +max-jobs: 1 + diff --git a/old/unmaintained/strata/cxmanage.morph b/old/unmaintained/strata/cxmanage.morph new file mode 100644 index 00000000..e991794e --- /dev/null +++ b/old/unmaintained/strata/cxmanage.morph @@ -0,0 +1,36 @@ +name: cxmanage +kind: stratum +description: All the tools for calxeda management +build-depends: +- morph: strata/tools.morph +chunks: +- name: ipmitool + repo: upstream:ipmitool + ref: 830d5a3787b265e5dde154d2f0e08b10ae9a7bcd + unpetrify-ref: baserock/morph + build-system: autotools +- name: pexpect + morph: unmaintained/strata/cxmanage/pexpect.morph + repo: upstream:pexpect + ref: 7a8455f21bb45020f3594c59fc8c85cf738e147c + unpetrify-ref: baserock/morph +- name: pyipmi + repo: upstream:pyipmi + ref: bb7dba84578c05ba87db3c4186a2989c89e4e519 + unpetrify-ref: baserock/morph + build-system: python-distutils +- name: tftpy + repo: upstream:tftpy + ref: f3d2fc4c62c1e64dd49adfaf8e65097eb8ea307b + unpetrify-ref: baserock/morph + build-system: python-distutils +- name: cxmanage + repo: upstream:cxmanage + ref: 54116d3c486ed7aa49f284e4cad9e6e7c293bea6 + unpetrify-ref: baserock/morph + build-system: python-distutils + build-depends: + - ipmitool + - pexpect + - pyipmi + - tftpy diff --git a/old/unmaintained/strata/cxmanage/pexpect.morph b/old/unmaintained/strata/cxmanage/pexpect.morph new file mode 100644 index 00000000..09254350 --- /dev/null +++ b/old/unmaintained/strata/cxmanage/pexpect.morph @@ -0,0 +1,10 @@ +name: pexpect +kind: chunk +description: | + Pexpect is a pure Python module that accomplishes behaviour similar to Expect +configure-commands: +- cd pexpect && make +build-commands: +- cd pexpect && python setup.py build +install-commands: +- cd pexpect && python setup.py install --prefix "$PREFIX" --root "$DESTDIR" diff --git a/old/unmaintained/strata/databases.morph b/old/unmaintained/strata/databases.morph new file mode 100644 index 00000000..2a47296c --- /dev/null +++ b/old/unmaintained/strata/databases.morph @@ -0,0 +1,35 @@ +name: databases +kind: stratum +description: some popular databases and some utils related to databases +build-depends: +- morph: strata/tools.morph +- morph: strata/nfs.morph +- morph: strata/python2-core.morph +chunks: +- name: postgresql + repo: upstream:postgresql + ref: d4f8dde3c1c2c90c723ab550e7f449fc75599316 + unpetrify-ref: REL9_3_4 + build-system: autotools +- name: redis + morph: unmaintained/strata/databases/redis.morph + repo: upstream:redis + ref: 9ee59fca9c5c429185d35779c2d5db64005091b0 + unpetrify-ref: baserock/3.0 +- name: memcached + morph: unmaintained/strata/databases/memcached.morph + repo: upstream:memcached + ref: c5530027c8ea28674358327ab8212ebaf014c848 + unpetrify-ref: 1.4.22 +- name: psycopg2 + repo: upstream:python-packages/psycopg2 + ref: 00cafbe85bb82d85cbfe0f062a73c562433b5bc8 + unpetrify-ref: 2.5.4 + build-system: python-distutils + build-depends: + - postgresql +- name: python-memcached + repo: upstream:python-packages/python-memcached + ref: 156ee975ff6e5c69e1d6c58b09bedf03c182c5db + unpetrify-ref: master + build-system: python-distutils diff --git a/old/unmaintained/strata/databases/memcached.morph b/old/unmaintained/strata/databases/memcached.morph new file mode 100644 index 00000000..e81a8be1 --- /dev/null +++ b/old/unmaintained/strata/databases/memcached.morph @@ -0,0 +1,21 @@ +name: memcached +kind: chunk +build-system: autotools +configure-commands: +- perl version.pl +- touch README +- autoreconf -fvi +- ./configure --prefix="$PREFIX" +install-commands: +- make install +- install -D -m 644 scripts/memcached.service "$DESTDIR$PREFIX"/lib/systemd/system/memcached.service +post-install-commands: +- mkdir -p "$DESTDIR"/etc/sysconfig +- | + cat < "$DESTDIR"/etc/sysconfig/memcached + PORT="11211" + USER="nobody" + MAXCONN="1024" + CACHESIZE="64" + OPTIONS="" + EOF diff --git a/old/unmaintained/strata/databases/redis.morph b/old/unmaintained/strata/databases/redis.morph new file mode 100644 index 00000000..51f602dd --- /dev/null +++ b/old/unmaintained/strata/databases/redis.morph @@ -0,0 +1,6 @@ +name: redis +kind: chunk +build-commands: +- make +install-commands: +- make PREFIX="$DESTDIR/$PREFIX" install diff --git a/old/unmaintained/strata/django.morph b/old/unmaintained/strata/django.morph new file mode 100644 index 00000000..01f471f2 --- /dev/null +++ b/old/unmaintained/strata/django.morph @@ -0,0 +1,37 @@ +name: django +kind: stratum +description: Stratum with Django and its plugins and dependencies. +build-depends: +- morph: strata/foundation.morph +- morph: strata/python2-core.morph +chunks: +- name: django + repo: upstream:python-packages/django + ref: 811508b0512d3fa6b2328f8647fbf9eace68eceb + unpetrify-ref: 1.6.8 + build-system: python-distutils +- name: django-appconf + repo: upstream:python-packages/django-appconf + ref: 0c9835f95b44db1b3eb1a9409f95a3ecd63b8ff5 + unpetrify-ref: "0.6" + build-system: python-distutils +- name: django-compressor + repo: upstream:python-packages/django-compressor + ref: e747dce3d7e04fe595bbfed54f9554c2725eb757 + unpetrify-ref: "1.4" + build-system: python-distutils + build-depends: + - django-appconf +- name: pyscss + repo: upstream:python-packages/pyscss + ref: 85e8806e39e840c4402ee813c3e38fefaf9212b4 + unpetrify-ref: 1.2.1 + build-system: python-distutils +- name: django-pyscss + repo: upstream:python-packages/django-pyscss + ref: 665270b54eea5de5aca379a78673b411ed6b1f04 + unpetrify-ref: v1.0.6 + build-system: python-distutils + build-depends: + - django + - pyscss diff --git a/old/unmaintained/strata/enlightenment.morph b/old/unmaintained/strata/enlightenment.morph new file mode 100644 index 00000000..baba8622 --- /dev/null +++ b/old/unmaintained/strata/enlightenment.morph @@ -0,0 +1,80 @@ +name: enlightenment +kind: stratum +description: Enlightenment Desktop and Window Manager +build-depends: +- morph: strata/tools.morph +- morph: strata/x-generic.morph +- morph: unmaintained/strata/lua51.morph +- morph: strata/bluetooth.morph +- morph: strata/multimedia-gstreamer.morph +- morph: strata/connman-common.morph +chunks: +- name: fribidi + repo: upstream:fribidi + ref: c9916f2ab289126a32febcc4754efc73a011fb0c + unpetrify-ref: baserock/morph/0.19.6 + build-system: autotools +- name: bullet3 + morph: unmaintained/strata/enlightenment/bullet3.morph + repo: upstream:bullet3 + ref: 940059ddb3c4476bb9860f79f35b0b1230857f54 + unpetrify-ref: baserock/morph +- name: efl + morph: unmaintained/strata/enlightenment/efl.morph + repo: upstream:enlightenment/efl + ref: 3013a7c5cbd728dd9bc5516ffb4bd4f505888bd4 + unpetrify-ref: v1.12.0 + build-depends: + - bullet3 + - fribidi +- name: elementary + morph: unmaintained/strata/enlightenment/elementary.morph + repo: upstream:enlightenment/elementary + ref: c4fbbbf984b7bd1553191c26459bce4589122ad5 + unpetrify-ref: v1.12.0 + build-depends: + - efl +- name: evas_generic_loaders + morph: unmaintained/strata/enlightenment/evas_generic_loaders.morph + repo: upstream:enlightenment/evas_generic_loaders + ref: 5d4415ec1e64930452f7d17cbec4c28a0efa8402 + unpetrify-ref: v1.12.0 + build-depends: + - efl +- name: enlightenment + morph: unmaintained/strata/enlightenment/enlightenment.morph + repo: upstream:enlightenment/enlightenment + ref: 55165e2576823780a1053b03c5230cc8df8957b5 + unpetrify-ref: v0.19.1 + build-depends: + - efl + - elementary +- name: imlib2 + morph: unmaintained/strata/enlightenment/imlib2.morph + repo: upstream:enlightenment/imlib2 + ref: f2f20dc5791a175be398a17fcdc4852a79079d47 + unpetrify-ref: baserock/1.4.6 + build-depends: + - efl + - elementary + - enlightenment +- name: libast + morph: unmaintained/strata/enlightenment/libast.morph + repo: upstream:enlightenment/libast + ref: 0dbc0a5df55474bf61ca166be40e8de2d9e3a031 + build-depends: + - efl + - elementary + - enlightenment + - imlib2 +- name: eterm + morph: unmaintained/strata/enlightenment/eterm.morph + repo: upstream:enlightenment/eterm + ref: 097234f1f27709ff2444e303350764ea3b80b3ad + unpetrify-ref: baserock/morph + build-depends: + - efl + - elementary + - enlightenment + - libast + - imlib2 diff --git a/old/unmaintained/strata/enlightenment/bullet3.morph b/old/unmaintained/strata/enlightenment/bullet3.morph new file mode 100644 index 00000000..357e1f67 --- /dev/null +++ b/old/unmaintained/strata/enlightenment/bullet3.morph @@ -0,0 +1,8 @@ +name: bullet3 +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/old/unmaintained/strata/enlightenment/efl.morph b/old/unmaintained/strata/enlightenment/efl.morph new file mode 100644 index 00000000..b2a013ae --- /dev/null +++ b/old/unmaintained/strata/enlightenment/efl.morph @@ -0,0 +1,9 @@ +name: efl +kind: chunk +configure-commands: +- ./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: +- make DESTDIR="$DESTDIR" VPATH=/usr/lib64 install diff --git a/old/unmaintained/strata/enlightenment/elementary.morph b/old/unmaintained/strata/enlightenment/elementary.morph new file mode 100644 index 00000000..3c0bda0d --- /dev/null +++ b/old/unmaintained/strata/enlightenment/elementary.morph @@ -0,0 +1,8 @@ +name: elementary +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/enlightenment/enlightenment.morph b/old/unmaintained/strata/enlightenment/enlightenment.morph new file mode 100644 index 00000000..90f0c646 --- /dev/null +++ b/old/unmaintained/strata/enlightenment/enlightenment.morph @@ -0,0 +1,8 @@ +name: enlightenment +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/enlightenment/eterm.morph b/old/unmaintained/strata/enlightenment/eterm.morph new file mode 100644 index 00000000..9a98d193 --- /dev/null +++ b/old/unmaintained/strata/enlightenment/eterm.morph @@ -0,0 +1,8 @@ +name: eterm +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/enlightenment/evas_generic_loaders.morph b/old/unmaintained/strata/enlightenment/evas_generic_loaders.morph new file mode 100644 index 00000000..ef36a40b --- /dev/null +++ b/old/unmaintained/strata/enlightenment/evas_generic_loaders.morph @@ -0,0 +1,8 @@ +name: evas_generic_loaders +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/enlightenment/imlib2.morph b/old/unmaintained/strata/enlightenment/imlib2.morph new file mode 100644 index 00000000..82617ad2 --- /dev/null +++ b/old/unmaintained/strata/enlightenment/imlib2.morph @@ -0,0 +1,8 @@ +name: imlib2 +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/enlightenment/libast.morph b/old/unmaintained/strata/enlightenment/libast.morph new file mode 100644 index 00000000..c44e274c --- /dev/null +++ b/old/unmaintained/strata/enlightenment/libast.morph @@ -0,0 +1,8 @@ +name: libast +kind: chunk +configure-commands: +- ./autogen.sh --prefix=/usr +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/java.morph b/old/unmaintained/strata/java.morph new file mode 100644 index 00000000..05f7a925 --- /dev/null +++ b/old/unmaintained/strata/java.morph @@ -0,0 +1,22 @@ +name: java +kind: stratum +description: | + This stratum contains everything necessary to compile and run Java applications + and build OpenJDK from source. +build-depends: +- morph: strata/core.morph +- morph: strata/x-common.morph +- morph: strata/graphics-common.morph +chunks: +- name: java-binary + morph: unmaintained/strata/java/java-binary.morph + repo: github:jmacarthur/openjdk-binary + ref: 6f53762e2632c4b9f9afdfa6995a2c696bb9fd43 + unpetrify-ref: master +- name: java-ant + morph: unmaintained/strata/java/java-ant.morph + repo: upstream:java/ant + ref: b3509fc3250b0f868076c846d29da80cbdc20681 + unpetrify-ref: ANT_194 + build-depends: + - java-binary diff --git a/old/unmaintained/strata/java/java-ant.morph b/old/unmaintained/strata/java/java-ant.morph new file mode 100644 index 00000000..13c490d4 --- /dev/null +++ b/old/unmaintained/strata/java/java-ant.morph @@ -0,0 +1,8 @@ +name: java-ant +kind: chunk +build-commands: +- | + export JAVA_HOME=/usr/lib/java-8-openjdk + sh build.sh -Ddist.dir="$DESTDIR/usr/lib/ant" dist +- mkdir -p "${DESTDIR}${PREFIX}/bin" +- ln -sf "${PREFIX}/lib/ant/bin/ant" "${DESTDIR}${PREFIX}/bin/ant" diff --git a/old/unmaintained/strata/java/java-binary.morph b/old/unmaintained/strata/java/java-binary.morph new file mode 100644 index 00000000..c75f39b7 --- /dev/null +++ b/old/unmaintained/strata/java/java-binary.morph @@ -0,0 +1,16 @@ +name: java-binary +description: | + This is a temporary solution to the OpenJDK build problem. In the future + we expect to be able to build fully from scratch using IcedTea, but for now + we need an existing OpenJDK binary to build OpenJDK. +kind: chunk +configure-commands: [] +build-commands: +- cat j2sdk-image-jdk8build.tar.gz_* > jdk-8u20-linux-x64.tar.gz +install-commands: +- mkdir -p "$DESTDIR$PREFIX"/bin +- mkdir -p "$DESTDIR$PREFIX"/lib +- tar zxf jdk-8u20-linux-x64.tar.gz -C "$DESTDIR$PREFIX"/lib --no-same-owner +- ln -sfn "$PREFIX"/lib/j2sdk-image "$DESTDIR$PREFIX"/lib/java-8-openjdk +- ln -sfn "$PREFIX"/lib/j2sdk-image/jre/bin/java "$DESTDIR$PREFIX"/bin/ +- ln -sfn "$PREFIX"/lib/j2sdk-image/jre/bin/javac "$DESTDIR$PREFIX"/bin/ diff --git a/old/unmaintained/strata/lua51.morph b/old/unmaintained/strata/lua51.morph new file mode 100644 index 00000000..d497cf8a --- /dev/null +++ b/old/unmaintained/strata/lua51.morph @@ -0,0 +1,16 @@ +name: lua51 +kind: stratum +description: Interpreter for the lua scripting language. +build-depends: +- morph: strata/tools.morph +chunks: +- name: lua51 + morph: unmaintained/strata/lua51/lua51.morph + repo: upstream:lua + ref: 948063437e0350d9ef1649ec3a76d0c24a5c8642 + unpetrify-ref: baserock/5.1-morph +- name: luajit2 + morph: unmaintained/strata/lua51/luajit2.morph + repo: upstream:luajit2 + ref: 880ca300e8fb7b432b9d25ed377db2102e4cb63d + unpetrify-ref: v2.0.3 diff --git a/old/unmaintained/strata/lua51/lua51.morph b/old/unmaintained/strata/lua51/lua51.morph new file mode 100644 index 00000000..c8f7daa4 --- /dev/null +++ b/old/unmaintained/strata/lua51/lua51.morph @@ -0,0 +1,11 @@ +name: lua51 +kind: chunk +configure-commands: +- sed -e 's/defined(LUA_USE_READLINE)/0/g' src/luaconf.h.orig >src/luaconf.h +- sed -i -e '/^linux:/{n;s/-lreadline//g;s/-lhistory//g;s/-lncurses//g}' src/Makefile +build-commands: +- make debian_linux INSTALL_TOP="$PREFIX" RPATH="$PREFIX/lib" +install-commands: +- make INSTALL_TOP="$DESTDIR/$PREFIX" debian_install +- mkdir -p "$DESTDIR/$PREFIX/lib/pkgconfig" +- cp lua5.1.pc "$DESTDIR/$PREFIX/lib/pkgconfig/" diff --git a/old/unmaintained/strata/lua51/luajit2.morph b/old/unmaintained/strata/lua51/luajit2.morph new file mode 100644 index 00000000..72f34f02 --- /dev/null +++ b/old/unmaintained/strata/lua51/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/old/unmaintained/strata/lvm.morph b/old/unmaintained/strata/lvm.morph new file mode 100644 index 00000000..aa68dd50 --- /dev/null +++ b/old/unmaintained/strata/lvm.morph @@ -0,0 +1,15 @@ +name: lvm +kind: stratum +description: | + LVM userland tools. + + LVM is a logical volume manager for the Linux kernel. This stratum contains + the tools necessary to manage volumes with LVM. +build-depends: +- morph: strata/foundation.morph +chunks: +- name: lvm2 + morph: unmaintained/strata/lvm/lvm2.morph + repo: upstream:lvm2 + ref: fa01faaa4aa96de834ba7e8fbb9d9aff908571c3 + unpetrify-ref: v2_02_115 diff --git a/old/unmaintained/strata/lvm/lvm2.morph b/old/unmaintained/strata/lvm/lvm2.morph new file mode 100644 index 00000000..d9633bb9 --- /dev/null +++ b/old/unmaintained/strata/lvm/lvm2.morph @@ -0,0 +1,32 @@ +name: lvm2 +kind: chunk +build-system: autotools + +configure-commands: +# We specify --sbindir explicitly due to a bug in .service file generation: +# if left to the default, @sbindir@ is expanded to the literal string +# '${exec_prefix}/sbin' in the generated .service files. +# +# udev rules *must* go in wherever Systemd is configured to look at. We don't expect +# Systemd to change anymore. +- | + ./configure --prefix="$PREFIX" \ + --sbindir="$PREFIX"/sbin \ + --with-udev-prefix="$PREFIX" \ + --with-systemdsystemunitdir="$PREFIX"/lib/systemd/system \ + --enable-applib --enable-cmdlib --enable-pkgconfig --enable-lvmetad \ + --enable-dmeventd --enable-udev_sync + +install-commands: +- make DESTDIR="$DESTDIR" install +- make DESTDIR="$DESTDIR" install_system_dirs +- make DESTDIR="$DESTDIR" install_systemd_generators +- make DESTDIR="$DESTDIR" install_systemd_units +- make DESTDIR="$DESTDIR" install_tmpfiles_configuration + +# Use lvmetad by default. This means we don't have to use the +# `lvm2-activation-generator` systemd generator, which is a good thing +# because I have seen it cause systems to completely fail to boot. Fedora +# does something similar, see: +# http://pkgs.fedoraproject.org/cgit/lvm2.git/tree/lvm2-enable-lvmetad-by-default.patch +- sed -e 's/use_lvmetad = 0/use_lvmetad = 1/' -i "$DESTDIR"/etc/lvm/lvm.conf diff --git a/old/unmaintained/strata/multimedia-gstreamer-0.10.morph b/old/unmaintained/strata/multimedia-gstreamer-0.10.morph new file mode 100644 index 00000000..3778070b --- /dev/null +++ b/old/unmaintained/strata/multimedia-gstreamer-0.10.morph @@ -0,0 +1,38 @@ +name: multimedia-gstreamer-0.10 +kind: stratum +description: Codecs +build-depends: +- morph: strata/core.morph +- morph: strata/foundation.morph +- morph: strata/multimedia-common.morph +- morph: strata/sound-server-pulseaudio.morph +chunks: +- name: gstreamer@0.10 + repo: upstream:gstreamer + ref: 76fc67b18c38e7f6c9cfacc4e4d0ed11d3b2c548 + unpetrify-ref: "0.10" + build-system: autotools + submodules: + common: + url: upstream:gstreamer-common +- name: gstreamer-plugins-base@0.10 + repo: upstream:gstreamer-plugins-base + morph: unmaintained/strata/multimedia-gstreamer-0.10/gstreamer-plugins-base@0.10.morph + ref: 1e1e6eaf3f0dd11f6618154d9739cbe3e007d206 + unpetrify-ref: "0.10" + build-depends: + - gstreamer@0.10 + submodules: + common: + url: upstream:gstreamer-common +- name: gstreamer-plugins-good@0.10 + repo: upstream:gstreamer-plugins-good + ref: 43185275636cf1b52cc12b52fe6dbbc6886f6347 + unpetrify-ref: baserock/0.10+v4l_fix + build-system: autotools + build-depends: + - gstreamer@0.10 + - gstreamer-plugins-base@0.10 + submodules: + common: + url: upstream:gstreamer-common diff --git a/old/unmaintained/strata/multimedia-gstreamer-0.10/gstreamer-plugins-base@0.10.morph b/old/unmaintained/strata/multimedia-gstreamer-0.10/gstreamer-plugins-base@0.10.morph new file mode 100644 index 00000000..b5586fd9 --- /dev/null +++ b/old/unmaintained/strata/multimedia-gstreamer-0.10/gstreamer-plugins-base@0.10.morph @@ -0,0 +1,14 @@ +name: gstreamer-plugins-base@0.10 +kind: chunk +build-system: autotools +configure-commands: +- | + NOCONFIGURE=1 ./autogen.sh + + case "$MORPH_ARCH" in + x86_32) + sed -i -e "s/-O2/& -msse2/" configure + ;; + esac + + ./configure --prefix="$PREFIX" --sysconfdir=/etc --localstatedir=/var --disable-gtk-doc diff --git a/old/unmaintained/strata/networking-utils.morph b/old/unmaintained/strata/networking-utils.morph new file mode 100644 index 00000000..da46c629 --- /dev/null +++ b/old/unmaintained/strata/networking-utils.morph @@ -0,0 +1,105 @@ +name: networking-utils +kind: stratum +description: | + Stratum which contains utils to works with networks: create, enable, filter... + + This stratum requires kernel config flags which are not enabled in the default + Baserock kernel found in the BSP strata. See the Openstack BSP stratum to get + an idea of what is needed. +build-depends: +- morph: strata/foundation.morph +chunks: +- name: ebtables + morph: unmaintained/strata/networking-utils/ebtables.morph + repo: upstream:ebtables + ref: f4bdc80ae8c1a79b4ab5dcb8431ad85aea618d66 + unpetrify-ref: master +- name: iproute2 + morph: unmaintained/strata/networking-utils/iproute2.morph + repo: upstream:iproute2 + ref: 50231ad2a554fcb02462bed6405c970833c1baee + unpetrify-ref: v3.17.0 +- name: libmnl + repo: upstream:libmnl + ref: c9f19b98cd8e108617e825e071091df14f78c53a + unpetrify-ref: master + build-system: autotools +- name: ipset + morph: unmaintained/strata/networking-utils/ipset.morph + repo: upstream:ipset + ref: cf25c4c50e9996af30499e5b1c3354ab53be7237 + unpetrify-ref: v6.24 + build-depends: + - libmnl +- name: libpcap + morph: unmaintained/strata/networking-utils/libpcap.morph + repo: upstream:libpcap + ref: 098a643f817e8a9929c70dfba157e4d399398375 + unpetrify-ref: libpcap-1.7 +- name: tcpdump + morph: unmaintained/strata/networking-utils/tcpdump.morph + repo: upstream:tcpdump + ref: 8aa5edea1b8846740514dee4158b6c707d38fc13 + unpetrify-ref: tcpdump-4.7 + build-depends: + - libpcap +- name: libnet + morph: unmaintained/strata/networking-utils/libnet.morph + repo: upstream:libnet + ref: 05df365769597e1d64d02af931d6127762ff2658 + unpetrify-ref: libnet-1.2 +- name: iputils + morph: unmaintained/strata/networking-utils/iputils.morph + repo: upstream:iputils + ref: d25e54e25107bc7c5d14737ed65f5f52b54f1472 + unpetrify-ref: s20140519 + build-depends: + - libpcap + - libnet +- name: libnfnetlink + morph: unmaintained/strata/networking-utils/libnfnetlink.morph + repo: upstream:libnfnetlink + ref: 1166116e34af868bc814aea338c246e49a7a8748 + unpetrify-ref: libnfnetlink-1.0.1 +- name: libnetfilter_conntrack + morph: unmaintained/strata/networking-utils/libnetfilter_conntrack.morph + repo: upstream:libnetfilter_conntrack + ref: 5ad6ecff6edffd925022372323e42264f61e850d + unpetrify-ref: libnetfilter_conntrack-1.0.4 + build-depends: + - libnfnetlink + - libmnl +- name: libnetfilter_cthelper + morph: unmaintained/strata/networking-utils/libnetfilter_cthelper.morph + repo: upstream:libnetfilter_cthelper + ref: b8df12f352db62d26e5116e960d24774d5c9f3b7 + unpetrify-ref: libnetfilter_cthelper-1.0.0 + build-depends: + - libmnl +- name: libnetfilter_cttimeout + morph: unmaintained/strata/networking-utils/libnetfilter_cttimeout.morph + repo: upstream:libnetfilter_cttimeout + ref: 329652bef21c831dae1a9a79084b999d40b4eb5b + unpetrify-ref: libnetfilter_cttimeout-1.0.0 + build-depends: + - libmnl +- name: libnetfilter_queue + morph: unmaintained/strata/networking-utils/libnetfilter_queue.morph + repo: upstream:libnetfilter_queue + ref: f5d092dd3145d427c7c2ed668e3ac899875c9612 + unpetrify-ref: libnetfilter_queue-1.0.2 + build-depends: + - libnfnetlink + - libmnl +- name: conntrack-tools + morph: unmaintained/strata/networking-utils/conntrack-tools.morph + repo: upstream:conntrack-tools + ref: fbe3181be4f2e33509b1c20b95fd55eb3e7075d7 + unpetrify-ref: conntrack-tools-1.4.2 + build-depends: + - libnfnetlink + - libmnl + - libnetfilter_conntrack + - libnetfilter_cttimeout + - libnetfilter_cthelper + - libnetfilter_queue diff --git a/old/unmaintained/strata/networking-utils/conntrack-tools.morph b/old/unmaintained/strata/networking-utils/conntrack-tools.morph new file mode 100644 index 00000000..e0ef7234 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/conntrack-tools.morph @@ -0,0 +1,4 @@ +name: conntrack-tools +kind: chunk +build-system: autotools +max-jobs: 1 diff --git a/old/unmaintained/strata/networking-utils/ebtables.morph b/old/unmaintained/strata/networking-utils/ebtables.morph new file mode 100644 index 00000000..a4d9fc76 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/ebtables.morph @@ -0,0 +1,7 @@ +name: ebtables +kind: chunk +build-system: manual +build-commands: +- make +install-commands: +- make install DESTDIR="$DESTDIR" BINDIR="$PREFIX/sbin" diff --git a/old/unmaintained/strata/networking-utils/iproute2.morph b/old/unmaintained/strata/networking-utils/iproute2.morph new file mode 100644 index 00000000..7ba04db6 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/iproute2.morph @@ -0,0 +1,10 @@ +name: iproute2 +kind: chunk +build-commands: +# arpd binary is dependent on Berkeley DB, which is licensed by Oracle +# as arpd is not needed for Openstack systems, arpd will not be compiled +# or installed. +- sed -i '/^TARGETS/s@arpd@@g' misc/Makefile +- make +install-commands: +- DESTDIR="$DESTDIR" PREFIX="$PREFIX" make install diff --git a/old/unmaintained/strata/networking-utils/ipset.morph b/old/unmaintained/strata/networking-utils/ipset.morph new file mode 100644 index 00000000..7fe8c6dc --- /dev/null +++ b/old/unmaintained/strata/networking-utils/ipset.morph @@ -0,0 +1,6 @@ +name: ipset +kind: chunk +build-system: autotools +configure-commands: +- ./autogen.sh +- ./configure --prefix="$PREFIX" --enable-static=no --with-kmod=no diff --git a/old/unmaintained/strata/networking-utils/iputils.morph b/old/unmaintained/strata/networking-utils/iputils.morph new file mode 100644 index 00000000..c9736cc8 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/iputils.morph @@ -0,0 +1,24 @@ +name: iputils +kind: chunk +build-system: manual +pre-configure-commands: +# gnutls is not currently integrated in definitions so, disabling this +# is required in order to build ping6. If this is not disabled, it will try +# to find gnutls/openssl.h header failing to compile ping6. +- sed -i "s/USE_GNUTLS=yes/USE_GNUTLS=no/" Makefile +build-commands: +- make +- make ninfod +install-commands: +- install -D -m 755 clockdiff "$DESTDIR$PREFIX"/bin/clockdiff +- install -D -m 755 rdisc "$DESTDIR$PREFIX"/bin/rdisc +- install -D -m 755 tracepath "$DESTDIR$PREFIX"/bin/tracepath +- install -D -m 755 tracepath6 "$DESTDIR$PREFIX"/bin/tracepath6 +- install -D -m 755 ninfod/ninfod "$DESTDIR$PREFIX"/bin/ninfod +- install -D -m 755 rarpd "$DESTDIR$PREFIX"/bin/rarpd +# The following binaries are installed to overwrite busybox binaries. +- install -D -m 755 traceroute6 "$DESTDIR$PREFIX"/bin/traceroute6 +- install -D -m 755 arping "$DESTDIR$PREFIX"/sbin/arping +- install -D -m 755 tftpd "$DESTDIR$PREFIX"/sbin/tftpd +- install -D -m 755 ping "$DESTDIR"/bin/ping +- install -D -m 755 ping6 "$DESTDIR"/bin/ping6 diff --git a/old/unmaintained/strata/networking-utils/libnet.morph b/old/unmaintained/strata/networking-utils/libnet.morph new file mode 100644 index 00000000..ddb2cf3e --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnet.morph @@ -0,0 +1,16 @@ +name: libnet +kind: chunk +build-system: manual +pre-configure-commands: +# Avoid building the docs as they require doxygen +- sed -i 's@doc @@' libnet/Makefile.am +- sed -i 's@doc/.*Makefile@@' libnet/configure.ac + +- cd libnet && ./autogen.sh +configure-commands: +- cd libnet && ./configure --prefix="$PREFIX" --disable-samples --enable-shared=yes + --with-pic +build-commands: +- cd libnet && make +install-commands: +- cd libnet && make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/networking-utils/libnetfilter_conntrack.morph b/old/unmaintained/strata/networking-utils/libnetfilter_conntrack.morph new file mode 100644 index 00000000..ef6ebb48 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnetfilter_conntrack.morph @@ -0,0 +1,3 @@ +name: libnetfilter_conntrack +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/libnetfilter_cthelper.morph b/old/unmaintained/strata/networking-utils/libnetfilter_cthelper.morph new file mode 100644 index 00000000..7f410a4a --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnetfilter_cthelper.morph @@ -0,0 +1,3 @@ +name: libnetfilter_cthelper +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/libnetfilter_cttimeout.morph b/old/unmaintained/strata/networking-utils/libnetfilter_cttimeout.morph new file mode 100644 index 00000000..b2281a5b --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnetfilter_cttimeout.morph @@ -0,0 +1,3 @@ +name: libnetfilter_cttimeout +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/libnetfilter_queue.morph b/old/unmaintained/strata/networking-utils/libnetfilter_queue.morph new file mode 100644 index 00000000..d2b80d38 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnetfilter_queue.morph @@ -0,0 +1,3 @@ +name: libnetfilter_queue +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/libnfnetlink.morph b/old/unmaintained/strata/networking-utils/libnfnetlink.morph new file mode 100644 index 00000000..f4fe79ab --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libnfnetlink.morph @@ -0,0 +1,3 @@ +name: libnfnetlink +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/libpcap.morph b/old/unmaintained/strata/networking-utils/libpcap.morph new file mode 100644 index 00000000..7c5ee932 --- /dev/null +++ b/old/unmaintained/strata/networking-utils/libpcap.morph @@ -0,0 +1,3 @@ +name: libpcap +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/networking-utils/tcpdump.morph b/old/unmaintained/strata/networking-utils/tcpdump.morph new file mode 100644 index 00000000..7a974dab --- /dev/null +++ b/old/unmaintained/strata/networking-utils/tcpdump.morph @@ -0,0 +1,3 @@ +name: tcpdump +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/ntpd.morph b/old/unmaintained/strata/ntpd.morph new file mode 100644 index 00000000..b4f2b857 --- /dev/null +++ b/old/unmaintained/strata/ntpd.morph @@ -0,0 +1,10 @@ +name: ntpd +kind: stratum +build-depends: +- morph: strata/foundation.morph +chunks: +- name: ntpd + morph: unmaintained/strata/ntpd/ntpd.morph + repo: upstream:ntp + ref: b2ccf8dd31d1457ae9f0ae270054117179220370 + unpetrify-ref: ntp-4.2.8p2 diff --git a/old/unmaintained/strata/ntpd/ntpd.morph b/old/unmaintained/strata/ntpd/ntpd.morph new file mode 100644 index 00000000..762762c7 --- /dev/null +++ b/old/unmaintained/strata/ntpd/ntpd.morph @@ -0,0 +1,51 @@ +name: ntpd +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --enable-linuxcaps +post-install-commands: +- | + cat > ntpd.service << EOF + [Unit] + Description=Network Time Service + After=network.target nss-lookup.target + Conflicts=systemd-timesyncd.service + + [Service] + Type=forking + ExecStart=/usr/bin/ntpd -u ntp:ntp -Ng + PrivateTmp=True + Restart=on-failure + + [Install] + WantedBy=multi-user.target + EOF +- install -D -m 644 ntpd.service "$DESTDIR"/lib/systemd/system/ntpd.service +- mkdir -p "$DESTDIR"/lib/systemd/system/multi-user.target.wants +- ln -s /lib/systemd/system/ntpd.service "$DESTDIR"/lib/systemd/system/multi-user.target.wants/ntpd.service +- | + cat > ntp.conf << EOF + # We use iburst here to reduce the potential initial delay to set the clock + server 0.pool.ntp.org iburst + server 1.pool.ntp.org iburst + server 2.pool.ntp.org iburst + server 3.pool.ntp.org iburst + + # kod - notify client when packets are denied service, + # rather than just dropping the packets + # + # nomodify - deny queries which attempt to modify the state of the server + # + # notrap - decline to provide mode 6 control message trap service to + # matching hosts + # + # see ntp.conf(5) for more details + restrict -4 default limit kod notrap nomodify + restrict -6 default limit kod notrap nomodify + EOF +- install -D -m 644 ntp.conf "$DESTDIR"/etc/ntp.conf +system-integration: + ntpd-misc: + 00-add-ntpd-user: + - groupadd -r ntp + - useradd -g ntp -d /home/ntp -s /bin/false -r ntp diff --git a/old/unmaintained/strata/ocaml-language.morph b/old/unmaintained/strata/ocaml-language.morph new file mode 100644 index 00000000..68e276cc --- /dev/null +++ b/old/unmaintained/strata/ocaml-language.morph @@ -0,0 +1,11 @@ +name: ocaml-language +kind: stratum +description: | + OCaml +build-depends: +- morph: strata/core.morph +chunks: +- name: ocaml + morph: unmaintained/strata/ocaml-language/ocaml.morph + repo: upstream:ocaml + ref: fa7961d5fada53056f38a9ae36615df26352028a diff --git a/old/unmaintained/strata/ocaml-language/ocaml.morph b/old/unmaintained/strata/ocaml-language/ocaml.morph new file mode 100644 index 00000000..00e36767 --- /dev/null +++ b/old/unmaintained/strata/ocaml-language/ocaml.morph @@ -0,0 +1,8 @@ +name: ocaml +kind: chunk +configure-commands: +- ./configure --prefix "$PREFIX" +build-commands: +- make world.opt +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/openstack-clients/appdirs.morph b/old/unmaintained/strata/openstack-clients/appdirs.morph new file mode 100644 index 00000000..53d0e476 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/appdirs.morph @@ -0,0 +1,3 @@ +name: appdirs +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/argparse.morph b/old/unmaintained/strata/openstack-clients/argparse.morph new file mode 100644 index 00000000..499df5f5 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/argparse.morph @@ -0,0 +1,3 @@ +name: argparse +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/cliff-tablib.morph b/old/unmaintained/strata/openstack-clients/cliff-tablib.morph new file mode 100644 index 00000000..4b48ba14 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/cliff-tablib.morph @@ -0,0 +1,3 @@ +name: cliff-tablib +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/os-client-config.morph b/old/unmaintained/strata/openstack-clients/os-client-config.morph new file mode 100644 index 00000000..13c473d2 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/os-client-config.morph @@ -0,0 +1,3 @@ +name: os-client-config +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/pyparsing.morph b/old/unmaintained/strata/openstack-clients/pyparsing.morph new file mode 100644 index 00000000..60088544 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/pyparsing.morph @@ -0,0 +1,6 @@ +name: pyparsing +kind: chunk +build-commands: +- cd src && python setup.py build +install-commands: +- cd src && python setup.py install --prefix "$PREFIX" --root "$DESTDIR" diff --git a/old/unmaintained/strata/openstack-clients/python-ironicclient.morph b/old/unmaintained/strata/openstack-clients/python-ironicclient.morph new file mode 100644 index 00000000..95be0bd8 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/python-ironicclient.morph @@ -0,0 +1,3 @@ +name: python-ironicclient +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/python-openstackclient.morph b/old/unmaintained/strata/openstack-clients/python-openstackclient.morph new file mode 100644 index 00000000..a4c9fae7 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/python-openstackclient.morph @@ -0,0 +1,3 @@ +name: python-openstackclient +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-clients/tablib.morph b/old/unmaintained/strata/openstack-clients/tablib.morph new file mode 100644 index 00000000..821ceb95 --- /dev/null +++ b/old/unmaintained/strata/openstack-clients/tablib.morph @@ -0,0 +1,3 @@ +name: tablib +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-services.morph b/old/unmaintained/strata/openstack-services.morph new file mode 100644 index 00000000..18592e76 --- /dev/null +++ b/old/unmaintained/strata/openstack-services.morph @@ -0,0 +1,805 @@ +name: openstack-services +kind: stratum +description: Openstack clients and services +build-depends: +- morph: strata/erlang.morph +- morph: unmaintained/strata/django.morph +- morph: unmaintained/strata/xstatic.morph +- morph: strata/openstack-clients.morph +- morph: unmaintained/strata/test-tools.morph +- morph: strata/python-tools.morph +chunks: +- name: erlang-sd_notify + morph: unmaintained/strata/openstack-services/erlang-sd_notify.morph + repo: upstream:erlang-modules/erlang-sd_notify + ref: 99f4689c2c18570680329f822591f95f9341ca10 + unpetrify-ref: '0.1' +- name: rabbitmq-codegen + morph: unmaintained/strata/openstack-services/rabbitmq-codegen.morph + ref: 4dc5ccde2a0b3d638e5754b00abf94196fe9ca32 + unpetrify-ref: rabbitmq_v3_4_1 + repo: upstream:rabbitmq-codegen +- name: rabbitmq-server + morph: unmaintained/strata/openstack-services/rabbitmq-server.morph + ref: 9afcf9b95d2c53f866e9a33ddce46562f8950ded + unpetrify-ref: baserock/master + repo: upstream:rabbitmq-server + build-depends: + - rabbitmq-codegen +- name: oslo-rootwrap + repo: upstream:openstack/oslo-rootwrap + ref: f485b93f475b119e3b8fa6c9cf740207e2d2d7ac + unpetrify-ref: 1.6.0 + build-system: python-distutils +- name: py-amqp + repo: upstream:python-packages/py-amqp + ref: 875b10d1715def640042c7ff2f42c00a6c07eed1 + unpetrify-ref: 1.4.6 + build-system: python-distutils +- name: librabbitmq + morph: unmaintained/strata/openstack-services/librabbitmq.morph + repo: upstream:python-packages/librabbitmq + ref: ecccbd2c7d92f6e189e362b26def8d980fa50e3b + unpetrify-ref: baserock/v1.6.1 + build-depends: + - py-amqp + submodules: + rabbitmq-codegen: + url: upstream:rabbitmq-codegen.git + rabbitmq-c: + url: upstream:python-packages/rabbitmq-c-github-ask.git +- name: anyjson + repo: upstream:python-packages/anyjson + ref: 016506078e94718e1fe750eb5083ab5ba07498c8 + unpetrify-ref: 0.3.3 + build-system: python-distutils +- name: kombu + repo: upstream:python-packages/kombu + ref: 0287b11ab0698d9c52ef1b1683ced23123d43ba4 + unpetrify-ref: v3.0.26 + build-system: python-distutils + build-depends: + - anyjson + - py-amqp + - librabbitmq +- name: sqlalchemy + repo: upstream:python-packages/sqlalchemy + ref: ff34c480dfd2b8b7c72339d196f5477980a5124c + unpetrify-ref: rel_0_9_8 + build-system: python-distutils +- name: alembic + repo: upstream:python-packages/alembic + ref: 6ae4196acc0170ebef29f617b49376b371a8923c + unpetrify-ref: rel_0_7_6 + build-system: python-distutils + build-depends: + - sqlalchemy +- name: lockfile + repo: upstream:python-packages/lockfile + ref: 777758cdf4520271370b3338b86b5c66f9b104f0 + unpetrify-ref: master + build-system: python-distutils +- name: dogpile-core + repo: upstream:python-packages/dogpile-core + ref: 3e6f0f86b4161b48898e656039154092426e5cc8 + unpetrify-ref: rel_0_4_1 + build-system: python-distutils +- name: dogpile-cache + repo: upstream:python-packages/dogpile-cache + ref: 1c753914b335b4391bc5847a87b7c52ca81c2bc6 + unpetrify-ref: rel_0_5_4 + build-system: python-distutils + build-depends: + - dogpile-core +- name: pyjwt + repo: upstream:python-packages/pyjwt + ref: 739efeff4c6c1fc30ab5cf5eb0ac337e8ee107d7 + unpetrify-ref: 0.2.3 + build-system: python-distutils +- name: creole + repo: upstream:python-packages/creole + ref: 6390231688adb5d8678a71cd33204e9bca555d4a + unpetrify-ref: v1.2.1 + build-system: python-distutils +- name: pygments + repo: upstream:python-packages/pygments + ref: f41e8c594e76855611b3b3dfca300894bd29f1c4 + unpetrify-ref: 2.0rc1 + build-system: python-distutils +- name: docutils + repo: upstream:python-packages/docutils + ref: 1976ba91eff979abc3e13e5d8cb68324833af6a0 + unpetrify-ref: docutils-0.12 + build-system: python-distutils +- name: snowballstemmer + repo: upstream:python-packages/snowballstemmer.git + ref: f0d81ce1606d685029302ea073b59d9437d12569 + unpetrify-ref: master + build-system: python-distutils +- name: sphinx + repo: upstream:python-packages/sphinx + ref: e76c9771bad16e68cdb7deb18b4d13de0a718c68 + unpetrify-ref: 1.3b1 + build-system: python-distutils + build-depends: + - pygments + - docutils + - snowballstemmer +- name: pystache + repo: upstream:python-packages/pystache.git + ref: cce3ebd658f28aeb7dd54561554dedf5259303dc + unpetrify-ref: baserock/v0.5.4 + build-system: python-distutils + submodules: + ext/spec: + url: upstream:mustache-spec +- name: pies + repo: upstream:python-packages/pies.git + ref: 593dcce07fdb3e8d0053a863a7aba7f2ce8a6c9c + unpetrify-ref: 2.6.1 + build-system: python-distutils +- name: natsort + repo: upstream:python-packages/natsort.git + ref: ce94d418c3849e891f0508b41f5bccc4ae1d4e4d + unpetrify-ref: 3.5.1 + build-system: python-distutils +- name: isort + repo: upstream:python-packages/isort.git + ref: 9d1b03b6e1fd2f87be1c635d6159a76a131f8155 + unpetrify-ref: 3.9.0 + build-system: python-distutils + build-depends: + - pies + - natsort +- name: pep8 + repo: upstream:python-packages/pep8.git + ref: 164066c4d85f212f5f4a11699b848942c678b947 + unpetrify-ref: 1.5.7 + build-system: python-distutils +- name: pyflakes + repo: upstream:python-packages/pyflakes.git + ref: 71b7b6776856912d50a0b9a85a8ea2a1dc7eb75c + unpetrify-ref: 0.8.1 + build-system: python-distutils +- name: smartypants + repo: upstream:python-packages/smartypants.git + ref: e89b6e7e119694edcd414a556c634d5ca85bff76 + unpetrify-ref: v1.8.6 + build-system: python-distutils + build-depends: + - isort + - pep8 + - pyflakes +- name: pycco + repo: upstream:python-packages/pycco + ref: 22e157e525760e843dba391ca85fbe9bd35fdc5b + unpetrify-ref: master + build-system: python-distutils + build-depends: + - pygments + - pystache + - smartypants +- name: dateutil + repo: upstream:python-packages/dateutil + ref: 8c6026ba09716a4e164f5420120bfe2ebb2d9d82 + unpetrify-ref: trunk + build-system: python-distutils +- name: posix-ipc-tarball + repo: upstream:python-packages/posix-ipc-tarball + ref: f3765db04b903b3671733e07cf1541a51966dd14 + unpetrify-ref: posix_ipc-0.9.8 + build-system: python-distutils +- name: paste + repo: upstream:python-packages/paste + ref: 4c177fce89fee925f0f4fbfde00ce2e1252562c0 + unpetrify-ref: master + build-system: python-distutils +- name: repoze-lru + repo: upstream:python-packages/repoze-lru + ref: 29c8281dee7fe8dae8c66c7c40ce7c058ec2ab0f + unpetrify-ref: '0.6' + build-system: python-distutils +- name: routes + repo: upstream:python-packages/routes + ref: 745a9207d9e48e309e292172543bc21075e65e09 + unpetrify-ref: v2.1 + build-system: python-distutils + build-depends: + - repoze-lru +- name: passlib + repo: upstream:python-packages/passlib + ref: f407312597727a08440e41bc8e31d3b3b334c66f + unpetrify-ref: 1.6.2 + build-system: python-distutils +- name: tempita + repo: upstream:python-packages/tempita + ref: b2b67795a009e9f825cbd855d766b78a00273f10 + unpetrify-ref: '0.5' + build-system: python-distutils +- name: numpy + repo: upstream:python-packages/numpy.git + ref: 65293874fb101907e1648e6b4fafd30d0aa1172a + unpetrify-ref: baserock/v1.9.0 + build-system: python-distutils + build-depends: + - sphinx + submodules: + doc/sphinxext: + url: upstream:numpydoc.git + doc/scipy-sphinx-theme: + url: upstream:scipy-sphinx-theme.git +- name: websockify + repo: upstream:python-packages/websockify + ref: 2f025741f86419d4ad5702dabf5903db3dbfe77c + unpetrify-ref: baserock/v0.6.1-1-g2f02574 + build-system: python-distutils + build-depends: + - numpy + submodules: + include/web-socket-js-project: + url: upstream:web-socket-js.git +- name: httplib2 + repo: upstream:python-packages/httplib2 + ref: f9f797223d075874b0031aea832152688ec23fef + unpetrify-ref: v0.9.1 + build-system: python-distutils +- name: suds + repo: upstream:python-packages/suds + ref: e7a317f1a20a4d3c86ac85785bb32d24c3d1078f + unpetrify-ref: baserock/release-0.4 + build-system: python-distutils +- name: jsonrpclib + repo: upstream:python-packages/jsonrpclib + ref: 53c8ffcfe4dd1718086cc551dce8ac459e8abc67 + unpetrify-ref: master + build-system: python-distutils +- name: rtslib-fb + repo: upstream:python-packages/rtslib-fb + ref: 8ffb4739d596fb1aac5d62d173d1e6f80270af9d + unpetrify-ref: v2.1.fb52 + morph: unmaintained/strata/openstack-services/rtslib-fb.morph +- name: python-pexpect + repo: upstream:python-packages/pexpect + ref: 671417beb41c21f772687c565196fdde444b053b + unpetrify-ref: '3.3' + build-system: python-distutils +- name: ply + repo: upstream:python-packages/ply.git + ref: 6513f3537d80f483ec9c7e36d52e87f107a57f23 + unpetrify-ref: master + build-system: python-distutils +- name: jsonpath-rw + repo: upstream:python-packages/jsonpath-rw + ref: f4cfe56b8e8370116c5275ddcea970e9a68fd75d + unpetrify-ref: 1.2.3 + build-system: python-distutils + build-depends: + - ply +- name: logutils + repo: upstream:python-packages/logutils.git + ref: 095f14efbaaf838b7772bffd36a466abb9668efe + unpetrify-ref: 0.3.3 + build-system: python-distutils +- name: pecan + repo: upstream:python-packages/pecan + ref: c7f241fd6bb8a0b10e02b8b43aaf1810c312cfbf + unpetrify-ref: 0.8.0 + build-system: python-distutils + build-depends: + - logutils +- name: croniter + repo: upstream:python-packages/croniter + ref: 0c3aeac05791cb4ece9e30da29442e9cd5b22f36 + unpetrify-ref: 0.3.5 + build-system: python-distutils + build-depends: + - dateutil +- name: msgpack-python + repo: upstream:python-packages/msgpack-python + ref: 61bac2f586e82313a0e618093bfed2435cd18983 + unpetrify-ref: 0.4.2 + build-system: python-distutils +- name: qpid-python + morph: unmaintained/strata/openstack-services/qpid-python.morph + repo: upstream:python-packages/qpid-python + ref: 587b0febaf1996db1e483137ed6addb45580ee9e + unpetrify-ref: '0.30' +- name: simplegeneric-tarball + repo: upstream:python-packages/simplegeneric-tarball + ref: 601fab9b154c557dfd848d531a8969f4697d1aa2 + unpetrify-ref: simplegeneric_0.8.1.orig + build-system: python-distutils +- name: ipaddr-py + morph: unmaintained/strata/openstack-services/ipaddr-py.morph + ref: c813f4790d1092b1515ee18fe8270180ed3cc5cb + unpetrify-ref: master + repo: upstream:python-packages/ipaddr-py +- name: wsme + repo: upstream:python-packages/wsme + ref: 99d7668789cc6252398222549599d1363cddb081 + unpetrify-ref: 0.6.1 + build-system: python-distutils + build-depends: + - ipaddr-py + - simplegeneric-tarball +- name: pysnmp + repo: upstream:python-packages/pysnmp + ref: 1b377afeaf9ee96ab1d48aeebb2b7a6d65a4ac9d + unpetrify-ref: release_4_2_5_tag + build-system: python-distutils +- name: thrift + morph: unmaintained/strata/openstack-services/thrift.morph + repo: upstream:thrift + ref: 591e20f9636c37527a70dc03598218c3468a0eff + unpetrify-ref: 0.9.2 +- name: retrying + repo: upstream:python-packages/retrying + ref: cab083eb5791615fadbc0c98ad77a70d64b77d0d + unpetrify-ref: v1.3.1 + build-system: python-distutils +- name: oslo-context + repo: upstream:openstack/oslo-context + ref: 1c4757a9fb41e47867bd9b8d390057ad7636b76f + unpetrify-ref: 0.2.0 + build-system: python-distutils +- name: oslo-middleware + repo: upstream:openstack/oslo-middleware + ref: bff184a2b5b1a0d3d22508a7544075378aca9e13 + unpetrify-ref: 1.2.0 + build-system: python-distutils + build-depends: + - oslo-context +- name: oslo-messaging + repo: upstream:openstack/oslo-messaging + ref: 562c41bb78f578ff9c27633c04ac6dd914c55f5a + unpetrify-ref: 1.8.2 + build-system: python-distutils + build-depends: + - kombu +- name: ordereddict + repo: upstream:python-packages/ordereddict-tarball + ref: 332cd0213829089dd827a32e7c5e64c41ce79cbc + unpetrify-ref: ordereddict-1.1 + build-system: python-distutils +- name: trollius + repo: upstream:python-packages/trollius + ref: fe6f8d61b1257bc01cdf4f789aaf4a8ec3d6f8ec + unpetrify-ref: trollius-1.0.4 + build-system: python-distutils + build-depends: + - ordereddict +- name: aioeventlet + repo: upstream:python-packages/aioeventlet + ref: 3cac0d7740592a380a7dadb2ddcdda000cae2bda + unpetrify-ref: '0.4' + build-system: python-distutils + build-depends: + - trollius +- name: urllib3 + repo: upstream:python-packages/urllib3 + ref: 8434c77d845255c4002b505c6c2d79c3b35def0d + unpetrify-ref: 1.10.4 + build-system: python-distutils +- name: oslo-concurrency + repo: upstream:openstack/oslo-concurrency + ref: a2473ed0a59e4553766ffcb1ee8f06cb98b14a48 + unpetrify-ref: 1.8.0 + build-system: python-distutils + build-depends: + - posix-ipc-tarball + - retrying +- name: oslo-vmware + repo: upstream:openstack/oslo-vmware + ref: 5de2c31e9d24f40fc7d33ddb1ce407ffdc6f366c + unpetrify-ref: 0.11.1 + build-system: python-distutils + build-depends: + - oslo-concurrency + - suds + - urllib3 + - httplib2 +- name: taskflow + repo: upstream:openstack/taskflow + ref: 28bece7c7c97199b8d941b16865c3670c323589a + unpetrify-ref: 0.7.1 + build-system: python-distutils +- name: sqlalchemy-migrate + repo: upstream:python-packages/sqlalchemy-migrate + ref: e57ee4c3a4247c634980cbeba74d04a01253967d + unpetrify-ref: 0.9.6 + build-system: python-distutils + build-depends: + - sqlalchemy + - tempita +- name: oauthlib + repo: upstream:python-packages/oauthlib + ref: fd239fca84644896b1971cf24bc6213d065adb86 + unpetrify-ref: 0.7.2 + build-system: python-distutils + build-depends: + - docutils + - creole + - pycco + - sphinx + - pyjwt +- name: happybase + repo: upstream:python-packages/happybase + ref: 90a4b7ef741f0ecfe5145693f64c6f7180b9ba3d + unpetrify-ref: '0.8' + build-system: python-distutils + build-depends: + - thrift +- name: osprofiler + repo: upstream:python-packages/osprofiler + ref: bbe39b517263017c9db56ae1d904d08846eacff7 + unpetrify-ref: 0.3.0 + build-system: python-distutils +- name: pycadf + repo: upstream:python-packages/pycadf + ref: 9501f4f74c5d800ae43edbe52680e285cf98c710 + unpetrify-ref: 0.9.0 + build-system: python-distutils + build-depends: + - oslo-context + - oslo-messaging + - posix-ipc-tarball +- name: keystonemiddleware + repo: upstream:openstack/keystonemiddleware + ref: 0e63b0e13d0a7919fddd7576c99bc15a45d31a9f + unpetrify-ref: 1.5.1 + build-system: python-distutils + build-depends: + - pycadf + - oslo-context +- name: oslo-db + repo: upstream:openstack/oslo-db + ref: 3e6a30c396aa42ef0eccb5b3625af728d8d3f437 + unpetrify-ref: 1.7.1 + build-system: python-distutils + build-depends: + - alembic + - sqlalchemy + - sqlalchemy-migrate +- name: glance_store + repo: upstream:openstack/glance_store.git + ref: ea88e503b617a7ac9a0ae7e537d6517e9992a104 + unpetrify-ref: 0.4.0 + build-system: python-distutils + build-depends: + - ordereddict + - oslo-concurrency +- name: oslo-log + repo: upstream:openstack/oslo-log + ref: 54e3d0e705accfaa4c73a01fc2ea1480fcc0024e + unpetrify-ref: 1.0.0 + build-system: python-distutils + build-depends: + - oslo-context +- name: oslo-policy + repo: upstream:openstack/oslo-policy + ref: 4c8f38cd1d088c46be314b47f6774e721813c6d9 + unpetrify-ref: 0.3.2 + build-system: python-distutils +- name: semantic-version + repo: upstream:python-packages/semantic-version + ref: 2174bdcae6e46f5f68f5b8ea984a695db9f41bcf + unpetrify-ref: v2.4.1 + build-system: python-distutils +- name: glance + morph: unmaintained/strata/openstack-services/glance.morph + repo: upstream:openstack/glance + ref: 93b0d5fce3a41e4a3a549f98f78b6681cbc3ea95 + unpetrify-ref: 2015.1.0 + build-depends: + - sqlalchemy + - anyjson + - routes + - sqlalchemy-migrate + - httplib2 + - kombu + - keystonemiddleware + - wsme + - oslo-vmware + - oslo-concurrency + - oslo-context + - oslo-log + - oslo-policy + - paste + - oslo-db + - oslo-messaging + - retrying + - osprofiler + - ordereddict + - glance_store + - semantic-version + - taskflow + - posix-ipc-tarball +- name: sqlparse + repo: upstream:python-packages/sqlparse + ref: 991e7348075accae6d08025212251af21e92e664 + unpetrify-ref: 0.1.13 + build-system: python-distutils +- name: pysaml2 + repo: upstream:python-packages/pysaml2.git + ref: 13ff5e8899300c9b359fa1bdfdb3d412be0d7356 + unpetrify-ref: 2.4.0 + build-system: python-distutils +- name: keystone + morph: unmaintained/strata/openstack-services/keystone.morph + repo: upstream:openstack/keystone + ref: 5d3b31f9c3d34599ff8a83eeb7530fc6e0b1b67b + unpetrify-ref: 2015.1.0 + build-depends: + - paste + - routes + - sqlalchemy + - sqlalchemy-migrate + - passlib + - keystonemiddleware + - oslo-concurrency + - oslo-messaging + - oslo-db + - oslo-log + - oslo-middleware + - oslo-policy + - oauthlib + - dogpile-cache + - pycadf + - posix-ipc-tarball + - pysaml2 +- name: neutron + morph: unmaintained/strata/openstack-services/neutron.morph + repo: upstream:openstack/neutron + ref: 7260e0e3fc2ea479e80e0962624aca7fd38a1f60 + unpetrify-ref: 2015.1.0 + build-depends: + - paste + - routes + - httplib2 + - jsonrpclib + - keystonemiddleware + - sqlalchemy + - alembic + - retrying + - oslo-db + - oslo-messaging + - oslo-rootwrap + - oslo-concurrency + - oslo-context + - oslo-log + - oslo-middleware +- name: wsgiref + repo: upstream:python-packages/wsgiref.git + ref: e8360785eef259394e13b2062407edc3c2cbc1e0 + unpetrify-ref: baserock/master + build-system: python-distutils +- name: rfc3986 + repo: upstream:python-packages/python-rfc3986.git + ref: 9817ec3e47bca8fba9a7cac56d785e9d644f7473 + unpetrify-ref: rfc3986-0.2.0 + build-system: python-distutils +- name: urwid + repo: upstream:python-packages/urwid + ref: 838839f7a300a774240d52f943aafd6ff44b2413 + unpetrify-ref: release-1.3.0 + build-system: python-distutils +- name: configshell-fb + repo: upstream:python-packages/configshell-fb + ref: 8c151ccdd75956da60b2304417c41a60a2c28231 + unpetrify-ref: v1.1.fb17 + build-system: python-distutils +- name: targetcli-fb + repo: upstream:python-packages/targetcli + ref: c62610f3c2da6b4d364028c18bcc7f0d3da54477 + unpetrify-ref: v2.1.fb39 + build-system: python-distutils + build-depends: + - configshell-fb + - rtslib-fb +- name: sysfsutils + repo: upstream:sysfsutils + ref: 237bf36e664db92f95b75067bf0f246726993254 + unpetrify-ref: sysfsutils-2_1_0 + build-system: autotools +- name: open-iscsi + morph: unmaintained/strata/openstack-services/open-iscsi.morph + repo: upstream:open-iscsi + ref: 8da14e6f9eeeb4fd03938d40fe1126fe0d110b68 + unpetrify-ref: master +- name: nova + morph: unmaintained/strata/openstack-services/nova.morph + repo: upstream:openstack/nova + ref: 8397b6464af520903f546ce4c6d51a2eb5b4c8a8 + unpetrify-ref: 2015.1.0 + build-depends: + - sqlalchemy + - keystonemiddleware + - routes + - paste + - sqlalchemy-migrate + - websockify + - oslo-db + - oslo-rootwrap + - oslo-messaging + - rfc3986 + - oslo-concurrency + - oslo-context + - oslo-log + - oslo-messaging +- name: cinder + morph: unmaintained/strata/openstack-services/cinder.morph + repo: upstream:openstack/cinder + ref: 5987bb2290f629e59b0bcced2f8fe22cdeb9cc6d + unpetrify-ref: 2015.1.0 + build-depends: + - anyjson + - keystonemiddleware + - kombu + - oslo-concurrency + - oslo-context + - oslo-db + - oslo-log + - oslo-messaging + - oslo-middleware + - oslo-rootwrap + - osprofiler + - paste + - retrying + - routes + - taskflow + - rtslib-fb + - sqlalchemy + - sqlalchemy-migrate + - suds + - oslo-vmware +- name: pymemcache + repo: upstream:python-packages/pymemcache + ref: 0646937c2bfebdb557ec2c01f0e42a9af79ad49d + unpetrify-ref: v1.2.9 + build-system: python-distutils +- name: sysv_ipc-tarball + repo: upstream:python-packages/sysv-ipc-tarball.git + ref: a77e3a63f004e6ee789fa05e4a5bbc333b1529f1 + unpetrify-ref: sysv_ipc-0.6.8 + build-system: python-distutils +- name: redis-py + repo: upstream:python-packages/redis-py + ref: 4d0b0afe9c9a431ed50c3e9fb95a0aa88b1f1038 + unpetrify-ref: 2.10.3 + build-system: python-distutils +- name: tooz + repo: upstream:python-packages/tooz + ref: 8086661f404e61c22f0dd1d07b57a864862a0869 + unpetrify-ref: 0.13.2 + build-system: python-distutils + build-depends: + - pymemcache + - msgpack-python + - retrying + - redis-py +- name: kafka-python + repo: upstream:python-packages/kafka-python + ref: 8675c3e3e620df5ba9fd7e570c554b773429bd78 + unpetrify-ref: v0.9.3 + build-system: python-distutils +- name: werkzeug + repo: upstream:python-packages/werkzeug + ref: 96e49709d627a7766077cff4c98ebf3cad868ceb + unpetrify-ref: v0.10.4 + build-system: python-distutils +- name: requests-aws + repo: upstream:python-packages/python-requests-aws + ref: 48fe401c78eb1b1048cd20e2d26015585a7986cb + unpetrify-ref: master + build-system: python-distutils +- name: ceilometer + repo: upstream:openstack/ceilometer + morph: unmaintained/strata/openstack-services/ceilometer.morph + ref: b0447ed8e7bee371bf7095c86e47d717abe89edc + unpetrify-ref: 2014.1.0 + build-depends: + - retrying + - alembic + - croniter + - jsonpath-rw + - kafka-python + - keystonemiddleware + - msgpack-python + - oslo-context + - oslo-db + - oslo-concurrency + - oslo-policy + - oslo-rootwrap + - pecan + - posix-ipc-tarball + - oslo-messaging + - oslo-middleware + - pysnmp + - sqlalchemy + - sqlalchemy-migrate + - tooz + - werkzeug + - wsme + - requests-aws +- name: django-openstack-auth + repo: upstream:openstack/django_openstack_auth + ref: 0e1f7b78277850634992a594132921efb83256e0 + unpetrify-ref: 1.2.0 + build-system: python-distutils +- name: pint + repo: upstream:python-packages/pint + ref: e7e7de5ca2e1c19963be8a918369fb19186f9a73 + unpetrify-ref: '0.6' + build-system: python-distutils +- name: horizon + morph: unmaintained/strata/openstack-services/horizon.morph + repo: upstream:openstack/horizon + ref: b99cf48ff346494198fb9740495eacc14fa406bf + unpetrify-ref: 2015.1.0 + build-depends: + - pint + - django-openstack-auth + - kombu + - oslo-concurrency +- name: novnc + morph: unmaintained/strata/openstack-services/novnc.morph + repo: upstream:novnc + ref: 97be997f62d59c028fc45323b00e3b93fafe4eb4 + unpetrify-ref: baserock/v0.5.1 + submodules: + include/web-socket-js-project: + url: upstream:web-socket-js +- name: pyserial + repo: upstream:python-packages/pyserial + ref: bcfc1ec2fdb9a8c9c867481d7673e85fe512e667 + unpetrify-ref: release2_7 + build-system: python-distutils +- name: tempest-lib + repo: upstream:openstack/tempest-lib + ref: c307ffc525d896e2071319c8067aec805804f92b + unpetrify-ref: 0.5.0 + build-system: python-distutils +- name: tempest + morph: unmaintained/strata/openstack-services/tempest.morph + repo: upstream:openstack/tempest + ref: 26149b612d01ad605e4d0f41a2d67280c8088cda + unpetrify-ref: '4' + build-depends: + - tempest-lib +- name: tftp-hpa + morph: unmaintained/strata/openstack-services/tftp-hpa.morph + repo: upstream:tftp-hpa + ref: 4faf178a509d8091b7ba1e1fa3d13bc68c5ff55f + unpetrify-ref: tftp-hpa-5.2 +- name: singledispatch + morph: unmaintained/strata/openstack-services/singledispatch.morph + repo: upstream:python-packages/singledispatch + ref: 92175ba65602a03086d2b1f770f45d88af93fc3e + unpetrify-ref: 3.4.0.3 +- name: pysendfile + morph: unmaintained/strata/openstack-services/pysendfile.morph + repo: upstream:python-packages/pysendfile + ref: 6775b2938ef74255239c8e08458369921297b311 + unpetrify-ref: release-2.0.0 +- name: ironic + morph: unmaintained/strata/openstack-services/ironic.morph + repo: upstream:openstack/ironic + ref: dee609cb7976e9b3cc07c3d342a271c4a347f69f + unpetrify-ref: 2015.1.0 + build-depends: + - sqlalchemy + - alembic + - sqlalchemy-migrate + - pysendfile + - websockify + - oslo-concurrency + - oslo-context + - oslo-db + - oslo-rootwrap + - oslo-policy + - pecan + - wsme + - keystonemiddleware + - oslo-messaging + - retrying + - posix-ipc-tarball diff --git a/old/unmaintained/strata/openstack-services/ceilometer.morph b/old/unmaintained/strata/openstack-services/ceilometer.morph new file mode 100644 index 00000000..f120ce9e --- /dev/null +++ b/old/unmaintained/strata/openstack-services/ceilometer.morph @@ -0,0 +1,23 @@ +name: ceilometer +kind: chunk +build-system: python-distutils +post-install-commands: +# Install the configuration files required to +- mkdir -p "$DESTDIR"/etc/ceilometer +- install -D -m 644 etc/ceilometer/*.json "$DESTDIR"/etc/ceilometer +- install -D -m 644 etc/ceilometer/*.yaml "$DESTDIR"/etc/ceilometer +- install -D -m 644 etc/ceilometer/api_paste.ini "$DESTDIR"/etc/ceilometer/api_paste.ini +# Install rootwrap.conf +- install -D -m 640 etc/ceilometer/rootwrap.conf "$DESTDIR"/etc/ceilometer/rootwrap.conf +# Move rootwrap files to a proper location +- mkdir -p "$DESTDIR"/etc/ceilometer/rootwrap.d +- install -D -m 644 etc/ceilometer/rootwrap.d/* "$DESTDIR"/etc/ceilometer/rootwrap.d/ +# Add ceilometer to sudoers controlling which commands will run as a root +# using the openstack rootwrap. +- mkdir -p "$DESTDIR"/etc/sudoers.d +- | + install -D -m 0440 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/sudoers.d/ceilometer-rootwrap + Defaults:ceilometer !requiretty + + ceilometer ALL=(root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf * + EOF diff --git a/old/unmaintained/strata/openstack-services/cinder.morph b/old/unmaintained/strata/openstack-services/cinder.morph new file mode 100644 index 00000000..a0fc879f --- /dev/null +++ b/old/unmaintained/strata/openstack-services/cinder.morph @@ -0,0 +1,21 @@ +name: cinder +kind: chunk +build-system: python-distutils +post-install-commands: +# Install some default configuration files +- install -D -m 644 etc/cinder/logging_sample.conf "$DESTDIR"/etc/cinder/logging.conf +- install -D -m 644 etc/cinder/api-paste.ini "$DESTDIR"/etc/cinder/api-paste.ini +- install -D -m 644 etc/cinder/policy.json "$DESTDIR"/etc/cinder/policy.json +- install -D -m 640 etc/cinder/rootwrap.conf "$DESTDIR"/etc/cinder/rootwrap.conf +# Move rootwrap files to a proper location +- mkdir -p "$DESTDIR"/etc/cinder/rootwrap.d +- install -D -m 644 etc/cinder/rootwrap.d/* "$DESTDIR"/etc/cinder/rootwrap.d/ +# Add cinder to sudoers controlling which commands will run as a root +# using the openstack rootwrap. +- mkdir -p "$DESTDIR"/etc/sudoers.d +- | + install -D -m 0440 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/sudoers.d/cinder-rootwrap + Defaults:cinder !requiretty + + cinder ALL=(root) NOPASSWD: /usr/bin/cinder-rootwrap /etc/cinder/rootwrap.conf * + EOF diff --git a/old/unmaintained/strata/openstack-services/erlang-sd_notify.morph b/old/unmaintained/strata/openstack-services/erlang-sd_notify.morph new file mode 100644 index 00000000..dd3f66ca --- /dev/null +++ b/old/unmaintained/strata/openstack-services/erlang-sd_notify.morph @@ -0,0 +1,8 @@ +name: erlang-sd_notify +kind: chunk +build-commands: +- LDFLAGS=-lsystemd REBAR_FLAGS="--verbose 2" make +install-commands: +- install -D -m 644 -p ebin/sd_notify.app "$DESTDIR$PREFIX"/lib/erlang/lib/sd_notify-0.1/ebin/sd_notify.app +- install -D -m 644 -p ebin/sd_notify.beam "$DESTDIR$PREFIX"/lib/erlang/lib/sd_notify-0.1/ebin/sd_notify.beam +- install -D -m 755 -p priv/sd_notify_drv.so "$DESTDIR$PREFIX"/lib/erlang/lib/sd_notify-0.1/priv/sd_notify_drv.so diff --git a/old/unmaintained/strata/openstack-services/glance.morph b/old/unmaintained/strata/openstack-services/glance.morph new file mode 100644 index 00000000..3f81a505 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/glance.morph @@ -0,0 +1,29 @@ +name: glance +kind: chunk +build-system: python-distutils +post-install-commands: +# Install some default configuration files +- mkdir -p "$DESTDIR"/etc/glance +- install -m 644 etc/glance-api-paste.ini "$DESTDIR"/etc/glance/ +- install -m 644 etc/glance-registry-paste.ini "$DESTDIR"/etc/glance/ +- install -m 644 etc/glance-search-paste.ini "$DESTDIR"/etc/glance/ +- install -m 644 etc/policy.json "$DESTDIR"/etc/glance/ +- install -m 644 etc/schema-image.json "$DESTDIR"/etc/glance/ +- install -m 644 etc/search-policy.json "$DESTDIR"/etc/glance/ +# Install predefined namespaces for Glance Metadata Definitions +# Catalog (see more info in its README) +- cp -r etc/metadefs "$DESTDIR"/etc/glance/ +# Install conf files which are not modified by +- install -m 644 etc/glance-scrubber.conf "$DESTDIR"/etc/glance/ +- install -m 644 etc/glance-cache.conf "$DESTDIR"/etc/glance/ +- install -m 644 etc/glance-search.conf "$DESTDIR"/etc/glance/ +- | + install -m 644 etc/glance-swift.conf.sample \ + "$DESTDIR"/etc/glance/glance-swift.conf +- install -m 644 etc/glance-manage.conf "$DESTDIR"/etc/glance/ +- | + install -m 644 etc/property-protections-policies.conf.sample \ + "$DESTDIR"/etc/glance/property-protections-policies.conf +- | + install -m 644 etc/property-protections-roles.conf.sample \ + "$DESTDIR"/etc/glance/property-protections-roles.conf diff --git a/old/unmaintained/strata/openstack-services/horizon.morph b/old/unmaintained/strata/openstack-services/horizon.morph new file mode 100644 index 00000000..74930a1e --- /dev/null +++ b/old/unmaintained/strata/openstack-services/horizon.morph @@ -0,0 +1,63 @@ +name: horizon +kind: chunk +configure-commands: +# Remove unnecessary .mo files they will be generated +# later during package build. +- find . -name "django*.mo" -exec rm -f '{}' \; +build-commands: +# Compile message strings +- cd horizon && django-admin.py compilemessages +- cd openstack_dashboard && django-admin.py compilemessages +- python setup.py build + +# Use the local_settings.py example to compile and compress the css, js, etc files. +# This is a hack to make SECRET_KEY work. +- | + cp openstack_dashboard/local/local_settings.py.example \ + openstack_dashboard/local/local_settings.py +# Collect the static files and compress them. +- python manage.py collectstatic --noinput +- python manage.py compress --force +install-commands: +# Install horizon in a temporary folder first, and then move things to the +# right place in $DESTDIR +- mkdir temproot +- python setup.py install -O1 --skip-build --prefix "$PREFIX" --root temproot +# Remove unnecessary .po files +- find temproot -name django.po -exec rm '{}' \; +- find temproot -name djangojs.po -exec rm '{}' \; + +# Move openstack_dashboard to /var/lib/horizon +- mkdir -p "$DESTDIR"/var/lib/horizon/ +- | + mv temproot/"$PREFIX"/lib/python*/site-packages/openstack_dashboard \ + "$DESTDIR"/var/lib/horizon/ +- cp manage.py "$DESTDIR"/var/lib/horizon/openstack_dashboard/ + +# Copy the rest to $DESTDIR +- cp -a temproot/* "$DESTDIR" + +# Copy local_settings to /etc/horizon/openstack_dashboard, so that they +# can be modified, and link them where openstack_dashboard is installed. +- mkdir -p "$DESTDIR"/etc/horizon/openstack_dashboard/ +- | + cp openstack_dashboard/local/local_settings.py.example \ + "$DESTDIR"/etc/horizon/openstack_dashboard/local_settings.py +# Set COMPRESS_OFFLINE=True +- | + echo "COMPRESS_OFFLINE=True" >> \ + "$DESTDIR"/etc/horizon/openstack_dashboard/local_settings.py + +- mkdir -p "$DESTDIR"/var/lib/horizon/openstack_dashboard/local +- | + ln -sf /etc/horizon/openstack_dashboard/local_settings.py \ + "$DESTDIR"/var/lib/horizon/openstack_dashboard/local/local_settings.py + +# Create the static directory (STATIC_ROOT) used in local_settings.py to keep +# the static objects like css files. +- mkdir -p "$DESTDIR"/var/lib/horizon/static +# Copy the compressed static files to horizon. +- cp -a static/* "$DESTDIR"/var/lib/horizon/static + +# Create the horizon document root for apache configuration +- mkdir -p "$DESTDIR"/var/lib/horizon/.blackhole diff --git a/old/unmaintained/strata/openstack-services/ipaddr-py.morph b/old/unmaintained/strata/openstack-services/ipaddr-py.morph new file mode 100644 index 00000000..f6691ab7 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/ipaddr-py.morph @@ -0,0 +1,6 @@ +name: ipaddr-py +kind: chunk +build-commands: +- cd trunk && python setup.py build +install-commands: +- cd trunk && python setup.py install --prefix "$PREFIX" --root "$DESTDIR" diff --git a/old/unmaintained/strata/openstack-services/ironic.morph b/old/unmaintained/strata/openstack-services/ironic.morph new file mode 100644 index 00000000..8003dd17 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/ironic.morph @@ -0,0 +1,18 @@ +name: ironic +kind: chunk +build-system: python-distutils +post-install-commands: +- | + mkdir -p "$DESTDIR"/etc/ironic + install -m 644 etc/ironic/policy.json "$DESTDIR"/etc/ironic + install -m 644 etc/ironic/rootwrap.conf "$DESTDIR"/etc/ironic + mkdir -p "$DESTDIR"/etc/ironic/rootwrap.d + install -m 644 etc/ironic/rootwrap.d/* "$DESTDIR"/etc/ironic/rootwrap.d/ + + # Add ironic to sudoers controlling which commands will run as a root + # using the openstack rootwrap. + install -D -m 0440 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/sudoers.d/ironic-rootwrap + Defaults:ironic !requiretty + + ironic ALL=(root) NOPASSWD: /usr/bin/ironic-rootwrap /etc/ironic/rootwrap.conf * + EOF diff --git a/old/unmaintained/strata/openstack-services/keystone.morph b/old/unmaintained/strata/openstack-services/keystone.morph new file mode 100644 index 00000000..836b5d47 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/keystone.morph @@ -0,0 +1,9 @@ +name: keystone +kind: chunk +build-system: python-distutils +post-install-commands: +# Install some default configuration files +- mkdir -p "$DESTDIR"/etc/keystone +- install -m 644 etc/keystone-paste.ini "$DESTDIR"/etc/keystone/ +- install -m 644 etc/policy.json "$DESTDIR"/etc/keystone/ +- install -m 644 etc/logging.conf.sample "$DESTDIR"/etc/keystone/logging.conf diff --git a/old/unmaintained/strata/openstack-services/librabbitmq.morph b/old/unmaintained/strata/openstack-services/librabbitmq.morph new file mode 100644 index 00000000..b87ce369 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/librabbitmq.morph @@ -0,0 +1,10 @@ +name: librabbitmq +kind: chunk +build-system: python-distutils +configure-commands: +- (cd rabbitmq-c; rm -rf codegen; ln -sf ../rabbitmq-codegen ./codegen) +- (cd rabbitmq-c; autoreconf -fvi) +- (cd rabbitmq-c; automake --add-missing) +- (cd rabbitmq-c; ./configure --disable-tools --disable-docs) +- (cd rabbitmq-c; make distdir) +- mv rabbitmq-c/rabbitmq-c-0.5.3 clib diff --git a/old/unmaintained/strata/openstack-services/neutron.morph b/old/unmaintained/strata/openstack-services/neutron.morph new file mode 100644 index 00000000..6e203922 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/neutron.morph @@ -0,0 +1,27 @@ +name: neutron +kind: chunk +build-system: python-distutils +post-install-commands: +- | + # Move the configuration files to a proper location + mkdir "$DESTDIR"/etc + mv "$DESTDIR/$PREFIX"/etc/neutron "$DESTDIR"/etc + + # Remove unused start/stop script + rm "$DESTDIR/$PREFIX"/etc/init.d/neutron-server + + # Remove configuration files which will be added by Ansible + rm "$DESTDIR"/etc/neutron/neutron.conf + rm "$DESTDIR"/etc/neutron/metadata_agent.ini + rm "$DESTDIR"/etc/neutron/plugins/ml2/ml2_conf.ini + rm "$DESTDIR"/etc/neutron/dhcp_agent.ini + rm "$DESTDIR"/etc/neutron/l3_agent.ini + + # Add neutron to sudoers controlling which commands is running as a + # root using the openstack rootwrap. + mkdir -p "$DESTDIR"/etc/sudoers.d + install -D -m 0440 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/sudoers.d/neutron-rootwrap + Defaults:neutron !requiretty + + neutron ALL=(root) NOPASSWD: /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf * + EOF diff --git a/old/unmaintained/strata/openstack-services/nova.morph b/old/unmaintained/strata/openstack-services/nova.morph new file mode 100644 index 00000000..e5a87daf --- /dev/null +++ b/old/unmaintained/strata/openstack-services/nova.morph @@ -0,0 +1,24 @@ +name: nova +kind: chunk +build-system: python-distutils +post-install-commands: +# Install some default configuration files +- mkdir -p "$DESTDIR"/etc/nova +- install -m 644 etc/nova/api-paste.ini "$DESTDIR"/etc/nova/ +- install -m 644 etc/nova/cells.json "$DESTDIR"/etc/nova/ +- install -m 644 etc/nova/logging_sample.conf "$DESTDIR"/etc/nova/logging.conf +- install -m 644 etc/nova/policy.json "$DESTDIR"/etc/nova/ +# Install rootwrap.conf +- install -m 640 etc/nova/rootwrap.conf "$DESTDIR"/etc/nova/rootwrap.conf +# Move rootwrap files to a proper location +- mkdir -p "$DESTDIR"/etc/nova/rootwrap.d +- install -m 644 etc/nova/rootwrap.d/* "$DESTDIR"/etc/nova/rootwrap.d/ +# Add nova to sudoers controlling which commands will run as a root +# using the openstack rootwrap. +- mkdir -p "$DESTDIR"/etc/sudoers.d +- | + install -D -m 0440 /proc/self/fd/0 <<'EOF' "$DESTDIR"/etc/sudoers.d/nova-rootwrap + Defaults:nova !requiretty + + nova ALL=(root) NOPASSWD: /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf * + EOF diff --git a/old/unmaintained/strata/openstack-services/novnc.morph b/old/unmaintained/strata/openstack-services/novnc.morph new file mode 100644 index 00000000..858320a0 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/novnc.morph @@ -0,0 +1,11 @@ +name: novnc +kind: chunk +install-commands: +- mkdir -p "$DESTDIR$PREFIX"/share/novnc/utils +- install -m 444 *html "$DESTDIR$PREFIX"/share/novnc +- install -m 444 vnc.html "$DESTDIR$PREFIX"/share/novnc/index.html +- mkdir -p "$DESTDIR$PREFIX"/share/novnc/include +- install -m 444 include/*.* "$DESTDIR$PREFIX"/share/novnc/include +- mkdir -p "$DESTDIR$PREFIX"/share/novnc/images +- install -m 444 images/*.* "$DESTDIR$PREFIX"/share/novnc/images +- install -d "$DESTDIR"/etc/sysconfig diff --git a/old/unmaintained/strata/openstack-services/open-iscsi.morph b/old/unmaintained/strata/openstack-services/open-iscsi.morph new file mode 100644 index 00000000..6a0b73b3 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/open-iscsi.morph @@ -0,0 +1,46 @@ +name: open-iscsi +kind: chunk +build-commands: +- make +install-commands: +# Rewrite prefix and exec_prefix which are set to "/usr" and "/" respectively +- make prefix="$PREFIX" exec_prefix="$PREFIX" DESTDIR="$DESTDIR" install +# Install iscsistart app which is not listed by default in PROGRAMS +- make prefix="$PREFIX" exec_prefix="$PREFIX" DESTDIR="$DESTDIR" PROGRAMS="usr/iscsistart" + install +post-install-commands: +# Configure iscsi daemon +# Point the startup to the installed binary +- | + sed -i -e "s|iscsid.startup = \/sbin\/iscsid|iscsid.startup = "$PREFIX"/sbin/iscsid|" \ + etc/iscsid.conf +# Start up a session automatically +- sed -i -e 's|node.startup = manual|node.startup = automatic|' etc/iscsid.conf +# Install config file +- install -D -m 644 etc/iscsid.conf "$DESTDIR"/etc/iscsi +# Install custom systemd unit file +- | + install -D -m 644 /proc/self/fd/0 << 'EOF' "$DESTDIR$PREFIX"/lib/systemd/system/iscsid.service + [Unit] + Description=Open iSCSI Daemon + After=network.target + + [Service] + Type=forking + ExecStart=/usr/sbin/iscsid + + [Install] + WantedBy=multi-user.target + EOF +# Install iscsi socket unit +- | + install -D -m 644 /proc/self/fd/0 << 'EOF' "$DESTDIR$PREFIX"/lib/systemd/system/iscsid.socket + [Unit] + Description=Open-iSCSI iscsid Socket + + [Socket] + ListenStream=@ISCSIADM_ABSTRACT_NAMESPACE + + [Install] + WantedBy=sockets.target + EOF diff --git a/old/unmaintained/strata/openstack-services/pysendfile.morph b/old/unmaintained/strata/openstack-services/pysendfile.morph new file mode 100644 index 00000000..2e2f809b --- /dev/null +++ b/old/unmaintained/strata/openstack-services/pysendfile.morph @@ -0,0 +1,3 @@ +name: pysendfile +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-services/qpid-python.morph b/old/unmaintained/strata/openstack-services/qpid-python.morph new file mode 100644 index 00000000..203b3db5 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/qpid-python.morph @@ -0,0 +1,6 @@ +name: qpid-python +kind: chunk +build-commands: +- cd qpid/python && python setup.py build +install-commands: +- cd qpid/python && python setup.py install --prefix "$PREFIX" --root "$DESTDIR" diff --git a/old/unmaintained/strata/openstack-services/rabbitmq-codegen.morph b/old/unmaintained/strata/openstack-services/rabbitmq-codegen.morph new file mode 100644 index 00000000..2b06aeb5 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/rabbitmq-codegen.morph @@ -0,0 +1,7 @@ +name: rabbitmq-codegen +kind: chunk +configure-commands: [] +build-commands: [] +install-commands: +- mkdir -p "$DESTDIR$PREFIX"/lib/rabbitmq-codegen +- cp * "$DESTDIR$PREFIX"/lib/rabbitmq-codegen diff --git a/old/unmaintained/strata/openstack-services/rabbitmq-server.morph b/old/unmaintained/strata/openstack-services/rabbitmq-server.morph new file mode 100644 index 00000000..97b8a126 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/rabbitmq-server.morph @@ -0,0 +1,16 @@ +name: rabbitmq-server +kind: chunk +configure-commands: +- mkdir -p codegen +- cp /usr/lib/rabbitmq-codegen/* codegen +build-commands: +- make +install-commands: +- | + make install_bin TARGET_DIR="$DESTDIR$PREFIX" \ + SBIN_DIR="$DESTDIR$PREFIX"/sbin \ + MAN_DIR="$PREFIX"/share/man \ + DOC_INSTALL_DIR="$PREFIX"/share + +post-install-commands: +- rm "$DESTDIR$PREFIX"/LICENSE* "$DESTDIR$PREFIX"/INSTALL diff --git a/old/unmaintained/strata/openstack-services/rtslib-fb.morph b/old/unmaintained/strata/openstack-services/rtslib-fb.morph new file mode 100644 index 00000000..26de3f9b --- /dev/null +++ b/old/unmaintained/strata/openstack-services/rtslib-fb.morph @@ -0,0 +1,27 @@ +name: rtslib-fb +kind: chunk +build-system: python-distutils +post-install-commands: +- mkdir -p "$DESTDIR$PREFIX"/lib/systemd/system + +# The following systemd unit is from the fedora package see +# http://pkgs.fedoraproject.org/cgit/python-rtslib.git/tree/target.service for +# more information + +- | + install -D -m 0644 /proc/self/fd/0 <<'EOF' "$DESTDIR$PREFIX"/lib/systemd/system/target.service + [Unit] + Description=Restore LIO kernel target configuration + Requires=sys-kernel-config.mount + After=sys-kernel-config.mount network.target local-fs.target + + [Service] + Type=oneshot + RemainAfterExit=yes + ExecStart=/usr/bin/targetctl restore + ExecStop=/usr/bin/targetctl clear + SyslogIdentifier=target + + [Install] + WantedBy=multi-user.target + EOF diff --git a/old/unmaintained/strata/openstack-services/singledispatch.morph b/old/unmaintained/strata/openstack-services/singledispatch.morph new file mode 100644 index 00000000..919c7096 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/singledispatch.morph @@ -0,0 +1,3 @@ +name: singledispatch +kind: chunk +build-system: python-distutils diff --git a/old/unmaintained/strata/openstack-services/tempest.morph b/old/unmaintained/strata/openstack-services/tempest.morph new file mode 100644 index 00000000..cffb7d33 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/tempest.morph @@ -0,0 +1,12 @@ +name: tempest +kind: chunk +build-system: python-distutils +post-install-commands: +# Install files and folders required to run tempest +- mkdir -p "$DESTDIR"/etc/tempest +- cp -r tempest "$DESTDIR"/etc/tempest/ +- cp -r tools "$DESTDIR"/etc/tempest/ +- cp setup.py tox.ini "$DESTDIR"/etc/tempest/ +- cp run_tests.sh run_tempest.sh "$DESTDIR"/etc/tempest/ +- cp .testr.conf "$DESTDIR"/etc/tempest/ +- cp etc/logging.conf.sample "$DESTDIR"/etc/tempest/logging.conf diff --git a/old/unmaintained/strata/openstack-services/tftp-hpa.morph b/old/unmaintained/strata/openstack-services/tftp-hpa.morph new file mode 100644 index 00000000..d466d2d4 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/tftp-hpa.morph @@ -0,0 +1,5 @@ +name: tftp-hpa +build-system: autotools +kind: chunk +install-commands: +- make INSTALLROOT="$DESTDIR" install diff --git a/old/unmaintained/strata/openstack-services/thrift.morph b/old/unmaintained/strata/openstack-services/thrift.morph new file mode 100644 index 00000000..39062351 --- /dev/null +++ b/old/unmaintained/strata/openstack-services/thrift.morph @@ -0,0 +1,6 @@ +name: thrift +kind: chunk +build-system: autotools +max-jobs: 1 +pre-configure-commands: +- ./bootstrap.sh diff --git a/old/unmaintained/strata/qt4-sdk.morph b/old/unmaintained/strata/qt4-sdk.morph new file mode 100644 index 00000000..527c5f86 --- /dev/null +++ b/old/unmaintained/strata/qt4-sdk.morph @@ -0,0 +1,14 @@ +name: qt4-sdk +kind: stratum +description: Qt4 Desktop Environment, IDE and Example Apps +build-depends: +- morph: unmaintained/strata/qt4-tools.morph +chunks: +- name: qt-creator + morph: unmaintained/strata/qt4-sdk/qt-creator.morph + repo: upstream:qt-creator + ref: d5a6b10634c1a3271012e9578e016772ef077d59 + unpetrify-ref: baserock/morph/2.7 + submodules: + qbs: + url: upstream:qbs diff --git a/old/unmaintained/strata/qt4-sdk/qt-creator.morph b/old/unmaintained/strata/qt4-sdk/qt-creator.morph new file mode 100644 index 00000000..76d9f7d7 --- /dev/null +++ b/old/unmaintained/strata/qt4-sdk/qt-creator.morph @@ -0,0 +1,9 @@ +name: qt-creator +kind: chunk +configure-commands: +- qmake +build-commands: +- make +install-commands: +- make install INSTALL_ROOT=$DESTDIR +- ./qhelpgenerator.sh diff --git a/old/unmaintained/strata/qt4-tools.morph b/old/unmaintained/strata/qt4-tools.morph new file mode 100644 index 00000000..886e19af --- /dev/null +++ b/old/unmaintained/strata/qt4-tools.morph @@ -0,0 +1,28 @@ +name: qt4-tools +kind: stratum +description: Qt4 Development Libraries and Tools +build-depends: +- morph: strata/icu-common.morph +- morph: strata/tools.morph +- morph: strata/x-generic.morph +- morph: unmaintained/strata/multimedia-gstreamer-0.10.morph +chunks: +- name: ruby-1.8 + morph: unmaintained/strata/qt4-tools/ruby-1.8.morph + repo: upstream:ruby + ref: 7a24f1710028d568ad61d0aa49d5178260178d77 + unpetrify-ref: baserock/morph/ruby_1_8_7 +- name: ruby-1.9 + morph: unmaintained/strata/qt4-tools/ruby-1.9.morph + repo: upstream:ruby + ref: cb3ea602294b5038b5f7ac21d3875a2b52342956 + unpetrify-ref: baserock/morph/ruby_1_9_3 + build-depends: + - ruby-1.8 +- name: qt4-tools + morph: unmaintained/strata/qt4-tools/qt4-tools.morph + repo: upstream:qt4-tools + ref: a182f020bc1703c20d86ba18f2f6b4ea8889de84 + unpetrify-ref: baserock/morph + build-depends: + - ruby-1.9 diff --git a/old/unmaintained/strata/qt4-tools/qt4-tools.morph b/old/unmaintained/strata/qt4-tools/qt4-tools.morph new file mode 100644 index 00000000..bc4cc17e --- /dev/null +++ b/old/unmaintained/strata/qt4-tools/qt4-tools.morph @@ -0,0 +1,18 @@ +name: qt4-tools +kind: chunk +max-jobs: 1 +configure-commands: +- | + arch=$(uname -m) + if [ "${arch}" != "${arch//arm/}" ] ; then + sed 's/g++-unix.conf)/&\nQMAKE_CXXFLAGS += -fno-strict-volatile-bitfields/' \ + -i mkspecs/linux-g++/qmake.conf + else + echo Running on x86, not modifying qmake.conf + fi +- ./configure -v -prefix /usr -opensource -confirm-license +build-commands: +- make +- LD_LIBRARY_PATH="$PWD"/lib QT_PLUGIN_PATH="$PWD"/plugins make docs +install-commands: +- make install INSTALL_ROOT="$DESTDIR" diff --git a/old/unmaintained/strata/qt4-tools/ruby-1.8.morph b/old/unmaintained/strata/qt4-tools/ruby-1.8.morph new file mode 100644 index 00000000..cee282c0 --- /dev/null +++ b/old/unmaintained/strata/qt4-tools/ruby-1.8.morph @@ -0,0 +1,9 @@ +name: ruby-1.8 +kind: chunk +configure-commands: +- autoconf +- ./configure --prefix=/usr --program-suffix=-1.8 +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/qt4-tools/ruby-1.9.morph b/old/unmaintained/strata/qt4-tools/ruby-1.9.morph new file mode 100644 index 00000000..bc697ada --- /dev/null +++ b/old/unmaintained/strata/qt4-tools/ruby-1.9.morph @@ -0,0 +1,9 @@ +name: ruby-1.9 +kind: chunk +configure-commands: +- autoconf +- ./configure --prefix=/usr --enable-shared --with-baseruby=/usr/bin/ruby-1.8 +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" install diff --git a/old/unmaintained/strata/test-tools.morph b/old/unmaintained/strata/test-tools.morph new file mode 100644 index 00000000..fe47cd38 --- /dev/null +++ b/old/unmaintained/strata/test-tools.morph @@ -0,0 +1,133 @@ +name: test-tools +kind: stratum +description: Tools and frameworks used for testing +build-depends: +- morph: strata/python-common.morph +chunks: +- name: python-test-extras + repo: upstream:python-packages/python-test-extras.git + ref: cdeb596f01241e9c779332e86f6edcd0c2e8e9f0 + unpetrify-ref: master + build-system: python-distutils +- name: check + repo: upstream:check + ref: 8c872aca6675e95fa47e7514e28fbdf25fce6170 + unpetrify-ref: 0.9.8 + build-system: autotools +- name: cppunit + repo: upstream:cppunit + ref: 8133cf2b977f013216f0a41b6fcb740410d83926 + unpetrify-ref: 1.13.2 + build-system: autotools +- name: testtools + repo: upstream:python-packages/testtools + ref: ee9946228ce5a03a84cf146027de0a8a9a46c4fe + unpetrify-ref: testools-1.1.0 + build-system: python-distutils + build-depends: + - python-test-extras +- name: subunit + morph: unmaintained/strata/test-tools/subunit.morph + repo: upstream:python-packages/subunit + ref: e18ffe65a3229d5c1d91be988405d40219db0887 + unpetrify-ref: 0.0.21 + build-depends: + - python-test-extras + - testtools + - check + - cppunit +- name: fixtures + repo: upstream:python-packages/fixtures + ref: 9f9d89ce718463b24cd3910b9a99efb60b3c9e1b + unpetrify-ref: 0.3.16 + build-system: python-distutils + build-depends: + - testtools +- name: testrepository + repo: upstream:python-packages/testrepository + ref: 6419a3dcaabaf09eaf438c6d8d85c90eba7a2b91 + unpetrify-ref: 0.0.19 + build-system: python-distutils + build-depends: + - fixtures + - subunit + - testtools +- name: testscenarios + repo: upstream:python-packages/testscenarios + ref: bccfaa71a2def5590161b6d1a247cf23c45a8b4d + unpetrify-ref: trunk + build-system: python-distutils + build-depends: + - testtools +- name: mox + repo: upstream:python-packages/mox + ref: 160491d0384285698d726b1af21277f336107f51 + unpetrify-ref: master + build-system: python-distutils +- name: mock + repo: upstream:python-packages/mock + ref: 35b35f7ad239005a950f870af57b44dbdc99d66b + unpetrify-ref: master + build-system: python-distutils +- name: oslotest + repo: upstream:openstack/oslotest + ref: cfdb562a6e07728570ca624a8c4faf3f5b61423b + unpetrify-ref: 1.2.0 + build-system: python-distutils + build-depends: + - fixtures + - subunit + - testrepository + - testscenarios + - testtools + - mock + - mox +- name: mox3 + repo: upstream:python-packages/pymox + ref: 444fa40f4edb529efbffa2da8dbd97e9b8564b5c + unpetrify-ref: master + build-system: python-distutils +- name: mocker + repo: upstream:python-packages/mocker + ref: f7f87e4ac1c52342162cf2035f5fe3d273f8b07f + unpetrify-ref: master + build-system: python-distutils +- name: zake + repo: upstream:python-packages/zake + ref: 436bab3306aeec420f1281f34bd5d26d7f81038c + unpetrify-ref: 0.2.1 + build-system: python-distutils + build-depends: + - testtools +- name: nose + repo: upstream:python-packages/nose + ref: 08d134270b035dac3310cd877bb0fe9ab678303a + unpetrify-ref: release_1.3.4 + build-system: python-distutils +- name: beautifulsoup4 + repo: upstream:python-packages/beautifulsoup4.git + ref: bcd7af0e9159d97aa511fb2d879424d1c1c5aadf + build-system: python-distutils +- name: waitress + repo: upstream:python-packages/waitress.git + ref: b795d573a5a9e6e39b46a6e82da367a6a5db8dbd + unpetrify-ref: 0.8.9 + build-system: python-distutils +- name: webtest + repo: upstream:python-packages/webtest.git + ref: 6a24fba456d1c4ac2609b90f1fdc377c595608a4 + unpetrify-ref: 2.0.16 + build-system: python-distutils + build-depends: + - waitress + - beautifulsoup4 +- name: testresources + repo: upstream:python-packages/testresources + ref: ef938bcce0e436f9e9ffef932a898dc248a1d6ea + unpetrify-ref: 0.2.7 + build-system: python-distutils + build-depends: + - testtools + - fixtures + - check + - cppunit diff --git a/old/unmaintained/strata/test-tools/subunit.morph b/old/unmaintained/strata/test-tools/subunit.morph new file mode 100644 index 00000000..0d3819ed --- /dev/null +++ b/old/unmaintained/strata/test-tools/subunit.morph @@ -0,0 +1,3 @@ +name: subunit +kind: chunk +build-system: autotools diff --git a/old/unmaintained/strata/virtualization.morph b/old/unmaintained/strata/virtualization.morph new file mode 100644 index 00000000..d26dbeeb --- /dev/null +++ b/old/unmaintained/strata/virtualization.morph @@ -0,0 +1,117 @@ +name: virtualization +kind: stratum +description: | + Virtualization for baserock + NOTE: this stratum requires kernel support, please see openstack bsp + kernel history to check which config are needed for openvswitch or libvirt, + for example. +build-depends: +- morph: strata/libsoup-common.morph +- morph: strata/python2-core.morph +- morph: strata/python-pygobject.morph +- morph: strata/connman-common.morph +- morph: unmaintained/strata/lvm.morph +- morph: strata/xorg-util-macros-common.morph +- morph: unmaintained/strata/networking-utils.morph +- morph: strata/docutils.morph +chunks: +- name: yajl + morph: unmaintained/strata/virtualization/yajl.morph + repo: upstream:yajl + ref: 52fc681857228c65c1cb439782da485554875481 + unpetrify-ref: baserock/morph +- name: dnsmasq + morph: unmaintained/strata/virtualization/dnsmasq.morph + repo: upstream:dnsmasq + ref: 8471cd938ca41fbe4fee8ae3f657625c92cfb954 + unpetrify-ref: baserock/morph +- name: qemu + morph: unmaintained/strata/virtualization/qemu.morph + repo: upstream:qemu + ref: c5691f7ecb32cbe7a95b491314ce070e211fd97d + unpetrify-ref: baserock/v2.2.0 + submodules: + roms/openbios: + url: upstream:qemu-openbios + dtc: + url: upstream:device-tree-compiler + roms/openhackware: + url: upstream:qemu-openhackware + roms/seabios: + url: upstream:qemu-seabios + roms/vgabios: + url: upstream:qemu-vgabios + roms/u-boot: + url: upstream:u-boot + roms/SLOF: + url: upstream:qemu-SLOF + roms/qemu-palcode: + url: upstream:qemu-palcode + roms/ipxe: + url: upstream:qemu-ipxe + roms/sgabios: + url: upstream:qemu-sgabios + pixman: + url: upstream:pixman +- name: libpciaccess + repo: upstream:libpciaccess + ref: b9c068896914b4132a24839c9ef7f9fcd6282d88 + unpetrify-ref: master + build-system: autotools +- name: dmidecode + morph: unmaintained/strata/virtualization/dmidecode.morph + repo: upstream:dmidecode + ref: 47a0aa5d6696a83922ee70279b7253a4e55947d5 + unpetrify-ref: master +- name: libvirt + morph: unmaintained/strata/virtualization/libvirt.morph + repo: upstream:libvirt + ref: 7b1ceec1e2f141d36ed9b7ef3a660ff8bb34fc53 + unpetrify-ref: baserock/v1.2.10 + build-depends: + - libpciaccess + - dnsmasq + - qemu + - yajl + - dmidecode + submodules: + gnulib: + url: upstream:gnulib +- name: pycurl + repo: upstream:pycurl + ref: 5ca370827d88817eeca3c56cbb37e4ddccc16c6e + unpetrify-ref: baserock/morph + build-system: python-distutils +- name: urlgrabber + repo: upstream:urlgrabber + ref: bf0a0be71373dec515bbb54e0613a3b9b0c00b04 + unpetrify-ref: master + build-system: python-distutils + build-depends: + - pycurl +- name: libvirt-python + repo: upstream:libvirt-python + ref: 8e09c79a07b097a6ba9af83be4916fb9c9538500 + unpetrify-ref: v1.2.10 + build-system: python-distutils + build-depends: + - libvirt + - urlgrabber +- name: libosinfo + morph: unmaintained/strata/virtualization/libosinfo.morph + repo: upstream:libosinfo + ref: a86c74c4d3f62bb0e315ab7fc78ec9f7746bdd12 + unpetrify-ref: baserock/morph +- name: virt-manager + repo: upstream:virt-manager + ref: 8b7ebd4538ffbd2d246fdeee4f1bb1c452585575 + unpetrify-ref: v1.0.1 + build-system: python-distutils + build-depends: + - libvirt-python + - libosinfo +- name: openvswitch + morph: unmaintained/strata/virtualization/openvswitch.morph + repo: upstream:openvswitch + ref: a52b0492a4d0398a24ed2a3566ff55ac53fea31f + unpetrify-ref: master diff --git a/old/unmaintained/strata/virtualization/dmidecode.morph b/old/unmaintained/strata/virtualization/dmidecode.morph new file mode 100644 index 00000000..d9ab0fa3 --- /dev/null +++ b/old/unmaintained/strata/virtualization/dmidecode.morph @@ -0,0 +1,7 @@ +name: dmidecode +kind: chunk +build-system: manual +build-commands: +- make +install-commands: +- make install DESTDIR="$DESTDIR" prefix="$PREFIX" diff --git a/old/unmaintained/strata/virtualization/dnsmasq.morph b/old/unmaintained/strata/virtualization/dnsmasq.morph new file mode 100644 index 00000000..3f4c6c53 --- /dev/null +++ b/old/unmaintained/strata/virtualization/dnsmasq.morph @@ -0,0 +1,10 @@ +name: dnsmasq +kind: chunk +build-system: manual +build-commands: +- make +- make -C contrib/wrt +install-commands: +- make install PREFIX="$PREFIX" DESTDIR="$DESTDIR" +- install -D -m 755 contrib/wrt/dhcp_release "$DESTDIR$PREFIX"/bin/dhcp_release +- install -D -m 755 contrib/wrt/dhcp_lease_time "$DESTDIR$PREFIX"/bin/dhcp_lease_time diff --git a/old/unmaintained/strata/virtualization/libosinfo.morph b/old/unmaintained/strata/virtualization/libosinfo.morph new file mode 100644 index 00000000..51b41b38 --- /dev/null +++ b/old/unmaintained/strata/virtualization/libosinfo.morph @@ -0,0 +1,11 @@ +name: libosinfo +kind: chunk +build-system: autotools +configure-commands: +- | + ./autogen.sh --prefix="$PREFIX" \ + --disable-gtk-doc \ + --disable-tests \ + --disable-vala \ + --with-usb-ids-path=usb.ids --with-pci-ids-path=pci.ids \ + --disable-werror diff --git a/old/unmaintained/strata/virtualization/libvirt.morph b/old/unmaintained/strata/virtualization/libvirt.morph new file mode 100644 index 00000000..1687213c --- /dev/null +++ b/old/unmaintained/strata/virtualization/libvirt.morph @@ -0,0 +1,34 @@ +name: libvirt +kind: chunk +build-system: autotools +configure-commands: +- | + GNULIB_SRCDIR=.gnulib \ + ./autogen.sh \ + --without-apparmor --with-attr --without-audit --without-avahi --with-blkid \ + --without-capng --with-curl --with-dbus --with-fuse --without-glusterfs \ + --without-hal --without-netcf --without-numactl --without-openwsman \ + --with-pciaccess --without-readline --without-sanlock --without-sasl \ + --without-selinux --without-ssh2 --with-systemd-daemon --with-udev \ + --with-yajl --without-xen --with-qemu --without-uml --without-openvz \ + --without-vmware --without-phyp --without-xenapi --without-libxl \ + --without-vbox --without-lxc --without-esx --without-hyperv \ + --without-parallels --with-test --with-remote --with-libvirtd \ + --with-init-script=systemd --without-bhyve --without-gnutls --without-polkit \ + --without-firewalld --without-dtrace --without-numad --with-network \ + --with-secrets --with-storage-dir --with-storage-fs --with-storage-lvm \ + --without-storage-iscsi --without-storage-scsi --without-storage-mpath \ + --without-storage-disk --with-storage-rbd --without-storage-sheepdog \ + --without-storage-gluster --without-wireshark-dissector --disable-werror \ + --prefix="$PREFIX" +post-install-commands: +# Don't autostart the default network created by libvirt +- rm -f "$DESTDIR"/etc/libvirt/qemu/networks/autostart/default.xml +system-integration: + libvirt-misc: + 01-addgroup: + - groupadd libvirt + 02-setup_libvirtconf: + - sed -i 's/#unix_sock_group = "libvirt"/unix_sock_group = "libvirt"/' /etc/libvirt/libvirtd.conf + - sed -i 's/#unix_sock_rw_perms = "0770"/unix_sock_rw_perms = "0770"/' /etc/libvirt/libvirtd.conf + - sed -i 's/#unix_sock_ro_perms = "0777"/unix_sock_ro_perms = "0777"/' /etc/libvirt/libvirtd.conf diff --git a/old/unmaintained/strata/virtualization/openvswitch.morph b/old/unmaintained/strata/virtualization/openvswitch.morph new file mode 100644 index 00000000..06480827 --- /dev/null +++ b/old/unmaintained/strata/virtualization/openvswitch.morph @@ -0,0 +1,11 @@ +name: openvswitch +kind: chunk +build-system: autotools +pre-configure-commands: +- ./boot.sh +configure-commands: +- | + ./configure --prefix="$PREFIX" \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --enable-ssl diff --git a/old/unmaintained/strata/virtualization/qemu.morph b/old/unmaintained/strata/virtualization/qemu.morph new file mode 100644 index 00000000..89067cd2 --- /dev/null +++ b/old/unmaintained/strata/virtualization/qemu.morph @@ -0,0 +1,5 @@ +name: qemu +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-werror diff --git a/old/unmaintained/strata/virtualization/yajl.morph b/old/unmaintained/strata/virtualization/yajl.morph new file mode 100644 index 00000000..3fac99db --- /dev/null +++ b/old/unmaintained/strata/virtualization/yajl.morph @@ -0,0 +1,8 @@ +name: yajl +kind: chunk +configure-commands: +- ./configure -p "$PREFIX" +build-commands: +- make distro +install-commands: +- make install DESTDIR="$DESTDIR" diff --git a/old/unmaintained/strata/webtools.morph b/old/unmaintained/strata/webtools.morph new file mode 100644 index 00000000..d328fc3a --- /dev/null +++ b/old/unmaintained/strata/webtools.morph @@ -0,0 +1,18 @@ +name: webtools +kind: stratum +description: web things +build-depends: +- morph: strata/icu-common.morph +- morph: strata/tools.morph +- morph: strata/pcre-utils.morph +chunks: +- name: libgit2 + repo: upstream:libgit2 + ref: 4b0a36e881506a02b43a4ae3c19c93c919b36eeb + unpetrify-ref: master + build-system: cmake +- name: nginx + morph: unmaintained/strata/webtools/nginx.morph + repo: upstream:nginx + ref: 37a582c9ea3e731c115e560d31b26f78535b8fca + unpetrify-ref: baserock/v1.7.0 diff --git a/old/unmaintained/strata/webtools/nginx.morph b/old/unmaintained/strata/webtools/nginx.morph new file mode 100644 index 00000000..6f7f04ae --- /dev/null +++ b/old/unmaintained/strata/webtools/nginx.morph @@ -0,0 +1,14 @@ +name: nginx +kind: chunk +configure-commands: +- | + ./configure --prefix=$PREFIX \ + --conf-path=/etc/nginx/nginx.conf \ + --pid-path=/etc/nginx/nginx.pid \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --with-http_ssl_module +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce.morph b/old/unmaintained/strata/xfce.morph new file mode 100644 index 00000000..24a0fa6c --- /dev/null +++ b/old/unmaintained/strata/xfce.morph @@ -0,0 +1,159 @@ +name: xfce +kind: stratum +description: xfce stratum +build-depends: +- morph: strata/gtk2.morph +- morph: strata/sound-server-pulseaudio.morph +chunks: +- name: xfce-dev-tools + repo: upstream:xfce/xfce4-dev-tools + ref: 9244250ac0c15ba160688758c5dccf97f3f160ef + unpetrify-ref: baserock/morph + build-system: autotools +- name: libxfce4util + morph: unmaintained/strata/xfce/libxfce4util.morph + repo: upstream:xfce/libxfce4util + ref: 5f56641e09b081f7d76d3feeee307589b21840c1 + unpetrify-ref: libxfce4util-4.11.0 + build-depends: + - xfce-dev-tools +- name: xfconf + morph: unmaintained/strata/xfce/xfconf.morph + repo: upstream:xfce/xfconf + ref: e5261e292130c96b6e62a8c897b1cc85bbb786ac + unpetrify-ref: master + build-depends: + - xfce-dev-tools + - libxfce4util +- name: libxfce4ui + morph: unmaintained/strata/xfce/libxfce4ui.morph + repo: upstream:xfce/libxfce4ui + ref: b9e6a57385ff6f0c15bbc637b76472211e3696b0 + unpetrify-ref: libxfce4ui-4.11.2 + build-depends: + - xfce-dev-tools + - libxfce4util + - xfconf +- name: garcon + morph: unmaintained/strata/xfce/garcon.morph + repo: upstream:xfce/garcon + ref: 69ff09cf0a9ee3ff9518822614637dc2d4f89ce6 + unpetrify-ref: baserock/morph + build-depends: + - libxfce4util + - libxfce4ui +- name: perl-uri + repo: upstream:libwww-perl/uri + ref: 3dd72ded7f043a4f6973781fe594722e2e95f491 + unpetrify-ref: baserock/morph + build-system: cpan +- name: exo + morph: unmaintained/strata/xfce/exo.morph + repo: upstream:xfce/exo + ref: b985c4b5c72ef116d55bbf746c16a05f26afc045 + unpetrify-ref: baserock/morph + build-depends: + - libxfce4util + - libxfce4ui + - perl-uri +- name: libwnck + morph: unmaintained/strata/xfce/libwnck.morph + repo: upstream:libwnck + ref: 6792abcdf27aceba1012406d51606e84b065a526 + unpetrify-ref: baserock/xfce-build +- name: xfce4-panel + morph: unmaintained/strata/xfce/xfce4-panel.morph + repo: upstream:xfce/xfce4-panel + ref: 6ac8bfcb481781e8e23b101f5c5fdd70cf6d083b + unpetrify-ref: baserock/morph + build-depends: + - libxfce4ui + - garcon + - exo + - libwnck +- name: thunar + morph: unmaintained/strata/xfce/thunar.morph + repo: upstream:xfce/thunar + ref: 8289f48c200b91cc1e9932e13defb8e6a4765054 + unpetrify-ref: baserock/morph + build-depends: + - libxfce4ui + - exo + - garcon + - libwnck +- name: xfce4-settings + morph: unmaintained/strata/xfce/xfce4-settings.morph + repo: upstream:xfce/xfce4-settings + ref: f04388fae30685b5038358674dec69406ba87f2c + unpetrify-ref: xfce4-settings-4.11.3 + build-depends: + - xfce-dev-tools + - xfconf + - exo + - libxfce4ui + - garcon +- name: iceauth + repo: upstream:iceauth + ref: c07d443d43e53cfe21b53a9a0eafcd6189432867 + unpetrify-ref: baserock/morph + build-system: autotools +- name: xfce4-session + morph: unmaintained/strata/xfce/xfce4-session.morph + repo: upstream:xfce/xfce4-session + ref: d4e20cbb9b1df864b502e9e8879a538f089fd5d2 + unpetrify-ref: xfce4-session-4.11.1 + build-depends: + - iceauth + - exo + - xfce-dev-tools + - libxfce4ui + - libwnck +- name: gtk-xfce-engine-2 + morph: unmaintained/strata/xfce/gtk-xfce-engine-2.morph + repo: upstream:xfce/gtk-xfce-engine + ref: ed44a71f1a4d76ae850483ece41638bb9a3e7781 + unpetrify-ref: baserock/morph + build-depends: + - xfce-dev-tools +- name: xfdesktop + morph: unmaintained/strata/xfce/xfdesktop.morph + repo: upstream:xfce/xfdesktop + ref: f32d76856e6eee9bc3d772b2fb6c2b8810ae63dc + unpetrify-ref: xfdesktop-4.11.8 + build-depends: + - exo + - libxfce4ui + - xfconf + - libwnck +- name: xfwm4 + morph: unmaintained/strata/xfce/xfwm4.morph + repo: upstream:xfce/xfwm4 + ref: f5c1c74e1436deff7f16ef92c98097ac3baae290 + unpetrify-ref: xfwm4-4.11.3_plus_fallback_theme + build-depends: + - exo + - libxfce4util + - libxfce4ui + - xfconf + - libwnck +- name: xfce4-appfinder + morph: unmaintained/strata/xfce/xfce4-appfinder.morph + repo: upstream:xfce/xfce4-appfinder + ref: 6c2bc7a09dd6e85bb78913cdc8af2292a9361e04 + unpetrify-ref: xfce4-appfinder-4.11.0 + build-depends: + - exo + - libxfce4ui + - garcon +- name: tumbler + morph: unmaintained/strata/xfce/tumbler.morph + repo: upstream:xfce/tumbler + ref: 073c2080c79075fdf574064fa2098c4b5bb79a11 + unpetrify-ref: tumbler-0.1.30 + build-depends: + - xfce-dev-tools +- name: elementary-xfce + morph: unmaintained/strata/xfce/elementary-xfce.morph + repo: upstream:elementary-xfce + ref: 9681d40e7a3545c96dfb1670e00514acfad5b089 + unpetrify-ref: v0.5 diff --git a/old/unmaintained/strata/xfce/elementary-xfce.morph b/old/unmaintained/strata/xfce/elementary-xfce.morph new file mode 100644 index 00000000..978cfdc4 --- /dev/null +++ b/old/unmaintained/strata/xfce/elementary-xfce.morph @@ -0,0 +1,10 @@ +name: elementary-xfce +kind: chunk +install-commands: +- mkdir -p $DESTDIR/usr/share/icons/ +- cp -R elementary-xfce $DESTDIR/usr/share/icons/ +- cp -R elementary-xfce-* $DESTDIR/usr/share/icons/ +- gtk-update-icon-cache -t -f $DESTDIR/usr/share/icons/elementary-xfce +- gtk-update-icon-cache -t -f $DESTDIR/usr/share/icons/elementary-xfce-dark +- gtk-update-icon-cache -t -f $DESTDIR/usr/share/icons/elementary-xfce-darker +- gtk-update-icon-cache -t -f $DESTDIR/usr/share/icons/elementary-xfce-darkest diff --git a/old/unmaintained/strata/xfce/exo.morph b/old/unmaintained/strata/xfce/exo.morph new file mode 100644 index 00000000..f5096213 --- /dev/null +++ b/old/unmaintained/strata/xfce/exo.morph @@ -0,0 +1,8 @@ +name: exo +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/garcon.morph b/old/unmaintained/strata/xfce/garcon.morph new file mode 100644 index 00000000..569197ff --- /dev/null +++ b/old/unmaintained/strata/xfce/garcon.morph @@ -0,0 +1,8 @@ +name: garcon +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/gtk-xfce-engine-2.morph b/old/unmaintained/strata/xfce/gtk-xfce-engine-2.morph new file mode 100644 index 00000000..cf1c2530 --- /dev/null +++ b/old/unmaintained/strata/xfce/gtk-xfce-engine-2.morph @@ -0,0 +1,8 @@ +name: gtk-xfce-engine-2 +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/libwnck.morph b/old/unmaintained/strata/xfce/libwnck.morph new file mode 100644 index 00000000..bb8d7afa --- /dev/null +++ b/old/unmaintained/strata/xfce/libwnck.morph @@ -0,0 +1,11 @@ +name: libwnck +kind: chunk +build-system: autotools +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- NOCONFIGURE=1 ./autogen.sh +- ./configure --prefix="$PREFIX" +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install DESTDIR="$DESTDIR" diff --git a/old/unmaintained/strata/xfce/libxfce4ui.morph b/old/unmaintained/strata/xfce/libxfce4ui.morph new file mode 100644 index 00000000..5fbd342e --- /dev/null +++ b/old/unmaintained/strata/xfce/libxfce4ui.morph @@ -0,0 +1,8 @@ +name: libxfce4ui +kind: chunk +configure-commands: +- ./autogen.sh --prefix=${PREFIX} +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/libxfce4util.morph b/old/unmaintained/strata/xfce/libxfce4util.morph new file mode 100644 index 00000000..60a59126 --- /dev/null +++ b/old/unmaintained/strata/xfce/libxfce4util.morph @@ -0,0 +1,8 @@ +name: libxfce4util +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/thunar.morph b/old/unmaintained/strata/xfce/thunar.morph new file mode 100644 index 00000000..51f76ac5 --- /dev/null +++ b/old/unmaintained/strata/xfce/thunar.morph @@ -0,0 +1,9 @@ +name: thunar +kind: chunk +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install diff --git a/old/unmaintained/strata/xfce/tumbler.morph b/old/unmaintained/strata/xfce/tumbler.morph new file mode 100644 index 00000000..fe27a783 --- /dev/null +++ b/old/unmaintained/strata/xfce/tumbler.morph @@ -0,0 +1,8 @@ +name: tumbler +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfce4-appfinder.morph b/old/unmaintained/strata/xfce/xfce4-appfinder.morph new file mode 100644 index 00000000..f8d1fcbe --- /dev/null +++ b/old/unmaintained/strata/xfce/xfce4-appfinder.morph @@ -0,0 +1,8 @@ +name: xfce4-appfinder +kind: chunk +configure-commands: +- ./autogen.sh --prefix=${PREFIX} +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfce4-panel.morph b/old/unmaintained/strata/xfce/xfce4-panel.morph new file mode 100644 index 00000000..fe85e172 --- /dev/null +++ b/old/unmaintained/strata/xfce/xfce4-panel.morph @@ -0,0 +1,8 @@ +name: xfce4-panel +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfce4-session.morph b/old/unmaintained/strata/xfce/xfce4-session.morph new file mode 100644 index 00000000..87ffac22 --- /dev/null +++ b/old/unmaintained/strata/xfce/xfce4-session.morph @@ -0,0 +1,9 @@ +name: xfce4-session +kind: chunk +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install diff --git a/old/unmaintained/strata/xfce/xfce4-settings.morph b/old/unmaintained/strata/xfce/xfce4-settings.morph new file mode 100644 index 00000000..6063dbc1 --- /dev/null +++ b/old/unmaintained/strata/xfce/xfce4-settings.morph @@ -0,0 +1,8 @@ +name: xfce4-settings +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfconf.morph b/old/unmaintained/strata/xfce/xfconf.morph new file mode 100644 index 00000000..cfbe741b --- /dev/null +++ b/old/unmaintained/strata/xfce/xfconf.morph @@ -0,0 +1,8 @@ +name: xfconf +kind: chunk +configure-commands: +- ./autogen.sh --prefix=${PREFIX} +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfdesktop.morph b/old/unmaintained/strata/xfce/xfdesktop.morph new file mode 100644 index 00000000..4af5a905 --- /dev/null +++ b/old/unmaintained/strata/xfce/xfdesktop.morph @@ -0,0 +1,8 @@ +name: xfdesktop +kind: chunk +configure-commands: +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- make +install-commands: +- make install diff --git a/old/unmaintained/strata/xfce/xfwm4.morph b/old/unmaintained/strata/xfce/xfwm4.morph new file mode 100644 index 00000000..0c4e2273 --- /dev/null +++ b/old/unmaintained/strata/xfce/xfwm4.morph @@ -0,0 +1,11 @@ +name: xfwm4 +kind: chunk +configure-commands: +- gdk-pixbuf-query-loaders > loader.cache +- ./autogen.sh --prefix="$PREFIX" --enable-debug=yes +build-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make +install-commands: +- GDK_PIXBUF_MODULE_FILE="$(pwd)/loader.cache" make install +- install -m 0644 index.theme $DESTDIR/usr/share/icons/hicolor +- gtk-update-icon-cache $DESTDIR/usr/share/icons/hicolor diff --git a/old/unmaintained/strata/xstatic.morph b/old/unmaintained/strata/xstatic.morph new file mode 100644 index 00000000..e396003b --- /dev/null +++ b/old/unmaintained/strata/xstatic.morph @@ -0,0 +1,154 @@ +name: xstatic +kind: stratum +description: | + Stratum with Xstatic and some xstatic libraries. + + XStatic is a packaging standard to package external static files as + a python package, so they are easily usable on all OSes. + + This conflicts with the 'everything from Git' policy of Baserock, + but it is required right now for the Openstack system to work. +build-depends: +- morph: strata/foundation.morph +- morph: strata/python2-core.morph +chunks: +- name: xstatic + repo: upstream:xstatic + ref: 6c8604a422ba7f176ce6b372a8e182c293d06fb2 + unpetrify-ref: 1.0.1 + build-system: python-distutils +- name: xstatic-angular + repo: upstream:xstatic-packages/xstatic-angular + ref: dac047df05da5bb20de4e78876bc03820d0c6671 + unpetrify-ref: 1.3.7.0 + build-system: python-distutils +- name: xstatic-angular-animate + repo: upstream:xstatic-packages/xstatic-angular-animate + ref: 91b9d3197f67213e4e35e9a35ba7196b898731e7 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-angular-bootstrap + repo: upstream:xstatic-packages/xstatic-angular-bootstrap + ref: b581edb6975175a564fd02766aef2f9043702c80 + unpetrify-ref: 0.11.0.3 + build-system: python-distutils +- name: xstatic-angular-lrdragndrop + repo: upstream:xstatic-packages/xstatic-angular-lrdragndrop + ref: 55c7494492e6da2a6664aa00941864dd64589396 + unpetrify-ref: 1.0.2.3 + build-system: python-distutils +- name: xstatic-angular-cookies + repo: upstream:xstatic-packages/xstatic-angular-cookies + ref: 66141a33ae7ad84b82ba9384a8101ae15ccd6da5 + unpetrify-ref: 1.2.1.1 + build-system: python-distutils +- name: xstatic-angular-fileupload + repo: upstream:xstatic-packages/xstatic-angular-fileupload + ref: 04bcd774dae17cfff5e826fc0874f6403b4a6cae + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-angular-mock + repo: upstream:xstatic-packages/xstatic-angular-mock + ref: 20fdada109b167bcdcacec22986b43fdb42866f3 + unpetrify-ref: 1.2.1.1 + build-system: python-distutils +- name: xstatic-angular-sanitize + repo: upstream:xstatic-packages/xstatic-angular-sanitize + ref: 9e0f03ada6fc00f8583903aeb6d9fc6516784999 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-angular-smart-table + repo: upstream:xstatic-packages/xstatic-angular-smart-table + ref: e0fbf69fb156b995547471d71c5c6a7f88989d47 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-bootstrap-datepicker + repo: upstream:xstatic-packages/xstatic-bootstrap-datepicker + ref: 60caf41e32d49f9bc715c39570f01449ebfbd37a + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-bootstrap-scss + repo: upstream:xstatic-packages/xstatic-bootstrap-scss + ref: d81b7b71c6c088406e90d1bdba0e10f0a304bbdc + unpetrify-ref: 3.1.1.1 + build-system: python-distutils +- name: xstatic-d3 + repo: upstream:xstatic-packages/xstatic-d3 + ref: 1e754e73c801fb9315995ffeb95ae51233c4fcaf + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-hogan + repo: upstream:xstatic-packages/xstatic-hogan + ref: 9e39977f6a6744810b08fa0323147e9f31dbd363 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-font-awesome + repo: upstream:xstatic-packages/xstatic-font-awesome + ref: c13aad1b95b1d84e73f2565a18a5a8e2bd2194a7 + unpetrify-ref: 4.2.0.0 + build-system: python-distutils +- name: xstatic-jasmine + repo: upstream:xstatic-packages/xstatic-jasmine + ref: a55f5db1dbe59b23c7d6284250bf4eac1d0143c3 + unpetrify-ref: 2.1.2.0 + build-system: python-distutils +- name: xstatic-jquery + repo: upstream:xstatic-packages/xstatic-jquery + ref: e91c5bf82535a62c1cfac61b5efb6b5c0157c1f5 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-jquery-bootstrap-wizard + repo: upstream:xstatic-packages/xstatic-jquery-bootstrap-wizard + ref: 07ae7e3a15b3af3d3d378d1f2412fe503ee42142 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-jquery-migrate + repo: upstream:xstatic-packages/xstatic-jquery-migrate + ref: 989b3b31106727542dd83810c3b952f90d8cdb8f + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-jquery-quicksearch + repo: upstream:xstatic-packages/xstatic-jquery-quicksearch + ref: f5221c8c30507340846d97d6db41a782e7c63316 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-jquery-tablesorter + repo: upstream:xstatic-packages/xstatic-jquery-tablesorter + ref: eb78328391f44a9a88033e1aede1a605902c5551 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-jquery-ui + repo: upstream:xstatic-packages/xstatic-jquery-ui + ref: b494369430dafd8ac4ddbe90efb9f8ad20a6e6d1 + unpetrify-ref: 1.11.0.1 + build-system: python-distutils +- name: xstatic-magic-search + repo: upstream:xstatic-packages/xstatic-magic-search + ref: 60d6954a36e54afa1f925324e7b527d235bdb484 + unpetrify-ref: 0.2.0.1 + build-system: python-distutils +- name: xstatic-jsencrypt + repo: upstream:xstatic-packages/xstatic-jsencrypt + ref: 5c0f088310ecd602e3aaf5e683385b0d27258409 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-qunit + repo: upstream:xstatic-packages/xstatic-qunit + ref: c3189eaa77c68c149a40b8c0afc8722cf394bd1f + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-rickshaw + repo: upstream:xstatic-packages/xstatic-rickshaw + ref: 6427ca5406852bc779d6918f487bb0fe3f063e77 + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-spin + repo: upstream:xstatic-packages/xstatic-spin + ref: 74b4c0d0ff12db1f84787246857d5e925ff6883f + unpetrify-ref: master + build-system: python-distutils +- name: xstatic-termjs + repo: upstream:xstatic-packages/xstatic-termjs + ref: a4ac0b809ab0d84c636a760215839bb6d68d0113 + unpetrify-ref: master + build-system: python-distutils diff --git a/old/unmaintained/strata/zookeeper-client.morph b/old/unmaintained/strata/zookeeper-client.morph new file mode 100644 index 00000000..898cc98c --- /dev/null +++ b/old/unmaintained/strata/zookeeper-client.morph @@ -0,0 +1,16 @@ +name: zookeeper-client +kind: stratum +description: | + This stratum installs a small demonstration program for the + client side of ZooKeeper. The program can take up to two + arguments: + (1) The IP address of the ZooKeeper server to connect to + (2) The type of client that this will be (default client + types are typeOneNode & typeTwoNode) +build-depends: +- morph: unmaintained/strata/zookeeper.morph +chunks: +- name: zookeeper-client + morph: unmaintained/strata/zookeeper/zookeeper-client.morph + repo: baserock:tests/zookeeper-test + ref: master diff --git a/old/unmaintained/strata/zookeeper-server.morph b/old/unmaintained/strata/zookeeper-server.morph new file mode 100644 index 00000000..61f71ba1 --- /dev/null +++ b/old/unmaintained/strata/zookeeper-server.morph @@ -0,0 +1,11 @@ +name: zookeeper-server +kind: stratum +description: This Stratum installs a zookeeper server and small program to populate + it with default data. +build-depends: +- morph: unmaintained/strata/zookeeper.morph +chunks: +- name: zookeeper-server + morph: unmaintained/strata/zookeeper/zookeeper-server.morph + repo: baserock:tests/zookeeper-test + ref: master diff --git a/old/unmaintained/strata/zookeeper.morph b/old/unmaintained/strata/zookeeper.morph new file mode 100644 index 00000000..2f3d0f6c --- /dev/null +++ b/old/unmaintained/strata/zookeeper.morph @@ -0,0 +1,14 @@ +name: zookeeper +kind: stratum +description: | + This stratum installs zookeeper and its dependencies. +build-depends: +- morph: strata/core.morph +- morph: unmaintained/strata/test-tools.morph +- morph: unmaintained/strata/java.morph +chunks: +- name: zookeeper + morph: unmaintained/strata/zookeeper/zookeeper.morph + repo: upstream:zookeeper + ref: baserock/mikesmith/zookeeper + unpetrify-ref: trunk diff --git a/old/unmaintained/strata/zookeeper/zookeeper-client.morph b/old/unmaintained/strata/zookeeper/zookeeper-client.morph new file mode 100644 index 00000000..7bc99f08 --- /dev/null +++ b/old/unmaintained/strata/zookeeper/zookeeper-client.morph @@ -0,0 +1,17 @@ +name: zookeeper-client +kind: chunk +build-commands: +- mkdir -p "$DESTDIR$PREFIX"/zookeeper-client +- cp -r * "$DESTDIR$PREFIX"/zookeeper-client +- make -C "$DESTDIR$PREFIX"/zookeeper-client/ZKTest/Release/ +post-install-commands: +- | + install -D -m 644 /proc/self/fd/0 << 'EOF' "$DESTDIR"/etc/systemd/system/zookeeper-client.service + [unit] + Description=Zookeeper client init + [Service] + ExecStart=/usr/zookeeper-client/ZKTest/Release/ZKTest nodeTypeOne 10.24.1.198 + RemainAfterExit=yes + [Install] + WantedBy=multi-user.target + EOF diff --git a/old/unmaintained/strata/zookeeper/zookeeper-server.morph b/old/unmaintained/strata/zookeeper/zookeeper-server.morph new file mode 100644 index 00000000..502bbda3 --- /dev/null +++ b/old/unmaintained/strata/zookeeper/zookeeper-server.morph @@ -0,0 +1,30 @@ +name: zookeeper-server +kind: chunk +build-commands: +- mkdir -p "$DESTDIR$PREFIX"/zookeeper_server +- cp -r * "$DESTDIR$PREFIX"/zookeeper_server +- make -C "$DESTDIR$PREFIX"/zookeeper_server/zkServerFileSetup/Release/ +post-install-commands: +- | + install -D -m 644 /proc/self/fd/0 << 'EOF' "$DESTDIR"/etc/systemd/system/zookeeper-server.service + [unit] + Description=Zookeeper server + [Service] + ExecStart=/usr/zookeeper/bin/zkServer.sh start + RemainAfterExit=yes + [Install] + WantedBy=multi-user.target + EOF +- | + install -D -m 644 /proc/self/fd/0 << 'EOF' "$DESTDIR"/etc/systemd/system/zookeeper-init.service + [unit] + Description=Zookeeper server init + [Service] + ExecStart=/usr/zookeeper_server/zkServerFileSetup/Release/zkServerFileSetup + RemainAfterExit=no + [Install] + WantedBy=multi-user.target + EOF +- mkdir "$DESTDIR"/etc/systemd/system/multi-user.target.wants +- ln -s "$DESTDIR"/etc/systemd/system/zookeeper-server.service "$DESTDIR"/etc/systemd/system/multi-user.target.wants/zookeeper-server.service +- ln -s "$DESTDIR"/etc/systemd/system/zookeeper-init.service "$DESTDIR"/etc/systemd/system/multi-user.target.wants/zookeeper-init.service diff --git a/old/unmaintained/strata/zookeeper/zookeeper.morph b/old/unmaintained/strata/zookeeper/zookeeper.morph new file mode 100644 index 00000000..db446a1b --- /dev/null +++ b/old/unmaintained/strata/zookeeper/zookeeper.morph @@ -0,0 +1,14 @@ +name: zookeeper +kind: chunk +configure-commands: +- mkdir -p "$DESTDIR$PREFIX"/lib/zookeeper +build-commands: +- ant -p compile_jute +- mkdir -p "$DESTDIR$PREFIX"/zookeeper +- cp -r * "$DESTDIR$PREFIX"/zookeeper +- cd "$DESTDIR$PREFIX"/zookeeper/src/c && autoreconf -i +- cd "$DESTDIR$PREFIX"/zookeeper/src/c && ./configure --prefix="$PREFIX" --libdir="$PREFIX"/lib/ +- make -C "$DESTDIR$PREFIX"/zookeeper/src/c +- cd "$DESTDIR$PREFIX"/zookeeper/src/c && make install +- mv "$DESTDIR$PREFIX"/zookeeper/conf/zoo_sample.cfg "$DESTDIR$PREFIX"/zookeeper/conf/zoo.cfg +- make -C "$DESTDIR$PREFIX"/zookeeper/src/c zktest-mt diff --git a/old/unmaintained/systems/ceph-service-x86_64-generic.morph b/old/unmaintained/systems/ceph-service-x86_64-generic.morph new file mode 100644 index 00000000..ba48f0e6 --- /dev/null +++ b/old/unmaintained/systems/ceph-service-x86_64-generic.morph @@ -0,0 +1,70 @@ +name: ceph-service-x86_64-generic +kind: system +description: The set of strata required to have a minimal system for a 64-bit x86 + system + the service daemons for ceph object, block and file storage. +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: cpp-common-libs + morph: strata/cpp-common-libs.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: network-security + morph: strata/network-security.morph +- name: ceph-service + morph: unmaintained/strata/ceph-service.morph +- name: tools + morph: strata/tools.morph +- name: ruby + morph: strata/ruby.morph +- name: ntpd + morph: unmaintained/strata/ntpd.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: nodejs + morph: strata/nodejs.morph +- name: lorry + morph: strata/lorry.morph +- name: baserock-import + morph: strata/baserock-import.morph +- name: nfs + morph: strata/nfs.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python-common + morph: strata/python-common.morph +- name: chef + morph: unmaintained/strata/chef.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/ceph +- extensions/cloud-init +- extensions/install-essential-files diff --git a/old/unmaintained/systems/chef-system-x86_64-container.morph b/old/unmaintained/systems/chef-system-x86_64-container.morph new file mode 100644 index 00000000..f9df4d9b --- /dev/null +++ b/old/unmaintained/systems/chef-system-x86_64-container.morph @@ -0,0 +1,32 @@ +name: chef-system-x86_64-container +kind: system +arch: x86_64 +description: Minimal chef system suitable for running in a container +configuration-extensions: +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/remove-gcc +strata: +- name: build-essential + morph: strata/build-essential.morph + artifacts: + - build-essential-minimal +- name: core + morph: strata/core.morph + artifacts: + - core-openssl +- name: foundation + morph: strata/foundation.morph + artifacts: + - foundation-runtime +- name: ruby + morph: strata/ruby.morph + artifacts: + - ruby-runtime +- name: chef + morph: unmaintained/strata/chef.morph + artifacts: + - chef-runtime diff --git a/old/unmaintained/systems/cxmanage-system-x86_64-generic.morph b/old/unmaintained/systems/cxmanage-system-x86_64-generic.morph new file mode 100644 index 00000000..cb384212 --- /dev/null +++ b/old/unmaintained/systems/cxmanage-system-x86_64-generic.morph @@ -0,0 +1,28 @@ +name: cxmanage-system-x86_64-generic +kind: system +description: A baserock development system with calxeda management tools added +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: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: cxmanage + morph: unmaintained/strata/cxmanage.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/old/unmaintained/systems/java-build-system-x86_64-generic.morph b/old/unmaintained/systems/java-build-system-x86_64-generic.morph new file mode 100644 index 00000000..2a26b7b1 --- /dev/null +++ b/old/unmaintained/systems/java-build-system-x86_64-generic.morph @@ -0,0 +1,90 @@ +name: java-build-system-x86_64-generic +kind: system +description: | + A superset of devel-system which can build OpenJDK. + + There are instruction on using and testing java-build-system at: + https://wiki.baserock.org/Java. + + For use on 64-bit Intel x86 computers. +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: tools + morph: strata/tools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + 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: python2-core + morph: strata/python2-core.morph +- name: python-tools + morph: strata/python-tools.morph +- name: python-common + morph: strata/python-common.morph +- name: devtools + morph: strata/devtools.morph +- name: ansible + morph: strata/ansible.morph +- name: swift + morph: strata/swift.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: cups + morph: strata/cups.morph +- name: java + morph: unmaintained/strata/java.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/fstab +- extensions/install-essential-files diff --git a/old/unmaintained/systems/nodejs-system-x86_64.morph b/old/unmaintained/systems/nodejs-system-x86_64.morph new file mode 100644 index 00000000..7fba330b --- /dev/null +++ b/old/unmaintained/systems/nodejs-system-x86_64.morph @@ -0,0 +1,24 @@ +name: nodejs-system-x86_64 +kind: system +description: A system that is able to build other systems based on the 64-bit x86 + architecture. +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: python2-core + morph: strata/python2-core.morph +- name: nodejs + morph: strata/nodejs.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/ocaml-system-x86_64.morph b/old/unmaintained/systems/ocaml-system-x86_64.morph new file mode 100644 index 00000000..03f91c1b --- /dev/null +++ b/old/unmaintained/systems/ocaml-system-x86_64.morph @@ -0,0 +1,20 @@ +name: ocaml-system-x86_64 +kind: system +description: OCaml base system +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: ocaml-language + morph: unmaintained/strata/ocaml-language.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files diff --git a/old/unmaintained/systems/openstack-system-x86_64.morph b/old/unmaintained/systems/openstack-system-x86_64.morph new file mode 100644 index 00000000..32ffb629 --- /dev/null +++ b/old/unmaintained/systems/openstack-system-x86_64.morph @@ -0,0 +1,88 @@ +name: openstack-system-x86_64 +kind: system +description: Openstack system in baserock for the x86_64 architecture +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: core + morph: strata/core.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-common + morph: strata/python-common.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: coreutils-common + morph: strata/coreutils-common.morph +- name: devtools + morph: strata/devtools.morph +- name: tools + morph: strata/tools.morph +- name: cloudinit-support + morph: strata/cloudinit-support.morph +- name: lvm + morph: unmaintained/strata/lvm.morph +- name: virtualization + morph: unmaintained/strata/virtualization.morph +- name: connectivity + morph: strata/connectivity.morph +- name: networking-utils + morph: unmaintained/strata/networking-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: databases + morph: unmaintained/strata/databases.morph +- name: erlang + morph: strata/erlang.morph +- name: apache-httpd-server + morph: unmaintained/strata/apache-httpd-server.morph +- name: django + morph: unmaintained/strata/django.morph +- name: xstatic + morph: unmaintained/strata/xstatic.morph +- name: openstack-common + morph: strata/openstack-common.morph +- name: openstack-clients + morph: strata/openstack-clients.morph +- name: openstack-services + morph: unmaintained/strata/openstack-services.morph +- name: ansible + morph: strata/ansible.morph +- name: ntpd + morph: unmaintained/strata/ntpd.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: test-tools + morph: unmaintained/strata/test-tools.morph +- name: swift + morph: strata/swift.morph +- name: python-tools + morph: strata/python-tools.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/hosts +- extensions/openstack-keystone +- extensions/openstack-glance +- extensions/openstack-cinder +- extensions/openstack-nova +- extensions/openstack-network +- extensions/openstack-neutron +- extensions/openstack-ceilometer +- extensions/openstack-time +- extensions/fstab +- extensions/openstack-ironic +- extensions/install-essential-files diff --git a/old/unmaintained/systems/qt4-devel-system-x86_64-generic.morph b/old/unmaintained/systems/qt4-devel-system-x86_64-generic.morph new file mode 100644 index 00000000..8022ec72 --- /dev/null +++ b/old/unmaintained/systems/qt4-devel-system-x86_64-generic.morph @@ -0,0 +1,52 @@ +name: qt4-devel-system-x86_64-generic +kind: system +description: A system that is able to build other systems based on the 64-bit x86 + architecture. +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: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer-0.10 + morph: unmaintained/strata/multimedia-gstreamer-0.10.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: qt4-tools + morph: unmaintained/strata/qt4-tools.morph +- name: qt4-sdk + morph: unmaintained/strata/qt4-sdk.morph +- name: lua51 + morph: unmaintained/strata/lua51.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: enlightenment + morph: unmaintained/strata/enlightenment.morph +- name: icu-common + morph: strata/icu-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/qt5-devel-system-x86_64-generic.morph b/old/unmaintained/systems/qt5-devel-system-x86_64-generic.morph new file mode 100644 index 00000000..38d2b0f8 --- /dev/null +++ b/old/unmaintained/systems/qt5-devel-system-x86_64-generic.morph @@ -0,0 +1,54 @@ +name: qt5-devel-system-x86_64-generic +kind: system +description: A system that is able to build other systems based on the 64-bit x86 + architecture. +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: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtwebengine + morph: strata/qt5-tools-qtwebengine.morph +- name: qt5-sdk + morph: strata/qt5-sdk.morph +- name: lua51 + morph: unmaintained/strata/lua51.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: enlightenment + morph: unmaintained/strata/enlightenment.morph +- name: icu-common + morph: strata/icu-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/swift-system-x86_64.morph b/old/unmaintained/systems/swift-system-x86_64.morph new file mode 100644 index 00000000..442ead93 --- /dev/null +++ b/old/unmaintained/systems/swift-system-x86_64.morph @@ -0,0 +1,34 @@ +name: swift-system-x86_64 +kind: system +description: A base system for deploying swift nodes +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: swift + morph: strata/swift.morph +- name: ntpd + morph: unmaintained/strata/ntpd.morph +- name: python2-core + morph: strata/python2-core.morph +- name: python-common + morph: strata/python-common.morph +- name: ansible + morph: strata/ansible.morph +- name: openstack-common + morph: strata/openstack-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/swift-storage +- extensions/install-essential-files diff --git a/old/unmaintained/systems/web-system-x86_64-generic.morph b/old/unmaintained/systems/web-system-x86_64-generic.morph new file mode 100644 index 00000000..ec9fa254 --- /dev/null +++ b/old/unmaintained/systems/web-system-x86_64-generic.morph @@ -0,0 +1,43 @@ +name: web-system-x86_64-generic +kind: system +description: system with web tools +arch: x86_64 +strata: +- name: build-essential + morph: strata/build-essential.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: foundation + morph: strata/foundation.morph +- name: core + morph: strata/core.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: nfs + morph: strata/nfs.morph +- name: databases + morph: unmaintained/strata/databases.morph +- name: lighttpd-server + morph: strata/lighttpd-server.morph +- name: webtools + morph: unmaintained/strata/webtools.morph +- name: erlang + morph: strata/erlang.morph +- name: ruby + morph: strata/ruby.morph +- name: python2-core + morph: strata/python2-core.morph +- name: nodejs + morph: strata/nodejs.morph +- name: icu-common + morph: strata/icu-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/xfce-system-x86_64.morph b/old/unmaintained/systems/xfce-system-x86_64.morph new file mode 100644 index 00000000..8525a28c --- /dev/null +++ b/old/unmaintained/systems/xfce-system-x86_64.morph @@ -0,0 +1,79 @@ +name: xfce-system-x86_64 +kind: system +description: A system with the XFCE desktop +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: device-management + morph: strata/device-management.morph +- name: python2-core + morph: strata/python2-core.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: connman-common + morph: strata/connman-common.morph +- name: input-common + morph: strata/input-common.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: mesa-common + morph: strata/mesa-common.morph +- name: graphics-common + morph: strata/graphics-common.morph +- name: wayland-generic + morph: strata/wayland-generic.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: x-drivers + morph: strata/x-drivers.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: gtk-deps + morph: strata/gtk-deps.morph +- name: gtk2 + morph: strata/gtk2.morph +- name: tools + morph: strata/tools.morph +- name: devtools + morph: strata/devtools.morph +- name: python-cliapp + morph: strata/python-cliapp.morph +- name: python-pygobject + morph: strata/python-pygobject.morph +- name: python-wsgi + morph: strata/python-wsgi.morph +- name: libsoup-common + morph: strata/libsoup-common.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +- name: ostree-core + morph: strata/ostree-core.morph +- name: morph-utils + morph: strata/morph-utils.morph +- name: xfce + morph: unmaintained/strata/xfce.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/zookeeper-client-x86_64.morph b/old/unmaintained/systems/zookeeper-client-x86_64.morph new file mode 100644 index 00000000..d08ec5f9 --- /dev/null +++ b/old/unmaintained/systems/zookeeper-client-x86_64.morph @@ -0,0 +1,30 @@ +name: zookeeper-client-x86_64 +kind: system +description: | + A system that is able to build other systems based on the 64-bit x86 + architecture. includes the installation of zookeeper and a test client. +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: zookeeper + morph: unmaintained/strata/zookeeper.morph +- name: zookeeper-client + morph: unmaintained/strata/zookeeper-client.morph +- name: test-tools + morph: unmaintained/strata/test-tools.morph +- name: java + morph: unmaintained/strata/java.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/unmaintained/systems/zookeeper-server-x86_64.morph b/old/unmaintained/systems/zookeeper-server-x86_64.morph new file mode 100644 index 00000000..8b5062be --- /dev/null +++ b/old/unmaintained/systems/zookeeper-server-x86_64.morph @@ -0,0 +1,30 @@ +name: zookeeper-server-x86_64 +kind: system +description: | + A system that is able to build other systems based on the 64-bit x86 + architecture. includes the zookeeper server and setup for basic tests +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: zookeeper + morph: unmaintained/strata/zookeeper.morph +- name: zookeeper-server + morph: unmaintained/strata/zookeeper-server.morph +- name: test-tools + morph: unmaintained/strata/test-tools.morph +- name: java + morph: unmaintained/strata/java.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/weston/clusters/weston-qt5-system-x86_64-deploy.morph b/old/weston/clusters/weston-qt5-system-x86_64-deploy.morph new file mode 100644 index 00000000..51fda42b --- /dev/null +++ b/old/weston/clusters/weston-qt5-system-x86_64-deploy.morph @@ -0,0 +1,23 @@ +name: weston-qt5-system-x86_64-deploy +kind: cluster +description: | + Deploy a stock weston system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: weston/systems/weston-qt5-system-x86_64.morph + deploy: + weston-qt5-system-x86_64: + type: extensions/rawdisk + location: /weston-qt5-system-x86_64.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz diff --git a/old/weston/clusters/weston-system-x86_64-generic-deploy.morph b/old/weston/clusters/weston-system-x86_64-generic-deploy.morph new file mode 100644 index 00000000..2428fddd --- /dev/null +++ b/old/weston/clusters/weston-system-x86_64-generic-deploy.morph @@ -0,0 +1,23 @@ +name: weston-system-x86_64-generic-deploy +kind: cluster +description: | + Deploy a stock weston system. + + The resulting image can be copied to a USB and booted from there, + as well as in a virtual machine. + +systems: +- morph: weston/systems/weston-system-x86_64-generic.morph + deploy: + weston-system-x86_64-generic: + type: extensions/rawdisk + location: /weston-system-x86_64-generic.img + DISK_SIZE: 4G + KERNEL_ARGS: vga=788 + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: systems/initramfs-x86_64.morph + deploy: + initramfs: + type: extensions/initramfs + location: boot/initramfs.gz diff --git a/old/weston/systems/weston-qt5-system-x86_64.morph b/old/weston/systems/weston-qt5-system-x86_64.morph new file mode 100644 index 00000000..fe426265 --- /dev/null +++ b/old/weston/systems/weston-qt5-system-x86_64.morph @@ -0,0 +1,70 @@ +name: weston-qt5-system-x86_64.morph +kind: system +description: A system that is able to build other systems based on the 64-bit x86 + architecture. +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: device-management + morph: strata/device-management.morph +- name: foundation + morph: strata/foundation.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.morph +- name: bsp-x86_64-generic + morph: strata/bsp-x86_64-generic.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.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 +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: qt5-tools + morph: strata/qt5-tools.morph +- name: qt5-tools-qtmultimedia + morph: strata/qt5-tools-qtmultimedia.morph +- name: qt5-tools-qtwebengine + morph: strata/qt5-tools-qtwebengine.morph +- name: qt5-tools-qtwayland + morph: strata/qt5-tools-qtwayland.morph +- name: connectivity + morph: strata/connectivity.morph +- name: connman-common + morph: strata/connman-common.morph +- name: icu-common + morph: strata/icu-common.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/weston/systems/weston-system-armv7lhf-jetson.morph b/old/weston/systems/weston-system-armv7lhf-jetson.morph new file mode 100644 index 00000000..61b4d86c --- /dev/null +++ b/old/weston/systems/weston-system-armv7lhf-jetson.morph @@ -0,0 +1,58 @@ +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: device-management + morph: strata/device-management.morph +- name: foundation + morph: strata/foundation.morph +- name: bsp-jetson + morph: strata/bsp-jetson.morph +- name: connectivity + morph: strata/connectivity.morph +- name: bluetooth + morph: strata/bluetooth.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.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: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/old/weston/systems/weston-system-x86_64-generic.morph b/old/weston/systems/weston-system-x86_64-generic.morph new file mode 100644 index 00000000..d2ce28e7 --- /dev/null +++ b/old/weston/systems/weston-system-x86_64-generic.morph @@ -0,0 +1,57 @@ +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: device-management + morph: strata/device-management.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: bluetooth + morph: strata/bluetooth.morph +- name: libdrm-common + morph: strata/libdrm-common.morph +- name: multimedia-common + morph: strata/multimedia-common.morph +- name: multimedia-gstreamer + morph: strata/multimedia-gstreamer.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: sound-server-pulseaudio + morph: strata/sound-server-pulseaudio.morph +- name: weston-common + morph: strata/weston-common.morph +- name: x-common + morph: strata/x-common.morph +- name: x-generic + morph: strata/x-generic.morph +- name: tools + morph: strata/tools.morph +- name: glib-common + morph: strata/glib-common.morph +- name: pcre-utils + morph: strata/pcre-utils.morph +configuration-extensions: +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files -- cgit v1.2.1