mirror of
https://github.com/libretro/Lakka.git
synced 2025-04-02 19:01:42 +00:00
267 lines
8.0 KiB
Bash
Executable File
267 lines
8.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
################################################################################
|
|
# This file is part of OpenELEC - http://www.openelec.tv
|
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@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
|
|
################################################################################
|
|
|
|
. config/options $1
|
|
|
|
show_config
|
|
|
|
$SCRIPTS/checkdeps build
|
|
$SCRIPTS/build toolchain
|
|
$SCRIPTS/build squashfs
|
|
$SCRIPTS/build fakeroot
|
|
$SCRIPTS/build module-init-tools
|
|
|
|
export INSTALL=$BUILD/image/system
|
|
|
|
BUILD_DATE=`date +%Y%m%d%H%M%S`
|
|
|
|
if [ "$OPENELEC_VERSION" = devel -o "$OPENELEC_VERSION" = debug ]; then
|
|
GIT_BUILD=`git rev-list HEAD | wc -l`
|
|
GIT_HASH=`git rev-parse HEAD`
|
|
OPENELEC_VERSION=$OPENELEC_VERSION-$BUILD_DATE-r$GIT_BUILD
|
|
fi
|
|
|
|
TARGET_VERSION="$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION"
|
|
IMAGE_NAME="$DISTRONAME-$TARGET_VERSION"
|
|
|
|
# setup fakeroot
|
|
rm -rf $FAKEROOT_SCRIPT # remove $FAKEROOT_SCRIPT if it exist
|
|
touch $FAKEROOT_SCRIPT # create an empty $FAKEROOT_SCRIPT
|
|
chmod +x $FAKEROOT_SCRIPT # make $FAKEROOT_SCRIPT executable
|
|
echo "chown -R 0:0 $INSTALL" >> $FAKEROOT_SCRIPT
|
|
|
|
# clean old install dirs
|
|
rm -rf $INSTALL
|
|
rm -rf $STAMPS_INSTALL
|
|
mkdir -p $INSTALL
|
|
|
|
# create baselayout
|
|
mkdir -p $INSTALL/bin
|
|
mkdir -p $INSTALL/etc
|
|
mkdir -p $INSTALL/lib
|
|
mkdir -p $INSTALL/sbin
|
|
mkdir -p $INSTALL/dev
|
|
mkdir -p $INSTALL/proc
|
|
# mkdir -p $INSTALL/run
|
|
ln -sf /var/run $INSTALL/run
|
|
mkdir -p $INSTALL/sys
|
|
mkdir -p $INSTALL/usr
|
|
mkdir -p $INSTALL/var
|
|
mkdir -p $INSTALL/flash
|
|
mkdir -p $INSTALL/storage
|
|
ln -sf /var $INSTALL/usr/var
|
|
ln -sf /var/tmp $INSTALL/tmp
|
|
ln -sf /var/media $INSTALL/media
|
|
|
|
if [ "$TARGET_ARCH" = "x86_64" -o "$TARGET_ARCH" = "powerpc64" ]; then
|
|
ln -s /lib $INSTALL/lib64
|
|
ln -s lib $INSTALL/usr/lib64
|
|
fi
|
|
|
|
echo "$DISTRONAME" > $INSTALL/etc/distribution
|
|
echo "$PROJECT.$TARGET_ARCH" > $INSTALL/etc/arch
|
|
echo "$OPENELEC_VERSION" > $INSTALL/etc/version
|
|
echo "$TARGET_VERSION" > $INSTALL/etc/release
|
|
echo "$DISTRONAME - Version: $OPENELEC_VERSION" > $INSTALL/etc/openelec-release
|
|
if [ -n "$GIT_HASH" ]; then
|
|
echo "$GIT_HASH" >> $INSTALL/etc/gitrev
|
|
fi
|
|
|
|
# create /etc/issue
|
|
echo $GREETING0 > $INSTALL/etc/issue
|
|
echo $GREETING1 >> $INSTALL/etc/issue
|
|
echo $GREETING2 >> $INSTALL/etc/issue
|
|
echo $GREETING3 >> $INSTALL/etc/issue
|
|
echo $GREETING4 >> $INSTALL/etc/issue
|
|
echo "$DISTRONAME Version: $OPENELEC_VERSION" >> $INSTALL/etc/issue
|
|
if [ -n "$GIT_HASH" ]; then
|
|
echo "$DISTRONAME git: $GIT_HASH" >> $INSTALL/etc/issue
|
|
fi
|
|
|
|
# Basissystem...
|
|
$SCRIPTS/install eglibc
|
|
$SCRIPTS/install gcc-final
|
|
$SCRIPTS/install linux system
|
|
$SCRIPTS/install busybox
|
|
$SCRIPTS/install util-linux
|
|
|
|
# Network support
|
|
[ "$NETWORK" = "yes" ] && $SCRIPTS/install network
|
|
|
|
# Graphic support
|
|
[ ! "$DISPLAYSERVER" = "no" ] && $SCRIPTS/install $DISPLAYSERVER
|
|
|
|
# Multimedia support
|
|
[ ! "$MEDIACENTER" = "no" ] && $SCRIPTS/install mediacenter
|
|
|
|
# Automounter support
|
|
[ "$UDISKS" = "yes" ] && $SCRIPTS/install udisks
|
|
|
|
# Powermanagement support
|
|
[ "$UPOWER" = "yes" ] && $SCRIPTS/install upower
|
|
[ "$UPOWER" = "yes" ] && $SCRIPTS/install ConsoleKit
|
|
|
|
# NTFS 3G support
|
|
[ "$EXFAT" = "yes" ] && $SCRIPTS/install fuse-exfat
|
|
|
|
# NTFS 3G support
|
|
[ "$NTFS3G" = "yes" ] && $SCRIPTS/install ntfs-3g_ntfsprogs
|
|
|
|
# Remote support
|
|
[ "$REMOTE_SUPPORT" = "yes" ] && $SCRIPTS/install remote
|
|
|
|
# LCD support
|
|
[ ! "$LCD_DRIVER" = "none" ] && $SCRIPTS/install lcdproc
|
|
|
|
# Sensors support
|
|
[ "$SENSOR_SUPPORT" = "yes" ] && $SCRIPTS/install lm_sensors
|
|
|
|
# Update support
|
|
[ "$UPDATE_SUPPORT" = "yes" ] && $SCRIPTS/install autoupdate
|
|
|
|
# Installer support
|
|
[ "$INSTALLER_SUPPORT" = "yes" ] && $SCRIPTS/install installer
|
|
|
|
# Devtools... (not for Release)
|
|
[ "$TESTING" = "yes" ] && $SCRIPTS/install testing
|
|
[ "$DEVTOOLS" = "yes" ] && $SCRIPTS/install debug
|
|
|
|
# OEM packages
|
|
[ "$OEM_SUPPORT" = "yes" ] && $SCRIPTS/install oem
|
|
|
|
# copy project related files to filesystem
|
|
if [ -d "$PROJECT_DIR/$PROJECT/filesystem" ]; then
|
|
cp -PR $PROJECT_DIR/$PROJECT/filesystem/* $INSTALL
|
|
fi
|
|
|
|
# run depmod
|
|
KVER=`ls $BUILD/linux-*/modules/lib/modules`
|
|
$ROOT/$TOOLCHAIN/bin/depmod -b $INSTALL $KVER > /dev/null
|
|
|
|
# strip kernel modules
|
|
for MOD in `find $INSTALL/lib/modules/ -name *.ko`; do
|
|
$STRIP --strip-debug $MOD
|
|
done
|
|
|
|
# make target dir
|
|
mkdir -p $TARGET_IMG
|
|
rm -rf $TARGET_IMG/$IMAGE_NAME.kernel
|
|
rm -rf $TARGET_IMG/$IMAGE_NAME.mach_kernel
|
|
|
|
# copy kernel to target dir
|
|
if [ "$BOOTLOADER" = "u-boot" ]; then
|
|
KERNEL_IMAGE="uImage"
|
|
elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then
|
|
KERNEL_IMAGE="zImage"
|
|
else
|
|
KERNEL_IMAGE="bzImage"
|
|
fi
|
|
|
|
if [ "$TARGET_ARCH" = i386 -o "$TARGET_ARCH" = x86_64 ]; then
|
|
KERNEL_ARCH="x86"
|
|
elif [ "$TARGET_ARCH" = arm ]; then
|
|
KERNEL_ARCH="arm"
|
|
fi
|
|
|
|
cp -PR $BUILD/linux-*/arch/$KERNEL_ARCH/boot/$KERNEL_IMAGE $TARGET_IMG/$IMAGE_NAME.kernel
|
|
|
|
if [ "$BOOTLOADER" = "atv-bootloader" ]; then
|
|
cp -PR $BUILD/atv-bootloader-*/mach_kernel $TARGET_IMG/$IMAGE_NAME.mach_kernel
|
|
chmod 0644 $TARGET_IMG/$IMAGE_NAME.mach_kernel
|
|
fi
|
|
|
|
# create squashfs file
|
|
if [ -z "$SQUASHFS_COMPRESSION" ]; then
|
|
SQUASHFS_COMPRESSION="gzip"
|
|
fi
|
|
|
|
echo "rm -rf $TARGET_IMG/$IMAGE_NAME.system" >> $FAKEROOT_SCRIPT
|
|
echo "$ROOT/$TOOLCHAIN/bin/mksquashfs $BUILD/image/system $TARGET_IMG/$IMAGE_NAME.system -noappend -comp $SQUASHFS_COMPRESSION" >> $FAKEROOT_SCRIPT
|
|
|
|
# run fakeroot
|
|
$ROOT/$TOOLCHAIN/bin/fakeroot -- $FAKEROOT_SCRIPT
|
|
rm -rf $FAKEROOT_SCRIPT
|
|
|
|
# set permissions
|
|
chmod 0644 $TARGET_IMG/$IMAGE_NAME.system
|
|
chmod 0644 $TARGET_IMG/$IMAGE_NAME.kernel
|
|
|
|
if [ "$1" = "release" ]; then
|
|
|
|
RELEASE_DIR="target/$IMAGE_NAME"
|
|
|
|
# cleanup
|
|
rm -rf $RELEASE_DIR
|
|
|
|
# create release dir
|
|
mkdir -p $RELEASE_DIR
|
|
if [ -n "$BOOTLOADER" ]; then
|
|
BOOTLOADER_DIR=`find $PACKAGES -type d -name $BOOTLOADER 2>/dev/null`
|
|
if [ -d "$BOOTLOADER_DIR"/files ]; then
|
|
cp -R $BOOTLOADER_DIR/files/* $RELEASE_DIR
|
|
fi
|
|
if [ -f "$BOOTLOADER_DIR"/release ]; then
|
|
. $BOOTLOADER_DIR/release
|
|
fi
|
|
fi
|
|
cp $ROOT/README* $RELEASE_DIR
|
|
cp $ROOT/CHANGELOG* $RELEASE_DIR
|
|
cp -R $CONFIG/release/openelec.ico $RELEASE_DIR
|
|
echo "$TARGET_VERSION" > $RELEASE_DIR/RELEASE
|
|
|
|
if [ -n "$MEDIACENTER" ] ; then
|
|
echo "XBMC commit: `scripts/git_version $MEDIACENTER`" >> $RELEASE_DIR/RELEASE
|
|
fi
|
|
|
|
mkdir -p $RELEASE_DIR/licenses
|
|
cp $ROOT/licenses/* $RELEASE_DIR/licenses
|
|
|
|
mkdir -p $RELEASE_DIR/target
|
|
cp $TARGET_IMG/$IMAGE_NAME.system $RELEASE_DIR/target/SYSTEM
|
|
cp $TARGET_IMG/$IMAGE_NAME.kernel $RELEASE_DIR/target/KERNEL
|
|
|
|
if [ -f $TARGET_IMG/$IMAGE_NAME.mach_kernel ]; then
|
|
cp $TARGET_IMG/$IMAGE_NAME.mach_kernel $RELEASE_DIR/target/MACH_KERNEL
|
|
fi
|
|
|
|
# create md5sum's
|
|
( cd $RELEASE_DIR;
|
|
md5sum -t target/SYSTEM > target/SYSTEM.md5;
|
|
md5sum -t target/KERNEL > target/KERNEL.md5;
|
|
if [ -f target/MACH_KERNEL ]; then
|
|
md5sum -t target/MACH_KERNEL > target/MACH_KERNEL.md5;
|
|
fi
|
|
)
|
|
|
|
# create target directory
|
|
mkdir -p $TARGET_IMG
|
|
|
|
# remove an previous created release tarball
|
|
rm -rf $TARGET_IMG/$IMAGE_NAME.tar.bz2
|
|
|
|
# create release tarball
|
|
tar cjf $TARGET_IMG/$IMAGE_NAME.tar.bz2 -C target $IMAGE_NAME
|
|
|
|
# cleanup release dir
|
|
rm -rf $RELEASE_DIR
|
|
fi
|