perl-openpkg.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #!/bin/sh
  2. ##
  3. ## perl-openpkg -- OpenPKG utility for use in Perl module packages
  4. ## Copyright (c) 2002-2003 Ralf S. Engelschall <rse@engelschall.com>
  5. ##
  6. # hard-coded OpenPKG instance prefix
  7. l_prefix="@l_prefix@"
  8. # make sure we are running in the RPM environment
  9. if [ ".$RPM_BUILD_ROOT" = . ]; then
  10. echo "perl-openpkg:ERROR: \$RPM_BUILD_ROOT not set" 1>&2
  11. exit 1
  12. fi
  13. if [ ".$RPM_BUILD_DIR" = . ]; then
  14. echo "perl-openpkg:ERROR: \$RPM_BUILD_DIR not set" 1>&2
  15. exit 1
  16. fi
  17. # helper function for logging
  18. log () {
  19. echo "perl-openpkg: $*" 1>&2
  20. }
  21. cmd="$1"
  22. shift
  23. case $cmd in
  24. prolog )
  25. # prepare Perl module installation area
  26. log "prepare Perl module installation area"
  27. rm -rf $RPM_BUILD_ROOT
  28. l_shtool=`${l_prefix}/bin/rpm --eval '%{l_shtool}'`
  29. ${l_shtool} mkdir -f -p -m 755 ${RPM_BUILD_ROOT}${l_prefix}/lib/perl
  30. # prepare Perl executable wrapper
  31. log "prepare Perl executable wrapper"
  32. eval `${l_prefix}/bin/perl -V:installarchlib -V:installprivlib -V:installsitearch -V:installsitelib`
  33. perl="${RPM_BUILD_DIR}/perl"
  34. echo "#!/bin/sh" >$perl
  35. echo "exec ${l_prefix}/bin/perl \\" >>$perl
  36. echo " -I${RPM_BUILD_ROOT}${installarchlib} \\" >>$perl
  37. echo " -I${RPM_BUILD_ROOT}${installprivlib} \\" >>$perl
  38. echo " -I${RPM_BUILD_ROOT}${installsitearch} \\" >>$perl
  39. echo " -I${RPM_BUILD_ROOT}${installsitelib} \\" >>$perl
  40. echo " \"\$@\"" >>$perl
  41. chmod a+x $perl
  42. ;;
  43. install )
  44. # determine build parameters
  45. log "determine build parameters"
  46. perl="${RPM_BUILD_DIR}/perl"
  47. perl_args="PREFIX=${RPM_BUILD_ROOT}${l_prefix} INSTALLDIRS=site"
  48. perl_args="${perl_args} PERL=${perl} FULLPERL=${perl}"
  49. make=`${l_prefix}/bin/rpm --eval '%{l_make} %{l_mflags}'`
  50. make_args="PERL=${perl} FULLPERL=${perl}"
  51. # optionally enter sub-directory of module
  52. oldpwd=`pwd`
  53. if [ ".$1" = ".-d" ]; then
  54. shift
  55. dir="$1"
  56. shift
  57. if [ -d $dir ]; then
  58. log "entering sub-directory $dir"
  59. cd $dir
  60. else
  61. dir=`echo "$dir" | sed -e 's;^.*/\([^/]*\)\.tar\.gz$;\1;' -e 's;^.*/\([^/]*\)\.tgz$;\1;'`
  62. if [ -d $dir ]; then
  63. log "entering sub-directory $dir"
  64. cd $dir
  65. fi
  66. fi
  67. fi
  68. # configuring Perl module
  69. log "configuring Perl module"
  70. chmod -R u+rw Makefile.PL
  71. cp Makefile.PL Makefile.PL.orig
  72. sed -e "s:\$^X:'$perl':g" <Makefile.PL.orig >Makefile.PL
  73. $perl Makefile.PL ${1+"$@"} $perl_args </dev/null
  74. # building Perl module
  75. log "building Perl module"
  76. $make $make_args pure_all
  77. # installing Perl module
  78. log "installing Perl module"
  79. $make $make_args pure_install
  80. ;;
  81. epilog )
  82. # pruning installation area
  83. log "pruning installation area"
  84. find ${RPM_BUILD_ROOT}${l_prefix} \
  85. -name perllocal.pod -print | xargs rm -f
  86. find ${RPM_BUILD_ROOT}${l_prefix} \
  87. -name .packlist -print | xargs rm -f
  88. find ${RPM_BUILD_ROOT}${l_prefix} \
  89. -type d -depth -print | (xargs rmdir >/dev/null 2>&1 || true)
  90. # determining installation files
  91. log "determining installation files"
  92. eval `${l_prefix}/bin/perl -V:installarchlib -V:installprivlib -V:installsitearch -V:installsitelib`
  93. l_rpmtool=`${l_prefix}/bin/rpm --eval '%{l_rpmtool}'`
  94. eval ${l_rpmtool} files -v -ofiles -r${RPM_BUILD_ROOT} \
  95. `${l_prefix}/bin/rpm --eval '%{l_files_std}'` \
  96. "\"%not %dir ${l_prefix}/lib/perl\"" \
  97. "\"%not %dir ${l_prefix}/lib/perl/*\"" \
  98. "\"%not %dir $installarchlib\"" \
  99. "\"%not %dir $installprivlib\"" \
  100. "\"%not %dir $installsitearch\"" \
  101. "\"%not %dir $installsitelib\"" \
  102. "\"%not %dir $installarchlib/auto\"" \
  103. "\"%not %dir $installprivlib/auto\"" \
  104. "\"%not %dir $installsitearch/auto\"" \
  105. "\"%not %dir $installsitelib/auto\"" \
  106. "\"%not ${l_prefix}/man\""
  107. # cleanup
  108. rm -f ${RPM_BUILD_DIR}/perl
  109. ;;
  110. esac