cmake-cygwin-package.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #!/bin/sh
  2. TOP_DIR=`cd \`echo "$0" | sed -n '/\//{s/\/[^\/]*$//;p;}'\`;pwd`
  3. SELF_NAME=`basename "$0" .sh`
  4. PKG=`echo ${SELF_NAME} | sed -e 's/\-[^\-]*\-[^\-]*$//'`
  5. VER=`echo ${SELF_NAME} | sed -e 's/^[^\-]*\-//' -e 's/\-[^\-]*$//'`
  6. REL=`echo ${SELF_NAME} | sed -e 's/^[^\-]*\-[^\-]*\-//'`
  7. FULLPKG=${PKG}-${VER}-${REL}
  8. SOURCE_DIR="${TOP_DIR}/${PKG}-${VER}"
  9. BINARY_DIR=${SOURCE_DIR}/.build
  10. INSTALL_DIR=${SOURCE_DIR}/.inst
  11. SPKG_DIR=${SOURCE_DIR}/.sinst
  12. SOURCE_PACKAGE="${TOP_DIR}/${FULLPKG}-src.tar.bz2"
  13. SOURCE_TARBALL="${TOP_DIR}/${PKG}-${VER}.tar.bz2"
  14. SOURCE_PATCH="${TOP_DIR}/${FULLPKG}.patch"
  15. PREFIX="/usr"
  16. BINARY_PACKAGE="${TOP_DIR}/${FULLPKG}.tar.bz2"
  17. mkdirs()
  18. {
  19. (
  20. mkdir -p "${BINARY_DIR}" "${INSTALL_DIR}" "${SPKG_DIR}"
  21. )
  22. }
  23. prep()
  24. {
  25. (
  26. cd ${TOP_DIR} &&
  27. tar xvjf "${SOURCE_TARBALL}" &&
  28. patch -p0 < "${SOURCE_PATCH}" &&
  29. mkdirs
  30. )
  31. }
  32. conf()
  33. {
  34. (
  35. cd ${BINARY_DIR} &&
  36. ${SOURCE_DIR}/configure --prefix=${PREFIX}
  37. )
  38. }
  39. build()
  40. {
  41. (
  42. cd ${BINARY_DIR} &&
  43. make
  44. )
  45. }
  46. install()
  47. {
  48. (
  49. cd ${BINARY_DIR} &&
  50. make install DESTDIR="${INSTALL_DIR}" &&
  51. mkdir -p ${INSTALL_DIR}${PREFIX}/doc/Cygwin &&
  52. mkdir -p ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
  53. cp ${SOURCE_DIR}/CMake.pdf ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
  54. cp ${SOURCE_DIR}/CMake.rtf ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
  55. cp ${SOURCE_DIR}/Copyright.txt ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
  56. cp ${SOURCE_DIR}/CYGWIN-PATCHES/cmake.README \
  57. ${INSTALL_DIR}${PREFIX}/doc/Cygwin/${FULLPKG}.README &&
  58. touch ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER}/MANIFEST &&
  59. cd ${INSTALL_DIR} &&
  60. FILES=`/usr/bin/find .${PREFIX} -type f |sed 's/^\.\//\//'` &&
  61. (
  62. cat >> ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER}/MANIFEST <<EOF
  63. ${FILES}
  64. EOF
  65. )
  66. )
  67. }
  68. strip()
  69. {
  70. (
  71. cd ${INSTALL_DIR} &&
  72. /usr/bin/find . -name "*.dll" | xargs strip >/dev/null 2>&1
  73. /usr/bin/find . -name "*.exe" | xargs strip >/dev/null 2>&1
  74. true
  75. )
  76. }
  77. clean()
  78. {
  79. (
  80. cd ${BINARY_DIR} &&
  81. make clean
  82. )
  83. }
  84. pkg()
  85. {
  86. (
  87. cd ${INSTALL_DIR} &&
  88. tar cvjf "${BINARY_PACKAGE}" *
  89. )
  90. }
  91. mkpatch()
  92. {
  93. (
  94. cd ${SOURCE_DIR} &&
  95. tar xvjf "${SOURCE_TARBALL}" &&
  96. mv ${PKG}-${VER} ../${PKG}-${VER}-orig &&
  97. cd ${TOP_DIR} &&
  98. diff -urN -x '.build' -x '.inst' -x '.sinst' \
  99. "${PKG}-${VER}-orig" "${PKG}-${VER}" > "${SPKG_DIR}/${FULLPKG}.patch" ;
  100. rm -rf "${TOP_DIR}/${PKG}-${VER}-orig"
  101. )
  102. }
  103. spkg()
  104. {
  105. (
  106. mkpatch &&
  107. cp ${SOURCE_TARBALL} ${SPKG_DIR} &&
  108. cp "$0" ${SPKG_DIR} &&
  109. cd ${SPKG_DIR} &&
  110. tar cvjf ${SOURCE_PACKAGE} *
  111. )
  112. }
  113. finish()
  114. {
  115. (
  116. rm -rf "${SOURCE_DIR}"
  117. )
  118. }
  119. case $1 in
  120. prep) prep ; STATUS=$? ;;
  121. mkdirs) mkdirs ; STATUS=$? ;;
  122. conf) conf ; STATUS=$? ;;
  123. build) build ; STATUS=$? ;;
  124. check) check ; STATUS=$? ;;
  125. clean) clean ; STATUS=$? ;;
  126. install) install ; STATUS=$? ;;
  127. strip) strip ; STATUS=$? ;;
  128. package) pkg ; STATUS=$? ;;
  129. pkg) pkg ; STATUS=$? ;;
  130. mkpatch) mkpatch ; STATUS=$? ;;
  131. src-package) spkg ; STATUS=$? ;;
  132. spkg) spkg ; STATUS=$? ;;
  133. finish) finish ; STATUS=$? ;;
  134. all) (
  135. prep && conf && build && install && strip && pkg && spkg && finish ;
  136. STATUS=$?
  137. ) ;;
  138. *) echo "Error: bad arguments" ; exit 1 ;;
  139. esac
  140. exit ${STATUS}