cae7291

program build database

Nov 26th, 2015
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.35 KB | None | 0 0
  1. #!/usr/bin/perl
  2. # qsutil/breakup -- self expanding paste archive
  3. #
  4. # CREATED 2015/11/26-08:46:54 UTC
  5. #
  6. # arguments:
  7. # "-h" -- display help
  8. # "-help" -- display help (same as -h)
  9. # "-O<odir>" -- output directory
  10. # "-tail" -- remove subdirectory from individual files
  11. # "-x" -- extract files
  12. #
  13. # "-tab" -- tab control
  14. # 0 -- no change
  15. # 1 -- create tabs from spaces
  16. # 2 -- expand tabs to spaces at beginning of line
  17. # 3 -- expand tabs to spaces everywhere
  18. #
  19. # installation/extraction instructions:
  20. # (1) save this file to /where_ever_you_want
  21. # (2) perl /where_ever_you_want
  22. # (3) if perl not installed, try "yum install perl" [or equiv for your sys]
  23. # and repeat (2)
  24. #
  25. # how to extract manually:
  26. # after the data __DATA__ line there are optional default option lines
  27. #
  28. # each file is preceeded by:
  29. # % <file>
  30. # and the lines after that do _not_ start with "%" are the data for that file
  31. #
  32. # for example:
  33. # % file1
  34. # file1's line 1 ...
  35. # file1's line 2 ...
  36. # ...
  37. # file1's line n...
  38. # % file2
  39. # file2's line 1 ...
  40. # file2's line 2 ...
  41. # ...
  42. # file2's line n...
  43.  
  44. master(@ARGV);
  45. exit(0);
  46.  
  47. # master -- master control
  48. sub master
  49. {
  50. my(@argv) = @_;
  51. my($esc,$bf);
  52. my($otail,$ofile,$xfsrc,$xfdata,$xfdst);
  53. my($lno,$bytot,$bycnt);
  54.  
  55. $pgmfile = $0;
  56. $pgmtail = filetail($pgmfile);
  57.  
  58. select(STDOUT);
  59. $| = 1;
  60.  
  61. select(STDERR);
  62. $| = 1;
  63.  
  64. $esc = "%";
  65.  
  66. open($xfsrc,"<$pgmfile");
  67.  
  68. $xfdata = "breakup::DATA";
  69. $xfdata = \*$xfdata;
  70. $datapos = tell($xfdata);
  71.  
  72. while ($bf = <$xfdata>) {
  73. $bycnt = length($bf);
  74.  
  75. # process separater line
  76. if ($bf =~ s/^$esc\s+//) {
  77. if (defined($otail)) {
  78. printf("%d lines %d chars\n",$lno,$bytot)
  79. }
  80. else {
  81. optget(\@argv);
  82. if (defined($opt_h)) {
  83. usage($xfsrc);
  84. $opt_x = 0;
  85. }
  86. $opt_tail = 1
  87. if ($opt_O eq "-");
  88. }
  89.  
  90. $otail = $bf;
  91. chomp($otail);
  92.  
  93. undef($lno);
  94. undef($bytot);
  95.  
  96. {
  97. $ofile = filetail($ofile)
  98. if ($opt_tail);
  99.  
  100. $ofile = $otail;
  101.  
  102. last if ($opt_O eq "-");
  103. last if ($opt_O eq "");
  104. $ofile = "$opt_O/$otail";
  105. }
  106.  
  107. printf("%s %s -- ",
  108. $opt_x ? "EXTRACT" : "LIST",$ofile);
  109.  
  110. if ($opt_x) {
  111. unless (open($xfdst,">$ofile")) {
  112. printf("$pgmtail: unable to open '%s' -- $!\n",$ofile);
  113. exit(1);
  114. }
  115. }
  116.  
  117. next;
  118. }
  119.  
  120. # handle data line
  121. if (defined($otail)) {
  122. ++$lno;
  123. $bytot += $bycnt;
  124. next unless ($opt_x);
  125. $bf = tabfix($bf)
  126. if ($opt_tab);
  127. print($xfdst $bf);
  128. next;
  129. }
  130.  
  131. # handle default options
  132. if ($bf =~ /^-/) {
  133. chomp($bf);
  134. optget($bf);
  135. next;
  136. }
  137.  
  138. # FIXME/CAE -- this is now junk/bad data
  139. printf("$pgmtail: INFO %s",$bf);
  140. }
  141.  
  142. printf("%d lines %d chars\n",$lno,$bytot)
  143. if (defined($otail));
  144.  
  145. {
  146. last if ($opt_x);
  147. last if ($opt_h);
  148. printf("$pgmtail: rerun with -h to get help\n");
  149. printf("$pgmtail: rerun with -x to actually extract files\n");
  150. }
  151.  
  152. close($xfsrc);
  153. }
  154.  
  155. # optget -- decode command line options
  156. sub optget
  157. {
  158. my($argv) = @_;
  159.  
  160. $argv = [$argv]
  161. unless (ref($argv));
  162.  
  163. while (1) {
  164. vbqdash($argv);
  165. vbqstrdcd($_,"-h",1,\$opt_h);
  166. vbqstrdcd($_,"-O","-",\$opt_O);
  167. vbqnumdcd($_,"-tab",1,\$opt_tab);
  168. vbqnumdcd($_,"-tail",1,\$opt_tail);
  169. vbqnumdcd($_,"-x",1,\$opt_x);
  170. usage();
  171. }
  172. }
  173.  
  174. # tabfix -- fix up tabs
  175. sub tabfix
  176. {
  177. my($rhs) = @_;
  178. my($pre);
  179.  
  180. if ($bf =~ s/^(\s+)//) {
  181. $pre = $1;
  182. $pre =~ s/ /\t/g;
  183. $bf = $pre . $bf;
  184. }
  185.  
  186. $bf;
  187. }
  188.  
  189. # usage -- show usage
  190. sub usage
  191. {
  192. my($xfsrc) = @_;
  193.  
  194. seek($xfsrc,0,0);
  195.  
  196. while ($bf = <$xfsrc>) {
  197. chomp($bf);
  198. next if ($bf =~ /^#!/);
  199. last unless ($bf =~ s/^# ?//);
  200. print($bf,"\n");
  201. }
  202. }
  203.  
  204.  
  205. sub vbqdash
  206. {
  207. my($ptr) = @_;
  208. my($opt);
  209.  
  210. $opt = $ptr->[0];
  211. last unless ($opt =~ /^-/);
  212.  
  213. shift(@$ptr);
  214. last if ($opt eq "--");
  215.  
  216. $_ = $opt
  217. unless (defined(wantarray));
  218.  
  219. $opt;
  220. }
  221.  
  222. sub vbqnumdcd
  223. {
  224. my($bf,$key,$dft,$var) = @_;
  225.  
  226. if ($bf =~ /^$key(.*)$/) {
  227. my($val) = $1;
  228. $val =~ s/^=//s;
  229.  
  230. $val = $dft
  231. if ($val eq "");
  232. $val += 0;
  233.  
  234. vbqchk($var,"vbqnumdcd");
  235.  
  236. $$var = $val;
  237. next;
  238. }
  239. }
  240.  
  241. sub vbqstrdcd
  242. {
  243. my($bf,$key,$dft,$var) = @_;
  244.  
  245. if ($bf =~ /^$key(.*)$/s) {
  246. my($val) = $1;
  247. $val =~ s/^=//;
  248.  
  249. $val = $dft
  250. if ($val eq "");
  251.  
  252. vbqchk($var,"vbqstrdcd");
  253.  
  254. $$var = $val
  255. if (defined($val));
  256. next;
  257. }
  258. }
  259.  
  260. sub vbqchk
  261. # ptr -- pointer to check
  262. # reason -- reason for call
  263. {
  264. my($ptr,$reason) = @_;
  265. my($typ);
  266. my($ok);
  267.  
  268. if (defined(&blesscore)) {
  269. $typ = blesscore($ptr);
  270. }
  271. else {
  272. $typ = $ptr;
  273. $typ =~ s/[(].+$//;
  274. }
  275.  
  276. if ($reason =~ /^vbqv/) {
  277. $ok = ($typ eq "ARRAY");
  278. }
  279. else {
  280. $ok = ($typ eq "SCALAR");
  281. }
  282.  
  283. unless ($ok) {
  284. $ptr = prtstr($ptr)
  285. if (defined(&prtstr));
  286. vbqfault("!vbqchk: invalid pointer -- ptr=%s reason='%s'\n",
  287. $ptr,$reason);
  288. }
  289. }
  290.  
  291. sub vbqusage
  292. {
  293. my($opt,$reason) = @_;
  294.  
  295. if ($reason =~ s/^!//) {
  296. vbqzprtx("$reason: unknown option -- '%s'\n",$opt);
  297. }
  298. else {
  299. vbqfault("!$reason: unknown option -- '%s'\n",$opt);
  300. }
  301. }
  302.  
  303. sub vbqzprtx
  304. {
  305.  
  306. goto &_zprtx
  307. if (defined(&_zprtx));
  308.  
  309. printf(STDERR @_);
  310. }
  311.  
  312. sub vbqfault
  313. {
  314.  
  315. goto &sysfault
  316. if (defined(&sysfault));
  317.  
  318. vbqzprtx(@_);
  319. exit(1);
  320. }
  321.  
  322. sub filetail
  323. {
  324. my($file) = @_;
  325.  
  326. $file =~ s,.*/,,g;
  327.  
  328. $file;
  329. }
  330.  
  331. package breakup;
  332. __DATA__
  333. % ./bld.rdb
  334. # qsoft/bld.rdb -- qsoft project control
  335.  
  336. [init::bld]
  337. m5mpath m5mcom
  338. ###global _USE_QRNG_PAIR_=0
  339. global _USE_QRNG_PAIR_=1
  340. global _USE_QRNG_WRAPVP_=1
  341. import std
  342. xppignore shwlib
  343.  
  344. [BLD_CC::gcc]
  345. pgmcmdcc gcc
  346. pgmcmdas as
  347. pgmcmdar ar
  348. pgmcmdld ld
  349.  
  350. pgmO -gdwarf-2
  351. pgmO -O2
  352.  
  353. pgmopt -fno-strict-aliasing
  354. pgmopt -fno-diagnostics-color
  355.  
  356. # NOTE: we now need this to prevent inlining (enabled at -O2)
  357. pgmopt -fno-inline-small-functions
  358.  
  359. # NOTE: we now need this to prevent inlining (enabled at -O3)
  360. pgmopt -fno-inline-functions
  361.  
  362. [BLD_CC::clang]
  363. pgmcmdcc clang
  364. pgmcmdas as
  365. pgmcmdar ar
  366. pgmcmdld ld
  367.  
  368. pgmO -gdwarf-2
  369. pgmO -O2
  370.  
  371. pgmopt -fno-strict-aliasing
  372.  
  373. # NOTE: we now need this to prevent inlining (enabled at -O2)
  374. pgmopt -fno-inline-small-functions
  375.  
  376. # NOTE: we now need this to prevent inlining (enabled at -O3)
  377. pgmopt -fno-inline-functions
  378.  
  379. # clang complains about unused arguments (this will screw up dependency
  380. # generation) and is also quite annoying in general
  381. pgmopt -Qunused-arguments
  382.  
  383. # FIXME/CAE -- don't yet know how clang really identifies itself
  384. pgmdefine -D__CLANG__
  385.  
  386. [default::std]
  387. pgmdefine -D_USE_ZBLP_
  388.  
  389. # we need this to get fputs_unlocked, etc.
  390. pgmdefine -D_GNU_SOURCE
  391.  
  392. pgmopt -Wall
  393. pgmopt -Werror
  394. pgmopt -Wno-unknown-pragmas
  395.  
  396. pgmopt -Wempty-body
  397.  
  398. &pgmloadcc
  399.  
  400. pgmsufobj .o
  401. pgmsuflib .a
  402. pgmsufdll .so
  403. ###pgmsufexe .exe
  404.  
  405. pgmincpath cpudep
  406. pgmincpath sysdep
  407. pgmincsrc yes
  408.  
  409. pgmdefine -DCPUDEPOF(_htail)=<${BLDCPUDEP}/_htail>
  410. pgmdefine -DSYSDEPOF(_htail)=<${BLDSYSDEP}/_htail>
  411.  
  412. # FIXME/CAE -- we need this [only] for prtctl float operations
  413. pgmlibstd -lm
  414.  
  415. # special environment variables
  416. [pgmutc::std]
  417. vbqnumdcd -dddwait 1 SYSOPT_DDDWAIT
  418. vbxusage tell pjx program to wait for debugger to attach at startup
  419. vbqnumdcd -dddkill 10 SYSOPT_DDDKILL
  420. vbxusage tell pjx program to kill debugger on crash (-1=immediate)
  421.  
  422. vbqnumdcd -maps 1 BLPC_MAPS
  423. vbxusage tell pjx program to dump maps file on crash
  424. vbqnumdcd -tlk 1 BLPC_TIDLNK
  425. vbxusage tell pjx program to create tidlnk directory on crash
  426. vbqnumdcd -utc 1 SYSTVZERO
  427. vbxusage force all forked processes to use the same universal time zero
  428.  
  429. vbqnumdcd -unbuf 1 BLPC_UNBUF
  430. vbxusage unbuffer trace output
  431.  
  432. vbqnumdcd -whobump 10 BLPC_WHOBUMP
  433. vbxusage increase blpwho traceback level
  434.  
  435. vbqnumdcd -Le 1 LIBC_FATAL_STDERR_
  436. vbxusage tell libc to output fatal errors to stderr (vs. /dev/tty)
  437.  
  438. [cpux86]
  439. pgmtype lib
  440. pgmdirsrc cpudep
  441. pgmsrc %.c
  442. pgmincsrc no
  443.  
  444. [syslgx]
  445. pgmtype lib
  446. pgmdirsrc sysdep
  447. pgmsrc %.c
  448. pgmincsrc no
  449. pgmlibstd -lpthread
  450. bldignore yes
  451.  
  452. [default::gtk2devel]
  453. setenv bldpkgcfg gtk+-2.0
  454. import std
  455. pgmdefine ${&bldpkgcfg,pgmdefine}
  456. pgmincpath ${&bldpkgcfg,pgmincpath}
  457. pgmlibstd ${&bldpkgcfg,pgmlibstd}
  458. ###section include::gtkdevel
  459.  
  460. [default::gtk3devel]
  461. setenv bldpkgcfg gtk+-3.0
  462. import std
  463. pgmdefine ${&bldpkgcfg,pgmdefine}
  464. pgmincpath ${&bldpkgcfg,pgmincpath}
  465. pgmlibstd ${&bldpkgcfg,pgmlibstd}
  466. ###section include::gtkdevel
  467.  
  468. [include::gtkdevel]
  469. import std
  470. pgmdefine ${&bldpkgcfg,pgmdefine}
  471. pgmincpath ${&bldpkgcfg,pgmincpath}
  472. pgmlibstd ${&bldpkgcfg,pgmlibstd}
  473.  
  474. ###[syswin]
  475. ### pgmtype lib
  476. ### pgmdirsrc sysdep/syswin
  477. ### pgmsrc %.c
  478. % ./libs/bld.rdb
  479. # libs/bld.rdb -- qsoft project control
  480.  
  481. [oopslib]
  482. pgmdirsrc libs
  483. pgmsrc %.c
  484. pgmlib srtlib
  485. pgmlib syslib
  486.  
  487. [rbtlib]
  488. pgmdirsrc libs
  489. pgmsrc %.c
  490. pgmlib slblib
  491. ###pgmlib syslib
  492.  
  493. [slblib]
  494. pgmdirsrc libs
  495. pgmsrc %.c
  496. pgmlib syslib
  497.  
  498. [srtlib]
  499. pgmdirsrc libs
  500. pgmsrc %.c
  501. ###pgmlib comlib
  502. pgmlib syslib
  503.  
  504. [comlib]
  505. pgmdirsrc libs
  506. pgmsrc %.c
  507. pgmlib cpulib
  508. ###pgmlib syslib
  509.  
  510. [cpulib]
  511. pgmdirsrc libs
  512. pgmsrc %.c
  513. pgmlib ${BLDCPUDEP}
  514. pgmlib comlib
  515.  
  516. [syslib]
  517. pgmdirsrc libs
  518. pgmsrc %.c
  519. pgmobjall yes
  520. pgmlib ${BLDSYSDEP}
  521. pgmlib slblib
  522. pgmlib cpulib
  523. pgmlib comlib
  524.  
  525. [analib]
  526. pgmdirsrc libs
  527. pgmlib oopslib
  528. pgmsrc %.c
  529.  
  530. [flxboxlib]
  531. pgmdirsrc libs
  532. pgmlib oopslib
  533. pgmlib rbtlib
  534. pgmsrc %.c
  535.  
  536. [gfxlib]
  537. pgmdirsrc libs
  538. pgmlib oopslib
  539. pgmlibstd -lm
  540. pgmsrc %.c
  541.  
  542. [gfdlib]
  543. import gtk3devel
  544. pgmdirsrc libs
  545. pgmlib oopslib
  546.  
  547. # FIXME/CAE -- library ordering is broken -- tiflib needs gfxlib loaded
  548. # after but we mess that up so we reference tiflib (which we do _not_ need)
  549. # to correct the hierarchy as a workaround
  550. ###pgmlib gfxlib
  551. pgmlib tiflib
  552.  
  553. pgmsrc %.c
  554.  
  555. [tiflib]
  556. pgmdirsrc libs
  557. pgmlib oopslib
  558. pgmlib gfxlib
  559. pgmsrc %.c
  560. pgmlibstd -ltiff
  561.  
  562. # special environment variables
  563. [pgmutc::spy]
  564. vbqnumdcd -umax 1000 SPYLIB_UMAX
  565. vbxusage maximum number of units to scan
  566. vbqvstrdcd -bashme bash SPYLIB_RGXBASH
  567. vbxusage list of misbehaving programs
  568. vbqvstrdcd -rgxbad undef SPYLIB_RGXBAD
  569.  
  570. [spylib]
  571. pgmdirsrc libs
  572. pgmlib syslib
  573. pgmsrc %.c
  574.  
  575. [spyemu]
  576. pgmtype dll
  577. unless ($BLD_PIC)
  578. bldignore yes
  579. endif
  580. pgmdirsrc libs
  581. pgmlib spylib
  582. ###pgmlib syslib
  583. pgmsrc %.c
  584. pgmlibstd -ldl
  585. pgmlibstd -lresolv
  586. pgmutc -utc -tlk -whobump -maps -dddkill -bashme
  587. pgmutc -rgxbad="*Crash Reports/InstallTime"
  588. pgmutc -rgxbad="*Crash Reports/LastCrash"
  589. % ./pgms/bld.rdb
  590. # pgms/bld.rdb -- qsoft project control
  591.  
  592. [shazpgm]
  593. pgmdirsrc pgms
  594. pgmalias shazam
  595. pgmlib syslib
  596. pgmsrc %.c
  597.  
  598. [anapgm]
  599. pgmdirsrc pgms
  600. pgmalias anasolv
  601. pgmlib analib
  602. pgmsrc %.c
  603. pjxstdout yes
  604.  
  605. [flxboxpgm]
  606. pgmdirsrc pgms
  607. pgmalias flxbox
  608. pgmlib flxboxlib
  609. pgmsrc %.c
  610. pjxstdout yes
  611.  
  612. [gtkhelo]
  613. import gtk2devel
  614. pgmtype pgm
  615. pgmdirsrc pgms
  616. pgmsrc %.c
  617. pjxstdout yes
  618.  
  619. [cairohelo]
  620. import gtk2devel
  621. pgmtype pgm
  622. pgmdirsrc pgms
  623. pgmsrc %.c
  624. pjxstdout yes
  625.  
  626. [cairoshape]
  627. import gtk3devel
  628. pgmtype pgm
  629. pgmdirsrc pgms
  630. pgmsrc %.c
  631. pjxstdout yes
  632.  
  633. [shapepgm]
  634. pgmdirsrc pgms
  635. pgmalias shapedemo
  636. pgmsrc %.c
  637. pjxstdout yes
  638. pgmlib gfdlib
  639.  
  640. [darshred]
  641. pgmtype pgm
  642. pgmdirsrc pgms
  643. pgmsrc %.c
  644. pjxstdout yes
  645. pgmlib gfdlib
  646. pgmlib tiflib
  647. % ./tsts/bld.rdb
  648. # tsts/bld.rdb -- qsoft project control
  649.  
  650. [init::tsts]
  651. m5mpath tsts/m5mtst
  652.  
  653. [tstlib]
  654. pgmdirsrc tsts
  655. pgmlib syslib
  656. pgmsrc %.c
  657.  
  658. [syslimpgm]
  659. pgmdirsrc tsts
  660. pgmlib tstlib
  661. pgmlib syslib
  662. pgmalias syslim
  663. pgmsrc %.c
  664.  
  665. [tstblpflt]
  666. pgmtype pgm
  667. pgmdirsrc tsts
  668. pgmlib tstlib
  669. pgmlib syslib
  670. pgmsrc %.c
  671.  
  672. [tstblpnew]
  673. pgmtype pgm
  674. pgmdirsrc tsts
  675. pgmlib tstlib
  676. pgmlib oopslib
  677. pgmlib syslib
  678. pgmsrc %.c
  679.  
  680. [tstblpsig]
  681. pgmtype pgm
  682. pgmdirsrc tsts
  683. pgmlib tstlib
  684. pgmlib oopslib
  685. pgmlib syslib
  686. pgmsrc %.c
  687.  
  688. [tstnewtsk]
  689. pgmtype pgm
  690. pgmdirsrc tsts
  691. pgmlib tstlib
  692. pgmlib syslib
  693. pgmsrc %.c
  694.  
  695. [tstrqx]
  696. pgmtype pgm
  697. pgmdirsrc tsts
  698. pgmlib tstlib
  699. pgmlib oopslib
  700. pgmlib syslib
  701. pgmsrc %.c
  702.  
  703. [tstmcor]
  704. pgmtype pgm
  705. pgmdirsrc tsts
  706. pgmlib tstlib
  707. pgmlib oopslib
  708. pgmlib syslib
  709. pgmsrc %.c
  710. pjxshazam -S
  711.  
  712. [tstprtctl]
  713. pgmtype pgm
  714. pgmdirsrc tsts
  715. pgmlib tstlib
  716. pgmlib syslib
  717. pgmsrc %.c
  718.  
  719. [tstspyemu]
  720. unless ($BLD_PIC)
  721. bldignore yes
  722. endif
  723. pgmtype pgm
  724. pgmdirsrc tsts
  725. pgmlib tstlib
  726. pgmlib spyemu
  727. pgmlib oopslib
  728. pgmlib syslib
  729. pgmsrc %.c
Advertisement
Add Comment
Please, Sign In to add comment