mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-04-21 04:57:18 +00:00

The "git log --pretty=format:" command eats up the line feed for the last commit, and thus "wc -l" counts one commit less than there are. This is easy to demonstrate with: $ git log '2.95.3^..2.95.3' --oneline e84de34 config/version: set version to 2.95.3 (OpenELEC-3.0 Beta 3) $ git log '2.95.3^..2.95.3' --pretty=format: | wc -l 0 Even though this is a minor discrepancy, "git rev-list" and "git rev-parse" are simpler and more accurate tools for this task (their output format is not going to change).
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
|