From b10e18c0939d693bc833425110e615d6bba7908a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 14 Sep 2024 15:09:51 +0200 Subject: showing tables in arch style now --- bin/check | 4 +- doc/TODOS | 3 +- doc/www.linuxjournal.com_article_2393.txt | 527 ++++++++++++++++++++++++ scripts/tsv2tablerow | 8 + templates/stdlib.m4 | 208 ++++++++++ templates/summary.m4 | 30 +- templates/table.m4 | 658 ------------------------------ 7 files changed, 769 insertions(+), 669 deletions(-) create mode 100644 doc/www.linuxjournal.com_article_2393.txt create mode 100755 scripts/tsv2tablerow create mode 100644 templates/stdlib.m4 delete mode 100644 templates/table.m4 diff --git a/bin/check b/bin/check index f711bc6..ea8b6de 100755 --- a/bin/check +++ b/bin/check @@ -31,8 +31,8 @@ for duplicate in `find "${state_dir}"/{core,extra}-{any,x86_64} -type f | \ rev | cut -f 1 -d / | rev | sort | uniq -D | uniq`; do for packages in `ls ${state_dir}/{core,extra}-{any,x86_64}/$duplicate 2>/dev/null`; do for instance in `echo $packages | rev | cut -f 1,2 -d / | rev`; do - echo -n "${instance} " >> "${data_dir}/duplicates" - cat "${state_dir}/$instance" >> "${data_dir}/duplicates" + echo -n "${instance}\t" >> "${data_dir}/duplicates" + cat "${state_dir}/$instance" | tr -s ' ' '\t' >> "${data_dir}/duplicates" done done done diff --git a/doc/TODOS b/doc/TODOS index 3f9f630..7f02e43 100644 --- a/doc/TODOS +++ b/doc/TODOS @@ -7,4 +7,5 @@ but the newest version - check for gitrevision from state to appear in packages for every package - check for all tags if they appear in the packages for every package - +- integrate + https://git.archlinux32.org/devops/tree/generate-bug-report diff --git a/doc/www.linuxjournal.com_article_2393.txt b/doc/www.linuxjournal.com_article_2393.txt new file mode 100644 index 0000000..308821c --- /dev/null +++ b/doc/www.linuxjournal.com_article_2393.txt @@ -0,0 +1,527 @@ + [1]Skip to main content + + [2] + +Linux Journal + + (BUTTON) Toggle navigation + * [3]Topics+ + + [4]Cloud + + [5]Containers + + [6]Desktop + + [7]Kernel + + [8]Mobile + + [9]Networking + + [10]Privacy + + [11]Programming + + [12]Security + + [13]Servers + + [14]SysAdmin + * [15]News + * [16]eBooks + +Search + + Search + _______________ (Search) Search + Enter the terms you wish to search for. + * [17]News + * [18]Popular + * [19]Recent + +Writing HTML with m4 + +[20] + + HOWTOs + + by Bob Hepple + on March 1, 1998 + + It's amazing how easy it is to write simple HTML pages--and the + availability of WYSIWYG (what you see is what you get) HTML editors + like Netscape Gold lulls one into a mood of "don't worry, be happy". + However, managing multiple, inter-related pages of HTML rapidly gets + very difficult. I recently had a slightly complex set of pages to put + together, and I started thinking, "there has to be an easier way." + + I immediately turned to the WWW and looked up all sorts of tools--but + quite honestly I was rather disappointed. Mostly, they were what I + would call "typing aids"--instead of having to remember arcane + incantations like text, you are given a + button or a magic keychord like alt-ctrl-j which remembers the syntax + and does all the typing for you. + + Linux to the rescue--since HTML is built as ordinary text files, the + normal Linux text management tools can be used. This includes revision + control tools such as rcs and the text manipulation tools like awk, + Perl, etc. These tools offer significant help in version control and + managing development by multiple users as well as automating the + process of displaying information from a database (the classic grep + |sort |awk pipeline). + + The use of these tools with HTML is documented elsewhere, e.g., Jim + Weirich's article in Linux Journal Issue 36, April 1997, "Using Perl to + Check Web Links". I highly recommend this article as yet another way to + really flex those Linux muscles when writing HTML. + + What I will cover here is work I've done recently using the + pre-processor m4 to maintain HTML. The ideas can very easily be + extended to the more general SGML case. + Using m4 + + I decided to use m4 after looking at various other pre-processors + including cpp, the C front-end, which is perhaps a little too + C-specific to be useful with HTML. m4 is a generic and clean macro + expansion program, and it's available under most Unices including + Linux. + + Instead of editing *.html files, I create *.m4 files with my favourite + text editor. These files look something like the following: +m4_include(stdlib.m4) +_HEADER(`This is my header') +

This is some plain text

+_HEAD1(`This is a main heading') +

This is some more plain text

+_TRAILER + + The format is just HTML code, but you can include files and add macros + rather like in C. I use a convention that my new macros are in capitals + and start with an _ character to make them stand out from HTML language + and to avoid name-space collisions. + + The m4 file is then processed as follows to create an .html file using + the command: +m4 -P file.html + + This process is especially easy if you create a makefile to automate + these steps in the usual way. For example: +.SUFFIXES: .m4 .html +.m4.html: + m4 -P <$*.m4 >$*.html +DEFault: index.html +*.html: stdlib.m4 +all: default PROJECT1 PROJECT2 +PROJECT1: + (cd project2; make all) +PROJECT2: + (cd project2; make all) + + Some of the most useful commands in m4 are listed here with their cpp + equivalents shown in parentheses: + * m4_include: includes a common file into your HTML (#include) + * m4_define: defines an m4 variable (#define) + * m4_ifdef: a conditional (#ifdef) + * m4_changecom: change the m4 comment character (normally #) + * m4_debugmode: control error diagnostics + * m4_traceon/off: turn tracing on and off + * m4_dnl: comment + * m4_incr, m4_decr: simple arithmetic + * m4_eval: more general arithmetic + * m4_esyscmd: execute a Linux command and use the output + * m4_divert(i): This is a little complicated, so skip on first + reading. It is a way of storing text for output at the end of + normal processing. It will come in useful later, when we get to + automatic numbering of headings. It sends output from m4 to a + temporary file number i. At the end of processing, any text which + was diverted is then output, in the order of the file number i. + File number -1 is the bit bucket and can be used to comment out + chunks of comments. File number 0 is the normal output stream. + Thus, for example, you can use m4_divert to divert text to file 1, + and it will only be output at the end. + + Sharing HTML Elements Across Several Pages + + In many "nests" of HTML pages, each page shares elements such as a + button bar containing links to other pages like this: +[Home] [Next] [Prev] [Index] + + This is fairly easy to create in each page. The trouble is that if you + make a change in the "standard" button-bar then you have the tedious + job of finding each occurrence of it in every file and manually making + the changes. With m4 we can more easily do this job by putting the + shared elements into an m4_include statement, just like C. + + Let's also automate the naming of pages by putting the following lines + into an include file called button_bar.m4: +m4_define(`_BUTTON_BAR', + [Home] + [Next] + [Prev] + [Index]) + + and then these lines in the document: +m4_include button_bar.m4 +_BUTTON_BAR(`page_after_this.html', + `page_before_this.html') + + The $1 and $2 parameters in the macro definition are replaced by the + strings in the macro call. + Managing HTML elements that often change + + It is troublesome to have items change in multiple HTML pages. For + example, if your e-mail address changes, you need to change all + references to it to the new address. Instead, with m4 you can put a + line like the following in your stdlib.m4 file: +m4_define(`_EMAIL_ADDRESS', `MyName@foo.bar.com') + + and then just put _EMAIL_ADDRESS in your m4 files. + + A more substantial example comes from building strings with multiple + components, any of which may change as the page is developed. If, like + me, you develop on one machine, test out the page and then upload to + another machine with a totally different address, then you could use + the m4_ifdef command in your stdlib.m4 file (just like the #ifdef + command in cpp). For example: +m4_define(`_LOCAL') +... +m4_define(`_HOMEPAGE', + m4_ifdef(`_LOCAL', + `//127.0.0.1/~YourAccount', + `http://ISP.com/~YourAccount')) +m4_define(`_PLUG', ` + ') + + Note the careful use of quotes to prevent the variable _LOCAL from + being expanded. _HOMEPAGE takes on different values according to + whether the variable _LOCAL is defined or not. This definition can then + ripple through the entire project as you build the pages. + + In this example, _PLUG is a macro to advertise Linux. When you are + testing your pages, use the local version of _HOMEPAGE. When you are + ready to upload, remove or comment out the _LOCAL definition in this + way: +m4_dnl m4_define(`_LOCAL') + + ... and then re-make. + Creating New Text Styles + + Styles built into HTML include things like for emphasis and + for citations. With m4 you can define your own new styles like this: +m4_define(`_MYQUOTE', +

$1
) + + If, later, you decide you prefer instead of , it is a + simple matter to change the definition. Then, every _MYQUOTE paragraph + falls into line with a quick make. + + The classic guides to good HTML writing say things like "It is strongly + recommended that you employ the logical styles such as ... + rather than the physical styles such as ... in your documents." + Curiously, the WYSIWYG editors for HTML generate purely physical + styles. Using the m4 styles may be a good way to keep on using logical + styles. + Typing and Mnemonic Aids + + I don't depend on WYSIWYG editing (having been brought up on troff) but + all the same I'm not averse to using help where it's available. There + is a choice (and maybe it's a fine line) to be made between: +
Some code you want to display.
+
+ + and: +_CODE(Some code you want to display.) + + In this case, you would define _CODE like this: +m4_define(`_CODE', +
$1
) + + Which version you prefer is a matter of taste and convenience although + the m4 macro certainly saves some typing. Another example I like to + use, since I can never remember the syntax for links, is: +m4_define(`_LINK', $2) + + Then, instead of typing: +Click here to get to SOMEWHERE + + + I type: +_LINK(`URL_TO_SOMEWHERE', `Click here to get to SOMEWHERE') + + Automatic Numbering + + m4 has a simple arithmetic facility with two operators m4_incr and + m4_decr. This facility can be used to create automatic numbering, + perhaps for headings, for example: +m4_define(_CARDINAL,0) +m4_define(_H, `m4_define(`_CARDINAL', + m4_incr(_CARDINAL))

_CARDINAL.0 $1

') +_H(First Heading) +_H(Second Heading) + + This produces: +

1.0 First Heading

+

2.0 Second Heading

+ + Automatic Date Stamping + + For simple date stamping of HTML pages, I use the m4_esyscmd command to + maintain an automatic timestamp on every page: +This page was updated on m4_esyscmd(date) + + which produces: +This page was last updated on Fri May 9 10:35:03 HKT 1997 + + Generating Tables of Contents + + Using m4 allows you to define commonly repeated phrases and use them + consistently. I hate repeating myself because I am lazy and because I + make mistakes, so I find this feature an absolute necessity. + + A good example of the power of m4 is in building a table of contents in + a big page. This involves repeating the heading title in the table of + contents and then in the text itself. This is tedious and error-prone, + especially when you change the titles. There are specialised tools for + generating a table of contents from HTML pages, but the simple facility + provided by m4 is irresistible to me. + Simple To Understand TOC + + The following example is a fairly simple-minded table of contents + generator. First, create some useful macros in stdlib.m4: +m4_define(`_LINK_TO_LABEL', + $1) +m4_define(`_SECTION_HEADER', +

$1

) + + Then define all the section headings in a table at the start of the + page body: +m4_define(`_DIFFICULTIES', + `The difficulties of HTML') +m4_define(`_USING_M4', `Using + m4') +m4_define(`_SHARING', `Sharing HTML + Elements Across Several Pages') + + Then build the table: +

    +

  • _LINK_TO_LABEL(_DIFFICULTIES) +
  • _LINK_TO_LABEL(_USING_M4) +
  • _LINK_TO_LABEL(_SHARING) +
      + + Finally, write the text: + ... +_SECTION_HEADER(_DIFFICULTIES) +... + + The advantages of this approach are twofold. If you change your + headings you only need to change them in one place, and the table of + contents is then automatically regenerated. Also, the links are + guaranteed to work. + Simple To Use TOC + + The table of contents generator that I normally use is a bit more + complex and requires a bit more study, but it is much easier to use. It + not only builds the table, but it also automatically numbers the + headings on the fly--up to four levels of numbering (e.g., section + 3.2.1.3), although this can be easily extended. It is very simple to + use as follows: + 1. Where you want the table to appear, call Start_TOC. + 2. At every heading use _H1(`Heading for level 1') or _H2(`Heading for + level 2') as appropriate. + 3. After the last line of HTML code (probably ), call End_TOC. + + The code for these macros is shown in [21]Listing 1. One restriction is + that you should not use diversions (i.e., m4-divert) within your text, + unless you preserve the diversion to file 1 used by this TOC generator. + Simple Tables + + Other than Tables of Contents, many browsers support tabular + information. Here are some funky macros as a short cut to producing + these tables. First, an example (see Figure 1) of their use: +
      +_Start_Table(BORDER=5) +_Table_Hdr(,Apples, Oranges, Lemons) +_Table_Row(England, 100,250,300) +_Table_Row(France,200,500,100) +_Table_Row(Germany,500,50,90) +_Table_Row(Spain,,23,2444) +_Table_Row(Danmark,,,20) +_End_Table +
      + + Writing HTML with m4 + + Figure 1. Example Table + m4 Gotchas + + Unfortunately, m4 needs some taming. A little time spent on + familiarisation will pay dividends. Definitive documentation is + available (for example, in the Emacs info documentation system) but, + without being a complete tutorial, here are a few tips based on my + experiences. + Gotcha 1--Quotes + + m4's quotation characters are the grave accent ` which starts the + quote, and the acute accent ' which ends it. It may help to put all + arguments to macros in quotes, for example: +_HEAD1(`This is a heading') + + The main reason for using quotes is to prevent confusion if commas are + contained in an argument to a macro, since m4 uses commas to separate + macro parameters. For example, the line _CODE(foo, bar) would put the + foo in the HTML output but not the bar. Use quotes in the line + _CODE(`foo, bar'), and it works properly. + Gotcha 2--Word Swallowing + + The biggest problem with m4 is that some versions of it swallow key + words that it recognises, such as include, format, divert, file, gnu, + line, regexp, shift, unix, builtin and define. You can protect these + words by putting them in single quotes, for example: +Smart people `include' Linux in their list +of computer essentials. + + The trouble is, this is both inconvenient and easy to forget. + + A safer way to protect keywords (my preference) is to invoke m4 with + the -P or --prefix-builtins option. Then all built-in macro names are + modified so that they all begin with the prefix m4_ and ordinary words + are left as is. For example, using this option, one would write + m4_define instead of define (as shown in the examples in this article). + One hitch is that not all versions of m4 support this option--most + notably some PC versions under MS-DOS. + Gotcha 3--Comments + + Comment lines in m4 begin with the # character--everything from the # + to the end of the line is ignored and output unchanged. If you want to + use # in the HTML page, you must quote it like this: `#'. Another + option (my preference) is to change the m4 comment character to + something exotic with a line like this: +m4_changecom(`[[[[') + + and not have to worry about # symbols in your text. + + If you want to use comments in the m4 file but not have them appear in + the final HTML file, use the macro m4_dnl (dnl = Delete to New Line). + This macro suppresses everything until the next newline character. +m4_define(_NEWMACRO, `foo bar') +m4_dnl This is a comment + + Yet another way to have source code ignored is the m4_divert command. + The main purpose of m4_divert is to save text in a temporary buffer for + inclusion in the file later--for example, in building a table of + contents or index. However, if you divert to "-1", it just goes to + limbo-land. This option is useful for getting rid of the whitespace + generated by the m4_define command. For example: +m4_divert(-1) diversion on +m4_define(this ...) +m4_define(that ...) +m4_divert diversion turned off + + Gotcha 4--Debugging + + Another tip for when things go wrong is to increase the number of error + diagnostics that m4 outputs. The easiest way to do this is to add the + following to your m4 file as debugging commands: +m4_debugmode(e) +m4_traceon +... +buggy lines +... +m4_traceoff + + Conclusion + + It should be noted that HTML 3.0 does have an include statement that + looks like this: + + + However, the HTML include has the following limitations: + * The work of including and interpreting the include is done on the + server-side before downloading and adds overhead as the server has + to scan files for include statements. + * Most servers (especially public ISPs) deactivate this feature + because of the large overhead. + * Include is all you get--no macro substitution, no parameters to + macros, no ifdef, etc., as with m4. + + There are several other features of m4 that I have not yet exploited in + my HTML ramblings so far, such as regular expressions. It might be + interesting to create a "standard" stdlib.m4 for general use with nice + macros for general text processing and HTML functions. By all means + download my version of stdlib.m4 as a base for your own hacking. I + would be interested in hearing of useful macros, and if there is enough + interest, maybe a Mini-HOWTO could evolve from this article. + + There are many additional advantages to using Linux to develop HTML + pages, far beyond the simple assistance given by the typical typing + aids and WYSIWYG tools. Certainly, I will go on using m4 until HTML + catches up--I will then do my last make and drop back to using pure + HTML. I hope you enjoy these little tricks and encourage you to + contribute your own. + + Writing HTML with m4 + Bob Hepple has been hacking at Unix since 1981 under a variety of + excuses and has somehow been paid for it at least some of the time. + It's allowed him to pursue another interest--living in warm, exotic + countries including Hong Kong, Australia, Qatar, Saudi Arabia, Lesotho + and (presently) Singapore. His initial aversion to the cold was learned + in the UK. Ambition--to stop working for the credit card company and + tax man and to get a real job. Bob can be reached at + bhepple@pacific.net.sg. + [22]Load Disqus comments + Our discussions are [23]powered by Disqus, which require JavaScript. + Connect With Us + + Linux Journal, representing 25+ years of publication, is the original + magazine of the global Open Source community. + © 2024 Slashdot Media, LLC. All rights reserved. + * [24]PRIVACY POLICY + * [25]TERMS OF SERVICE + * [26]ADVERTISE + +Footer Menu Column 2 + + * [27]Masthead + * [28]Authors + * [29]Contact Us + +Footer Menu Column 3 + + * [30]RSS Feeds + * [31]About Us + + [noscript-448i7exgpyqpr9c144q.gif] + + × + +References + + Visible links: + 1. https://www.linuxjournal.com/article/2393#main-content + 2. https://www.linuxjournal.com/ + 3. https://www.linuxjournal.com/ + 4. https://www.linuxjournal.com/tag/cloud + 5. https://www.linuxjournal.com/tag/containers + 6. https://www.linuxjournal.com/tag/desktop + 7. https://www.linuxjournal.com/tag/kernel + 8. https://www.linuxjournal.com/tag/mobile + 9. https://www.linuxjournal.com/tag/networking + 10. https://www.linuxjournal.com/tag/privacy + 11. https://www.linuxjournal.com/tag/programming + 12. https://www.linuxjournal.com/tag/security + 13. https://www.linuxjournal.com/tag/servers + 14. https://www.linuxjournal.com/tag/sysadmin + 15. https://www.linuxjournal.com/news + 16. https://www.linuxjournal.com/books + 17. https://www.linuxjournal.com/news + 18. https://www.linuxjournal.com/popular + 19. https://www.linuxjournal.com/recent + 20. https://www.linuxjournal.com/tag/howtos + 21. https://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/023/2393/2393l1.html + 22. https://www.linuxjournal.com/article/2393#disqus_thread + 23. https://disqus.com/?ref_noscript + 24. https://slashdotmedia.com/privacy-statement/ + 25. https://slashdotmedia.com/terms-of-use/ + 26. https://www.linuxjournal.com/sponsors + 27. https://www.linuxjournal.com/content/masthead + 28. https://www.linuxjournal.com/author + 29. https://www.linuxjournal.com/form/contact + 30. https://www.linuxjournal.com/rss_feeds + 31. https://www.linuxjournal.com/aboutus + + Hidden links: + 33. https://youtube.com/linuxjournalonline + 34. https://www.facebook.com/linuxjournal/ + 35. https://twitter.com/linuxjournal diff --git a/scripts/tsv2tablerow b/scripts/tsv2tablerow new file mode 100755 index 0000000..d8b378d --- /dev/null +++ b/scripts/tsv2tablerow @@ -0,0 +1,8 @@ +#!/bin/oksh + +IFS="\n" +while read line; do +echo -n "_TABLE_ROW(" + echo -n "$line" | tr -s "\\t" "," + echo ")" +done < "$1" diff --git a/templates/stdlib.m4 b/templates/stdlib.m4 new file mode 100644 index 0000000..b320774 --- /dev/null +++ b/templates/stdlib.m4 @@ -0,0 +1,208 @@ +m4_divert(-1) + +m4_define(`_Copyleft', +`Copyright (C) 1997 Bob Hepple + +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 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, write to the Free +Software Foundation, Inc., 675 Mass Ave, Cambridge, MA +02139, USA.') + +m4_changecom(`[[[[') + +m4_dnl define(`_LOCAL',1) + +m4_ifdef(`_LOCAL', + `m4_define(`_HOMEPAGE',`//127.0.0.1/~bhepple')', + `m4_define(`_HOMEPAGE',`//www.bit.net.au/~bhepple')') + +m4_ifdef(`_LOCAL', + `m4_define(`_SECONDPAGE',`//127.0.0.1/~bhepple')', + `m4_define(`_SECONDPAGE',`//www.bit.net.au/~bhepple')') + +m4_define(`_EMAIL_ADDRESS',bhepple@bit.net.au) + +m4_define(`_MAILTO',$2) + +m4_define(`_EMAILME',_MAILTO(_EMAIL_ADDRESS,$1)) + +m4_define(`_CODEQUOTE',
      $1
      ) + +m4_dnl Logical markup: + +m4_define(`_EM',$1) +m4_define(`_STRONG',$1) +m4_define(`_CITE',$1) +m4_define(`_PRE',
      $1
      ) +m4_define(`_CODE',$1) + +m4_dnl Physical markup: + +m4_define(`_BOLD',$1) +m4_define(`_ITALICS',$1) +m4_define(`_STRIKE',$1) +m4_define(`_SUBSCRIPT',$1) +m4_define(`_SUPERSCRIPT',$1) +m4_define(`_COURIER',$1) +m4_define(`_UNDERLINE',$1) +m4_define(`_SMALL',$1) +m4_define(`_BIG',$1) + +m4_define(`_CENTER',
      $1
      ) + +m4_define(`_LIMAGE', [$1]) + +m4_define(`_RIMAGE', [$1]) + +m4_define(`_IMAGE',

      [$1]

      ) + +m4_define(`_IMAGE2',

      +[$1] +[$4] +

      ) + +m4_define(`_FTP',$2) + +m4_define(`_HEAD1',

      $1

      ) + +m4_define(`_HEAD2',

      $1

      ) + +m4_define(`_LINK', $2) + +m4_define(`_SELFLINK', _LINK($1,$1)) + +m4_define(`_LOCALLINK',$2) + +m4_define(`_LABEL',

      $1

      ) + +m4_define(`_LINK_TO_LABEL', _LOCALLINK($1,$1)) + +m4_define(`_PLUG', + _LINK(http://www.ssc.com/linux/, + _IMAGE(_HOMEPAGE/powered.gif,196,49))
      +`If you are wondering, Linux is a free, non-commercial +operating system for computers. It happens to be a hobby of +mine and might well interest other hackers. Click on the logo +to learn more...') + +m4_define(`_HEADER', + + + + $1 + + + +

      $1


      ) + +m4_define(_COUNTER,) + +m4_dnl define(`_COUNTER', $2) + +m4_define(`_CREDITS',`For corrections/additions/suggestions for this page, please send email to: _EMAILME(Bob Hepple)

      Copyright `©' 1997 Bob Hepple. All rights reserved.') + +m4_dnl ---------------------------------------------- +m4_dnl TABLE OF CONTENTS + +m4_define(`_Start_TOC',`

        m4_divert(-1) + m4_define(`_H1_num',0) + m4_define(`_H2_num',0) + m4_define(`_H3_num',0) + m4_define(`_H4_num',0) + m4_divert(1)') + +m4_define(`_H1', `m4_divert(-1) + m4_define(`_H1_num',m4_incr(_H1_num)) + m4_define(`_H2_num',0) + m4_define(`_H3_num',0) + m4_define(`_H4_num',0) + m4_define(`_TOC_label',`_H1_num. $1') + m4_divert(0)

      • _TOC_label + m4_divert(1)

        _TOC_label

        ') + +m4_define(`_H2', `m4_divert(-1) + m4_define(`_H2_num',m4_incr(_H2_num)) + m4_define(`_H3_num',0) + m4_define(`_H4_num',0) + m4_define(`_TOC_label',`_H1_num._H2_num $1') + m4_divert(0)
      • _TOC_label + m4_divert(1)

        _TOC_label

        ') + +m4_define(`_H3', `m4_divert(-1) + m4_define(`_H3_num',m4_incr(_H3_num)) + m4_define(`_H4_num',0) + m4_define(`_TOC_label',`_H1_num._H2_num._H3_num $1') + m4_divert(0)
      • _TOC_label + m4_divert(1)

        _TOC_label

        ') + +m4_define(`_H4', `m4_divert(-1) + m4_define(`_H4_num',m4_incr(_H4_num)) + m4_define(`_TOC_label',`_H1_num._H2_num._H3_num._H4_num $1') + m4_divert(0)
      • _TOC_label + m4_divert(1)

        _TOC_label

        ') + +m4_define(`_End_TOC',`m4_divert(0)

      ') + +m4_dnl ---------------------------------------------- +m4_dnl TABLES + +m4_dnl _Start_Table(Columns,TABLE parameters) +m4_dnl defaults are BORDER=1 CELLPADDING="1" CELLSPACING="1" +m4_dnl WIDTH="n" pixels or "n%" of screen width +m4_define(`_Start_Table',`') + +m4_define(`_Table_Hdr_Item', `m4_ifelse($#,1,,`_Table_Hdr_Item(m4_shift($@))')') + +m4_define(`_Table_Row_Item', `m4_ifelse($#,1,,`_Table_Row_Item(m4_shift($@))')') + +m4_define(`_Table_Hdr',`_Table_Hdr_Item($@)') +m4_define(`_Table_Row',`_Table_Row_Item($@)') + +m4_define(`_End_Table',
      $1$1
      ) + +m4_dnl -- local adations, we only use the ones below, the ones above are for +m4_dnl -- reference to the original stdlib.m4 + +m4_define(`_LINK_TO_LABEL',` + $1 +') +m4_define(`_SECTION_HEADER',` + <$1>$2 +') + +m4_define(`_TABLE_START',` +

      + +') + +m4_define(`_Table_Hdr_Item', `m4_ifelse($#,1,,`_Table_Hdr_Item(m4_shift($@))')') + +m4_define(`_Table_Row_Item', `m4_ifelse($#,1,,`_Table_Row_Item(m4_shift($@))')') + +m4_define(_TABLE_ROW_CNT,0) +m4_define(`_TABLE_HEADER',`_Table_Hdr_Item($@)') +m4_define(`_TABLE_ROW',` + + m4_define(`_TABLE_ROW_CNT',m4_incr(_TABLE_ROW_CNT)) + m4_ifelse(m4_eval(_TABLE_ROW_CNT % 2),0,`',`') + _Table_Row_Item($@) + + +') + +m4_define(`_TABLE_END',`
      $1$1
      ') + + +m4_divert diff --git a/templates/summary.m4 b/templates/summary.m4 index 23c3b1c..8eb2845 100644 --- a/templates/summary.m4 +++ b/templates/summary.m4 @@ -1,17 +1,31 @@ +m4_include(stdlib.m4) m4_include(header.m4) m4_include(footer.m4) _HEADER(`Archlinux32 Consistency Checker',`anb-stats') -

      Statistics

      +m4_define(`_STATISTICS',`Statistics') +m4_define(`_DUPLICATES_STATE_REPO',`Duplicate States in State Repo') + +

      Table of Contents

      +
        +
      • _LINK_TO_LABEL(_STATISTICS)
      • +
      • _LINK_TO_LABEL(_DUPLICATES_STATE_REPO)
      • +
      + +_SECTION_HEADER(h2,_STATISTICS) Generated on m4_esyscmd(date) -
      -m4_esyscmd(cat ../data/stats)
      -
      -

      Duplicate States in State Repo

      -
      -m4_esyscmd(cat ../data/duplicates)
      -
      + +_TABLE_START() +_TABLE_HEADER(what,packages) +m4_esyscmd(`../scripts/tsv2tablerow ../data/stats') +_TABLE_END() + +_SECTION_HEADER(h2,_DUPLICATES_STATE_REPO) +_TABLE_START() +_TABLE_HEADER(repository,package,version,tag,git) +m4_esyscmd(`../scripts/tsv2tablerow ../data/duplicates') +_TABLE_END() _FOOTER() diff --git a/templates/table.m4 b/templates/table.m4 deleted file mode 100644 index 4913ad7..0000000 --- a/templates/table.m4 +++ /dev/null @@ -1,658 +0,0 @@ - - - - - Arch Linux 32 - List of Build Slaves - - - - - - -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - name - - - - operator - - - - currently building - - - - last connection - - - - building since - - - - trials - - - - logged lines - - - - last action - -
      - build-tasossah-1 - - KitsuWhooa - - pentium4/ot-urchin - - 2024-09-10 19:11:29 - - 2024-09-10 19:09:18 - - 2 - - 601 - - checking-source -
      - euronuc - - abaumann - - i686/guile2.2 - - 2024-09-10 19:11:26 - - 2024-09-09 23:12:01 - - 3 - - 12036 - - building -
      - build-tasossah-2 - - KitsuWhooa - - i686/sniffnet - - 2024-09-10 19:11:07 - - 2024-09-10 15:24:15 - - 5 - - 6954 - - building -
      - build-tasossah-fx - - KitsuWhooa - - pentium4/vlc - - 2024-09-10 19:11:01 - - 2024-09-09 08:13:36 - - 1 - - 1479 - - building -
      - euronuc-i486 - - abaumann - - i486/rocm-llvm - - 2024-09-10 19:11:00 - - 2024-09-09 21:48:35 - - 4 - - 42243 - - building -
      - build-tasossah-3 - - KitsuWhooa - - i686/ot-urchin - - 2024-09-10 19:10:47 - - 2024-09-10 19:01:21 - - 5 - - 3056 - - building -
      - eurobuild6-6 - - abaumann - -   - - 2024-09-10 17:30:12 - - 2024-09-10 16:27:25 - -   - -   - -   -
      - eurobuild6-4 - - abaumann - -   - - 2024-09-10 17:27:58 - - 2024-09-10 15:45:32 - -   - -   - -   -
      - eurobuild6-1 - - abaumann - -   - - 2024-09-10 17:23:10 - - 2024-09-10 16:55:10 - -   - -   - -   -
      - eurobuild6-5 - - abaumann - -   - - 2024-09-10 17:20:00 - - 2024-09-10 16:42:52 - -   - -   - -   -
      - eurobuild6-8-i486 - - abaumann - -   - - 2024-09-10 17:14:43 - - 2024-09-10 16:51:28 - -   - -   - -   -
      - eurobuild6-7-i486 - - abaumann - -   - - 2024-09-10 17:10:43 - - 2024-09-10 16:54:44 - -   - -   - -   -
      - eurobuild6-3 - - abaumann - -   - - 2024-09-10 17:10:31 - - 2024-09-10 16:41:49 - -   - -   - -   -
      - eurobuild6-2 - - abaumann - -   - - 2024-09-10 17:04:09 - - 2024-09-10 16:36:53 - -   - -   - -   -
      - build-tasossah-c2d - - KitsuWhooa - -   - - 2024-09-09 15:20:04 - - 2024-09-09 15:01:04 - -   - -   - -   -
      - eurobuild3-i486 - - abaumann - -   - - 2024-09-08 11:55:16 - - 2024-09-08 11:34:55 - -   - -   - -   -
      - eurobuild3 - - abaumann - -   - - 2024-09-08 11:49:22 - - 2024-09-08 11:34:13 - -   - -   - -   -
      - streusel-1 - - deep42thought - -   - -   - -   - -   - -   - -   -
      - streusel-2 - - deep42thought - -   - -   - -   - -   - -   - -   -
      - streusel-3 - - deep42thought - -   - -   - -   - -   - -   - -   -
      - thuringiabuild1 - - deep42thought - -   - -   - -   - -   - -   - -   -
      -
      -
      - - - -
      -
      - - - - - - - -- cgit v1.2.3-70-g09d2