create_packages.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #!/bin/sh
  2. # The new package will be saved here
  3. PACK_DIR=$(pwd)/linux/release
  4. # Temp dir for creating *.tar.bz2 package
  5. BUILD_PACK_DIR=/var/tmp/doublecmd-$(date +%y.%m.%d)
  6. # Read version number
  7. DC_MAJOR=$(grep 'MajorVersionNr' ../src/doublecmd.lpi | grep -o '[0-9.]\+')
  8. DC_MINOR=$(grep 'MinorVersionNr' ../src/doublecmd.lpi | grep -o '[0-9.]\+' || echo 0)
  9. DC_MICRO=$(grep 'RevisionNr' ../src/doublecmd.lpi | grep -o '[0-9.]\+' || echo 0)
  10. DC_VER=$DC_MAJOR.$DC_MINOR.$DC_MICRO
  11. # Create temp dir for building
  12. BUILD_DC_TMP_DIR=/var/tmp/doublecmd-$DC_VER
  13. help()
  14. {
  15. echo 'Usage: create_packages.sh [options]'
  16. echo
  17. echo "Options:"
  18. echo '-A: All packages (by default)'
  19. echo '-D: Debian package'
  20. echo '-R: RPM package'
  21. echo '-S: Slackware package'
  22. echo '-P: Portable package'
  23. echo '--cpu=<cpu>: Target CPU'
  24. echo '--ws=<widgetset>: Target widgetset'
  25. echo
  26. exit 1
  27. }
  28. # Parse input parameters
  29. CKNAME=$(basename "$0")
  30. args=$(getopt -n $CKNAME -o ADRSPHh -l cpu:,ws:,help,default -- "$@")
  31. eval set -- $args
  32. while [ "$1" != "--" ]; do
  33. case "$1" in
  34. -h|--help) help;;
  35. -A) shift;CK_DEBIAN=1;CK_REDHAT=1;CK_SLACKWARE=1;CK_PORTABLE=1;;
  36. -D) shift;CK_DEBIAN=1;;
  37. -R) shift;CK_REDHAT=1;;
  38. -S) shift;CK_SLACKWARE=1;;
  39. -P) shift;CK_PORTABLE=1;;
  40. --cpu) shift;export CPU_TARGET=$(eval echo $1);shift;;
  41. --ws) shift;export lcl=$(eval echo $1);shift;;
  42. esac
  43. done
  44. if [ -z "$CK_DEBIAN" ] && [ -z "$CK_REDHAT" ] && [ -z "$CK_SLACKWARE" ] && [ -z "$CK_PORTABLE" ]; then
  45. CK_DEBIAN=1
  46. CK_REDHAT=1
  47. CK_SLACKWARE=1
  48. CK_PORTABLE=1
  49. fi
  50. # Export from Git
  51. rm -rf $BUILD_DC_TMP_DIR
  52. mkdir $BUILD_DC_TMP_DIR
  53. git -C ../ checkout-index -a -f --prefix=$BUILD_DC_TMP_DIR/
  54. # Update revision number
  55. linux/update-revision.sh ../ $BUILD_DC_TMP_DIR
  56. # Copy package description file
  57. cp linux/description-pak $BUILD_DC_TMP_DIR/
  58. # Set widgetset
  59. if [ -z $lcl ]; then
  60. export lcl=gtk2
  61. fi
  62. # Set processor architecture
  63. if [ -z $CPU_TARGET ]; then
  64. export CPU_TARGET=$(fpc -iTP)
  65. fi
  66. # Debian package architecture
  67. if [ "$CPU_TARGET" = "x86_64" ]
  68. then
  69. export DEB_ARCH="amd64"
  70. else
  71. export DEB_ARCH=$CPU_TARGET
  72. fi
  73. # Copy libraries
  74. cp -a linux/lib/$CPU_TARGET/*.so* $BUILD_DC_TMP_DIR/
  75. cp -a linux/lib/$CPU_TARGET/$lcl/*.so* $BUILD_DC_TMP_DIR/
  76. cd $BUILD_DC_TMP_DIR
  77. # Build all components of Double Commander
  78. ./build.sh release
  79. # Export variables for checkinstall
  80. export MAINTAINER="Alexander Koblov <[email protected]>"
  81. if [ "$CK_REDHAT" ]; then
  82. # Create *.rpm package
  83. checkinstall -R --default --pkgname=doublecmd --pkgversion=$DC_VER --pkgarch=$CPU_TARGET --pkgrelease=1.$lcl --pkglicense=GPL --pkggroup=Applications/File --nodoc --pakdir=$PACK_DIR $BUILD_DC_TMP_DIR/install/linux/install.sh
  84. fi
  85. if [ "$CK_DEBIAN" ]; then
  86. # Create *.deb package
  87. checkinstall -D --default --pkgname=doublecmd --pkgversion=$DC_VER --pkgarch=$DEB_ARCH --pkgrelease=1.$lcl --pkglicense=GPL --pkggroup=contrib/misc --requires=libx11-6 --nodoc --pakdir=$PACK_DIR $BUILD_DC_TMP_DIR/install/linux/install.sh
  88. fi
  89. if [ "$CK_SLACKWARE" ]; then
  90. # Create *.tgz package
  91. checkinstall -S --default --pkgname=doublecmd --pkgversion=$DC_VER --pkgarch=$CPU_TARGET --pkgrelease=1.$lcl --pkglicense=GPL --pkggroup=Applications/File --nodoc --pakdir=$PACK_DIR $BUILD_DC_TMP_DIR/install/linux/install.sh
  92. fi
  93. if [ "$CK_PORTABLE" ]; then
  94. # Create *.tar.xz package
  95. mkdir -p $BUILD_PACK_DIR
  96. install/linux/install.sh --portable-prefix=$BUILD_PACK_DIR
  97. cd $BUILD_PACK_DIR
  98. # Set run-time library search path
  99. patchelf --set-rpath '$ORIGIN' doublecmd/doublecmd
  100. tar -cJvf $PACK_DIR/doublecmd-$DC_VER.$lcl.$CPU_TARGET.tar.xz doublecmd
  101. fi
  102. # Clean DC build dir
  103. rm -rf $BUILD_DC_TMP_DIR
  104. rm -rf $BUILD_PACK_DIR