More aggressive job ad.
[www.jankratochvil.net.git] / project / captive / Index.html.pl
index 8ded6ed..b2c8942 100755 (executable)
@@ -34,10 +34,13 @@ Wuse 'project::captive::ListItem';
 my $W=My::Project->init_project(
                "__PACKAGE__"=>__PACKAGE__,
                "ListItem"=>\@project::captive::ListItem::ListItem,
+               "no_project_data"=>1,
                "head_css"=>"
 .reqpkg { font-style: italic; }
 .stuff  { font-style: italic; font-size: larger; margin-left: 20%; margin-right: 10%; }
 .re     { font-style: italic; }
+table.mailman > * /* FIXME: What is it? */ > tr > th,
+table.mailman > * /* FIXME: What is it? */ > tr > td { padding: 1ex; text-align: center; }
 ",
                );
 
@@ -46,14 +49,14 @@ print vskip("10ex")."<h1 align=\"center\">!!! DO NOT DISCLOSE !!!</h1>\n".vskip(
 
 print <<"HERE";
 <h1>The First Read/Write NTFS for Free Operating Systems</h1>
-<h1>The First Free Microsoft Windows Kernel API Emulation</h1>
+<h1>The First Open Source MS-Windows Kernel API for Free OS</h1>
 HERE
 
 my @stuff=(
                "A lot of people claim themselves as Windows Programmers.\n"
                                ." Now I can finally join them - I also wrote my own Microsoft Windows.",
                "Why do they need ".a_href('http://www.winsupersite.com/reviews/winserver2k3_gold2.asp','5000 developers')
-                               ." to write Microsoft Windows when it is just One Man Show task?",
+                               ." to write Microsoft Windows when it can be just One Man Show?",
 
 
 
@@ -61,25 +64,24 @@ my @stuff=(
                                ." <span class=\"quote\">hal.dll</span>.",
                );
 
+print rightimg((map("<p class=\"stuff\">$_</p>\n",($stuff[int rand @stuff])))[0],
+               'captive-install-acquire-small','[ Captive Microsoft Windows Drivers Acquire Illustration ]',
+                               "a_href_img"=>'captive-install-acquire');
 
 print <<"HERE";
 
 
-<table border="0" width="100%">
-       <col width="1*" />
-       <col width="0*" />
-       <tr>
-               <td align="left">
-                       @{[ map("<p class=\"stuff\">$_</p>\n",($stuff[int rand @stuff])) ]}
-               </td>
-               <td align="right">@{[ a_href My::Web::img_src('captive-install-acquire'),
-                               img('captive-install-acquire-small','[ Captive Microsoft Windows Drivers Acquire Illustration ]') ]}</td>
-       </tr>
-</table>
+@{[ vskip "3ex" ]}
+
+<p class="stuff">
+       Why did I install Microsoft Windows and wrote such disgusting piece of code?<br />
+       Expecting @{[ a_href $W->{"resume_url"},"yet another challenging task" ]}!
+</p>
 
 @{[ vskip "3ex" ]}
 
-<table border="1" align="center" style="text-align: center;"><tr><th>Distribution</th>
+
+<table border="1" align="center" style="text-align: center;" width="100%"><tr><th>Distribution</th>
                <th>Installation Case #1<br />Filesystem and installer<br />(recommended)</th>
                <th>Installation Case #2<br />Manual installation<br />(filesystem, expert user)</th>
                <th>Installation Case #3<br />Command-line client<br />(no filesystem access)</th></tr>
@@ -90,13 +92,12 @@ my %pkg=(
                3=>[qw(captive)],
                );
 my %reqpkg=(
-               1=>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt          libgnomeui)],
-               2=>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt)],
-               3=>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt readline)],
+               1 =>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt readline libgnomeui)],
+               23=>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt readline)],
                );
 my %version=(
-               map(($_=>["0.9.4","0"]),qw(captive captive-lufs captive-install)),
-               "lufs"=>["0.9.6","1captive3"],
+               map(($_=>["0.9.7","0"]),qw(captive captive-lufs captive-install)),
+               "lufs"=>["0.9.6","1captive6"],
                "gnome-vfs-httpcaptive"=>["2.3.8captive2","0"],
                "ntfsprogs"=>["200309071734","1captive1"],
                "ntfsprogs-gnomevfs"=>["1.0.1","0"],
@@ -131,6 +132,8 @@ my($file_base,$text,%args)=@_;
        return a_href $file_base,$text,"size"=>($case==1),%args;
 };
 
+my @libxml2_rh8_pkgs=qw(libxml2-2.5.4-1.i386.rpm libxml2-python-2.5.4-1.i386.rpm libxml2-devel-2.5.4-1.i386.rpm);
+
 my @dist=(
                {
                        "name"=>"Red Hat 9<br />Shrike i386",
@@ -144,7 +147,8 @@ my @dist=(
                                },
                        },
                {
-                       "name"=>"Red Hat 8<br />Psyche i386",
+                       "name"=>"Red Hat 8<br />Psyche i386<br />"
+                                       ."(".a_href("#libxml2_rh8","libxml2 upgrade note").")",
                        "out"=>sub {
                                my($pkg,$version_base,$version_ext)=@_;
                                        my $file="$pkg-$version_base-$version_ext".(!$has_rh8{$pkg} ? "" : "rh8").".i386.rpm";
@@ -152,7 +156,7 @@ my @dist=(
                                        (my $filedev=$file)=~s/^\Q$pkg\E-/${pkg}-devel-/;
                                        $r.="<br />".&$a_href_arch("dist/$filedev",$filedev) if $has_devel{$pkg};
                                        if ($pkg eq "captive-install") {
-                                               for (qw(libxml2-2.5.4-1.i386.rpm libxml2-python-2.5.4-1.i386.rpm libxml2-devel-2.5.4-1.i386.rpm)) {
+                                               for (@libxml2_rh8_pkgs) {
                                                        $r.="<br />".&$a_href_arch('ftp://ftp.redhat.com/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/'.$_,$_)." of Red Hat 9";
                                                        }
                                                }
@@ -217,14 +221,32 @@ for my $dist (@dist) {
                        }
        print "</tr>\n";
        }
-print <<'HERE';
+print "<tr style=\"height: 2ex;\"></tr>\n";
+print "<tr>";
+       print "<td>Package Requirements</td>";
+       for my $case (1,23) {
+               print "<td".($case==23 ? ' colspan="2"' : '').">";
+               print join(", ",map("<span class=\"reqpkg\">$_</span>",@{$reqpkg{$case}}));
+               print "</td>";
+               }
+print "</tr>\n";
+print <<"HERE";
 </table>
-HERE
 
-print vskip "3ex";
+<blockquote>
+       <p><a name="libxml2_rh8"><b><i>Red Hat 8 Psyche</i> upgrade of <i>libxml2</i> package:</b></a>
+       Upgrade only the packages already installed on your system to prevent
+       many dependency requirements - do not use &quot;<code>rpm -U</code>&quot;,
+       use &quot;<code>rpm -F</code>&quot; instead:</p>
+       <blockquote><p class="quote">
+               <code>rpm -F @{[ join(" ",@libxml2_rh8_pkgs) ]}</code>
+       </p></blockquote>
+</blockquote>
+
+@{[ vskip "3ex" ]}
 
-print <<"HERE";
-<h1>Installation notes</h1>
+
+<h1>Installation Notes</h1>
 
 <p>You should first run <b>captive-install-acquire</b> command to check your
 available Microsoft Windows drivers versions. Now you can execute:</p>
@@ -250,7 +272,7 @@ available Microsoft Windows drivers versions. Now you can execute:</p>
 <p>'<b>captive</b>' package creates '<b>captive</b>' user and '<b>captive</b>' group on your system.</p>
 
 
-<h2>Package version conflicts</h2>
+<h2>Package Version Conflicts</h2>
 
 <dl>
 
@@ -272,7 +294,7 @@ your convenience.</p></dd>
 </dl>
 
 
-<h2>LUFS kernel driver module</h2>
+<h2>LUFS Kernel Driver Module</h2>
 
 <p>@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} (Linux Userland File
 System) needs Linux kernel module driver (<i>lufs.o</i>) compatible with your
@@ -288,36 +310,73 @@ distribution vendor. You may need to install package
 Linux kernel version (<b>rpm&nbsp;-q&nbsp;kernel</b>) and re-run <span
 class="quote">/usr/share/lufs/prepmod</span>.</p>
 
+<p><b>WARNING:</b> This 'captive' package may modify your found Linux kernel
+sources matching your currently running kernel version. These minor
+modifications may include dependencies rebuild, compiling build tools, fixes of
+several include files etc. All the modifications are done at the mount(8) time
+by the automatically executed <span class="quote">/usr/share/lufs/prepmod</span> script.
+This behaviour was not present in the original
+@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} distribution
+by @{[ a_href 'http://www.malinux.net/main/','Florin Malita' ]}.</p>
 
-<table border="0" width="100%">
-       <col width="1*" />
-       <col width="0*" />
-       <tr>
-               <td align="left">
-                       <h2>The First Free Microsoft Windows Kernel API Emulation</h2>
-
-                       <p>Compatibility with existing binary Microsoft Windows file system drivers was
-                       reached. Microsoft Windows kernel system components required by these drivers
-                       were analyzed and successfuly emulated in the GNU/Linux operating system.
-                       Project brings Microsoft Windows kernel emulation framework to support even
-                       other types Microsoft Windows drivers in the future.
-                       <span class="productname">@{[ a_href 'http://www.reactos.com/','ReactOS' ]}</span>
-                       code base made a big asset for this functionality.</p>
-               </td>
-               <td align="right">@{[ a_href 'http://www.reactos.com/',img('reactos','ReactOS') ]}</td>
-       </tr>
-</table>
+
+HERE
+
+
+print rightimg <<"HERE",'reactos','ReactOS',"a_href"=>'http://www.reactos.com/';
+       <h2>The First Open Source MS-Windows Kernel API for Free OS</h2>
+
+       <p>Compatibility with existing binary Microsoft Windows file system drivers was
+       reached. Microsoft Windows kernel system components required by these drivers
+       were analyzed and successfuly emulated in the GNU/Linux operating system.
+       Project brings Microsoft Windows kernel emulation framework to support even
+       other types Microsoft Windows drivers in the future.
+       <span class="productname">@{[ a_href 'http://www.reactos.com/','ReactOS' ]}</span>
+       code base made a big asset for this functionality.</p>
+HERE
+
+
+my @lists=qw(captive-announce-list captive-list captive-devel-list);
+
+print <<"HERE";
+
+<a name="lists"><h2>Mailing Lists</h2></a>
+
+<form action="@{[ top_dir("/Mailman.pl") ]}" method="post">
+       <table border="1" class="mailman" style="border-collapse: collapse; border-style: solid; border-width: 1px;">
+               <tr>@{[ map("<th>$_</th>",@lists) ]}</tr>
+               <tr><td>New versions announcements<br />
+                       (low traffic, recommended)</td><td>User support</td><td>Development</td></tr>
+               <tr>@{[ map({ "<td>".a_href(&{$W->{"mailman_url_sub"}}()."/listinfo/$_",'Mailman Infopage')."</td>"; } @lists) ]}</tr>
+               <tr>@{[ map({ "<td>".a_href(&{$W->{"pipermail_url_sub"}}()."/$_",'Archive')."</td>"; } @lists) ]}</tr>
+               <tr>@{[
+                       map(('<td><input type="checkbox" name="list" value="'.$_.'"'
+                                       .($_ ne "captive-announce-list" ? '' : ' checked="checked"')
+                                       .' /> Subscribe?</td>'),@lists)
+                       ]}</tr>
+               <tr><td colspan="3">
+                       <table border="0" style="text-align: left;">
+                               <tr><td>Email address:            </td><td><input type="text"     name="email"   size="30" /></td></tr>
+                               <tr><td>Your new Mailman password:</td><td><input type="password" name="pw"      size="15" /></td></tr>
+                               <tr><td>Reenter your password:    </td><td><input type="password" name="pw-conf" size="15" /></td></tr>
+                       </table>
+                       <p><input type="submit" name="email-button" value="Subscribe me" /></p>
+               </td></tr>
+       </table>
+<input type="hidden" name="back" value="/project/captive/#lists" />
+</form>
 
 
 @{[ vskip "3ex" ]}
 
-<h1>See also</h1>
+<h1>See Also</h1>
 <ul>
-       <li>@{[ a_href 'Preview.html.pl','Technology Preview' ]}</li>
+       <li>@{[ a_href 'Preview.html.pl','<span style="font-size: larger;">Technology Preview</span>' ]}</li>
+       <li>@{[ a_href 'CVS.html.pl','CVS Repository' ]}</li>
        <li>@{[ a_href 'doc/','Developer Documentation' ]}; highlights:<ul>
                <li>@{[ a_href 'doc/About.html.pl#versions','Microsoft Windows Versions Compatibility' ]}</li>
                <li>@{[ a_href 'doc/Architecture.html.pl#law','Laws and Licensing Conditions' ]}</li>
-               <li>@{[ a_href 'doc/Details.html.pl#sandbox','Sandboxing of W32 filesystem' ]}</li>
+               <li>@{[ a_href 'doc/Details.html.pl#sandbox','Sandboxing of W32 Filesystem' ]}</li>
                <li>@{[ a_href 'doc/TODO.html.pl#todo_fsck','TODO: Fsck of NTFS' ]}</li>
                <li>@{[ a_href 'doc/TODO.html.pl#todo_surprise','TODO: NTFS Support for Partition Surprise' ]}</li>
                <li>@{[ a_href 'doc/Related.html.pl#LinuxNTFScompet','Related Projects - Linux NTFS' ]}</li>
@@ -325,7 +384,7 @@ class="quote">/usr/share/lufs/prepmod</span>.</p>
                <li>@{[ a_href 'doc/LinuxNTFS.html.pl',"Re: 7.7 Can't we write a wrapper for Windows' driver?" ]}</li>
                </ul></li>
        <li>@{[ a_href 'http://cvs.jankratochvil.net/viewcvs/*checkout*/priv/captive/TODO?rev=HEAD','Known Bugs' ]}</li>
-       <li>Man pages<ul>
+       <li>Man Pages<ul>
                @{[
                        do {
                                my @mans=(
@@ -350,13 +409,6 @@ class="quote">/usr/share/lufs/prepmod</span>.</p>
        <li>@{[ a_href 'Resources.html.pl','Related Pages' ]}</li>
        <li>@{[ a_href 'Thanks.html.pl','Thanks' ]}</li>
 </ul>
-
-@{[ vskip "3ex" ]}
-
-<p class="stuff">
-       Why did I install Microsoft Windows and wrote such disgusting piece of code?<br />
-       Expecting @{[ a_href top_dir()."/CV.html.pl","yet another challenging task" ]}, !
-</p>
 HERE