diff options
-rw-r--r-- | COPYING.MIT | 17 | ||||
-rw-r--r-- | README | 70 | ||||
-rw-r--r-- | conf/layer.conf | 15 | ||||
-rw-r--r-- | example-config/bblayers.conf | 32 | ||||
-rw-r--r-- | example-config/local.conf | 22 | ||||
-rw-r--r-- | example-config/overc-installer-examples/config-hd.sh | 69 | ||||
-rw-r--r-- | example-config/overc-installer-examples/config-usb-arm.sh | 6 | ||||
-rw-r--r-- | example-config/overc-installer-examples/config-usb-cube.sh | 20 | ||||
-rw-r--r-- | example-config/overc-installer-examples/config-usb.sh | 112 | ||||
-rw-r--r-- | recipes-autobuilder/images/cube-autobuilder-server.bb | 64 | ||||
-rw-r--r-- | recipes-autobuilder/yocto-autobuilder/files/yocto-autobuilder.service | 12 | ||||
-rw-r--r-- | recipes-autobuilder/yocto-autobuilder/yocto-autobuilder_2.0.bb | 57 |
12 files changed, 496 insertions, 0 deletions
diff --git a/COPYING.MIT b/COPYING.MIT new file mode 100644 index 00000000000..fb950dc69fe --- /dev/null +++ b/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README b/README new file mode 100644 index 00000000000..4e981f2cbcf --- /dev/null +++ b/README @@ -0,0 +1,70 @@ +meta-autobuilder +=================== +The goal of this layer is to create a yocto-autobuilder recipe and various image +types, including a container image for the meta-overc/meta-cube layer + +Dependencies +------------ +This layer depends on: + +URI: git://git.yoctoproject.org/poky +branch: master +revision: HEAD +layers: meta-yocto-bsp +prio: default + +URI: git://github.com/openembedded/meta-openembedded.git +branch: master +revision: HEAD +layers: meta-oe + meta-networking + meta-filesystems + meta-python + meta-gnome + meta-xfce + meta-multimedia + +URI: git://git.yoctoproject.org/meta-virtualization +branch: master +revision: HEAD +prio: default + +URI: git://github.com/OSSystems/meta-browser.git +branch: master +revision: HEAD +prio: default + +URI: git://git.yoctoproject.org/meta-cloud-services +branch: master +revision: HEAD +prio: default + +URI: git://git.yoctoproject.org/meta-qt4 +branch: master +revision: HEAD +prio: default + +URI: git://github.com/errordeveloper/oe-meta-go.git +branch: master +revision: HEAD +prio: default + +URI: git://git.yoctoproject.org/meta-autobuilder +branch: master +revision: HEAD +prio: default + + +Maintenance +----------- + +Send pull requests, patches, comments or questions to bruce.ashfield@windriver.com + +Maintainers: Elizabeth Flanagan <elizabeth.flanagan@intel.com> + +License +------- + +All metadata is MIT licensed unless otherwise stated. Source code included +in tree for individual recipes is under the LICENSE stated in each recipe +(.bb file) unless otherwise stated. diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 00000000000..99c26d10372 --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,15 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "autobuilder" +BBFILE_PATTERN_autobuilder = "^${LAYERDIR}/" +BBFILE_PRIORITY_autobuilder = "1" + +# This should only be incremented on significant changes that will +# cause compatibility issues with other layers +LAYERVERSION_autobuilder = "1" + +LAYERDEPENDS_autobuilder = "core" diff --git a/example-config/bblayers.conf b/example-config/bblayers.conf new file mode 100644 index 00000000000..88f3e606107 --- /dev/null +++ b/example-config/bblayers.conf @@ -0,0 +1,32 @@ +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "6" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + /home/pidge/overc-demo/meta \ + /home/pidge/overc-demo/meta-yocto \ + /home/pidge/overc-demo/meta-yocto-bsp \ + /home/pidge/overc-demo/meta-qt4 \ + /home/pidge/overc-demo/meta-browser \ + /home/pidge/overc-demo/meta-openembedded/meta-oe \ + /home/pidge/overc-demo/meta-openembedded/meta-networking \ + /home/pidge/overc-demo/meta-openembedded/meta-filesystems \ + /home/pidge/overc-demo/meta-openembedded/meta-python \ + /home/pidge/overc-demo/meta-openembedded/meta-gnome \ + /home/pidge/overc-demo/meta-openembedded/meta-xfce \ + /home/pidge/overc-demo/meta-openembedded/meta-multimedia \ + /home/pidge/overc-demo/oe-meta-go \ + /home/pidge/overc-demo/meta-virtualization \ + /home/pidge/overc-demo/meta-overc \ + /home/pidge/overc-demo/meta-overc/meta-cube \ + /home/pidge/overc-demo/meta-cloud-services \ + /home/pidge/overc-demo/meta-autobuilder \ +" + +BBLAYERS_NON_REMOVABLE ?= " \ + /home/pidge/overc-demo/meta \ + /home/pidge/overc-demo/meta-yocto \ + " diff --git a/example-config/local.conf b/example-config/local.conf new file mode 100644 index 00000000000..d32c52b6bff --- /dev/null +++ b/example-config/local.conf @@ -0,0 +1,22 @@ +DL_DIR ?= "/home/pidge/poky/build/downloads" +DISTRO ?= "overc" +MACHINE = "genericx86-64" +KMACHINE_genericx86-64 ?= "common-pc-64" +USER_CLASSES ?= "buildstats" +PACKAGE_CLASSES ?= "package_rpm" +EXTRA_IMAGE_FEATURES = "debug-tweaks" +PATCHRESOLVE = "noop" +BB_DISKMON_DIRS = "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" +PACKAGECONFIG_append_pn-qemu-native = " sdl" +PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" +CONF_VERSION = "1" + + diff --git a/example-config/overc-installer-examples/config-hd.sh b/example-config/overc-installer-examples/config-hd.sh new file mode 100644 index 00000000000..021ba61e470 --- /dev/null +++ b/example-config/overc-installer-examples/config-hd.sh @@ -0,0 +1,69 @@ +###################################################################### +# Define some configuration variables + +## Installer file locations +INSTALLER_FILES_DIR="/inst/images/" +INSTALLER_SBIN_DIR="/inst/installer/sbin" + +INSTALL_KERNEL="${INSTALLER_FILES_DIR}/bzImage" +INSTALL_ROOTFS="${INSTALLER_FILES_DIR}/op3-graphical-builder-genericx86-64.tar.bz2" +INSTALL_MODULES="" + +INSTALL_GRUBHDCFG="${INSTALLER_FILES_DIR}/grub-hd.cfg" +INSTALL_GRUBUSBCFG="${INSTALLER_FILES_DIR}/grub-usb.cfg" +INSTALL_GRUBCFG="${INSTALL_GRUBHDCFG}" + +INSTALL_FILES="${INSTALL_KERNEL} ${INSTALL_ROOTFS} ${INSTALL_MODULES} ${INSTALL_GRUBCFG}" + +## List of prerequisite files for the installer to check +PREREQ_FILES="${INSTALL_FILES}" + +BOARD_NAME="genericx86" +EVAL_NAME="Nucleo-T Evaluation" + +HARDDRIVE_DEVICE="/sys/class/scsi_disk/0:0:0:0/device" +HARDDRIVE_MODEL="ST9120822SB " + +BOOTPART_START="0" +BOOTPART_END="250M" +BOOTPART_FSTYPE="fat32" +BOOTPART_LABEL="boot" + +ROOTFS_START="250M" +ROOTFS_END="-1" # Specify -1 to use the rest of drive +ROOTFS_FSTYPE="ext2" +ROOTFS_LABEL="rootfs" + +HARDDRIVE_BANNER="Wind River Hard Drive Installer +-------------------------------------------------------------------------------- +$EVAL_NAME +--------------------------------------------------------------------------------" + +HARDDRIVE_INTRODUCTION=" +This installer will erase all data on your hard drive and configure it to boot +a working Nucleo-T +" + +INSTALLER_COMPLETE="Installation is now complete" + +CONFIRM_REBOOT=1 + +CMD_GRUB_INSTALL="/bin/bash /sbin/grub-install" + +###################################################################### +# Define some debug output variables + +# Debug Levels - fixed values +DEBUG_SILENT=0 +DEBUG_CRIT=1 +DEBUG_WARN=2 +DEBUG_INFO=4 +DEBUG_VERBOSE=7 + +# Set your default debug level +: ${DEBUG_DEFAULT:=${DEBUG_INFO}} + +# Dynamic debug level +DEBUG_LEVEL=${DEBUG_DEFAULT} + +: ${TRACE:=0} diff --git a/example-config/overc-installer-examples/config-usb-arm.sh b/example-config/overc-installer-examples/config-usb-arm.sh new file mode 100644 index 00000000000..ddda0979768 --- /dev/null +++ b/example-config/overc-installer-examples/config-usb-arm.sh @@ -0,0 +1,6 @@ +# For ARM boards +INSTALL_DTB="${ARTIFACTS_DIR}/dtb" +INSTALL_BOOTLOADER="${ARTIFACTS_DIR}/uboot.bin" + +# fsl-ls10xx or xilinx-zynq +BOARD_NAME="fsl-ls10xx" diff --git a/example-config/overc-installer-examples/config-usb-cube.sh b/example-config/overc-installer-examples/config-usb-cube.sh new file mode 100644 index 00000000000..7793ebbde04 --- /dev/null +++ b/example-config/overc-installer-examples/config-usb-cube.sh @@ -0,0 +1,20 @@ +source config-usb.sh + +HDINSTALL_ROOTFS="${ARTIFACTS_DIR}/cube-essential-genericx86-64.tar.bz2" + +HDINSTALL_CONTAINERS="${ARTIFACTS_DIR}/cube-dom0-genericx86-64.tar.bz2:vty=2 \ + ${ARTIFACTS_DIR}/cube-domE-genericx86-64.tar.bz2:vty=3" + + +HDINSTALL_CONTAINERS_STRIP="${ARTIFACTS_DIR}/cube-dom0-genericx86-64.tar.bz2 \ + ${ARTIFACTS_DIR}/cube-domE-genericx86-64.tar.bz2" + +## Uncomment for grub legacy +#INSTALL_GRUBUSBCFG="menu.lst.initramfs-installer" +#INSTALL_GRUBCFG="${INSTALLER_FILES_DIR}/${INSTALL_GRUBUSBCFG}" + +# Recalculate PREREQ_FILES +calc_prereq_files + +# Add to the list of PREREQ_FILES +PREREQ_FILES="${PREREQ_FILES} ${HDINSTALL_ROOTFS} ${HDINSTALL_CONTAINERS_STRIP}" diff --git a/example-config/overc-installer-examples/config-usb.sh b/example-config/overc-installer-examples/config-usb.sh new file mode 100644 index 00000000000..85785827ba0 --- /dev/null +++ b/example-config/overc-installer-examples/config-usb.sh @@ -0,0 +1,112 @@ +###################################################################### +# Define some configuration variables + +# set this variable +INITRAMFS_EXTRAS="" + +# set artifacts dir to the location of the kernel, image, etc. +if [ -z "${ARTIFACTS_DIR}" ]; then + ARTIFACTS_DIR="/home/pidge/overc-demo/build/tmp/deploy/images/genericx86-64/" +fi + +### Included in PREREQ_FILES. +INSTALL_KERNEL="${ARTIFACTS_DIR}/bzImage" +INSTALL_ROOTFS="${ARTIFACTS_DIR}/cube-essential-genericx86-64.tar.bz2" +INSTALL_INITRAMFS="${ARTIFACTS_DIR}/cube-builder-initramfs-genericx86-64.cpio.gz" +INSTALL_MODULES="${ARTIFACTS_DIR}/modules-genericx86-64.tgz" + +INSTALL_GRUBHDCFG="grub-hd.cfg" +INSTALL_GRUBUSBCFG="grub-usb.cfg" +INSTALL_GRUBCFG="${INSTALLER_FILES_DIR}/${INSTALL_GRUBUSBCFG}" +### End included in PREREQ_FILES. + +## List of prerequisite files for the installer to check. If you overwrite any +# of the variables in the previous section after sourcing this config be sure +# to run calc_prereq_files() again to recalculate PREREQ_FILES. +calc_prereq_files() { + INSTALL_FILES="${INSTALL_KERNEL} ${INSTALL_ROOTFS} ${INSTALL_MODULES} ${INSTALL_GRUBCFG}" + PREREQ_FILES="${INSTALL_FILES}" +} +calc_prereq_files + +INSTALL_INITRAMFS="${ARTIFACTS_DIR}/cube-builder-initramfs-genericx86-64.cpio.gz" +INSTALL_EFIBOOT="${ARTIFACTS_DIR}/bootx64.efi" + +#the smart config file which has been set the smart channels. +INSTALL_SMARTCONFIG="${ARTIFACTS_DIR}/config" + +HDINSTALL_ROOTFS="${ARTIFACTS_DIR}/cube-graphical-builder-genericx86-64.tar.bz2 \ + ${ARTIFACTS_DIR}/cube-builder-genericx86-64.tar.bz2" + + +# Uncomment to specify path to init.pp +#INSTALL_PUPPET_DIR="puppet" + +## List of prerequisite files for the installer to check +BOARD_NAME="Generic x86" +EVAL_NAME="Evaluation - OverC" +DISTRIBUTION="OverC" + +BOOTPART_START="63s" +BOOTPART_END="250M" +BOOTPART_FSTYPE="fat32" +BOOTPART_LABEL="boot" + +ROOTFS_START="250M" +ROOTFS_END="-1" # Specify -1 to use the rest of drive +ROOTFS_FSTYPE="ext2" +ROOTFS_LABEL="rootfs" + +USBSTORAGE_BANNER="USB Creator for the Hard Drive Installer +-------------------------------------------------------------------------------- +$EVAL_NAME +--------------------------------------------------------------------------------" + +USBSTORAGE_INTRODUCTION=" +This script will erase all data on your USB flash drive and configure it to boot +the Wind River Hard Drive Installer. This installer will then allow you to +install a working system configuration on to your internal hard drive. +" + +INSTALLER_COMPLETE="Installation is now complete" + +CONFIRM_INSTALL=1 +CONFIRM_REBOOT=0 + +CMD_GRUB_INSTALL="/usr/sbin/grub-install" + +###################################################################### +# Define some debug output variables + +# Debug Levels - fixed values +DEBUG_SILENT=0 +DEBUG_CRIT=1 +DEBUG_WARN=2 +DEBUG_INFO=4 +DEBUG_VERBOSE=7 + +# Set your default debug level +: ${DEBUG_DEFAULT:=${DEBUG_INFO}} + +# Dynamic debug level +DEBUG_LEVEL=${DEBUG_DEFAULT} + +: ${TRACE:=0} + +CONFIG_FILE_ARM="config-usb-arm.sh" +export X86_ARCH=true +#get the target's architecture, x86 or not x86? +file -L $INSTALL_KERNEL | grep -i x86 >/dev/null 2>&1 +if [ $? -ne 0 ]; then + export X86_ARCH=false +fi + +if ! $X86_ARCH; then + if ! [ -e "$CONFIG_FILE_ARM" ]; then + echo "ERROR: Could not find confgiration file (${CONFIG_FILE_ARM}) for ARM architecture." + exit 1 + else + source $CONFIG_FILE_ARM + fi +fi + diff --git a/recipes-autobuilder/images/cube-autobuilder-server.bb b/recipes-autobuilder/images/cube-autobuilder-server.bb new file mode 100644 index 00000000000..d48a36bb383 --- /dev/null +++ b/recipes-autobuilder/images/cube-autobuilder-server.bb @@ -0,0 +1,64 @@ +dSUMMARY = "A container image for the yocto-autobuilder which can build itself" +DESCRIPTION = "Launched from the essential image, this is a container image \ + which provides a working yocto-autobuilder that can produce and + deploy itself. \ + " +HOMEPAGE = "http://www.yoctoproject.org" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \ + file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +IMAGE_FEATURES += "package-management doc-pkgs x11-base" +IMAGE_FSTYPES = "tar.bz2" + +PACKAGE_EXCLUDE = "busybox*" + +# Exclude documention packages, which can be installed later +PACKAGE_EXCLUDE_COMPLEMENTARY = "ruby|ruby-shadow|puppet|hiera|facter" + +CUBE_AUTOBUILDER_SERVER_EXTRA_INSTALL ?= "" + +IMAGE_INSTALL += "packagegroup-core-boot \ + packagegroup-dom0 \ + packagegroup-util-linux \ + packagegroup-core-ssh-openssh \ + packagegroup-core-full-cmdline \ + packagegroup-builder \ + packagegroup-xfce \ + packagegroup-container \ + packagegroup-container \ + packagegroup-self-hosted \ + ntp \ + ntpdate \ + ntp-utils \ + yocto-autobuilder \ + ${CUBE_AUTOBUILDER_SERVER_EXTRA_INSTALL} \ + " + +XSERVER_append = "xserver-xorg \ + xserver-xorg-extension-dri \ + xserver-xorg-extension-dri2 \ + xserver-xorg-extension-glx \ + xserver-xorg-extension-extmod \ + xserver-xorg-extension-dbe \ + xserver-xorg-module-libint10 \ + xf86-input-evdev \ + xf86-input-keyboard \ + xf86-input-mouse \ + xf86-input-synaptics \ + xf86-input-vmmouse \ + xf86-video-ati \ + xf86-video-fbdev \ + xf86-video-intel \ + xf86-video-mga \ + xf86-video-modesetting \ + xf86-video-nouveau \ + xf86-video-vesa \ + xf86-video-vmware \ + " + +ALTERNATIVE_PRIORITY_xfce4-session[x-session-manager] = "60" + +inherit core-image +inherit builder-base diff --git a/recipes-autobuilder/yocto-autobuilder/files/yocto-autobuilder.service b/recipes-autobuilder/yocto-autobuilder/files/yocto-autobuilder.service new file mode 100644 index 00000000000..941f2d0307e --- /dev/null +++ b/recipes-autobuilder/yocto-autobuilder/files/yocto-autobuilder.service @@ -0,0 +1,12 @@ +[Unit] +Description=Yocto Autobuilder Server +After=local-fs.target + +[Service] +Type=simple +ExecStart=cd /root/yocto-autobuilder; . ./yocto-autobuilder-setup; ./yocto-start-autobuilder both +ExecStop=/bin/true +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/recipes-autobuilder/yocto-autobuilder/yocto-autobuilder_2.0.bb b/recipes-autobuilder/yocto-autobuilder/yocto-autobuilder_2.0.bb new file mode 100644 index 00000000000..ec933124f03 --- /dev/null +++ b/recipes-autobuilder/yocto-autobuilder/yocto-autobuilder_2.0.bb @@ -0,0 +1,57 @@ +SUMMARY = "Yocto Autobuilder" +DESCRIPTION = "" +HOMEPAGE = "http://www.yoctoproject.org" +BUGTRACKER = "https://bugzilla.yoctoproject.org" + +SECTION = "autobuilder" + +LICENSE = "GPLv2 & BSD-3-Clause & ZPL-2.1 & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \ + file://COPYING.buildbot;md5=f1a88a7286502fa751ec5bc81daee0da \ + file://COPYING.decorator;md5=9bb5e7e205a2a051d17add355516fcc5 \ + file://COPYING.htpasswd;md5=73a6429faf1e8e58dacd3a750c7d63c6 \ + file://COPYING.jinja2;md5=7baa781602629654eb2f98ebd8487d8c \ + file://COPYING.setuptools;md5=ad5967baf477a8cdca716556a0ec6e58 \ + file://COPYING.sqlalchemy;md5=3da9cfbcb788c80a0384361b4de20420 \ + file://COPYING.tempita;md5=a204069a7fc773c781ba65ecba3b2d6b \ + file://COPYING.twisted;md5=3da9cfbcb788c80a0384361b4de20420" + +S = "${WORKDIR}/git" + +AB_PASSWORD = "foobar" +AB_USER_PASSWORD = "foobar" + +SRCREV = "060896ae4af50392f1cf0ec4f6e3300f30308c12" +SRC_URI = "git://git.yoctoproject.org/yocto-autobuilder.git;branch=release/2.0 \ + file://yocto-autobuilder.service" + +SRC_URI[md5sum] = "5bb3b0ff2674e29378c31ad3411170ad" +SRC_URI[sha256sum] = "fa4049f8aee283de62e283d427f2cfd35d6c369b40f7f45f947dbfd915699d63" + +FILES_${PN} = "root/.htpasswd root/* lib/systemd/system/yocto-autobuilder.service" + +do_install() { + # We don't do a full install here. Most of this will occur during + # yocto-autobuilder-setup first run. + + install -m 0644 ${S}/yocto-controller/buildbot.tac.example ${S}/yocto-controller/buildbot.tac + install -m 0644 ${S}/yocto-worker/buildbot.tac.example ${S}/yocto-worker/buildbot.tac + install -m 0644 ${S}/yocto-controller/controller.cfg.example ${S}/yocto-controller/controller.cfg + install -m 0644 ${S}/config/autobuilder.conf.example ${S}/config/autobuilder.conf + install -d ${S}/buildset-config.controller ${S}/buildset-config + + sed -i "s/<PASS>/${AB_PASSWORD}/g" ${S}/yocto-controller/controller.cfg + sed -i "s/<PASS>/${AB_PASSWORD}/g" ${S}/yocto-controller/buildbot.tac + sed -i "s/<PASS>/${AB_PASSWORD}/g" ${S}/yocto-worker/buildbot.tac + sed -i "s/<HOST_ADDR>/${TARGETNAME}/" ${S}/bin/worker-init + sed -i "s/<PASS>/${AB_PASSWORD}/" ${S}/bin/worker-init + + install -d ${D}/root/yocto-autobuilder + touch ${D}/root/.htpasswd + ${S}/bin/htpasswd -b ${D}/root/.htpasswd root ${AB_USER_PASSWORD} + sed -i "s?<HTPASSWDPATH>?/root/yocto-autobuilder/.htpasswd?g" ${S}/yocto-controller/controller.cfg + cp -r ${S}/* ${D}/root/yocto-autobuilder + + install -d ${D}/lib/systemd/system/ + install -m 0644 ${WORKDIR}/yocto-autobuilder.service ${D}/lib/systemd/system/ +} |