diff options
Diffstat (limited to 'cross/build-rootfs.sh')
-rwxr-xr-x | cross/build-rootfs.sh | 133 |
1 files changed, 97 insertions, 36 deletions
diff --git a/cross/build-rootfs.sh b/cross/build-rootfs.sh index 07d6c3be7..ec6af484f 100755 --- a/cross/build-rootfs.sh +++ b/cross/build-rootfs.sh @@ -2,10 +2,11 @@ usage() { - echo "Usage: $0 [BuildArch] [LinuxCodeName] [cross]" + echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount]" echo "BuildArch can be: arm(default), armel, arm64, x86" - echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, jessie, xenial. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen." - echo "cross - optional, it initializes rootfs for cross building, works only for armel tizen now" + echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, xenial, zesty, alpine. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen." + echo "lldbx.y - optional, LLDB version, can be: lldb3.6(default), lldb3.8, lldb3.9, lldb4.0, no-lldb. Ignored for alpine" + echo "--skipunmount - optional, will skip the unmount of rootfs folder." exit 1 } @@ -15,30 +16,62 @@ __InitialDir=$PWD __BuildArch=arm __UbuntuArch=armhf __UbuntuRepo="http://ports.ubuntu.com/" -__UbuntuPackages="build-essential lldb-3.6-dev libunwind8-dev gettext symlinks liblttng-ust-dev libicu-dev" __LLDB_Package="lldb-3.6-dev" -__MachineTriple=arm-linux-gnueabihf -__UnprocessedBuildArgs= __SkipUnmount=0 -for i in "$@" - do - lowerI="$(echo $i | awk '{print tolower($0)}')" - case $lowerI in +# base development support +__UbuntuPackages="build-essential" + +__AlpinePackages="alpine-base" +__AlpinePackages+=" build-base" +__AlpinePackages+=" linux-headers" +__AlpinePackages+=" lldb-dev" +__AlpinePackages+=" llvm-dev" + +# symlinks fixer +__UbuntuPackages+=" symlinks" + +# CoreCLR and CoreFX dependencies +__UbuntuPackages+=" libicu-dev" +__UbuntuPackages+=" liblttng-ust-dev" +__UbuntuPackages+=" libunwind8-dev" + +__AlpinePackages+=" gettext-dev" +__AlpinePackages+=" icu-dev" +__AlpinePackages+=" libunwind-dev" +__AlpinePackages+=" lttng-ust-dev" + +# CoreFX dependencies +__UbuntuPackages+=" libcurl4-openssl-dev" +__UbuntuPackages+=" libkrb5-dev" +__UbuntuPackages+=" libssl-dev" +__UbuntuPackages+=" zlib1g-dev" + +__AlpinePackages+=" curl-dev" +__AlpinePackages+=" krb5-dev" +__AlpinePackages+=" openssl-dev" +__AlpinePackages+=" zlib-dev" + +__UnprocessedBuildArgs= +for i in "$@" ; do + lowerI="$(echo $i | awk '{print tolower($0)}')" + case $lowerI in -?|-h|--help) - usage - exit 1 - ;; + usage + exit 1 + ;; arm) - __BuildArch=arm - __UbuntuArch=armhf - ;; + __BuildArch=arm + __UbuntuArch=armhf + __AlpineArch=armhf + __QEMUArch=arm + ;; arm64) - __BuildArch=arm64 - __UbuntuArch=arm64 - __UbuntuPackages="build-essential libunwind8-dev gettext symlinks liblttng-ust-dev libicu-dev" - __MachineTriple=aarch64-linux-gnu - ;; + __BuildArch=arm64 + __UbuntuArch=arm64 + __AlpineArch=aarch64 + __QEMUArch=aarch64 + ;; armel) __BuildArch=armel __UbuntuArch=armel @@ -56,6 +89,15 @@ for i in "$@" lldb3.8) __LLDB_Package="lldb-3.8-dev" ;; + lldb3.9) + __LLDB_Package="liblldb-3.9-dev" + ;; + lldb4.0) + __LLDB_Package="liblldb-4.0-dev" + ;; + no-lldb) + unset __LLDB_Package + ;; vivid) if [ "$__LinuxCodeName" != "jessie" ]; then __LinuxCodeName=vivid @@ -71,6 +113,11 @@ for i in "$@" __LinuxCodeName=xenial fi ;; + zesty) + if [ "$__LinuxCodeName" != "jessie" ]; then + __LinuxCodeName=zesty + fi + ;; jessie) __LinuxCodeName=jessie __UbuntuRepo="http://ftp.debian.org/debian/" @@ -85,32 +132,25 @@ for i in "$@" __UbuntuRepo= __Tizen=tizen ;; - cross) - if [ "$__Tizen" != "tizen" ]; then - echo "Cross building rootfs is available only for armel tizen." - usage; - exit 1; - fi - # Cross building is available for armel tizen only with x86 rootfs - echo Building x86 xenial rootfs for armel tizen cross build... - $0 x86 xenial - echo Building armel rootfs... + alpine) + __LinuxCodeName=alpine + __UbuntuRepo= ;; --skipunmount) __SkipUnmount=1 ;; *) - __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" + __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" + ;; esac done if [ "$__BuildArch" == "armel" ]; then __LLDB_Package="lldb-3.5-dev" fi - -__RootfsDir="$__CrossDir/rootfs/$__BuildArch" __UbuntuPackages+=" ${__LLDB_Package:-}" +__RootfsDir="$__CrossDir/rootfs/$__BuildArch" if [[ -n "$ROOTFS_DIR" ]]; then __RootfsDir=$ROOTFS_DIR @@ -123,8 +163,22 @@ if [ -d "$__RootfsDir" ]; then rm -rf $__RootfsDir fi - -if [[ -n $__LinuxCodeName ]]; then +if [[ "$__LinuxCodeName" == "alpine" ]]; then + __ApkToolsVersion=2.9.1 + __AlpineVersion=3.7 + __ApkToolsDir=$(mktemp -d) + wget https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -P $__ApkToolsDir + tar -xf $__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -C $__ApkToolsDir + mkdir -p $__RootfsDir/usr/bin + cp -v /usr/bin/qemu-$__QEMUArch-static $__RootfsDir/usr/bin + $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \ + -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main \ + -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community \ + -X http://dl-cdn.alpinelinux.org/alpine/edge/testing \ + -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \ + add $__AlpinePackages + rm -r $__ApkToolsDir +elif [[ -n $__LinuxCodeName ]]; then qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list chroot $__RootfsDir apt-get update @@ -135,6 +189,13 @@ if [[ -n $__LinuxCodeName ]]; then if [ $__SkipUnmount == 0 ]; then umount $__RootfsDir/* fi + + if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then + pushd $__RootfsDir + patch -p1 < $__CrossDir/$__BuildArch/trusty.patch + patch -p1 < $__CrossDir/$__BuildArch/trusty-lttng-2.4.patch + popd + fi elif [ "$__Tizen" == "tizen" ]; then ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh else |