diff --git a/b2qt-init-build-env b/b2qt-init-build-env index f1ad0bb138794edde05034b3b5a5ba72a2147e52..03c64395f4a990e541e26a8c59ae250f4a0b98c3 100755 --- a/b2qt-init-build-env +++ b/b2qt-init-build-env @@ -24,92 +24,147 @@ set -e usage() { - echo "Usage: $0 <yocto build directory> [--force] [--reference <other build directory>]" + echo "Usage: $(basename $0) COMMAND [ARGS]" + echo + echo "Initialize build environment:" + echo " $(basename $0) init --device <name> [--reference <mirror path>]" + echo "Initialize local mirror:" + echo " $(basename $0) mirror" + echo "List available devices:" + echo " $(basename $0) list-devices" } while test -n "$1"; do case "$1" in - "--help" | "-h") + "help" | "--help" | "-h") usage exit 0 ;; - "--force" | "-f") - FORCE_UPDATE=1 - ;; "--reference" | "-r") shift - REFDIR=$1 + REFERENCE=$1 + ;; + "--device" | "-d") + shift + DEVICE=$1 ;; *) - BUILDDIR=$1 + if [ -n "$COMMAND" ]; then + echo "Unknown argument: $1" + usage + exit 1 + fi + COMMAND=$1 ;; esac shift done -if [ -z "${BUILDDIR}" ]; then +if [ -z "${COMMAND}" ]; then usage exit 1 fi DIR=$(readlink -f $(dirname $0)) -BUILDDIR=$(readlink -f $BUILDDIR) -if [ -n "${REFDIR}" ]; then - REFDIR=$(readlink -f ${REFDIR}) +if [ -n "${REFERENCE}" ]; then + REFERENCE="--reference $(readlink -f ${REFERENCE})" fi -checkout() { - REPO=$1 - REPODIR=${REPO##*/} - if [ ${REPODIR} != "poky" ]; then - REPODIR="poky/${REPODIR}" - fi - REF=${2%%:*} - SHA1=${2##*:} - mkdir -p ${BUILDDIR}/${REPODIR} - cd ${BUILDDIR}/${REPODIR} - if [ ! -d ${BUILDDIR}/${REPODIR}/.git ]; then - echo "Checking out ${REPODIR}" - git init - if [ -n "${REFDIR}" ]; then - REPOREFDIR=${REFDIR}/${REPODIR}/.git/objects - if [ -d ${REPOREFDIR} ]; then - echo ${REPOREFDIR} > .git/objects/info/alternates - fi - fi - git remote add origin ${REPO} -f - git checkout ${REF} - git reset --hard ${SHA1} - elif [ -n "${FORCE_UPDATE}" ]; then - echo "Updating ${REPODIR}" - git fetch origin - git reset --hard ${SHA1} - fi +get_repo() { + REPO="./repo" + if [ -n "$(command -v repo)" ]; then + REPO="repo" + elif [ ! -x "./repo" ]; then + curl -s https://storage.googleapis.com/git-repo-downloads/repo > "./repo" + chmod +x ./repo + fi } -checkout git://git.yoctoproject.org/poky "daisy:b2f045c400fa8bd20b319c60137b1575f967cef1" -checkout git://git.yoctoproject.org/meta-fsl-arm "daisy:e9bf647e10ff1e31f911d3236dbb22a1ad7ace9f" -checkout git://github.com/Freescale/meta-fsl-arm-extra "daisy:e041d9a118c5eecf4010bcb41bb5c554636090ab" -checkout git://github.com/beagleboard/meta-beagleboard "master:b5c709b2b6bd3bf236df923fa8f245a00fbb1b60" -checkout git://git.yoctoproject.org/meta-ti "daisy:41457c50e21168faf04f3cdd4168954890d6cdab" -checkout git://git.yoctoproject.org/meta-raspberrypi "daisy:946b69299737cc2f1378c864f1b9075280db1b53" -checkout git://git.toradex.com/meta-toradex "V2.2:b47dad6cf9bd5be5287dac3835ea037a2fd30cf7" -checkout git://git.openembedded.org/meta-openembedded "daisy:662cf409c1175450699d498085f3c894e0fe81d0" - -if [ ! -d ${BUILDDIR}/poky/meta-b2qt ]; then - ln -s ${DIR} ${BUILDDIR}/poky/meta-b2qt -fi +get_groups() { + case ${DEVICE} in + apalis-imx6) + GROUPS="toradex" + ;; + imx53qsb|imx6qsabresd|nitrogen6x) + GROUPS="fsl" + ;; + beagleboard|am335x-evm) + GROUPS="ti" + ;; + beaglebone) + GROUPS="bbb" + ;; + raspberrypi) + GROUPS="rpi" + ;; + emulator) + GROUPS="emulator" + ;; + *) + echo "Unknown device configuration, no matching repo group defined" + exit 1 + ;; + esac + + GROUPS="${GROUPS} default" +} + +list_devices() { + echo "Available device configurations:" + for device in $(ls $DIR/conf/distro/include/*.conf); do + echo " $(basename ${device%%.*})" + done +} + +mirror() { + mkdir -p .repo/manifests + cp ${DIR}/scripts/manifest.xml .repo/manifests/ + MANIFEST="manifest.xml" + ${REPO} init -u https://gerrit.googlesource.com/git-repo -m ${MANIFEST} -g all --mirror + ${REPO} sync +} -echo -echo "Yocto build system is ready" -echo "next initialize the build env for your target machine, for example:" -echo -echo "cd ${BUILDDIR}" -echo "export TEMPLATECONF=meta-b2qt/conf" -echo "export MACHINE=raspberrypi" -echo ". ./poky/oe-init-build-env build-raspberrypi" -echo -echo "and build B2Qt image with:" -echo -echo "bitbake b2qt-embedded-image" -echo +init() { + if [ -z "${DEVICE}" ]; then + echo "device not defined" + usage + exit 1 + fi + + get_groups + mkdir -p .repo/manifests + cp ${DIR}/scripts/manifest*.xml .repo/manifests + if [ -f .repo/manifests/manifest_${DEVICE}.xml ]; then + MANIFEST="manifest_${DEVICE}.xml" + else + MANIFEST="manifest.xml" + fi + ${REPO} init -u https://gerrit.googlesource.com/git-repo -m ${MANIFEST} -g "${GROUPS}" ${REFERENCE} + ${REPO} sync + + if [ ! -e "sources/meta-b2qt" ]; then + ln -s ${DIR} sources/meta-b2qt + fi + + cp ${DIR}/scripts/setup_environment.sh . + +} + +get_repo + +case "$COMMAND" in + "init") + init + ;; + "mirror") + mirror + ;; + "list-devices") + list_devices + ;; + *) + echo "Unknown command" + usage + exit 1 + ;; +esac diff --git a/conf/bblayers.conf.sample b/conf/bblayers.conf.sample index 46e69d865a9db9d955a2d9189261c59a8f1213bb..363629736695bbeae9385bdc9259e9d71a25318e 100644 --- a/conf/bblayers.conf.sample +++ b/conf/bblayers.conf.sample @@ -30,18 +30,18 @@ BBFILES ?= "" BBLAYERS ?= " \ ##COREBASE##/meta \ ##COREBASE##/meta-yocto \ - ##COREBASE##/meta-fsl-arm \ - ##COREBASE##/meta-fsl-arm-extra \ - ##COREBASE##/meta-beagleboard/common-bsp \ - ##COREBASE##/meta-ti \ - ##COREBASE##/meta-raspberrypi \ - ##COREBASE##/meta-toradex \ - ##COREBASE##/meta-openembedded/meta-oe \ - ##COREBASE##/meta-b2qt \ - ##COREBASE##/meta-b2qt/meta-ti-extras \ - ##COREBASE##/meta-b2qt/meta-fsl-extras \ - ##COREBASE##/meta-b2qt/meta-beagleboard-extras \ - ##COREBASE##/meta-b2qt/meta-toradex-extras \ + ##COREBASE##/../meta-fsl-arm \ + ##COREBASE##/../meta-fsl-arm-extra \ + ##COREBASE##/../meta-beagleboard/common-bsp \ + ##COREBASE##/../meta-ti \ + ##COREBASE##/../meta-raspberrypi \ + ##COREBASE##/../meta-toradex \ + ##COREBASE##/../meta-openembedded/meta-oe \ + ##COREBASE##/../meta-b2qt \ + ##COREBASE##/../meta-b2qt/meta-ti-extras \ + ##COREBASE##/../meta-b2qt/meta-fsl-extras \ + ##COREBASE##/../meta-b2qt/meta-beagleboard-extras \ + ##COREBASE##/../meta-b2qt/meta-toradex-extras \ " BBLAYERS_NON_REMOVABLE ?= " \ ##COREBASE##/meta \ diff --git a/scripts/manifest.xml b/scripts/manifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..8f931168d421dca99ae906f9f981333521c023a8 --- /dev/null +++ b/scripts/manifest.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<manifest> + + <default sync-j="4" revision="daisy"/> + + <remote fetch="git://git.yoctoproject.org" name="yocto"/> + <remote fetch="git://git.openembedded.org" name="oe"/> + <remote fetch="git://github.com/Freescale" name="freescale"/> + <remote fetch="git://github.com/beagleboard" name="beagleboard"/> + <remote fetch="git://git.toradex.com" name="toradex"/> + + <project name="poky" + remote="yocto" + revision="b2f045c400fa8bd20b319c60137b1575f967cef1" + path="sources/poky"/> + <project name="meta-openembedded" + remote="oe" + revision="662cf409c1175450699d498085f3c894e0fe81d0" + path="sources/meta-openembedded"/> + + <project name="meta-fsl-arm" + remote="yocto" + revision="e9bf647e10ff1e31f911d3236dbb22a1ad7ace9f" + path="sources/meta-fsl-arm" + groups="notdefault,fsl,toradex"/> + <project name="meta-ti" + remote="yocto" + revision="41457c50e21168faf04f3cdd4168954890d6cdab" + path="sources/meta-ti" + groups="notdefault,ti,bbb"/> + <project name="meta-raspberrypi" + remote="yocto" + revision="946b69299737cc2f1378c864f1b9075280db1b53" + path="sources/meta-raspberrypi" + groups="notdefault,rpi"/> + <project name="meta-fsl-arm-extra" + remote="freescale" + revision="e041d9a118c5eecf4010bcb41bb5c554636090ab" + path="sources/meta-fsl-arm-extra" + groups="notdefault,fsl,toradex"/> + <project name="meta-beagleboard" + remote="beagleboard" + revision="b5c709b2b6bd3bf236df923fa8f245a00fbb1b60" + path="sources/meta-beagleboard" + groups="notdefault,bbb"/> + <project name="meta-toradex" + remote="toradex" + revision="b47dad6cf9bd5be5287dac3835ea037a2fd30cf7" + path="sources/meta-toradex" + groups="notdefault,toradex"/> + +</manifest> + diff --git a/scripts/setup_environment.sh b/scripts/setup_environment.sh new file mode 100755 index 0000000000000000000000000000000000000000..63f59cf20fa81dcada985e71f4ac469b11b29924 --- /dev/null +++ b/scripts/setup_environment.sh @@ -0,0 +1,98 @@ +#!/bin/sh +############################################################################# +## +## Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +## +## This file is part of the Qt Enterprise Embedded Scripts of the Qt +## framework. +## +## $QT_BEGIN_LICENSE$ +## Commercial License Usage Only +## Licensees holding valid commercial Qt license agreements with Digia +## with an appropriate addendum covering the Qt Enterprise Embedded Scripts, +## may use this file in accordance with the terms contained in said license +## agreement. +## +## For further information use the contact form at +## http://qt.digia.com/contact-us. +## +## +## $QT_END_LICENSE$ +## +############################################################################# + +usage() { + echo "source setup-environment <build-dir>" +} + +clean() { + unset BUILDDIR + unset NEWBUILD + unset TEMPLATECONF +} + +CWD=`pwd` + +while test -n "$1"; do + case "$1" in + "--help" | "-h") + usage + return 0 + ;; + *) + BUILDDIR=$1 + ;; + esac + shift +done + +if [ -z "${BUILDDIR}" ]; then + usage + return 1 +fi + +if [ -z "$MACHINE" ]; then + echo "MACHINE environment variable not defined" + clean + return 1 +fi + +if [ ! -d ${CWD}/${BUILDDIR} ]; then + NEWBUILD=1 +fi + +export TEMPLATECONF=${CWD}/sources/meta-b2qt/conf +cd sources/poky +. ./oe-init-build-env ${CWD}/${BUILDDIR} + +if [ -n "${NEWBUILD}" ]; then + case ${MACHINE} in + apalis-imx6) + LAYERS="meta-raspberrypi meta-beagleboard meta-ti" + ;; + imx53qsb|imx6qsabresd|nitrogen6x) + LAYERS="meta-raspberrypi meta-beagleboard meta-toradex meta-ti" + ;; + beagleboard|am335x-evm) + LAYERS="meta-raspberrypi meta-beagleboard meta-toradex meta-fsl" + ;; + beaglebone) + LAYERS="meta-raspberrypi meta-toradex meta-fsl" + ;; + raspberrypi) + LAYERS="meta-beagleboard meta-toradex meta-ti meta-fsl" + ;; + emulator) + LAYERS="meta-raspberrypi meta-beagleboard meta-toradex meta-ti meta-fsl" + ;; + *) + echo "Unknown MACHINE, bblayer.conf might need manual editing" + ;; + esac + + for layer in ${LAYERS}; do + sed -i -e "/${layer}/d" conf/bblayers.conf + done +fi + +clean