From 1f47792a878fbe57d7a057f485831f45760d57ed Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 17 Mar 2014 22:40:57 +0400 Subject: [PATCH] atvboot: cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit changes to put all the boot/installer files in one place instead of scattering them over multiple packages, and removing the 3rdparty folder from the .tar file as it’s +12MB and nobody is ever going to use them --- .../files/3rdparty/atvboot/BootLogo.png | Bin 26321 -> 0 bytes .../files/3rdparty/atvboot/BootLogoSwiss.png | Bin 30078 -> 0 bytes .../files/3rdparty/atvboot/com.apple.Boot.hdd | 16 - .../3rdparty/atvboot/com.apple.Boot.plist | 16 - .../files/3rdparty/atvboot/com.apple.Boot.usb | 16 - .../files/3rdparty/atvboot/patchstick.sh | 478 ------------------ packages/tools/atv-bootloader/release | 25 - packages/tools/atvboot/package.mk | 8 +- scripts/image | 1 + scripts/mkimage-atv | 2 +- 10 files changed, 6 insertions(+), 556 deletions(-) delete mode 100644 packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogo.png delete mode 100644 packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogoSwiss.png delete mode 100644 packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.hdd delete mode 100644 packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.plist delete mode 100644 packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.usb delete mode 100755 packages/tools/atv-bootloader/files/3rdparty/atvboot/patchstick.sh delete mode 100755 packages/tools/atv-bootloader/release diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogo.png b/packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogo.png deleted file mode 100644 index 62bb12f1a8f83a21af8ccafa6197d42a7736a54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26321 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 diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogoSwiss.png b/packages/tools/atv-bootloader/files/3rdparty/atvboot/BootLogoSwiss.png deleted file mode 100644 index 39f154f064ff0ff2499129a3dfd8380ead23e299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30078 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 diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.hdd b/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.hdd deleted file mode 100644 index a888f290f1..0000000000 --- a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.hdd +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Background Color - 0 - Boot Fail Logo - - Boot Logo - BootLogo.png - Kernel - MACH_KERNEL - Kernel Flags - boot=/dev/sda1 disk=/dev/sda2 quiet BOOT_IMAGE=MACH_KERNEL SYSTEM_IMAGE=SYSTEM - - diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.plist b/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.plist deleted file mode 100644 index e335a0f72a..0000000000 --- a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.plist +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Background Color - 0 - Boot Fail Logo - - Boot Logo - BootLogoSwiss.png - Kernel - mach_kernel - Kernel Flags - atv-boot=patchstick logo.nologo quiet video=vesafb - - diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.usb b/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.usb deleted file mode 100644 index ca2fcc00aa..0000000000 --- a/packages/tools/atv-bootloader/files/3rdparty/atvboot/com.apple.Boot.usb +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Background Color - 0 - Boot Fail Logo - - Boot Logo - BootLogo.png - Kernel - MACH_KERNEL - Kernel Flags - boot=/dev/sdb1 disk=/dev/sdb2 quiet BOOT_IMAGE=MACH_KERNEL SYSTEM_IMAGE=SYSTEM - - diff --git a/packages/tools/atv-bootloader/files/3rdparty/atvboot/patchstick.sh b/packages/tools/atv-bootloader/files/3rdparty/atvboot/patchstick.sh deleted file mode 100755 index 6d8620d60c..0000000000 --- a/packages/tools/atv-bootloader/files/3rdparty/atvboot/patchstick.sh +++ /dev/null @@ -1,478 +0,0 @@ -#!/bin/bash -################################################################################ -# This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2011-2013 Christian Hewitt (chewitt@openelec.tv) -# -# 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, 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 OpenELEC.tv; see the file COPYING. If not, write to -# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. -# http://www.gnu.org/copyleft/gpl.html -################################################################################ - -blink(){ - atvclient &>/dev/null & -} - -check_verbose(){ - exec 1>/dev/console - exec 2>/dev/console - if [ -f /mnt/openelec/enable_verbose ]; then - exec 3>&1 - exec 4>&2 - else - exec 3> /dev/null - exec 4> /dev/null - fi -} - -check_debug(){ - if [ -f /mnt/rootfs/enable_debug ]; then - echo " INFO: Script debugging enabled" - set -x - fi -} - -check_function(){ - FUNCTION=$(cat /mnt/rootfs/function) -} - -check_bootdevice(){ - SDA=$(ls /dev/sda) - SDB=$(ls /dev/sdb) - BOOTDEVICE=$(cat /proc/mounts | grep /mnt/rootfs | awk '{print $1}' | sed 's/[0-9]//g') - if [ -n "${SDA}" -a -n "${SDB}" ]; then - # AppleTV has USB and HDD devices - if [ "${BOOTDEVICE}" = "/dev/sda" ]; then - # AppleTV has a SATA adapter the kernel recognises slowly - USB="/dev/sda" - HDD="/dev/sdb" - SLOWBOOT="TRUE" - else - # AppleTV has a normal setup - USB="/dev/sdb" - HDD="/dev/sda" - fi - else - # AppleTV has no HDD - USB="/dev/sda" - HDD="/dev/sda" - NOHDD="TRUE" - fi -} - -banner(){ - clear - echo "" - echo "" - echo "" - echo " ********************************************************************************" - echo " * *" - case $FUNCTION in - factoryrestore) echo " * OpenELEC AppleTV Factory Restore *" ;; - update) echo " * OpenELEC AppleTV Updater *" ;; - emergency) echo " * OpenELEC AppleTV Emergency Boot *" ;; - *) echo " * OpenELEC AppleTV Installer *" ;; - esac - echo " * *" - echo " ********************************************************************************" - echo "" -} - -get_partition_end(){ - local PARTITION=$1 - PARTITION_END=$(parted -s "${TARGET}" print -m | egrep "^${PARTITION}" | cut -d ":" -f 3) - strip_alpha_characters "${PARTITION_END}" - PARTITION_END="${STRIPPED}" -} - -strip_alpha_characters(){ - local TEXT=$1 - STRIPPED=$(echo "${TEXT}" | sed 's/[^.0-9]//g') -} - -disk_sync(){ - partprobe "${TARGET}" 1>&3 2>&4 - sync 1>&3 2>&4 -} - -network(){ - ifconfig eth0 0.0.0.0 - /sbin/udhcpc --now 1>&3 2>&4 - sleep 4 - IPADDRESS=$(ifconfig | head -n 2 | grep inet | awk '{print $2}' | sed 's/addr://g') - if [ "${IPADDRESS}" = "" ]; then - ERROR="noipaddress" - error - else - echo " INFO: Leased ipv4 address ${IPADDRESS} from DHCP server" - fi -} - -prepare(){ - case $FUNCTION in - factoryrestore) - if [ ! -d /mnt/rootfs/restore ]; then - echo "" - echo " FAIL: No restore files!" - echo "" - error - fi - ;; - *) - if [ ! -f /mnt/rootfs/MACH_KERNEL -a ! -f /mnt/rootfs/SYSTEM ]; then - network - DOWNLOAD=$(wget -qO- "http://update.openelec.tv/updates.php?i=INSTALLER&d=OpenELEC&pa=ATV.i386&v=3.1.0" | \ - sed 's/{"data":{"update":"//g' | sed 's/","folder":"releases"}}//g' | grep OpenELEC-ATV) - echo "" - echo " INFO: Downloading ${DOWNLOAD}" - echo "" - wget -O /mnt/rootfs/${DOWNLOAD} http://releases.openelec.tv/${DOWNLOAD} - tar -xvf /mnt/rootfs/${DOWNLOAD} -C /mnt/rootfs 1>&3 2>&4 - FOLDER=$(echo ${DOWNLOAD} | sed 's/.tar//g') - mv /mnt/rootfs/${FOLDER}/target/MACH_KERNEL /mnt/rootfs/ 1>&3 2>&4 - mv /mnt/rootfs/${FOLDER}/target/MACH_KERNEL.md5 /mnt/rootfs/ 1>&3 2>&4 - mv /mnt/rootfs/${FOLDER}/target/SYSTEM /mnt/rootfs/ 1>&3 2>&4 - mv /mnt/rootfs/${FOLDER}/target/SYSTEM.md5 /mnt/rootfs/ 1>&3 2>&4 - rm -rf /mnt/rootfs/${FOLDER} 1>&3 2>&4 - fi - SUM1=$(md5sum /mnt/rootfs/MACH_KERNEL | awk '{print $1}') - SUM2=$(cat /mnt/rootfs/MACH_KERNEL.md5 | awk '{print $1}') - SUM3=$(md5sum /mnt/rootfs/SYSTEM | awk '{print $1}') - SUM4=$(cat /mnt/rootfs/SYSTEM.md5 | awk '{print $1}') - if [ "${SUM1}" != "${SUM2}" -o "${SUM3}" != "${SUM4}" -o -z "${SUM2}" -o -z "${SUM4}" ]; then - ERROR="badchecksum" - error - fi - rm /mnt/rootfs/MACH_KERNEL.md5 1>&3 2>&4 - rm /mnt/rootfs/SYSTEM.md5 1>&3 2>&4 - ;; - esac -} - -create_target(){ - echo "" - dd if=/dev/zero of=${TARGET} bs=512 count=40 1>&3 2>&4 - disk_sync - echo " INFO: Creating GPT Scheme" - parted -s ${TARGET} mklabel gpt 1>&3 2>&4 -} - -create_boot(){ - echo " INFO: Creating BOOT Partition" - PARTITION="1" - parted -s ${TARGET} mkpart primary HFS 40s 409600s 1>&3 2>&4 - parted -s ${TARGET} set ${PARTITION} atvrecv on 1>&3 2>&4 - parted -s ${TARGET} name ${PARTITION} 'BOOT' 1>&3 2>&4 - disk_sync - mkfs.hfsplus -s -v "BOOT" ${TARGET}${PARTITION} 1>&3 2>&4 - fsck.hfsplus -y ${TARGET}${PARTITION} 1>&3 2>&4 - BOOT=$(mktemp -d "/tmp/mounts.XXXXXX") - mount ${TARGET}${PARTITION} ${BOOT} 1>&3 2>&4 - PARTITION=$(( ${PARTITION} + 1 )) -} - -create_boot_usb(){ - echo " INFO: Creating BOOT Partition" - PARTITION="1" - parted -s ${TARGET} mkpart primary HFS 40s 1048542s 1>&3 2>&4 - parted -s ${TARGET} set ${PARTITION} atvrecv on 1>&3 2>&4 - parted -s ${TARGET} name ${PARTITION} 'BOOT' 1>&3 2>&4 - disk_sync - PARTITION=$(( ${PARTITION} + 1 )) -} - -create_storage(){ - echo " INFO: Creating STORAGE Partition" - P1_END=$(parted -s ${TARGET} unit s print | grep atvrecv | awk '{print $3}' | sed 's/s//g') - P2_START=$(( ${P1_END} + 1 )) - DRIVE_END=$(parted -s ${TARGET} unit s print | grep ${TARGET} | awk '{print $3}' | sed 's/s//g') - SWAP_SIZE=$(( 512 * 1024 * 1024 / 512 )) # 512MB in bytes / 512 byte sectors - if [ "${SWAP}" = "TRUE" -a "${FUNCTION}" = "install-hdd" ]; then - P2_END=$(( ${DRIVE_END} - ${SWAP_SIZE} - 40 )) - else - P2_END=$(( ${DRIVE_END} - 40 )) - fi - parted -s ${TARGET} mkpart primary ext4 ${P2_START}s ${P2_END}s 1>&3 2>&4 - parted -s ${TARGET} name ${PARTITION} 'STORAGE' 1>&3 2>&4 - disk_sync - mkfs.ext4 -L "STORAGE" ${TARGET}${PARTITION} 1>&3 2>&4 - fsck.ext4 -y ${TARGET}${PARTITION} 1>&3 2>&4 - STORAGE=$(mktemp -d "/tmp/mounts.XXXXXX") - mount ${TARGET}${PARTITION} ${STORAGE} 1>&3 2>&4 - PARTITION=$(( ${PARTITION} + 1 )) -} - -create_swap(){ - if [ "${SWAP}" = "TRUE" ]; then - echo " INFO: Creating LINUX-SWAP Partition" - P2_END=$(parted -s ${TARGET} unit s print | grep STORAGE | awk '{print $3}' | sed 's/s//g') - DRIVE_END=$(parted -s ${TARGET} unit s print | grep ${TARGET} | awk '{print $3}' | sed 's/s//g') - P3_START=$(( ${P2_END} + 1 )) - P3_END=$(( ${DRIVE_END} - 40 )) - parted -s ${TARGET} mkpart primary linux-swap ${P3_START}s ${P3_END}s 1>&3 2>&4 - parted -s ${TARGET} name ${PARTITION} 'LINUX-SWAP' 1>&3 2>&4 - mkswap ${TARGET}${PARTITION} 1>&3 2>&4 - disk_sync - fi -} - -install_hdd(){ - TARGET=${HDD} - SWAP="TRUE" - echo "" - echo " WARN: Continuing with installation will replace the original Apple OS or current" - echo " Linux OS on the AppleTV's internal hard drive with OpenELEC. If you do not" - echo " want installation to contine please POWER OFF your AppleTV within the next" - echo " 30 seconds and remove the USB key." - catnap - create_target - create_boot - create_storage - create_swap - echo " INFO: Creating BOOT Files" - cp -av /mnt/rootfs/boot.efi "${BOOT}"/ 1>&3 2>&4 - cp -av /mnt/rootfs/BootLogo.png "${BOOT}"/ 1>&3 2>&4 - cp -Rv /mnt/rootfs/System "${BOOT}"/ 1>&3 2>&4 - cp -av /mnt/rootfs/MACH_KERNEL "${BOOT}"/ 1>&3 2>&4 - cp -av /mnt/rootfs/SYSTEM "${BOOT}"/ 1>&3 2>&4 - if [ "${SLOWBOOT}" = "TRUE" ]; then - cp -av /mnt/rootfs/com.apple.Boot.usb "${BOOT}"/com.apple.Boot.plist 1>&3 2>&4 - else - cp -av /mnt/rootfs/com.apple.Boot.hdd "${BOOT}"/com.apple.Boot.plist 1>&3 2>&4 - fi - chown root:root "${BOOT}"/* 1>&3 2>&4 - mkdir -p ${STORAGE}/.update 1>&3 2>&4 - mkdir -p ${STORAGE}/.cache/services 1>&3 2>&4 - echo SSHD_START=true > ${STORAGE}/.cache/services/ssh.conf - # for systemd testing we also need to touch sshd.conf - touch ${STORAGE}/.cache/services/sshd.conf - remove_temp_mounts 1>&3 2>&4 - echo "" - echo " INFO: Installation Completed!" - echo "" - echo " INFO: Ignore the warnings below as we reboot :)" - echo "" -} - -install_usb(){ - TARGET=${USB} - SWAP="FALSE" - create_target - create_boot_usb - create_storage - if [ "${NOHDD}" = "TRUE" ]; then - cp -av /mnt/rootfs/com.apple.Boot.hdd /mnt/rootfs/com.apple.Boot.plist 1>&3 2>&4 - else - cp -av /mnt/rootfs/com.apple.Boot.usb /mnt/rootfs/com.apple.Boot.plist 1>&3 2>&4 - fi - mkdir -p ${STORAGE}/.update 1>&3 2>&4 - mkdir -p ${STORAGE}/.cache/services 1>&3 2>&4 - echo SSHD_START=true > ${STORAGE}/.cache/services/ssh.conf - # for systemd testing we also need to touch sshd.conf - touch ${STORAGE}/.cache/services/sshd.conf - remove_temp_mounts 1>&3 2>&4 - echo "" - echo " INFO: Installation Completed!" - echo "" - echo " INFO: Ignore the warnings below as we reboot :)" - echo "" -} - -update(){ - echo "" - echo " INFO: Checking ${HDD}1 Filesystem for Errors" - fsck.hfsplus ${HDD}1 1>&3 2>&4 - # echo " INFO: Checking ${HDD}2 Filesystem for Errors" - # fsck.ext4 ${HDD}2 1>&3 2>&4 - mkdir -p /mnt/boot 1>&3 2>&4 - echo " INFO: Mounting BOOT Partition" - mount -t hfsplus -o rw,force ${HDD}1 /mnt/boot 1>&3 2>&4 - echo " INFO: Updating MACH_KERNEL and SYSTEM" - cp -av /mnt/rootfs/MACH_KERNEL /mnt/boot/ 1>&3 2>&4 - cp -av /mnt/rootfs/SYSTEM /mnt/boot/ 1>&3 2>&4 - echo "" - echo " INFO: Files updated!" - echo "" - echo " INFO: Ignore the warnings below as we reboot :)" - echo "" -} - -factoryrestore(){ - DISKSIZE=$(parted -s ${HDD} unit s print | grep "Disk ${HDD}:" | awk '{print $3}' | sed 's/s//g') - let SECTORS="${DISKSIZE}"-262145 - echo " WARN: Continuing with restore will erase OpenELEC from the internal HDD of your" - echo " AppleTV and will reinstall AppleOS files to prepare for a factory-restore" - echo " boot. To abort the restore, POWER OFF your AppleTV in the next 30 seconds" - echo "" - catnap - echo " INFO: Creating GPT Scheme" - parted -s ${HDD} mklabel gpt 1>&3 2>&4 - echo " INFO: Creating Partitions" - parted -s ${HDD} mkpart primary fat32 40s 69671s 1>&3 2>&4 - parted -s ${HDD} mkpart primary HFS 69672s 888823s 1>&3 2>&4 - parted -s ${HDD} mkpart primary HFS 888824s 2732015s 1>&3 2>&4 - parted -s ${HDD} mkpart primary HFS 2732016s ${SECTORS}s 1>&3 2>&4 - partprobe ${HDD} 1>&3 2>&4 - parted -s ${HDD} set 2 atvrecv on 1>&3 2>&4 - parted -s ${HDD} set 1 boot on 1>&3 2>&4 - echo " INFO: Creating Filesystems" - mkfs.msdos -F 32 -n EFI ${HDD}1 1>&3 2>&4 - mkfs.hfsplus -v Recovery ${HDD}2 1>&3 2>&4 - mkfs.hfsplus -J -v OSBoot ${HDD}3 1>&3 2>&4 - mkfs.hfsplus -J -v Media ${HDD}4 1>&3 2>&4 - partprobe ${HDD} 1>&3 2>&4 - echo " INFO: Restoring Recovery Files" - mkdir /mnt/Recovery 1>&3 2>&4 - mount -t hfsplus -o rw,force ${HDD}2 /mnt/Recovery 1>&3 2>&4 - cp -Rv /mnt/rootfs/restore/* /mnt/Recovery 1>&3 2>&4 - sync 1>&3 2>&4 - sleep 2 - umount /mnt/Recovery 1>&3 2>&4 - sleep 2 - echo y | gptsync ${HDD} 1>&3 2>&4 - sleep 2 - echo "" - echo " INFO: Preparation has completed!" - echo "" - echo " INFO: Ignore the warnings below as we reboot :)" - echo "" -} - -emergency(){ - echo "" - echo " INFO: Telnet login available; user = 'root' and password = 'root'" - echo "" - telnetd -l /bin/login -} - -cleanup_hdd(){ - umount /mnt/rootfs 1>&3 2>&4 - echo y | gptsync ${HDD} 1>&3 2>&4 - dd if=/dev/zero of=${USB} bs=512 count=40 1>&3 2>&4 -} - -cleanup_usb(){ - umount /mnt/rootfs 1>&3 2>&4 - echo y | gptsync ${USB} 1>&3 2>&4 -} - -snooze(){ - sleep 100000 -} - -catnap(){ - sleep 30 -} - -pause(){ - sleep 10 -} - -error(){ - case $ERROR in - download) echo " FAIL: The files could not be downloaded, aborting!";; - badchecksum) echo " FAIL: Checksum does not match, aborting!";; - noipaddress) echo " FAIL: Failed to lease an ipv4 address, aborting!";; - *) echo " FAIL: There was an error, aborting!";; - esac - echo "" - if [ -z "${IPADDRESS}" ]; then - network - fi - emergency - snooze -} - -main(){ - blink - check_verbose - check_debug - check_function - check_bootdevice - banner - case $FUNCTION in - install-hdd) - prepare - install_hdd - cleanup_hdd - pause - reboot - ;; - install-hdd-offline) - prepare - install_hdd - cleanup_hdd - pause - reboot - ;; - install-hdd-offline-debug) - prepare - install_hdd - cleanup_hdd - pause - reboot - ;; - install-usb) - prepare - install_usb - cleanup_usb - pause - reboot - ;; - install-usb-offline) - prepare - install_usb - cleanup_usb - pause - reboot - ;; - install-usb-offline-debug) - prepare - install_usb - cleanup_usb - pause - reboot - ;; - update) - prepare - update - cleanup_hdd - pause - reboot - ;; - update-offline) - prepare - update - cleanup_hdd - pause - reboot - ;; - factoryrestore) - prepare - factoryrestore - cleanup_hdd - pause - reboot - ;; - emergency) - network - emergency - ;; - *) - error - ;; - esac -} - -main -snooze diff --git a/packages/tools/atv-bootloader/release b/packages/tools/atv-bootloader/release deleted file mode 100755 index 538b88a39b..0000000000 --- a/packages/tools/atv-bootloader/release +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -################################################################################ -# This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -# -# OpenELEC 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. -# -# OpenELEC 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 OpenELEC. If not, see . -################################################################################ - -. config/options $1 - -mkdir -p $RELEASE_DIR/3rdparty/atvboot - cp -PR $BUILD/atvboot-*/boot.efi $RELEASE_DIR/3rdparty/atvboot - cp -PR $BUILD/atvboot-*/mach_kernel $RELEASE_DIR/3rdparty/atvboot diff --git a/packages/tools/atvboot/package.mk b/packages/tools/atvboot/package.mk index c9c3faa48d..f08f6cefc6 100644 --- a/packages/tools/atvboot/package.mk +++ b/packages/tools/atvboot/package.mk @@ -17,17 +17,17 @@ ################################################################################ PKG_NAME="atvboot" -PKG_VERSION="1" +PKG_VERSION="1.0" PKG_REV="1" PKG_ARCH="i386 x86_64" PKG_LICENSE="GPL" PKG_SITE="http://openelec.tv" -PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" +PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz" PKG_DEPENDS_TARGET="toolchain" PKG_PRIORITY="optional" PKG_SECTION="tools" -PKG_SHORTDESC="atvboot: ATV Bootloader files" -PKG_LONGDESC="atvboot: ATV Bootloader files" +PKG_SHORTDESC="atvboot: ATV Boot/Installer files" +PKG_LONGDESC="atvboot: ATV Boot/Installer files" PKG_IS_ADDON="no" PKG_AUTORECONF="no" diff --git a/scripts/image b/scripts/image index 50a701976a..df08a247ad 100755 --- a/scripts/image +++ b/scripts/image @@ -281,6 +281,7 @@ IMAGE_NAME="$DISTRONAME-$TARGET_VERSION" # variables used in image script must be passed sudo env \ ROOT="$ROOT" \ + BUILD="$BUILD" \ RELEASE_DIR="$RELEASE_DIR" \ TARGET_IMG="$TARGET_IMG" \ IMAGE_NAME="$IMAGE_NAME" \ diff --git a/scripts/mkimage-atv b/scripts/mkimage-atv index 3b2ec43af4..885256240b 100755 --- a/scripts/mkimage-atv +++ b/scripts/mkimage-atv @@ -73,7 +73,7 @@ mount /dev/mapper/loop0p1 $OE_TMP 1>&3 2>&4 # copy recovery files - cp -Rv $RELEASE_DIR/3rdparty/atvboot/* $OE_TMP 1>&3 2>&4 + cp -Rv $BUILD/atvboot-*/* $OE_TMP 1>&3 2>&4 echo $FUNCTION > $OE_TMP/function # copy MACH_KERNEL/SYSTEM/.md5 files