Tappytux: Adds bundle and linux package builders

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2032 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat 2011-09-28 18:46:52 +00:00
parent 315ab409ed
commit bbe3c17935
2 changed files with 368 additions and 0 deletions

View File

@ -0,0 +1,264 @@
#!/bin/sh
#
# This script generates packages for the Lazarus Image Editor
#
##################################
# Constants
##################################
PRODUCT="TappyTux"
VERSION="0.9"
OS="linux"
EXENAME="tappytux"
TARGET_DIR="./$EXENAME-$OS-$VERSION"
TARGET_TAR="$EXENAME-$OS-$VERSION.tar"
TARGET_ZIP="$EXENAME-$VERSION.zip"
# DEBIAN_USR_DIR=/home/felipe/Programas/magnifier/build/usr
##################################
# Builds a binary tar package
##################################
BuildBinary ()
{
# Goes to the root directory
cd ..
# Builds the software
# ~/Programas/lazarus/lazbuild $EXENAME.lpi
strip --strip-all $EXENAME
# Creates main directory
mkdir $TARGET_DIR/
mkdir $TARGET_DIR/Images
# Copies files to the directory
cp ./$EXENAME $TARGET_DIR/
cp ./install.sh $TARGET_DIR/
cp ./Images/*.png $TARGET_DIR/Images/
# Creates the archive
tar -cvf $TARGET_TAR $TARGET_DIR/
bzip2 $TARGET_TAR
# Clean up
rm -rf $TARGET_DIR/
cd build
return
}
##################################
# Creates a source zip package
##################################
SourcePackage ()
{
# Goes to the root directory of the magnifier
cd ..
# Clean up
echo "Clean up"
./clean.sh
rm -rf ../magnifier-$VERSION/
# We use SVN export to get rid of the heavy svn files
# copies all files to a new temporary directory
echo "svn export ./ ../magnifier-$VERSION/"
svn export ./ ../magnifier-$VERSION/
# Creates the package
echo "zip -r ../$TARGET_ZIP ../magnifier-$VERSION/"
zip -rv ../$TARGET_ZIP ../magnifier-$VERSION/
# Clean up
echo "Clean up"
rm -rf ../magnifier-$VERSION/
cd build
return
}
##################################
# Set up the RPM build environment
##################################
CreateRPMEnvironment ()
{
# Creates the directory structure
mkdir $HOME/RPM
mkdir $HOME/RPM/BUILD # This directory is utilized by RPM to build the package.
mkdir $HOME/RPM/RPMS # Here you can find binary RPMs after you build them.
mkdir $HOME/RPM/SOURCES # Place your compressed tar files and patches here.
mkdir $HOME/RPM/SPECS # Place all your spec files here.
mkdir $HOME/RPM/SRPMS # Here you can find source RPMs after you build them.
# rpmbuild environment file
touch $HOME/.rpmmacros
echo "%_topdir /home/felipe/RPM/" >> $HOME/.rpmmacros
echo "%_tmppath /home/felipe/tmp" >> $HOME/.rpmmacros
echo "" >> $HOME/.rpmmacros
echo "%_signature gpg" >> $HOME/.rpmmacros
echo "%_gpg_name Mandrakelinux" >> $HOME/.rpmmacros
echo "%_gpg_path ~/.gnupg" >> $HOME/.rpmmacros
# Spec file
cp magnifier.spec $HOME/RPM/SPECS/
# Zip file
cp ../../$TARGET_ZIP $HOME/RPM/SOURCES/
return
}
##################################
# Builds a binary and source RPM package
##################################
RPMPackage ()
{
# Set up the RPM build environment
CreateRPMEnvironment
# now build it
echo "rpmbuild -ba --clean $HOME/RPM/SPECS/magnifier.spec"
rpmbuild -ba --clean $HOME/RPM/SPECS/magnifier.spec
return
}
##################################
# Creates a Debian package
##################################
DebianPackage ()
{
# Goes to the root directory of the magnifier
cd ..
# Builds the software
# ./make.sh
strip --strip-all magnifier
# Returns to build dir
cd build
# Creates the control.tar.gz file
tar -cvf control.tar control
gzip control.tar
# Creates the data.tar.gz file
mkdir $DEBIAN_USR_DIR
mkdir $DEBIAN_USR_DIR/bin
mkdir $DEBIAN_USR_DIR/share
mkdir $DEBIAN_USR_DIR/share/magnifier
cd ..
cp ./magnifier $DEBIAN_USR_DIR/bin/vmg
cp $RESOURCES $DEBIAN_USR_DIR/share/magnifier
cd $MANUALS_DIR
cp $MANUALS $DEBIAN_USR_DIR/share/magnifier
cd ..
cd build
tar -cvf data.tar $DEBIAN_USR_DIR
gzip data.tar
# Creates the package
mkdir DEBIAN
cp control DEBIAN/
cp data.tar.gz DEBIAN/
cp debian-binary DEBIAN/
dpkg -b ./ magnifier_3.4-0_i386.deb
# Clean up
echo "Clean up"
rm -rf $DEBIAN_USR_DIR
rm -rf ./DEBIAN
rm -rf data.tar.gz
rm -rf control.tar.gz
cd ..
./clean.sh
cd build
return
}
##################################
# Main section
##################################
echo "========================================================"
echo " Lazarus Image Editor build script"
echo "========================================================"
echo ""
echo " Please select which package you would like to build:"
echo ""
echo " 1 > Linux Gtk2 binary tar.bz2 package"
echo " 3 > Source .zip package"
echo " 4 > RPM package (source and binary)"
echo " 5 > Debian package"
echo " 0 > Exit"
read command
case $command in
1) BuildBinary;;
3) SourcePackage;;
4) RPMPackage;;
5) DebianPackage;;
0) exit 0;;
*) echo "Invalid command"
exit 0;;
esac

View File

@ -0,0 +1,104 @@
#!/bin/sh
# Force Bourne shell in case tcsh is default.
#
#
# Reads the bundle type
#
echo "========================================================"
echo " Bundle creation script"
echo "========================================================"
echo ""
echo " Please select which kind of bundle you would like to build:"
echo ""
echo " 1 > Debug bundle"
echo " 2 > Release bundle"
echo " 0 > Exit"
read command
case $command in
1) ;;
2) ;;
0) exit 0;;
*) echo "Invalid command"
exit 0;;
esac
#
# Creates the bundle
#
cd ..
appname=TappyTux
appfolder=$appname.app
macosfolder=$appfolder/Contents/MacOS
plistfile=$appfolder/Contents/Info.plist
appfile=tappytux
PkgInfoContents="APPLTAP#"
#
if ! [ -e $appfile ]
then
echo "$appfile does not exist"
elif [ -e $appfolder ]
then
echo "$appfolder already exists"
else
echo "Creating $appfolder..."
mkdir $appfolder
mkdir $appfolder/Contents
mkdir $appfolder/Contents/MacOS
mkdir $appfolder/Contents/Resources
#
# For a debug bundle,
# Instead of copying executable into .app folder after each compile,
# simply create a symbolic link to executable.
#
if [ $command = 1 ]; then
ln -s ../../../$appname $macosfolder/$appname
else
cp $appname $macosfolder/$appname
fi
# Copy the resource files to the correct place
svn export images $appfolder/Contents/Resources/images
#
# Create PkgInfo file.
echo $PkgInfoContents >$appfolder/Contents/PkgInfo
#
# Create information property list file (Info.plist).
echo '<?xml version="1.0" encoding="UTF-8"?>' >$plistfile
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >>$plistfile
echo '<plist version="1.0">' >>$plistfile
echo '<dict>' >>$plistfile
echo ' <key>CFBundleDevelopmentRegion</key>' >>$plistfile
echo ' <string>English</string>' >>$plistfile
echo ' <key>CFBundleExecutable</key>' >>$plistfile
echo ' <string>'$appname'</string>' >>$plistfile
echo ' <key>CFBundleIconFile</key>' >>$plistfile
echo ' <string>macicon.icns</string>' >>$plistfile
echo ' <key>CFBundleIdentifier</key>' >>$plistfile
echo ' <string>org.magnifier.magnifier</string>' >>$plistfile
echo ' <key>CFBundleInfoDictionaryVersion</key>' >>$plistfile
echo ' <string>6.0</string>' >>$plistfile
echo ' <key>CFBundlePackageType</key>' >>$plistfile
echo ' <string>APPL</string>' >>$plistfile
echo ' <key>CFBundleSignature</key>' >>$plistfile
echo ' <string>MAG#</string>' >>$plistfile
echo ' <key>CFBundleVersion</key>' >>$plistfile
echo ' <string>1.0</string>' >>$plistfile
echo '</dict>' >>$plistfile
echo '</plist>' >>$plistfile
fi
cd build