cygwin-package.sh.in 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. (
  37. cat >CMakeCache.txt <<EOF
  38. BUILD_TESTING:BOOL=ON
  39. EOF
  40. ) &&
  41. ${SOURCE_DIR}/bootstrap --prefix=${PREFIX} --datadir=/share/${PKG}-${VER} \
  42. --docdir=/share/doc/${PKG}-${VER} --mandir=/share/man
  43. )
  44. }
  45. build()
  46. {
  47. (
  48. cd ${BINARY_DIR} &&
  49. make &&
  50. ./bin/ctest
  51. )
  52. }
  53. install()
  54. {
  55. (
  56. cd ${BINARY_DIR} &&
  57. make install DESTDIR="${INSTALL_DIR}" &&
  58. mkdir -p ${INSTALL_DIR}${PREFIX}/share/doc/Cygwin &&
  59. mkdir -p ${INSTALL_DIR}${PREFIX}/share/doc/${PKG}-${VER} &&
  60. cp ${SOURCE_DIR}/CMake.pdf ${INSTALL_DIR}${PREFIX}/share/doc/${PKG}-${VER} &&
  61. cp ${SOURCE_DIR}/CMake.rtf ${INSTALL_DIR}${PREFIX}/share/doc/${PKG}-${VER} &&
  62. cp ${SOURCE_DIR}/CYGWIN-PATCHES/cmake.README \
  63. ${INSTALL_DIR}${PREFIX}/share/doc/Cygwin/${FULLPKG}.README &&
  64. touch ${INSTALL_DIR}${PREFIX}/share/doc/${PKG}-${VER}/MANIFEST &&
  65. cd ${INSTALL_DIR} &&
  66. FILES=`/usr/bin/find .${PREFIX} -type f |sed 's/^\.\//\//'` &&
  67. (
  68. cat >> ${INSTALL_DIR}${PREFIX}/share/doc/${PKG}-${VER}/MANIFEST <<EOF
  69. ${FILES}
  70. EOF
  71. )
  72. )
  73. }
  74. strip()
  75. {
  76. (
  77. cd ${INSTALL_DIR} &&
  78. /usr/bin/find . -name "*.dll" | xargs strip >/dev/null 2>&1
  79. /usr/bin/find . -name "*.exe" | xargs strip >/dev/null 2>&1
  80. true
  81. )
  82. }
  83. clean()
  84. {
  85. (
  86. cd ${BINARY_DIR} &&
  87. make clean
  88. )
  89. }
  90. pkg()
  91. {
  92. (
  93. cd ${INSTALL_DIR} &&
  94. tar cvjf "${BINARY_PACKAGE}" *
  95. )
  96. }
  97. mkpatch()
  98. {
  99. (
  100. cd ${SOURCE_DIR} &&
  101. tar xvjf "${SOURCE_TARBALL}" &&
  102. mv ${PKG}-${VER} ../${PKG}-${VER}-orig &&
  103. cd ${TOP_DIR} &&
  104. diff -urN -x '.build' -x '.inst' -x '.sinst' \
  105. "${PKG}-${VER}-orig" "${PKG}-${VER}" > "${SPKG_DIR}/${FULLPKG}.patch" ;
  106. rm -rf "${TOP_DIR}/${PKG}-${VER}-orig"
  107. )
  108. }
  109. spkg()
  110. {
  111. (
  112. mkpatch &&
  113. cp ${SOURCE_TARBALL} ${SPKG_DIR} &&
  114. cp "$0" ${SPKG_DIR} &&
  115. cd ${SPKG_DIR} &&
  116. tar cvjf ${SOURCE_PACKAGE} *
  117. )
  118. }
  119. finish()
  120. {
  121. (
  122. rm -rf "${SOURCE_DIR}"
  123. )
  124. }
  125. case $1 in
  126. prep) prep ; STATUS=$? ;;
  127. mkdirs) mkdirs ; STATUS=$? ;;
  128. conf) conf ; STATUS=$? ;;
  129. build) build ; STATUS=$? ;;
  130. check) check ; STATUS=$? ;;
  131. clean) clean ; STATUS=$? ;;
  132. install) install ; STATUS=$? ;;
  133. strip) strip ; STATUS=$? ;;
  134. package) pkg ; STATUS=$? ;;
  135. pkg) pkg ; STATUS=$? ;;
  136. mkpatch) mkpatch ; STATUS=$? ;;
  137. src-package) spkg ; STATUS=$? ;;
  138. spkg) spkg ; STATUS=$? ;;
  139. finish) finish ; STATUS=$? ;;
  140. all) (
  141. prep && conf && build && install && strip && pkg && spkg && finish ;
  142. STATUS=$?
  143. ) ;;
  144. *) echo "Error: bad arguments" ; exit 1 ;;
  145. esac
  146. exit ${STATUS}