makepack 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #!/usr/bin/env bash
  2. #
  3. # Shell script to make a FPC .tar package for Linux
  4. # Copyright 1996-2004 Michael Van Canneyt and Peter Vreman
  5. #
  6. set -e
  7. # Al
  8. unset FPCDIR
  9. # Goto the toplevel if necessary
  10. [ -d install ] || cd ..
  11. # Retrieve version from compiler/Makefile.fpc
  12. VERSION=`grep '^version' compiler/Makefile.fpc | sed 's+[^=]*= *\(.*\)+\1+'`
  13. # Retrieve current system info by calling FPC. We need
  14. # to use the | head -n1 to fix a bug in fpc 1.9.4 and earlier
  15. # that uses exitcode 1 also when printing info resulting in
  16. # fpc binary to print an error line (PFV)
  17. SOURCECPU=`fpc -iSP | head -n1`
  18. SOURCEOS=`fpc -iSO | head -n1`
  19. # retrieve real OS.
  20. HOSTARCH=`uname -p | tr "[:upper:]" "[:lower:]"`
  21. HOSTOS=`uname -s | tr "[:upper:]" "[:lower:]"`
  22. MAKE=make
  23. case "$HOSTOS" in
  24. *BSD*) MAKE=gmake
  25. ;;
  26. *bsd*) MAKE=gmake
  27. ;;
  28. esac
  29. if [ $# -ne 0 ]; then
  30. if [ $# -ne 1 ]; then
  31. echo "Usage: makepack [<cpu>-<os>]"
  32. exit 1
  33. fi
  34. TARGETCPU=`echo $1 | sed 's+\([^-]*\)-.*+\1+'`
  35. TARGETOS=`echo $1 | sed 's+[^-]*-\(.*\)+\1+'`
  36. else
  37. TARGETCPU=$SOURCECPU
  38. TARGETOS=$SOURCEOS
  39. fi
  40. FULLTARGET=$TARGETCPU-$TARGETOS
  41. FULLSOURCE=$SOURCECPU-$SOURCEOS
  42. echo "FPC Source: $FULLSOURCE"
  43. echo "FPC Target: $FULLTARGET"
  44. if [ "$FULLTARGET" != "$FULLSOURCE" ]; then
  45. CROSS="cross"
  46. CROSSPREFIX=$FULLTARGET-
  47. else
  48. CROSS=
  49. CROSSPREFIX=
  50. fi
  51. # Build everything using the makefiles
  52. ${MAKE} distclean CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS
  53. ${MAKE} ${CROSS}zipinstall CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS
  54. if [ $? != 0 ]; then
  55. echo "Failed to make distribution archive."
  56. exit 1
  57. fi
  58. if [ "$CROSS" == "" ]; then
  59. ${MAKE} makepackdocs
  60. if [ $? != 0 ]; then
  61. echo "Failed to make documentation archive."
  62. exit 1
  63. fi
  64. ${MAKE} sourcezip
  65. if [ $? != 0 ]; then
  66. echo "Failed to make source archive."
  67. exit 1
  68. fi
  69. ${MAKE} docsrc
  70. if [ $? != 0 ]; then
  71. echo "Failed to make documentation source archive."
  72. exit 1
  73. fi
  74. ${MAKE} demozip
  75. if [ $? != 0 ]; then
  76. echo "Failed to make demo source archive."
  77. exit 1
  78. fi
  79. fi
  80. # binary.*.tar
  81. BINARYTAR=${CROSSPREFIX}binary.$FULLTARGET.tar
  82. echo "Creating $BINARYTAR"
  83. BINPACKAGES="base ide units utils"
  84. BINFILES=
  85. for p in $BINPACKAGES; do
  86. BINFILES="$BINFILES ${CROSSPREFIX}$p*.$FULLSOURCE.tar.gz"
  87. done
  88. tar cf $BINARYTAR $BINFILES
  89. if [ $? != 0 ]; then
  90. echo "Failed to create $BINARYTAR"
  91. exit 1
  92. fi
  93. # sources.tar
  94. echo "Creating sources.tar"
  95. tar cf sources.tar *.source.tar.gz
  96. if [ $? != 0 ]; then
  97. echo "Failed to create sources.tar"
  98. exit 1
  99. fi
  100. # install.sh
  101. echo "Copying install.sh"
  102. sed s+%version%+$VERSION+ install/install.sh > install.sh
  103. chmod 755 install.sh
  104. # Files to be added to the .tar
  105. RELFILES="$BINARYTAR sources.tar demo.tar.gz docs.tar.gz install.sh"
  106. TARNAME=${CROSSPREFIX}fpc-$VERSION.$FULLSOURCE.tar
  107. echo "Creating $TARNAME"
  108. tar cf $TARNAME $RELFILES
  109. if [ $? != 0 ]; then
  110. echo "Failed to create $TARNAME"
  111. exit 1
  112. fi