# PaCkAgE DaTaStReAm
automake 1 4787
# end of header
07070100077f5f000081a400000000000000000000000151a6c2e70000010d000000b600010002ffffffffffffffff0000001100000000automake/pkginfo PKG=automake
NAME=GNU automake 1.13.2 i86pc Solaris 11
VERSION=1.13.2
PSTAMP=30th May 2013
VENDOR=GNU
EMAIL=http://www.gnu.org/software/automake/
DESC=GNU automake makefile generator
ARCH=i386
CATEGORY=utility
CLASSES=none
BASEDIR=/
ISTATES=S s 1 2 3
RSTATES=S s 1 2 3
07070100077f5e000081a400000000000000000000000151a6c2e700002e68000000b600010002ffffffffffffffff0000001000000000automake/pkgmap : 1 4787
1 d none /usr ? ? ?
1 d none /usr/local ? ? ?
1 d none /usr/local/bin 0755 root root
1 f none /usr/local/bin/aclocal 0755 root root 36770 64547 1369883336
1 l none /usr/local/bin/aclocal-1.13=/usr/local/bin/aclocal
1 l none /usr/local/bin/automake=/usr/local/bin/automake-1.13
1 f none /usr/local/bin/automake-1.13 0755 root root 252216 28223 1369883336
1 d none /usr/local/share 0755 root root
1 d none /usr/local/share/aclocal 0755 root root
1 d none /usr/local/share/aclocal-1.13 0755 root root
1 f none /usr/local/share/aclocal-1.13/amversion.m4 0644 root root 1617 60977 1369883336
1 f none /usr/local/share/aclocal-1.13/ar-lib.m4 0644 root root 2029 27701 1369883336
1 f none /usr/local/share/aclocal-1.13/as.m4 0644 root root 767 61761 1369883336
1 f none /usr/local/share/aclocal-1.13/auxdir.m4 0644 root root 2430 11928 1369883336
1 f none /usr/local/share/aclocal-1.13/cond-if.m4 0644 root root 1030 12795 1369883336
1 f none /usr/local/share/aclocal-1.13/cond.m4 0644 root root 1036 11926 1369883336
1 f none /usr/local/share/aclocal-1.13/depend.m4 0644 root root 7281 61084 1369883336
1 f none /usr/local/share/aclocal-1.13/depout.m4 0644 root root 2998 37916 1369883336
1 f none /usr/local/share/aclocal-1.13/dmalloc.m4 0644 root root 906 2508 1369883336
1 f none /usr/local/share/aclocal-1.13/extra-recurs.m4 0644 root root 738 60867 1369883336
1 f none /usr/local/share/aclocal-1.13/gcj.m4 0644 root root 649 51179 1369883336
1 f none /usr/local/share/aclocal-1.13/init.m4 0644 root root 5914 16722 1369883336
1 f none /usr/local/share/aclocal-1.13/install-sh.m4 0644 root root 677 51951 1369883336
1 d none /usr/local/share/aclocal-1.13/internal 0755 root root
1 f none /usr/local/share/aclocal-1.13/internal/ac-config-macro-dirs.m4 0644 root root 667 55180 1369883336
1 f none /usr/local/share/aclocal-1.13/lead-dot.m4 0644 root root 641 51920 1369883336
1 f none /usr/local/share/aclocal-1.13/lex.m4 0644 root root 689 55553 1369883336
1 f none /usr/local/share/aclocal-1.13/lispdir.m4 0644 root root 2152 39789 1369883336
1 f none /usr/local/share/aclocal-1.13/maintainer.m4 0644 root root 1656 6292 1369883336
1 f none /usr/local/share/aclocal-1.13/make.m4 0644 root root 1335 44062 1369883336
1 f none /usr/local/share/aclocal-1.13/minuso.m4 0644 root root 1283 36847 1369883336
1 f none /usr/local/share/aclocal-1.13/missing.m4 0644 root root 1155 26166 1369883336
1 f none /usr/local/share/aclocal-1.13/mkdirp.m4 0644 root root 1349 44628 1369883336
1 f none /usr/local/share/aclocal-1.13/obsolete.m4 0644 root root 1008 19750 1369883336
1 f none /usr/local/share/aclocal-1.13/options.m4 0644 root root 1090 16672 1369883336
1 f none /usr/local/share/aclocal-1.13/python.m4 0644 root root 9082 27581 1369883336
1 f none /usr/local/share/aclocal-1.13/runlog.m4 0644 root root 718 53895 1369883336
1 f none /usr/local/share/aclocal-1.13/sanity.m4 0644 root root 2646 21139 1369883336
1 f none /usr/local/share/aclocal-1.13/silent.m4 0644 root root 1911 20361 1369883336
1 f none /usr/local/share/aclocal-1.13/strip.m4 0644 root root 1392 50756 1369883336
1 f none /usr/local/share/aclocal-1.13/substnot.m4 0644 root root 675 50009 1369883336
1 f none /usr/local/share/aclocal-1.13/tar.m4 0644 root root 4471 20681 1369883336
1 f none /usr/local/share/aclocal-1.13/upc.m4 0644 root root 836 3458 1369883336
1 f none /usr/local/share/aclocal-1.13/vala.m4 0644 root root 1655 64477 1369883336
1 f none /usr/local/share/aclocal/README 0644 root root 368 33352 1369883336
1 d none /usr/local/share/automake-1.13 0755 root root
1 d none /usr/local/share/automake-1.13/Automake 0755 root root
1 f none /usr/local/share/automake-1.13/Automake/ChannelDefs.pm 0644 root root 11241 54610 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Channels.pm 0644 root root 20955 34274 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Condition.pm 0644 root root 15661 19580 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Config.pm 0644 root root 1806 17046 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Configure_ac.pm 0644 root root 3458 19287 1369883336
1 f none /usr/local/share/automake-1.13/Automake/DisjConditions.pm 0644 root root 14791 24399 1369883336
1 f none /usr/local/share/automake-1.13/Automake/FileUtils.pm 0644 root root 9582 31852 1369883336
1 f none /usr/local/share/automake-1.13/Automake/General.pm 0644 root root 2193 46857 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Getopt.pm 0644 root root 2779 29727 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Item.pm 0644 root root 4613 46974 1369883336
1 f none /usr/local/share/automake-1.13/Automake/ItemDef.pm 0644 root root 2458 8558 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Location.pm 0644 root root 5983 34225 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Options.pm 0644 root root 11295 59933 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Rule.pm 0644 root root 24673 64686 1369883336
1 f none /usr/local/share/automake-1.13/Automake/RuleDef.pm 0644 root root 2762 31763 1369883336
1 f none /usr/local/share/automake-1.13/Automake/VarDef.pm 0644 root root 9043 10478 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Variable.pm 0644 root root 46296 9463 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Version.pm 0644 root root 4353 25336 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Wrap.pm 0644 root root 4215 13016 1369883336
1 f none /usr/local/share/automake-1.13/Automake/XFile.pm 0644 root root 7945 40151 1369883336
1 f none /usr/local/share/automake-1.13/COPYING 0644 root root 35147 30328 1369883336
1 f none /usr/local/share/automake-1.13/INSTALL 0644 root root 15749 11782 1369883336
1 d none /usr/local/share/automake-1.13/am 0755 root root
1 f none /usr/local/share/automake-1.13/am/check.am 0644 root root 21963 14493 1369883336
1 f none /usr/local/share/automake-1.13/am/check2.am 0644 root root 2195 41843 1369883336
1 f none /usr/local/share/automake-1.13/am/clean-hdr.am 0644 root root 818 3705 1369883336
1 f none /usr/local/share/automake-1.13/am/clean.am 0644 root root 2331 2979 1369883336
1 f none /usr/local/share/automake-1.13/am/compile.am 0644 root root 1010 19490 1369883336
1 f none /usr/local/share/automake-1.13/am/configure.am 0644 root root 6608 5393 1369883336
1 f none /usr/local/share/automake-1.13/am/data.am 0644 root root 3398 55021 1369883336
1 f none /usr/local/share/automake-1.13/am/dejagnu.am 0644 root root 3667 33293 1369883336
1 f none /usr/local/share/automake-1.13/am/depend.am 0644 root root 1039 22692 1369883336
1 f none /usr/local/share/automake-1.13/am/depend2.am 0644 root root 7412 31955 1369883336
1 f none /usr/local/share/automake-1.13/am/distdir.am 0644 root root 20793 20616 1369883336
1 f none /usr/local/share/automake-1.13/am/footer.am 0644 root root 881 8968 1369883336
1 f none /usr/local/share/automake-1.13/am/header-vars.am 0644 root root 5593 63008 1369883336
1 f none /usr/local/share/automake-1.13/am/header.am 0644 root root 786 993 1369883336
1 f none /usr/local/share/automake-1.13/am/inst-vars.am 0644 root root 3472 24288 1369883336
1 f none /usr/local/share/automake-1.13/am/install.am 0644 root root 3993 64966 1369883336
1 f none /usr/local/share/automake-1.13/am/java.am 0644 root root 2860 10147 1369883336
1 f none /usr/local/share/automake-1.13/am/lang-compile.am 0644 root root 1197 28238 1369883336
1 f none /usr/local/share/automake-1.13/am/lex.am 0644 root root 1323 39143 1369883336
1 f none /usr/local/share/automake-1.13/am/library.am 0644 root root 976 12393 1369883336
1 f none /usr/local/share/automake-1.13/am/libs.am 0644 root root 3889 28200 1369883336
1 f none /usr/local/share/automake-1.13/am/libtool.am 0644 root root 1030 22960 1369883336
1 f none /usr/local/share/automake-1.13/am/lisp.am 0644 root root 4112 45173 1369883336
1 f none /usr/local/share/automake-1.13/am/ltlib.am 0644 root root 4993 36768 1369883336
1 f none /usr/local/share/automake-1.13/am/ltlibrary.am 0644 root root 933 9783 1369883336
1 f none /usr/local/share/automake-1.13/am/mans-vars.am 0644 root root 857 6650 1369883336
1 f none /usr/local/share/automake-1.13/am/mans.am 0644 root root 6493 37010 1369883336
1 f none /usr/local/share/automake-1.13/am/program.am 0644 root root 1231 35595 1369883336
1 f none /usr/local/share/automake-1.13/am/progs.am 0644 root root 6390 17235 1369883336
1 f none /usr/local/share/automake-1.13/am/python.am 0644 root root 5216 536 1369883336
1 f none /usr/local/share/automake-1.13/am/remake-hdr.am 0644 root root 3258 9565 1369883336
1 f none /usr/local/share/automake-1.13/am/scripts.am 0644 root root 4713 21507 1369883336
1 f none /usr/local/share/automake-1.13/am/subdirs.am 0644 root root 2868 43239 1369883336
1 f none /usr/local/share/automake-1.13/am/tags.am 0644 root root 5161 5911 1369883336
1 f none /usr/local/share/automake-1.13/am/texi-vers.am 0644 root root 2406 62212 1369883336
1 f none /usr/local/share/automake-1.13/am/texibuild.am 0644 root root 6622 62157 1369883336
1 f none /usr/local/share/automake-1.13/am/texinfos.am 0644 root root 13437 43762 1369883336
1 f none /usr/local/share/automake-1.13/am/vala.am 0644 root root 768 64727 1369883336
1 f none /usr/local/share/automake-1.13/am/yacc.am 0644 root root 2404 63923 1369883336
1 f none /usr/local/share/automake-1.13/ar-lib 0755 root root 5826 50810 1369883336
1 f none /usr/local/share/automake-1.13/compile 0755 root root 7333 36792 1369883336
1 f none /usr/local/share/automake-1.13/config.guess 0755 root root 44922 1037 1369883336
1 f none /usr/local/share/automake-1.13/config.sub 0755 root root 35521 15491 1369883336
1 f none /usr/local/share/automake-1.13/depcomp 0755 root root 23491 21333 1369883336
1 f none /usr/local/share/automake-1.13/install-sh 0755 root root 13997 26788 1369883336
1 f none /usr/local/share/automake-1.13/mdate-sh 0755 root root 6047 33216 1369883336
1 f none /usr/local/share/automake-1.13/missing 0755 root root 6873 30733 1369883336
1 f none /usr/local/share/automake-1.13/mkinstalldirs 0755 root root 3538 65365 1369883336
1 f none /usr/local/share/automake-1.13/py-compile 0755 root root 4670 49002 1369883336
1 f none /usr/local/share/automake-1.13/tap-driver.pl 0755 root root 15285 16504 1369883336
1 f none /usr/local/share/automake-1.13/tap-driver.sh 0755 root root 19514 43151 1369883336
1 f none /usr/local/share/automake-1.13/test-driver 0755 root root 3977 3091 1369883336
1 f none /usr/local/share/automake-1.13/texinfo.tex 0644 root root 323102 52862 1369883336
1 f none /usr/local/share/automake-1.13/ylwrap 0755 root root 7006 22102 1369883336
1 d none /usr/local/share/doc 0755 root root
1 d none /usr/local/share/doc/automake 0755 root root
1 f none /usr/local/share/doc/automake/amhello-1.0.tar.gz 0644 root root 77423 41621 1369883336
1 d none /usr/local/share/info 0755 root root
1 f none /usr/local/share/info/automake-history.info 0644 root root 78473 58602 1369883336
1 f none /usr/local/share/info/automake.info 0644 root root 7647 48858 1369883336
1 f none /usr/local/share/info/automake.info-1 0644 root root 298077 6892 1369883336
1 f none /usr/local/share/info/automake.info-2 0644 root root 231712 12899 1369883336
1 f none /usr/local/share/info/automake.info-3 0644 root root 74226 29370 1369883336
1 f none /usr/local/share/info/dir 0644 root root 14765 50705 1369883336
1 d none /usr/local/share/man 0755 root root
1 d none /usr/local/share/man/man1 0755 root root
1 f none /usr/local/share/man/man1/aclocal-1.13.1 0644 root root 2395 8181 1369883336
1 f none /usr/local/share/man/man1/aclocal.1 0644 root root 24 1780 1369883336
1 f none /usr/local/share/man/man1/automake-1.13.1 0644 root root 3583 36790 1369883336
1 f none /usr/local/share/man/man1/automake.1 0644 root root 25 1916 1369883336
1 i checkinstall 790 2505 1369883317
1 i pkginfo 269 20679 1369883367
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!! 07070100077f5f000081a400000000000000000000000151a6c2e70000010d000000b600010002ffffffffffffffff0000000800000000pkginfo PKG=automake
NAME=GNU automake 1.13.2 i86pc Solaris 11
VERSION=1.13.2
PSTAMP=30th May 2013
VENDOR=GNU
EMAIL=http://www.gnu.org/software/automake/
DESC=GNU automake makefile generator
ARCH=i386
CATEGORY=utility
CLASSES=none
BASEDIR=/
ISTATES=S s 1 2 3
RSTATES=S s 1 2 3
07070100077f5e000081a400000000000000000000000151a6c2e700002e68000000b600010002ffffffffffffffff0000000700000000pkgmap : 1 4787
1 d none /usr ? ? ?
1 d none /usr/local ? ? ?
1 d none /usr/local/bin 0755 root root
1 f none /usr/local/bin/aclocal 0755 root root 36770 64547 1369883336
1 l none /usr/local/bin/aclocal-1.13=/usr/local/bin/aclocal
1 l none /usr/local/bin/automake=/usr/local/bin/automake-1.13
1 f none /usr/local/bin/automake-1.13 0755 root root 252216 28223 1369883336
1 d none /usr/local/share 0755 root root
1 d none /usr/local/share/aclocal 0755 root root
1 d none /usr/local/share/aclocal-1.13 0755 root root
1 f none /usr/local/share/aclocal-1.13/amversion.m4 0644 root root 1617 60977 1369883336
1 f none /usr/local/share/aclocal-1.13/ar-lib.m4 0644 root root 2029 27701 1369883336
1 f none /usr/local/share/aclocal-1.13/as.m4 0644 root root 767 61761 1369883336
1 f none /usr/local/share/aclocal-1.13/auxdir.m4 0644 root root 2430 11928 1369883336
1 f none /usr/local/share/aclocal-1.13/cond-if.m4 0644 root root 1030 12795 1369883336
1 f none /usr/local/share/aclocal-1.13/cond.m4 0644 root root 1036 11926 1369883336
1 f none /usr/local/share/aclocal-1.13/depend.m4 0644 root root 7281 61084 1369883336
1 f none /usr/local/share/aclocal-1.13/depout.m4 0644 root root 2998 37916 1369883336
1 f none /usr/local/share/aclocal-1.13/dmalloc.m4 0644 root root 906 2508 1369883336
1 f none /usr/local/share/aclocal-1.13/extra-recurs.m4 0644 root root 738 60867 1369883336
1 f none /usr/local/share/aclocal-1.13/gcj.m4 0644 root root 649 51179 1369883336
1 f none /usr/local/share/aclocal-1.13/init.m4 0644 root root 5914 16722 1369883336
1 f none /usr/local/share/aclocal-1.13/install-sh.m4 0644 root root 677 51951 1369883336
1 d none /usr/local/share/aclocal-1.13/internal 0755 root root
1 f none /usr/local/share/aclocal-1.13/internal/ac-config-macro-dirs.m4 0644 root root 667 55180 1369883336
1 f none /usr/local/share/aclocal-1.13/lead-dot.m4 0644 root root 641 51920 1369883336
1 f none /usr/local/share/aclocal-1.13/lex.m4 0644 root root 689 55553 1369883336
1 f none /usr/local/share/aclocal-1.13/lispdir.m4 0644 root root 2152 39789 1369883336
1 f none /usr/local/share/aclocal-1.13/maintainer.m4 0644 root root 1656 6292 1369883336
1 f none /usr/local/share/aclocal-1.13/make.m4 0644 root root 1335 44062 1369883336
1 f none /usr/local/share/aclocal-1.13/minuso.m4 0644 root root 1283 36847 1369883336
1 f none /usr/local/share/aclocal-1.13/missing.m4 0644 root root 1155 26166 1369883336
1 f none /usr/local/share/aclocal-1.13/mkdirp.m4 0644 root root 1349 44628 1369883336
1 f none /usr/local/share/aclocal-1.13/obsolete.m4 0644 root root 1008 19750 1369883336
1 f none /usr/local/share/aclocal-1.13/options.m4 0644 root root 1090 16672 1369883336
1 f none /usr/local/share/aclocal-1.13/python.m4 0644 root root 9082 27581 1369883336
1 f none /usr/local/share/aclocal-1.13/runlog.m4 0644 root root 718 53895 1369883336
1 f none /usr/local/share/aclocal-1.13/sanity.m4 0644 root root 2646 21139 1369883336
1 f none /usr/local/share/aclocal-1.13/silent.m4 0644 root root 1911 20361 1369883336
1 f none /usr/local/share/aclocal-1.13/strip.m4 0644 root root 1392 50756 1369883336
1 f none /usr/local/share/aclocal-1.13/substnot.m4 0644 root root 675 50009 1369883336
1 f none /usr/local/share/aclocal-1.13/tar.m4 0644 root root 4471 20681 1369883336
1 f none /usr/local/share/aclocal-1.13/upc.m4 0644 root root 836 3458 1369883336
1 f none /usr/local/share/aclocal-1.13/vala.m4 0644 root root 1655 64477 1369883336
1 f none /usr/local/share/aclocal/README 0644 root root 368 33352 1369883336
1 d none /usr/local/share/automake-1.13 0755 root root
1 d none /usr/local/share/automake-1.13/Automake 0755 root root
1 f none /usr/local/share/automake-1.13/Automake/ChannelDefs.pm 0644 root root 11241 54610 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Channels.pm 0644 root root 20955 34274 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Condition.pm 0644 root root 15661 19580 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Config.pm 0644 root root 1806 17046 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Configure_ac.pm 0644 root root 3458 19287 1369883336
1 f none /usr/local/share/automake-1.13/Automake/DisjConditions.pm 0644 root root 14791 24399 1369883336
1 f none /usr/local/share/automake-1.13/Automake/FileUtils.pm 0644 root root 9582 31852 1369883336
1 f none /usr/local/share/automake-1.13/Automake/General.pm 0644 root root 2193 46857 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Getopt.pm 0644 root root 2779 29727 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Item.pm 0644 root root 4613 46974 1369883336
1 f none /usr/local/share/automake-1.13/Automake/ItemDef.pm 0644 root root 2458 8558 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Location.pm 0644 root root 5983 34225 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Options.pm 0644 root root 11295 59933 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Rule.pm 0644 root root 24673 64686 1369883336
1 f none /usr/local/share/automake-1.13/Automake/RuleDef.pm 0644 root root 2762 31763 1369883336
1 f none /usr/local/share/automake-1.13/Automake/VarDef.pm 0644 root root 9043 10478 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Variable.pm 0644 root root 46296 9463 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Version.pm 0644 root root 4353 25336 1369883336
1 f none /usr/local/share/automake-1.13/Automake/Wrap.pm 0644 root root 4215 13016 1369883336
1 f none /usr/local/share/automake-1.13/Automake/XFile.pm 0644 root root 7945 40151 1369883336
1 f none /usr/local/share/automake-1.13/COPYING 0644 root root 35147 30328 1369883336
1 f none /usr/local/share/automake-1.13/INSTALL 0644 root root 15749 11782 1369883336
1 d none /usr/local/share/automake-1.13/am 0755 root root
1 f none /usr/local/share/automake-1.13/am/check.am 0644 root root 21963 14493 1369883336
1 f none /usr/local/share/automake-1.13/am/check2.am 0644 root root 2195 41843 1369883336
1 f none /usr/local/share/automake-1.13/am/clean-hdr.am 0644 root root 818 3705 1369883336
1 f none /usr/local/share/automake-1.13/am/clean.am 0644 root root 2331 2979 1369883336
1 f none /usr/local/share/automake-1.13/am/compile.am 0644 root root 1010 19490 1369883336
1 f none /usr/local/share/automake-1.13/am/configure.am 0644 root root 6608 5393 1369883336
1 f none /usr/local/share/automake-1.13/am/data.am 0644 root root 3398 55021 1369883336
1 f none /usr/local/share/automake-1.13/am/dejagnu.am 0644 root root 3667 33293 1369883336
1 f none /usr/local/share/automake-1.13/am/depend.am 0644 root root 1039 22692 1369883336
1 f none /usr/local/share/automake-1.13/am/depend2.am 0644 root root 7412 31955 1369883336
1 f none /usr/local/share/automake-1.13/am/distdir.am 0644 root root 20793 20616 1369883336
1 f none /usr/local/share/automake-1.13/am/footer.am 0644 root root 881 8968 1369883336
1 f none /usr/local/share/automake-1.13/am/header-vars.am 0644 root root 5593 63008 1369883336
1 f none /usr/local/share/automake-1.13/am/header.am 0644 root root 786 993 1369883336
1 f none /usr/local/share/automake-1.13/am/inst-vars.am 0644 root root 3472 24288 1369883336
1 f none /usr/local/share/automake-1.13/am/install.am 0644 root root 3993 64966 1369883336
1 f none /usr/local/share/automake-1.13/am/java.am 0644 root root 2860 10147 1369883336
1 f none /usr/local/share/automake-1.13/am/lang-compile.am 0644 root root 1197 28238 1369883336
1 f none /usr/local/share/automake-1.13/am/lex.am 0644 root root 1323 39143 1369883336
1 f none /usr/local/share/automake-1.13/am/library.am 0644 root root 976 12393 1369883336
1 f none /usr/local/share/automake-1.13/am/libs.am 0644 root root 3889 28200 1369883336
1 f none /usr/local/share/automake-1.13/am/libtool.am 0644 root root 1030 22960 1369883336
1 f none /usr/local/share/automake-1.13/am/lisp.am 0644 root root 4112 45173 1369883336
1 f none /usr/local/share/automake-1.13/am/ltlib.am 0644 root root 4993 36768 1369883336
1 f none /usr/local/share/automake-1.13/am/ltlibrary.am 0644 root root 933 9783 1369883336
1 f none /usr/local/share/automake-1.13/am/mans-vars.am 0644 root root 857 6650 1369883336
1 f none /usr/local/share/automake-1.13/am/mans.am 0644 root root 6493 37010 1369883336
1 f none /usr/local/share/automake-1.13/am/program.am 0644 root root 1231 35595 1369883336
1 f none /usr/local/share/automake-1.13/am/progs.am 0644 root root 6390 17235 1369883336
1 f none /usr/local/share/automake-1.13/am/python.am 0644 root root 5216 536 1369883336
1 f none /usr/local/share/automake-1.13/am/remake-hdr.am 0644 root root 3258 9565 1369883336
1 f none /usr/local/share/automake-1.13/am/scripts.am 0644 root root 4713 21507 1369883336
1 f none /usr/local/share/automake-1.13/am/subdirs.am 0644 root root 2868 43239 1369883336
1 f none /usr/local/share/automake-1.13/am/tags.am 0644 root root 5161 5911 1369883336
1 f none /usr/local/share/automake-1.13/am/texi-vers.am 0644 root root 2406 62212 1369883336
1 f none /usr/local/share/automake-1.13/am/texibuild.am 0644 root root 6622 62157 1369883336
1 f none /usr/local/share/automake-1.13/am/texinfos.am 0644 root root 13437 43762 1369883336
1 f none /usr/local/share/automake-1.13/am/vala.am 0644 root root 768 64727 1369883336
1 f none /usr/local/share/automake-1.13/am/yacc.am 0644 root root 2404 63923 1369883336
1 f none /usr/local/share/automake-1.13/ar-lib 0755 root root 5826 50810 1369883336
1 f none /usr/local/share/automake-1.13/compile 0755 root root 7333 36792 1369883336
1 f none /usr/local/share/automake-1.13/config.guess 0755 root root 44922 1037 1369883336
1 f none /usr/local/share/automake-1.13/config.sub 0755 root root 35521 15491 1369883336
1 f none /usr/local/share/automake-1.13/depcomp 0755 root root 23491 21333 1369883336
1 f none /usr/local/share/automake-1.13/install-sh 0755 root root 13997 26788 1369883336
1 f none /usr/local/share/automake-1.13/mdate-sh 0755 root root 6047 33216 1369883336
1 f none /usr/local/share/automake-1.13/missing 0755 root root 6873 30733 1369883336
1 f none /usr/local/share/automake-1.13/mkinstalldirs 0755 root root 3538 65365 1369883336
1 f none /usr/local/share/automake-1.13/py-compile 0755 root root 4670 49002 1369883336
1 f none /usr/local/share/automake-1.13/tap-driver.pl 0755 root root 15285 16504 1369883336
1 f none /usr/local/share/automake-1.13/tap-driver.sh 0755 root root 19514 43151 1369883336
1 f none /usr/local/share/automake-1.13/test-driver 0755 root root 3977 3091 1369883336
1 f none /usr/local/share/automake-1.13/texinfo.tex 0644 root root 323102 52862 1369883336
1 f none /usr/local/share/automake-1.13/ylwrap 0755 root root 7006 22102 1369883336
1 d none /usr/local/share/doc 0755 root root
1 d none /usr/local/share/doc/automake 0755 root root
1 f none /usr/local/share/doc/automake/amhello-1.0.tar.gz 0644 root root 77423 41621 1369883336
1 d none /usr/local/share/info 0755 root root
1 f none /usr/local/share/info/automake-history.info 0644 root root 78473 58602 1369883336
1 f none /usr/local/share/info/automake.info 0644 root root 7647 48858 1369883336
1 f none /usr/local/share/info/automake.info-1 0644 root root 298077 6892 1369883336
1 f none /usr/local/share/info/automake.info-2 0644 root root 231712 12899 1369883336
1 f none /usr/local/share/info/automake.info-3 0644 root root 74226 29370 1369883336
1 f none /usr/local/share/info/dir 0644 root root 14765 50705 1369883336
1 d none /usr/local/share/man 0755 root root
1 d none /usr/local/share/man/man1 0755 root root
1 f none /usr/local/share/man/man1/aclocal-1.13.1 0644 root root 2395 8181 1369883336
1 f none /usr/local/share/man/man1/aclocal.1 0644 root root 24 1780 1369883336
1 f none /usr/local/share/man/man1/automake-1.13.1 0644 root root 3583 36790 1369883336
1 f none /usr/local/share/man/man1/automake.1 0644 root root 25 1916 1369883336
1 i checkinstall 790 2505 1369883317
1 i pkginfo 269 20679 1369883367
07070100077ff1000041ed00000000000000000000000251a6c2e700000000000000b600010002ffffffffffffffff0000000800000000install 07070100077ff2000081ed00000000000000000000000151a6c2b500000316000000b600010002ffffffffffffffff0000001500000000install/checkinstall #!/bin/sh
#
expected_bits="64"
expected_release="5.11"
expected_platform="i386"
#
release=`uname -r`
platform=`uname -p`
bits=`isainfo -b`
#
if [ ${platform} != ${expected_platform} ]; then
echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n"
echo "\tAborting installation.\n\n\n"
exit 1
fi
if [ ${release} != ${expected_release} ]; then
echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n"
echo "\tAborting installation.\n\n\n"
exit 1
fi
#if [ ${bits} != ${expected_bits} ]; then
# echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n"
# echo "\tYour machine is running a ${bits} bit O.S. currently\n"
# echo "\tAborting installation.\n\n\n"
# exit 1
#fi
exit 0
07070100077f60000041ed00000000000000000000000351a6c2e700000000000000b600010002ffffffffffffffff0000000500000000root 07070100077f61000041ed00000000000000000000000351a6c2e700000000000000b600010002ffffffffffffffff0000000900000000root/usr 07070100077f62000041ed00000000000000000000000451a6c2e700000000000000b600010002ffffffffffffffff0000000f00000000root/usr/local 07070100077f66000041ed00000000000000000000000851a6c2e700000000000000b600010002ffffffffffffffff0000001500000000root/usr/local/share 07070100077f8e000041ed00000000000000000000000451a6c2e700000000000000b600010002ffffffffffffffff0000002300000000root/usr/local/share/automake-1.13 07070100077f8f000041ed00000000000000000000000251a6c2e700000000000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/automake-1.13/Automake 07070100077f99000081a400000000000000000000000151a6c2c800001205000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/automake-1.13/Automake/Item.pm # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Item;
use 5.006;
use strict;
use Carp;
use Automake::ChannelDefs;
use Automake::DisjConditions;
=head1 NAME
Automake::Item - base class for Automake::Variable and Automake::Rule
=head1 DESCRIPTION
=head2 Methods
=over 4
=item C
Create and return an empty Item called C<$name>.
=cut
sub new ($$)
{
my ($class, $name) = @_;
my $self = {
name => $name,
defs => {},
conds => {},
};
bless $self, $class;
return $self;
}
=item C<$item-Ename>
Return the name of C<$item>.
=cut
sub name ($)
{
my ($self) = @_;
return $self->{'name'};
}
=item C<$item-Edef ($cond)>
Return the definition for this item in condition C<$cond>, if it
exists. Return 0 otherwise.
=cut
sub def ($$)
{
# This method is called very often, so keep it small and fast. We
# don't mind the extra undefined items introduced by lookup failure;
# avoiding this with 'exists' means doing two hash lookup on
# success, and proved worse on benchmark.
my $def = $_[0]->{'defs'}{$_[1]};
return defined $def && $def;
}
=item C<$item-Erdef ($cond)>
Return the definition for this item in condition C<$cond>. Abort with
an internal error if the item was not defined under this condition.
The I in front of C stands for I. One
should call C to assert the conditional definition's existence.
=cut
sub rdef ($$)
{
my ($self, $cond) = @_;
my $d = $self->def ($cond);
prog_error ("undefined condition '" . $cond->human . "' for '"
. $self->name . "'\n" . $self->dump)
unless $d;
return $d;
}
=item C<$item-Eset ($cond, $def)>
Add a new definition to an existing item.
=cut
sub set ($$$)
{
my ($self, $cond, $def) = @_;
$self->{'defs'}{$cond} = $def;
$self->{'conds'}{$cond} = $cond;
}
=item C<$var-Econditions>
Return an L describing the conditions that
that an item is defined in.
These are all the conditions for which is would be safe to call
C.
=cut
sub conditions ($)
{
my ($self) = @_;
prog_error ("self is not a reference")
unless ref $self;
return new Automake::DisjConditions (values %{$self->{'conds'}});
}
=item C<@missing_conds = $var-Enot_always_defined_in_cond ($cond)>
Check whether C<$var> is always defined for condition C<$cond>.
Return a list of conditions where the definition is missing.
For instance, given
if COND1
if COND2
A = foo
D = d1
else
A = bar
D = d2
endif
else
D = d3
endif
if COND3
A = baz
B = mumble
endif
C = mumble
we should have (we display result as conditional strings in this
illustration, but we really return DisjConditions objects):
var ('A')->not_always_defined_in_cond ('COND1_TRUE COND2_TRUE')
=> ()
var ('A')->not_always_defined_in_cond ('COND1_TRUE')
=> ()
var ('A')->not_always_defined_in_cond ('TRUE')
=> ("COND1_FALSE COND3_FALSE")
var ('B')->not_always_defined_in_cond ('COND1_TRUE')
=> ("COND1_TRUE COND3_FALSE")
var ('C')->not_always_defined_in_cond ('COND1_TRUE')
=> ()
var ('D')->not_always_defined_in_cond ('TRUE')
=> ()
var ('Z')->not_always_defined_in_cond ('TRUE')
=> ("TRUE")
=cut
sub not_always_defined_in_cond ($$)
{
my ($self, $cond) = @_;
# Compute the subconditions where $var isn't defined.
return
$self->conditions
->sub_conditions ($cond)
->invert
->multiply ($cond);
}
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f97000081a400000000000000000000000151a6c2c800000891000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/automake-1.13/Automake/General.pm # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::General;
use 5.006;
use strict;
use Exporter;
use File::Basename;
use vars qw (@ISA @EXPORT);
@ISA = qw (Exporter);
@EXPORT = qw (&uniq $me);
# Variable we share with the main package. Be sure to have a single
# copy of them: using 'my' together with multiple inclusion of this
# package would introduce several copies.
use vars qw ($me);
$me = basename ($0);
# END
# ---
# Exit nonzero whenever closing STDOUT fails.
sub END
{
# This is required if the code might send any output to stdout
# E.g., even --version or --help. So it's best to do it unconditionally.
if (! close STDOUT)
{
print STDERR "$me: closing standard output: $!\n";
$? = 74; # EX_IOERR
return;
}
}
# @RES
# uniq (@LIST)
# ------------
# Return LIST with no duplicates.
sub uniq (@)
{
my @res = ();
my %seen = ();
foreach my $item (@_)
{
if (! exists $seen{$item})
{
$seen{$item} = 1;
push (@res, $item);
}
}
return wantarray ? @res : "@res";
}
1; # for require
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077fa2000081a400000000000000000000000151a6c2c800001077000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/automake-1.13/Automake/Wrap.pm # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Wrap;
use 5.006;
use strict;
require Exporter;
use vars '@ISA', '@EXPORT_OK';
@ISA = qw/Exporter/;
@EXPORT_OK = qw/wrap makefile_wrap/;
=head1 NAME
Automake::Wrap - a paragraph formatter
=head1 SYNOPSIS
use Automake::Wrap 'wrap', 'makefile_wrap';
print wrap ($first_ident, $next_ident, $end_of_line, $max_length,
@values);
print makefile_wrap ("VARIABLE = ", " ", @values);
=head1 DESCRIPTION
This modules provide facility to format list of strings. It is
comparable to Perl's L, however we can't use L
because some versions will abort when some word to print exceeds the
maximum length allowed. (Ticket #17141, fixed in Perl 5.8.0.)
=head2 Functions
=over 4
=cut
# _tab_length ($TXT)
# ------------------
# Compute the length of TXT, counting tab characters as 8 characters.
sub _tab_length($)
{
my ($txt) = @_;
my $len = length ($txt);
$len += 7 * ($txt =~ tr/\t/\t/);
return $len;
}
=item C
Format C<@values> as a block of text that starts with C<$head>,
followed by the strings in C<@values> separated by spaces or by
C<"$eol\n$fill"> so that the length of each line never exceeds
C<$max_len>.
The C<$max_len> constraint is ignored for C<@values> items which
are too big to fit alone one a line.
The constructed paragraph is C<"\n">-terminated.
=cut
sub wrap($$$$@)
{
my ($head, $fill, $eol, $max_len, @values) = @_;
my $result = $head;
my $column = _tab_length ($head);
my $fill_len = _tab_length ($fill);
my $eol_len = _tab_length ($eol);
my $not_first_word = 0;
foreach (@values)
{
my $len = _tab_length ($_);
# See if the new variable fits on this line.
# (The + 1 is for the space we add in front of the value.).
if ($column + $len + $eol_len + 1 > $max_len
# Do not break before the first word if it does not fit on
# the next line anyway.
&& ($not_first_word || $fill_len + $len + $eol_len + 1 <= $max_len))
{
# Start a new line.
$result .= "$eol\n" . $fill;
$column = $fill_len;
}
elsif ($not_first_word)
{
# Add a space only if result does not already end
# with a space.
$_ = " $_" if $result =~ /\S\z/;
++$len;
}
$result .= $_;
$column += $len;
$not_first_word = 1;
}
$result .= "\n";
return $result;
}
=item C
Format C<@values> in a way which is suitable for Fs.
This is comparable to C, except C<$eol> is known to
be C<" \\">, and the maximum length has been hardcoded to C<72>.
A space is appended to C<$head> when this is not already
the case.
This can be used to format variable definitions or dependency lines.
makefile_wrap ('VARIABLE =', "\t", @values);
makefile_wrap ('rule:', "\t", @dependencies);
=cut
sub makefile_wrap ($$@)
{
my ($head, $fill, @values) = @_;
if (@values)
{
$head .= ' ' if $head =~ /\S\z/;
return wrap $head, $fill, " \\", 72, @values;
}
return "$head\n";
}
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f98000081a400000000000000000000000151a6c2c800000adb000000b600010002ffffffffffffffff0000003600000000root/usr/local/share/automake-1.13/Automake/Getopt.pm # Copyright (C) 2012-2013 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Getopt;
=head1 NAME
Automake::Getopt - GCS conforming parser for command line options
=head1 SYNOPSIS
use Automake::Getopt;
=head1 DESCRIPTION
Export a function C, performing parsing of command
line options in conformance to the GNU Coding standards.
=cut
use 5.006;
use strict;
use warnings FATAL => 'all';
use Exporter ();
use Getopt::Long ();
use Automake::ChannelDefs qw/fatal/;
use Carp qw/croak confess/;
use vars qw (@ISA @EXPORT);
@ISA = qw (Exporter);
@EXPORT= qw/getopt/;
=item C
Wrapper around C, trying to conform to the GNU
Coding Standards for error messages.
=cut
sub parse_options (%)
{
my %option = @_;
Getopt::Long::Configure ("bundling", "pass_through");
# Unrecognized options are passed through, so GetOption can only fail
# due to internal errors or misuse of options specification.
Getopt::Long::GetOptions (%option)
or confess "error in options specification (likely)";
if (@ARGV && $ARGV[0] =~ /^-./)
{
my %argopts;
for my $k (keys %option)
{
if ($k =~ /(.*)=s$/)
{
map { $argopts{(length ($_) == 1)
? "-$_" : "--$_" } = 1; } (split (/\|/, $1));
}
}
if ($ARGV[0] eq '--')
{
shift @ARGV;
}
elsif (exists $argopts{$ARGV[0]})
{
fatal ("option '$ARGV[0]' requires an argument\n"
. "Try '$0 --help' for more information.");
}
else
{
fatal ("unrecognized option '$ARGV[0]'.\n"
. "Try '$0 --help' for more information.");
}
}
}
=back
=head1 SEE ALSO
L
=cut
1; # for require
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f9b000081a400000000000000000000000151a6c2c80000175f000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/automake-1.13/Automake/Location.pm # Copyright (C) 2002-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Location;
use 5.006;
=head1 NAME
Automake::Location - a class for location tracking, with a stack of contexts
=head1 SYNOPSIS
use Automake::Location;
# Create a new Location object
my $where = new Automake::Location "foo.c:13";
# Change the location
$where->set ("foo.c:14");
# Get the location (without context).
# Here this should print "foo.c:14"
print $where->get, "\n";
# Push a context, and change the location
$where->push_context ("included from here");
$where->set ("bar.h:1");
# Print the location and the stack of context (for debugging)
print $where->dump;
# This should display
# bar.h:1:
# foo.c:14: included from here
# Get the contexts (list of [$location_string, $description])
for my $pair (reverse $where->contexts)
{
my ($loc, $descr) = @{$pair};
...
}
# Pop a context, and reset the location to the previous context.
$where->pop_context;
# Clone a Location. Use this when storing the state of a location
# that would otherwise be modified.
my $where_copy = $where->clone;
# Serialize a Location object (for passing through a thread queue,
# for example)
my @array = $where->serialize ();
# De-serialize: recreate a Location object from a queue.
my $where = new Automake::Location::deserialize ($queue);
=head1 DESCRIPTION
C objects are used to keep track of locations in Automake,
and used to produce diagnostics.
A C object is made of two parts: a location string, and
a stack of contexts.
For instance if C is defined at line 1 in F which was
included at line 14 in F, then the location string should be
C<"bar.h:10"> and the context should be the pair (C<"foo.c:14">,
C<"included from here">).
Section I shows how to setup such a C, and access
the location string or the stack of contexts.
You can pass a C to C.
=cut
=head2 Methods
=over
=item C<$where = new Automake::Location ([$position])>
Create and return a new Location object.
=cut
sub new ($;$)
{
my ($class, $position) = @_;
my $self = {
position => $position,
contexts => [],
};
bless $self, $class;
return $self;
}
=item C<$location-Eset ($position)>
Change the location to be C<$position>.
=cut
sub set ($$)
{
my ($self, $position) = @_;
$self->{'position'} = $position;
}
=item C<$location-Eget>
Get the location (without context).
=cut
sub get ($)
{
my ($self) = @_;
return $self->{'position'};
}
=item C<$location-Epush_context ($context)>
Push a context to the location.
=cut
sub push_context ($$)
{
my ($self, $context) = @_;
push @{$self->{'contexts'}}, [$self->get, $context];
$self->set (undef);
}
=item C<$where = $location-Epop_context ($context)>
Pop a context, and reset the location to the previous context.
=cut
sub pop_context ($)
{
my ($self) = @_;
my $pair = pop @{$self->{'contexts'}};
$self->set ($pair->[0]);
return @{$pair};
}
=item C<@contexts = $location-Eget_contexts>
Return the array of contexts.
=cut
sub get_contexts ($)
{
my ($self) = @_;
return @{$self->{'contexts'}};
}
=item C<$location = $location-Eclone>
Clone a Location. Use this when storing the state of a location
that would otherwise be modified.
=cut
sub clone ($)
{
my ($self) = @_;
my $other = new Automake::Location ($self->get);
my @contexts = $self->get_contexts;
for my $pair (@contexts)
{
push @{$other->{'contexts'}}, [@{$pair}];
}
return $other;
}
=item C<$res = $location-Edump>
Print the location and the stack of context (for debugging).
=cut
sub dump ($)
{
my ($self) = @_;
my $res = ($self->get || 'INTERNAL') . ":\n";
for my $pair (reverse $self->get_contexts)
{
$res .= $pair->[0] || 'INTERNAL';
$res .= ": $pair->[1]\n";
}
return $res;
}
=item C<@array = $location-Eserialize>
Serialize a Location object (for passing through a thread queue,
for example).
=cut
sub serialize ($)
{
my ($self) = @_;
my @serial = ();
push @serial, $self->get;
my @contexts = $self->get_contexts;
for my $pair (@contexts)
{
push @serial, @{$pair};
}
push @serial, undef;
return @serial;
}
=item C
De-serialize: recreate a Location object from a queue.
=cut
sub deserialize ($)
{
my ($queue) = @_;
my $position = $queue->dequeue ();
my $self = new Automake::Location $position;
while (my $position = $queue->dequeue ())
{
my $context = $queue->dequeue ();
push @{$self->{'contexts'}}, [$position, $context];
}
return $self;
}
=back
=head1 SEE ALSO
L
=head1 HISTORY
Written by Alexandre Duret-Lutz EFE.
=cut
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f93000081a400000000000000000000000151a6c2c80000070e000000b600010002ffffffffffffffff0000003600000000root/usr/local/share/automake-1.13/Automake/Config.pm # -*- Perl -*-
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
# Generated from Config.in; do not edit by hand.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Config;
use strict;
use 5.006;
require Exporter;
our @ISA = qw (Exporter);
our @EXPORT = qw ($APIVERSION $PACKAGE $PACKAGE_BUGREPORT $VERSION
$RELEASE_YEAR $libdir $perl_threads);
# Parameters set by configure. Not to be changed. NOTE: assign
# VERSION as string so that e.g. version 0.30 will print correctly.
our $APIVERSION = '1.13';
our $PACKAGE = 'automake';
our $PACKAGE_BUGREPORT = 'bug-automake@gnu.org';
our $VERSION = '1.13.2';
our $RELEASE_YEAR = '2013';
our $libdir = '/usr/local/share/automake-1.13';
our $perl_threads = 0;
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f92000081a400000000000000000000000151a6c2c800003d2d000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/automake-1.13/Automake/Condition.pm # Copyright (C) 1997-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::Condition;
use 5.006;
use strict;
use Carp;
require Exporter;
use vars '@ISA', '@EXPORT_OK';
@ISA = qw/Exporter/;
@EXPORT_OK = qw/TRUE FALSE reduce_and reduce_or/;
=head1 NAME
Automake::Condition - record a conjunction of conditionals
=head1 SYNOPSIS
use Automake::Condition;
# Create a condition to represent "COND1 and not COND2".
my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
# Create a condition to represent "not COND3".
my $other = new Automake::Condition "COND3_FALSE";
# Create a condition to represent
# "COND1 and not COND2 and not COND3".
my $both = $cond->merge ($other);
# Likewise, but using a list of conditional strings
my $both2 = $cond->merge_conds ("COND3_FALSE");
# Strip from $both any subconditions which are in $other.
# This is the opposite of merge.
$cond = $both->strip ($other);
# Return the list of conditions ("COND1_TRUE", "COND2_FALSE"):
my @conds = $cond->conds;
# Is $cond always true? (Not in this example)
if ($cond->true) { ... }
# Is $cond always false? (Not in this example)
if ($cond->false) { ... }
# Return the list of conditionals as a string:
# "COND1_TRUE COND2_FALSE"
my $str = $cond->string;
# Return the list of conditionals as a human readable string:
# "COND1 and !COND2"
my $str = $cond->human;
# Return the list of conditionals as a AC_SUBST-style string:
# "@COND1_TRUE@@COND2_FALSE@"
my $subst = $cond->subst_string;
# Is $cond true when $both is true? (Yes in this example)
if ($cond->true_when ($both)) { ... }
# Is $cond redundant w.r.t. {$other, $both}?
# (Yes in this example)
if ($cond->redundant_wrt ($other, $both)) { ... }
# Does $cond imply any of {$other, $both}?
# (Not in this example)
if ($cond->implies_any ($other, $both)) { ... }
# Remove superfluous conditionals assuming they will eventually
# be multiplied together.
# (Returns @conds = ($both) in this example, because
# $other and $cond are implied by $both.)
@conds = Automake::Condition::reduce_and ($other, $both, $cond);
# Remove superfluous conditionals assuming they will eventually
# be summed together.
# (Returns @conds = ($cond, $other) in this example, because
# $both is a subset condition of $cond: $cond is true whenever $both
# is true.)
@conds = Automake::Condition::reduce_or ($other, $both, $cond);
# Invert a Condition. This returns a list of Conditions.
@conds = $both->not;
=head1 DESCRIPTION
A C is a conjunction of conditionals (i.e., atomic conditions
defined in F by C. In Automake they
are used to represent the conditions into which F variables and
F rules are defined.
If the variable C is defined as
if COND1
if COND2
VAR = value
endif
endif
then it will be associated a C created with
the following statement.
new Automake::Condition "COND1_TRUE", "COND2_TRUE";
Remember that a C is a I of conditionals, so
the above C means C is defined when C
B C are true. There is no way to express disjunctions
(i.e., Is) with this class (but see L).
Another point worth to mention is that each C object is
unique with respect to its conditionals. Two C objects
created for the same set of conditionals will have the same address.
This makes it easy to compare Cs: just compare the
references.
my $c1 = new Automake::Condition "COND1_TRUE", "COND2_TRUE";
my $c2 = new Automake::Condition "COND1_TRUE", "COND2_TRUE";
$c1 == $c2; # True!
=head2 Methods
=over 4
=item C<$cond = new Automake::Condition [@conds]>
Return a C objects for the conjunctions of conditionals
listed in C<@conds> as strings.
An item in C<@conds> should be either C<"FALSE">, C<"TRUE">, or have
the form C<"NAME_FALSE"> or C<"NAME_TRUE"> where C can be
anything (in practice C should be the name of a conditional
declared in F with C, but it's not
C's responsibility to ensure this).
An empty C<@conds> means C<"TRUE">.
As explained previously, the reference (object) returned is unique
with respect to C<@conds>. For this purpose, duplicate elements are
ignored, and C<@conds> is rewritten as C<("FALSE")> if it contains
C<"FALSE"> or two contradictory conditionals (such as C<"NAME_FALSE">
and C<"NAME_TRUE">.)
Therefore the following two statements create the same object (they
both create the C<"FALSE"> condition).
my $c3 = new Automake::Condition "COND1_TRUE", "COND1_FALSE";
my $c4 = new Automake::Condition "COND2_TRUE", "FALSE";
$c3 == $c4; # True!
$c3 == FALSE; # True!
=cut
# Keys in this hash are conditional strings. Values are the
# associated object conditions. This is used by 'new' to reuse
# Condition objects with identical conditionals.
use vars '%_condition_singletons';
# Do NOT reset this hash here. It's already empty by default,
# and any setting would otherwise occur AFTER the 'TRUE' and 'FALSE'
# constants definitions.
# %_condition_singletons = ();
sub new ($;@)
{
my ($class, @conds) = @_;
my $self = {
hash => {},
};
bless $self, $class;
for my $cond (@conds)
{
# Catch some common programming errors:
# - A Condition passed to new
confess "'$cond' is a reference, expected a string" if ref $cond;
# - A Condition passed as a string to new
confess "'$cond' does not look like a condition" if $cond =~ /::/;
}
# Accept strings like "FOO BAR" as shorthand for ("FOO", "BAR").
@conds = map { split (' ', $_) } @conds;
for my $cond (@conds)
{
next if $cond eq 'TRUE';
# Detect cases when @conds can be simplified to FALSE.
if (($cond eq 'FALSE' && $#conds > 0)
|| ($cond =~ /^(.*)_TRUE$/ && exists $self->{'hash'}{"${1}_FALSE"})
|| ($cond =~ /^(.*)_FALSE$/ && exists $self->{'hash'}{"${1}_TRUE"}))
{
return &FALSE;
}
$self->{'hash'}{$cond} = 1;
}
my $key = $self->string;
if (exists $_condition_singletons{$key})
{
return $_condition_singletons{$key};
}
$_condition_singletons{$key} = $self;
return $self;
}
=item C<$newcond = $cond-Emerge (@otherconds)>
Return a new condition which is the conjunction of
C<$cond> and C<@otherconds>.
=cut
sub merge ($@)
{
my ($self, @otherconds) = @_;
new Automake::Condition (map { $_->conds } ($self, @otherconds));
}
=item C<$newcond = $cond-Emerge_conds (@conds)>
Return a new condition which is the conjunction of C<$cond> and
C<@conds>, where C<@conds> is a list of conditional strings, as
passed to C.
=cut
sub merge_conds ($@)
{
my ($self, @conds) = @_;
new Automake::Condition $self->conds, @conds;
}
=item C<$newcond = $cond-Estrip ($minuscond)>
Return a new condition which has all the conditionals of C<$cond>
except those of C<$minuscond>. This is the opposite of C.
=cut
sub strip ($$)
{
my ($self, $minus) = @_;
my @res = grep { not $minus->_has ($_) } $self->conds;
return new Automake::Condition @res;
}
=item C<@list = $cond-Econds>
Return the set of conditionals defining C<$cond>, as strings. Note that
this might not be exactly the list passed to C (or a
concatenation of such lists if C was used), because of the
cleanup mentioned in C's description.
For instance C<$c3-Econds> will simply return C<("FALSE")>.
=cut
sub conds ($ )
{
my ($self) = @_;
my @conds = keys %{$self->{'hash'}};
return ("TRUE") unless @conds;
return sort @conds;
}
# Undocumented, shouldn't be needed outside of this class.
sub _has ($$)
{
my ($self, $cond) = @_;
return exists $self->{'hash'}{$cond};
}
=item C<$cond-Efalse>
Return 1 iff this condition is always false.
=cut
sub false ($ )
{
my ($self) = @_;
return $self->_has ('FALSE');
}
=item C<$cond-Etrue>
Return 1 iff this condition is always true.
=cut
sub true ($ )
{
my ($self) = @_;
return 0 == keys %{$self->{'hash'}};
}
=item C<$cond-Estring>
Build a string which denotes the condition.
For instance using the C<$cond> definition from L,
C<$cond-Estring> will return C<"COND1_TRUE COND2_FALSE">.
=cut
sub string ($ )
{
my ($self) = @_;
return $self->{'string'} if defined $self->{'string'};
my $res = '';
if ($self->false)
{
$res = 'FALSE';
}
else
{
$res = join (' ', $self->conds);
}
$self->{'string'} = $res;
return $res;
}
=item C<$cond-Ehuman>
Build a human readable string which denotes the condition.
For instance using the C<$cond> definition from L,
C<$cond-Estring> will return C<"COND1 and !COND2">.
=cut
sub _to_human ($ )
{
my ($s) = @_;
if ($s =~ /^(.*)_(TRUE|FALSE)$/)
{
return (($2 eq 'FALSE') ? '!' : '') . $1;
}
else
{
return $s;
}
}
sub human ($ )
{
my ($self) = @_;
return $self->{'human'} if defined $self->{'human'};
my $res = '';
if ($self->false)
{
$res = 'FALSE';
}
else
{
$res = join (' and ', map { _to_human $_ } $self->conds);
}
$self->{'human'} = $res;
return $res;
}
=item C<$cond-Esubst_string>
Build a C-style string for output in F.
For instance using the C<$cond> definition from L,
C<$cond-Esubst_string> will return C<"@COND1_TRUE@@COND2_FALSE@">.
=cut
sub subst_string ($ )
{
my ($self) = @_;
return $self->{'subst_string'} if defined $self->{'subst_string'};
my $res = '';
if ($self->false)
{
$res = '#';
}
elsif (! $self->true)
{
$res = '@' . join ('@@', sort $self->conds) . '@';
}
$self->{'subst_string'} = $res;
return $res;
}
=item C<$cond-Etrue_when ($when)>
Return 1 iff C<$cond> is true when C<$when> is true.
Return 0 otherwise.
Using the definitions from L, C<$cond> is true
when C<$both> is true, but the converse is wrong.
=cut
sub true_when ($$)
{
my ($self, $when) = @_;
# Nothing is true when FALSE (not even FALSE itself, but it
# shouldn't hurt if you decide to change that).
return 0 if $self->false || $when->false;
# If we are true, we stay true when $when is true :)
return 1 if $self->true;
# $SELF is true under $WHEN if each conditional component of $SELF
# exists in $WHEN.
foreach my $cond ($self->conds)
{
return 0 unless $when->_has ($cond);
}
return 1;
}
=item C<$cond-Eredundant_wrt (@conds)>
Return 1 iff C<$cond> is true for any condition in C<@conds>.
If @conds is empty, return 1 iff C<$cond> is C.
Return 0 otherwise.
=cut
sub redundant_wrt ($@)
{
my ($self, @conds) = @_;
foreach my $cond (@conds)
{
return 1 if $self->true_when ($cond);
}
return $self->false;
}
=item C<$cond-Eimplies_any (@conds)>
Return 1 iff C<$cond> implies any of the conditions in C<@conds>.
Return 0 otherwise.
=cut
sub implies_any ($@)
{
my ($self, @conds) = @_;
foreach my $cond (@conds)
{
return 1 if $cond->true_when ($self);
}
return 0;
}
=item C<$cond-Enot>
Return a negation of C<$cond> as a list of Cs.
This list should be used to construct a C
(we cannot return a C from C,
because that would make these two packages interdependent).
=cut
sub not ($ )
{
my ($self) = @_;
return @{$self->{'not'}} if defined $self->{'not'};
my @res =
map { new Automake::Condition &conditional_negate ($_) } $self->conds;
$self->{'not'} = [@res];
return @res;
}
=item C<$cond-Emultiply (@conds)>
Assumption: C<@conds> represent a disjunction of conditions.
Return the result of multiplying C<$cond> with that disjunction.
The result will be a list of conditions suitable to construct a
C.
=cut
sub multiply ($@)
{
my ($self, @set) = @_;
my %res = ();
for my $cond (@set)
{
my $ans = $self->merge ($cond);
$res{$ans} = $ans;
}
# FALSE can always be removed from a disjunction.
delete $res{FALSE};
# Now, $self is a common factor of the remaining conditions.
# If one of the conditions is $self, we can discard the rest.
return ($self, ())
if exists $res{$self};
return (values %res);
}
=back
=head2 Other helper functions
=over 4
=item C
The C<"TRUE"> conditional.
=item C
The C<"FALSE"> conditional.
=cut
use constant TRUE => new Automake::Condition "TRUE";
use constant FALSE => new Automake::Condition "FALSE";
=item C
Return a subset of @conds with the property that the conjunction of
the subset is the same as the conjunction of @conds. For example, if
both C and C are in the list,
discard the latter. If the input list is empty, return C<(TRUE)>.
=cut
sub reduce_and (@)
{
my (@conds) = @_;
my @ret = ();
my $cond;
while (@conds > 0)
{
$cond = shift @conds;
# FALSE is absorbent.
return FALSE
if $cond == FALSE;
if (! $cond->redundant_wrt (@ret, @conds))
{
push (@ret, $cond);
}
}
return TRUE if @ret == 0;
return @ret;
}
=item C
Return a subset of @conds with the property that the disjunction of
the subset is equivalent to the disjunction of @conds. For example,
if both C and C are in the list,
discard the former. If the input list is empty, return C<(FALSE)>.
=cut
sub reduce_or (@)
{
my (@conds) = @_;
my @ret = ();
my $cond;
while (@conds > 0)
{
$cond = shift @conds;
next
if $cond == FALSE;
return TRUE
if $cond == TRUE;
push (@ret, $cond)
unless $cond->implies_any (@ret, @conds);
}
return FALSE if @ret == 0;
return @ret;
}
=item C
Negate a conditional string.
=cut
sub conditional_negate ($)
{
my ($cond) = @_;
$cond =~ s/TRUE$/TRUEO/;
$cond =~ s/FALSE$/TRUE/;
$cond =~ s/TRUEO$/FALSE/;
return $cond;
}
=back
=head1 SEE ALSO
L.
=head1 HISTORY
Cs and supporting code were added to Automake 1.1o by
Ian Lance Taylor in 1997. Since then it has been
improved by Tom Tromey , Richard Boulton
, Raja R Harinath ,
Akim Demaille , and Alexandre Duret-Lutz .
=cut
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f96000081a400000000000000000000000151a6c2c80000256e000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/automake-1.13/Automake/FileUtils.pm # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
###############################################################
# The main copy of this file is in Automake's git repository. #
# Updates should be sent to automake-patches@gnu.org. #
###############################################################
package Automake::FileUtils;
=head1 NAME
Automake::FileUtils - handling files
=head1 SYNOPSIS
use Automake::FileUtils
=head1 DESCRIPTION
This perl module provides various general purpose file handling functions.
=cut
use 5.006;
use strict;
use Exporter;
use File::stat;
use IO::File;
use Automake::Channels;
use Automake::ChannelDefs;
use vars qw (@ISA @EXPORT);
@ISA = qw (Exporter);
@EXPORT = qw (&contents
&find_file &mtime
&update_file &up_to_date_p
&xsystem &xsystem_hint &xqx
&dir_has_case_matching_file &reset_dir_cache
&set_dir_cache_file);
=item C
Return the first path for a C<$file_name> in the Cs.
We match exactly the behavior of GNU M4: first look in the current
directory (which includes the case of absolute file names), and then,
if the file name is not absolute, look in C<@include>.
If the file is flagged as optional (ends with C>), then return undef
if absent, otherwise exit with error.
=cut
# $FILE_NAME
# find_file ($FILE_NAME, @INCLUDE)
# --------------------------------
sub find_file ($@)
{
use File::Spec;
my ($file_name, @include) = @_;
my $optional = 0;
$optional = 1
if $file_name =~ s/\?$//;
return File::Spec->canonpath ($file_name)
if -e $file_name;
if (!File::Spec->file_name_is_absolute ($file_name))
{
foreach my $path (@include)
{
return File::Spec->canonpath (File::Spec->catfile ($path, $file_name))
if -e File::Spec->catfile ($path, $file_name)
}
}
fatal "$file_name: no such file or directory"
unless $optional;
return undef;
}
=item C
Return the mtime of C<$file>. Missing files, or C<-> standing for
C or C are "obsolete", i.e., as old as possible.
=cut
# $MTIME
# MTIME ($FILE)
# -------------
sub mtime ($)
{
my ($file) = @_;
return 0
if $file eq '-' || ! -f $file;
my $stat = stat ($file)
or fatal "cannot stat $file: $!";
return $stat->mtime;
}
=item C
Rename C<$from> as C<$to>, preserving C<$to> timestamp if it has not
changed, unless C<$force> is true (defaults to false). Recognize
C<$to> = C<-> standing for C. C<$from> is always
removed/renamed.
=cut
# &update_file ($FROM, $TO; $FORCE)
# ---------------------------------
sub update_file ($$;$)
{
my ($from, $to, $force) = @_;
$force = 0
unless defined $force;
my $SIMPLE_BACKUP_SUFFIX = $ENV{'SIMPLE_BACKUP_SUFFIX'} || '~';
use File::Compare;
use File::Copy;
if ($to eq '-')
{
my $in = new IO::File $from, "<";
my $out = new IO::File (">-");
while ($_ = $in->getline)
{
print $out $_;
}
$in->close;
unlink ($from) || fatal "cannot remove $from: $!";
return;
}
if (!$force && -f "$to" && compare ("$from", "$to") == 0)
{
# File didn't change, so don't update its mod time.
msg 'note', "'$to' is unchanged";
unlink ($from)
or fatal "cannot remove $from: $!";
return
}
if (-f "$to")
{
# Back up and install the new one.
move ("$to", "$to$SIMPLE_BACKUP_SUFFIX")
or fatal "cannot backup $to: $!";
move ("$from", "$to")
or fatal "cannot rename $from as $to: $!";
msg 'note', "'$to' is updated";
}
else
{
move ("$from", "$to")
or fatal "cannot rename $from as $to: $!";
msg 'note', "'$to' is created";
}
}
=item C
Is C<$file> more recent than C<@dep>?
=cut
# $BOOLEAN
# &up_to_date_p ($FILE, @DEP)
# ---------------------------
sub up_to_date_p ($@)
{
my ($file, @dep) = @_;
my $mtime = mtime ($file);
foreach my $dep (@dep)
{
if ($mtime < mtime ($dep))
{
verb "up_to_date ($file): outdated: $dep";
return 0;
}
}
verb "up_to_date ($file): up to date";
return 1;
}
=item C
Display an error message for C<$command>, based on the content of
C<$?> and C<$!>. Be quiet if the command exited normally
with C<$expected_exit_code>. If C<$hint> is given, display that as well
if the command failed to run at all.
=cut
sub handle_exec_errors ($;$$)
{
my ($command, $expected, $hint) = @_;
$expected = 0 unless defined $expected;
if (defined $hint)
{
$hint = "\n" . $hint;
}
else
{
$hint = '';
}
$command = (split (' ', $command))[0];
if ($!)
{
fatal "failed to run $command: $!" . $hint;
}
else
{
use POSIX qw (WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG);
if (WIFEXITED ($?))
{
my $status = WEXITSTATUS ($?);
# Propagate exit codes.
fatal ('',
"$command failed with exit status: $status",
exit_code => $status)
unless $status == $expected;
}
elsif (WIFSIGNALED ($?))
{
my $signal = WTERMSIG ($?);
fatal "$command terminated by signal: $signal";
}
else
{
fatal "$command exited abnormally";
}
}
}
=item C
Same as C (but in scalar context), but fails on errors.
=cut
# xqx ($COMMAND)
# --------------
sub xqx ($)
{
my ($command) = @_;
verb "running: $command";
$! = 0;
my $res = `$command`;
handle_exec_errors $command
if $?;
return $res;
}
=item C
Same as C, but fails on errors, and reports the C<@argv>
in verbose mode.
=cut
sub xsystem (@)
{
my (@command) = @_;
verb "running: @command";
$! = 0;
handle_exec_errors "@command"
if system @command;
}
=item C
Same as C, but allows to pass a hint that will be displayed
in case the command failed to run at all.
=cut
sub xsystem_hint (@)
{
my ($hint, @command) = @_;
verb "running: @command";
$! = 0;
handle_exec_errors "@command", 0, $hint
if system @command;
}
=item C
Return the contents of C<$file_name>.
=cut
# contents ($FILE_NAME)
# ---------------------
sub contents ($)
{
my ($file) = @_;
verb "reading $file";
local $/; # Turn on slurp-mode.
my $f = new Automake::XFile $file, "<";
my $contents = $f->getline;
$f->close;
return $contents;
}
=item C
Return true iff $DIR contains a file name that matches $FILE_NAME case
insensitively.
We need to be cautious on case-insensitive case-preserving file
systems (e.g. Mac OS X's HFS+). On such systems C<-f 'Foo'> and C<-f
'foO'> answer the same thing. Hence if a package distributes its own
F file, but has no F file, automake would still
try to distribute F (because it thinks it exists) in
addition to F, although it is impossible for these two
files to be in the same directory (the two file names designate the
same file).
=cut
use vars '%_directory_cache';
sub dir_has_case_matching_file ($$)
{
# Note that print File::Spec->case_tolerant returns 0 even on MacOS
# X (with Perl v5.8.1-RC3 at least), so do not try to shortcut this
# function using that.
my ($dirname, $file_name) = @_;
return 0 unless -f "$dirname/$file_name";
# The file appears to exist, however it might be a mirage if the
# system is case insensitive. Let's browse the directory and check
# whether the file is really in. We maintain a cache of directories
# so Automake doesn't spend all its time reading the same directory
# again and again.
if (!exists $_directory_cache{$dirname})
{
error "failed to open directory '$dirname'"
unless opendir (DIR, $dirname);
$_directory_cache{$dirname} = { map { $_ => 1 } readdir (DIR) };
closedir (DIR);
}
return exists $_directory_cache{$dirname}{$file_name};
}
=item C
Clear C's cache for C<$dirname>.
=cut
sub reset_dir_cache ($)
{
delete $_directory_cache{$_[0]};
}
=item C
State that C<$dirname> contains C<$file_name> now.
=cut
sub set_dir_cache_file ($$)
{
my ($dirname, $file_name) = @_;
$_directory_cache{$dirname}{$file_name} = 1
if exists $_directory_cache{$dirname};
}
1; # for require
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077fa3000081a400000000000000000000000151a6c2c800001f09000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/automake-1.13/Automake/XFile.pm # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# Written by Akim Demaille .
###############################################################
# The main copy of this file is in Automake's git repository. #
# Updates should be sent to automake-patches@gnu.org. #
###############################################################
package Automake::XFile;
=head1 NAME
Automake::XFile - supply object methods for filehandles with error handling
=head1 SYNOPSIS
use Automake::XFile;
$fh = new Automake::XFile;
$fh->open ("file", "<");
# No need to check $FH: we died if open failed.
print <$fh>;
$fh->close;
# No need to check the return value of close: we died if it failed.
$fh = new Automake::XFile "file", ">";
# No need to check $FH: we died if new failed.
print $fh "bar\n";
$fh->close;
$fh = new Automake::XFile "file", "r";
# No need to check $FH: we died if new failed.
defined $fh
print <$fh>;
undef $fh; # automatically closes the file and checks for errors.
$fh = new Automake::XFile "file", O_WRONLY | O_APPEND;
# No need to check $FH: we died if new failed.
print $fh "corge\n";
$pos = $fh->getpos;
$fh->setpos ($pos);
undef $fh; # automatically closes the file and checks for errors.
autoflush STDOUT 1;
=head1 DESCRIPTION
C inherits from C. It provides the method
C returning the file name. It provides dying versions of the
methods C, C (corresponding to C), C,
C, C, and C. It also overrides the C
and C methods to translate C<\r\n> to C<\n>.
=cut
use 5.006;
use strict;
use vars qw($VERSION @EXPORT @EXPORT_OK $AUTOLOAD @ISA);
use Carp;
use Errno;
use IO::File;
use File::Basename;
use Automake::ChannelDefs;
use Automake::Channels qw(msg);
use Automake::FileUtils;
require Exporter;
require DynaLoader;
@ISA = qw(IO::File Exporter DynaLoader);
$VERSION = "1.2";
@EXPORT = @IO::File::EXPORT;
eval {
# Make all Fcntl O_XXX and LOCK_XXX constants available for importing
require Fcntl;
my @O = grep /^(LOCK|O)_/, @Fcntl::EXPORT, @Fcntl::EXPORT_OK;
Fcntl->import (@O); # first we import what we want to export
push (@EXPORT, @O);
};
=head2 Methods
=over
=item C<$fh = new Automake::XFile ([$expr, ...]>
Constructor a new XFile object. Additional arguments
are passed to C, if any.
=cut
sub new
{
my $type = shift;
my $class = ref $type || $type || "Automake::XFile";
my $fh = $class->SUPER::new ();
if (@_)
{
$fh->open (@_);
}
$fh;
}
=item C<$fh-Eopen ([$file, ...])>
Open a file, passing C<$file> and further arguments to C.
Die if opening fails. Store the name of the file. Use binmode for writing.
=cut
sub open
{
my $fh = shift;
my ($file, $mode) = @_;
# WARNING: Gross hack: $FH is a typeglob: use its hash slot to store
# the 'name' of the file we are opening. See the example with
# io_socket_timeout in IO::Socket for more, and read Graham's
# comment in IO::Handle.
${*$fh}{'autom4te_xfile_file'} = "$file";
if (!$fh->SUPER::open (@_))
{
fatal "cannot open $file: $!";
}
# In case we're running under MSWindows, don't write with CRLF.
# (This circumvents a bug in at least Cygwin bash where the shell
# parsing fails on lines ending with the continuation character '\'
# and CRLF).
# Correctly recognize usages like:
# - open ($file, "w")
# - open ($file, "+<")
# - open (" >$file")
binmode $fh
if (defined $mode && $mode =~ /^[+>wa]/ or $file =~ /^\s*>/);
}
=item C<$fh-Eclose>
Close the file, handling errors.
=cut
sub close
{
my $fh = shift;
if (!$fh->SUPER::close (@_))
{
my $file = $fh->name;
Automake::FileUtils::handle_exec_errors $file
unless $!;
fatal "cannot close $file: $!";
}
}
=item C<$line = $fh-Egetline>
Read and return a line from the file. Ensure C<\r\n> is translated to
C<\n> on input files.
=cut
# Some native Windows/perl installations fail to translate \r\n to \n on
# input so we do that here.
sub getline
{
local $_ = $_[0]->SUPER::getline;
# Perform a _global_ replacement: $_ may can contains many lines
# in slurp mode ($/ = undef).
s/\015\012/\n/gs if defined $_;
return $_;
}
=item C<@lines = $fh-Egetlines>
Slurp lines from the files.
=cut
sub getlines
{
my @res = ();
my $line;
push @res, $line while $line = $_[0]->getline;
return @res;
}
=item C<$name = $fh-Ename>
Return the name of the file.
=cut
sub name
{
my $fh = shift;
return ${*$fh}{'autom4te_xfile_file'};
}
=item C<$fh-Elock>
Lock the file using C. If locking fails for reasons other than
C being unsupported, then error out if C<$ENV{'MAKEFLAGS'}> indicates
that we are spawned from a parallel C.
=cut
sub lock
{
my ($fh, $mode) = @_;
# Cannot use @_ here.
# Unless explicitly configured otherwise, Perl implements its 'flock' with the
# first of flock(2), fcntl(2), or lockf(3) that works. These can fail on
# NFS-backed files, with ENOLCK (GNU/Linux) or EOPNOTSUPP (FreeBSD); we
# usually ignore these errors. If $ENV{MAKEFLAGS} suggests that a parallel
# invocation of 'make' has invoked the tool we serve, report all locking
# failures and abort.
#
# On Unicos, flock(2) and fcntl(2) over NFS hang indefinitely when 'lockd' is
# not running. NetBSD NFS clients silently grant all locks. We do not
# attempt to defend against these dangers.
#
# -j is for parallel BSD make, -P is for parallel HP-UX make.
if (!flock ($fh, $mode))
{
my $make_j = (exists $ENV{'MAKEFLAGS'}
&& " -$ENV{'MAKEFLAGS'}" =~ / (-[BdeikrRsSw]*[jP]|--[jP]|---?jobs)/);
my $note = "\nforgo \"make -j\" or use a file system that supports locks";
my $file = $fh->name;
msg ($make_j ? 'fatal' : 'unsupported',
"cannot lock $file with mode $mode: $!" . ($make_j ? $note : ""))
if $make_j || !($!{ENOLCK} || $!{EOPNOTSUPP});
}
}
=item C<$fh-Eseek ($position, [$whence])>
Seek file to C<$position>. Die if seeking fails.
=cut
sub seek
{
my $fh = shift;
# Cannot use @_ here.
if (!seek ($fh, $_[0], $_[1]))
{
my $file = $fh->name;
fatal "cannot rewind $file with @_: $!";
}
}
=item C<$fh-Etruncate ($len)>
Truncate the file to length C<$len>. Die on failure.
=cut
sub truncate
{
my ($fh, $len) = @_;
if (!truncate ($fh, $len))
{
my $file = $fh->name;
fatal "cannot truncate $file at $len: $!";
}
}
=back
=head1 SEE ALSO
L,
L,
L
L
L
=head1 HISTORY
Derived from IO::File.pm by Akim Demaille EFE.
=cut
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f9f000081a400000000000000000000000151a6c2c800002353000000b600010002ffffffffffffffff0000003600000000root/usr/local/share/automake-1.13/Automake/VarDef.pm # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
package Automake::VarDef;
use 5.006;
use strict;
use Carp;
use Automake::ChannelDefs;
use Automake::ItemDef;
require Exporter;
use vars '@ISA', '@EXPORT';
@ISA = qw/Automake::ItemDef Exporter/;
@EXPORT = qw (&VAR_AUTOMAKE &VAR_CONFIGURE &VAR_MAKEFILE
&VAR_ASIS &VAR_PRETTY &VAR_SILENT &VAR_SORTED);
=head1 NAME
Automake::VarDef - a class for variable definitions
=head1 SYNOPSIS
use Automake::VarDef;
use Automake::Location;
# Create a VarDef for a definition such as
# | # any comment
# | foo = bar # more comment
# in Makefile.am
my $loc = new Automake::Location 'Makefile.am:2';
my $def = new Automake::VarDef ('foo', 'bar # more comment',
'# any comment',
$loc, '', VAR_MAKEFILE, VAR_ASIS);
# Appending to a definition.
$def->append ('value to append', 'comment to append');
# Accessors.
my $value = $def->value; # with trailing '#' comments and
# continuation ("\\\n") omitted.
my $value = $def->raw_value; # the real value, as passed to new().
my $comment = $def->comment;
my $location = $def->location;
my $type = $def->type;
my $owner = $def->owner;
my $pretty = $def->pretty;
# Changing owner.
$def->set_owner (VAR_CONFIGURE,
new Automake::Location 'configure.ac:15');
# Marking examined definitions.
$def->set_seen;
my $seen_p = $def->seen;
# Printing a variable for debugging.
print STDERR $def->dump;
=head1 DESCRIPTION
This class gathers data related to one Makefile-variable definition.
=head2 Constants
=over 4
=item C, C, C
Possible owners for variables. A variable can be defined
by Automake, in F (using C), or in
the user's F.
=cut
# Defined so that the owner of a variable can only be increased (e.g
# Automake should not override a configure or Makefile variable).
use constant VAR_AUTOMAKE => 0; # Variable defined by Automake.
use constant VAR_CONFIGURE => 1;# Variable defined in configure.ac.
use constant VAR_MAKEFILE => 2; # Variable defined in Makefile.am.
=item C, C, C, C
Possible print styles. C variables should be output as-is.
C variables are wrapped on multiple lines if they cannot
fit on one. C variables are not output at all. Finally,
C variables should be sorted and then handled as
C variables.
C variables can also be overridden silently (unlike the
other kinds of variables whose overriding may sometimes produce
warnings).
=cut
# Possible values for pretty.
use constant VAR_ASIS => 0; # Output as-is.
use constant VAR_PRETTY => 1; # Pretty printed on output.
use constant VAR_SILENT => 2; # Not output. (Can also be
# overridden silently.)
use constant VAR_SORTED => 3; # Sorted and pretty-printed.
=back
=head2 Methods
C defines the following methods in addition to those inherited
from L.
=over 4
=item C
Create a new Makefile-variable definition. C<$varname> is the name of
the variable being defined and C<$value> its value.
C<$comment> is any comment preceding the definition. (Because
Automake reorders variable definitions in the output, it also tries to
carry comments around.)
C<$location> is the place where the definition occurred, it should be
an instance of L.
C<$type> should be C<''> for definitions made with C<=>, and C<':'>
for those made with C<:=>.
C<$owner> specifies who owns the variables, it can be one of
C, C, or C (see these
definitions).
Finally, C<$pretty> tells how the variable should be output, and can
be one of C, C, or C, or
C (see these definitions).
=cut
sub new ($$$$$$$$)
{
my ($class, $var, $value, $comment, $location, $type, $owner, $pretty) = @_;
# A user variable must be set by either '=' or ':=', and later
# promoted to '+='.
if ($owner != VAR_AUTOMAKE && $type eq '+')
{
error $location, "$var must be set with '=' before using '+='";
}
my $self = Automake::ItemDef::new ($class, $comment, $location, $owner);
$self->{'value'} = $value;
$self->{'type'} = $type;
$self->{'pretty'} = $pretty;
$self->{'seen'} = 0;
return $self;
}
=item C<$def-Eappend ($value, $comment)>
Append C<$value> and <$comment> to the existing value and comment of
C<$def>. This is normally called on C<+=> definitions.
=cut
sub append ($$$)
{
my ($self, $value, $comment) = @_;
$self->{'comment'} .= $comment;
my $val = $self->{'value'};
# Strip comments from augmented variables. This is so that
# VAR = foo # com
# VAR += bar
# does not become
# VAR = foo # com bar
# Furthermore keeping '#' would not be portable if the variable is
# output on multiple lines.
$val =~ s/ ?#.*//;
# Insert a separator, if required.
$val .= ' ' if $val;
$self->{'value'} = $val . $value;
# Turn ASIS appended variables into PRETTY variables. This is to
# cope with 'make' implementation that cannot read very long lines.
$self->{'pretty'} = VAR_PRETTY if $self->{'pretty'} == VAR_ASIS;
}
=item C<$def-Evalue>
=item C<$def-Eraw_value>
=item C<$def-Etype>
=item C<$def-Epretty>
Accessors to the various constituents of a C. See the
documentation of C's arguments for a description of these.
=cut
sub value ($)
{
my ($self) = @_;
my $val = $self->raw_value;
# Strip anything past '#'. '#' characters cannot be escaped
# in Makefiles, so we don't have to be smart.
$val =~ s/#.*$//s;
# Strip backslashes.
$val =~ s/\\$/ /mg;
return $val;
}
sub raw_value ($)
{
my ($self) = @_;
return $self->{'value'};
}
sub type ($)
{
my ($self) = @_;
return $self->{'type'};
}
sub pretty ($)
{
my ($self) = @_;
return $self->{'pretty'};
}
=item C<$def-Eset_owner ($owner, $location)>
Change the owner of a definition. This usually happens because
the user used C<+=> on an Automake variable, so (s)he now owns
the content. C<$location> should be an instance of L
indicating where the change took place.
=cut
sub set_owner ($$$)
{
my ($self, $owner, $location) = @_;
# We always adjust the location when the owner changes (even for
# '+=' statements). The risk otherwise is to warn about
# a VAR_MAKEFILE variable and locate it in configure.ac...
$self->{'owner'} = $owner;
$self->{'location'} = $location;
}
=item C<$def-Eset_seen>
=item C<$bool = $def-Eseen>
These function allows Automake to mark (C) variable that
it has examined in some way, and latter check (using C) for
unused variables. Unused variables usually indicate typos.
=cut
sub set_seen ($)
{
my ($self) = @_;
$self->{'seen'} = 1;
}
sub seen ($)
{
my ($self) = @_;
return $self->{'seen'};
}
=item C<$str = $def-Edump>
Format the contents of C<$def> as a human-readable string,
for debugging.
=cut
sub dump ($)
{
my ($self) = @_;
my $owner = $self->owner;
if ($owner == VAR_AUTOMAKE)
{
$owner = 'Automake';
}
elsif ($owner == VAR_CONFIGURE)
{
$owner = 'Configure';
}
elsif ($owner == VAR_MAKEFILE)
{
$owner = 'Makefile';
}
else
{
prog_error ("unexpected owner");
}
my $where = $self->location->dump;
my $comment = $self->comment;
my $value = $self->raw_value;
my $type = $self->type;
return "{
type: $type=
where: $where comment: $comment
value: $value
owner: $owner
}\n";
}
=back
=head1 SEE ALSO
L, L.
=cut
1;
### Setup "GNU" style for perl-mode and cperl-mode.
## Local Variables:
## perl-indent-level: 2
## perl-continued-statement-offset: 2
## perl-continued-brace-offset: 0
## perl-brace-offset: 0
## perl-brace-imaginary-offset: 0
## perl-label-offset: -2
## cperl-indent-level: 2
## cperl-brace-offset: 0
## cperl-continued-brace-offset: 0
## cperl-label-offset: -2
## cperl-extra-newline-before-brace: t
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## End:
07070100077f91000081a400000000000000000000000151a6c2c8000051db000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/automake-1.13/Automake/Channels.pm # Copyright (C) 2002-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
###############################################################
# The main copy of this file is in Automake's git repository. #
# Updates should be sent to automake-patches@gnu.org. #
###############################################################
package Automake::Channels;
=head1 NAME
Automake::Channels - support functions for error and warning management
=head1 SYNOPSIS
use Automake::Channels;
# Register a channel to output warnings about unused variables.
register_channel 'unused', type => 'warning';
# Register a channel for system errors.
register_channel 'system', type => 'error', exit_code => 4;
# Output a message on channel 'unused'.
msg 'unused', "$file:$line", "unused variable '$var'";
# Make the 'unused' channel silent.
setup_channel 'unused', silent => 1;
# Turn on all channels of type 'warning'.
setup_channel_type 'warning', silent => 0;
# Redirect all channels to push messages on a Thread::Queue using
# the specified serialization key.
setup_channel_queue $queue, $key;
# Output a message pending in a Thread::Queue.
pop_channel_queue $queue;
# Treat all warnings as errors.
$warnings_are_errors = 1;
# Exit with the greatest exit code encountered so far.
exit $exit_code;
=head1 DESCRIPTION
This perl module provides support functions for handling diagnostic
channels in programs. Channels can be registered to convey fatal,
error, warning, or debug messages. Each channel has various options
(e.g. is the channel silent, should duplicate messages be removed,
etc.) that can also be overridden on a per-message basis.
=cut
use 5.006;
use strict;
use Exporter;
use Carp;
use File::Basename;
use vars qw (@ISA @EXPORT %channels $me);
@ISA = qw (Exporter);
@EXPORT = qw ($exit_code $warnings_are_errors
&reset_local_duplicates &reset_global_duplicates
®ister_channel &msg &exists_channel &channel_type
&setup_channel &setup_channel_type
&dup_channel_setup &drop_channel_setup
&buffer_messages &flush_messages
&setup_channel_queue &pop_channel_queue
US_GLOBAL US_LOCAL
UP_NONE UP_TEXT UP_LOC_TEXT);
$me = basename $0;
=head2 Global Variables
=over 4
=item C<$exit_code>
The greatest exit code seen so far. C<$exit_code> is updated from
the C options of C and C channels.
=cut
use vars qw ($exit_code);
$exit_code = 0;
=item C<$warnings_are_errors>
Set this variable to 1 if warning messages should be treated as
errors (i.e. if they should update C<$exit_code>).
=cut
use vars qw ($warnings_are_errors);
$warnings_are_errors = 0;
=back
=head2 Constants
=over 4
=item C, C, C
Possible values for the C options. This selects the part
of the message that should be considered when filtering out duplicates.
If C is used, the location and the explanation message
are used for filtering. If C is used, only the explanation
message is used (so the same message will be filtered out if it appears
at different locations). C means that duplicate messages
should be output.
=cut
use constant UP_NONE => 0;
use constant UP_TEXT => 1;
use constant UP_LOC_TEXT => 2;
=item C, C
Possible values for the C options.
Use C for error messages that should be printed only
once during the execution of the program, C for message that
should be printed only once per file. (Actually, C does not
do this now when files are changed, it relies on you calling
C when this happens.)
=cut
# possible values for uniq_scope
use constant US_LOCAL => 0;
use constant US_GLOBAL => 1;
=back
=head2 Options
Channels accept the options described below. These options can be
passed as a hash to the C, C, and C
functions. The possible keys, with their default value are:
=over
=item C 'warning'>
The type of the channel. One of C<'debug'>, C<'warning'>, C<'error'>, or
C<'fatal'>. Fatal messages abort the program when they are output.
Error messages update the exit status. Debug and warning messages are
harmless, except that warnings are treated as errors if
C<$warnings_are_errors> is set.
=item C 1>
The value to update C<$exit_code> with when a fatal or error message
is emitted. C<$exit_code> is also updated for warnings output
when C<$warnings_are_errors> is set.
=item C \*STDERR>
The file where the error should be output.
=item C 0>
Whether the channel should be silent. Use this do disable a
category of warning, for instance.
=item C 1>
Whether, with multi-threaded execution, the message should be queued
for ordered output.
=item C UP_LOC_TEXT>
The part of the message subject to duplicate filtering. See the
documentation for the C, C, and C
constants above.
C can also be set to an arbitrary string that will be used
instead of the message when considering duplicates.
=item C US_LOCAL>
The scope of duplicate filtering. See the documentation for the
C