<br><div>I promised to write some notes on the addition and what to look at, </div><div>and then got swamped, then stuck in an email transition that caused</div><div>me to lose track of the message I was going to reply to - sorry!</div>
<div>I&#39;m just sending this to lsb-discuss, I know some of the calls for</div><div>participation have been rather widely disseminated, pass this on if</div><div>needed (or it should end up in the mailing list archive)</div>
<div><br></div><div>So...  the heart of all of the stuff is the LSB database.  This has its own</div><div>web page, so you can read as little or as much as you like about it:</div><div><br></div><div><a href="http://ispras.linuxfoundation.org/index.php/LSB_Database_Home">http://ispras.linuxfoundation.org/index.php/LSB_Database_Home</a></div>
<div><br></div><div><a href="http://ispras.linuxfoundation.org/index.php/LSB_Database_Home"></a>There&#39;s a description of the schema, and the tables that are mostly</div><div>involved are join tables that have &quot;Arch&quot; in them, as this is where</div>
<div>a generic description is mapped into specifics for a particular</div><div>architecture.  There are a few others (TypeMember and TypeMemberExtras)</div><div>as well.</div><div><br></div><div>There&#39;s a patch file (sql instructions) which attempts to add ARM</div>
<div><a href="http://bzr.linuxfoundation.org/unofficial/arm/add_arm.sql">http://bzr.linuxfoundation.org/unofficial/arm/add_arm.sql</a></div><div>This isn&#39;t a branch so loggerhead is hiding it, I should move it</div><div>
somewhere else I guess.  The patch is done with no knowledge</div><div>applied, just brute-force duplication of sets of existing records.</div><div><br></div><div>You don&#39;t need to set up the database to get started:</div>
<div>there are two sets of files that have been generated from this -</div><div>the bzr branches build_env and misc-test.</div><div><br></div><div>build_env knows how to build in LSB mode, so it includes a compiler</div><div>
wrapper, &quot;stub&quot; (link-time-only) libraries, and headers.  In the header</div><div>directory there are ordinary headers, and files suffixed .defs, those</div><div>are used when the actual specification document is generated</div>
<div>(defs for &quot;data definitions&quot;) but are not interesting at this stage, they&#39;re</div><div>basically single-architecture instances of the headers, with some</div><div>other changes that are not worth describing, so if the headers are</div>
<div>right, the defs will almost certainly also be right.</div><div><br></div><div>so the main job is to understand whether the headers (structure</div><div>layouts, constants, data types and sizes) are correct, and whether</div>
<div>the symbol versioning (embedded in the stub libraries) is correct.</div><div><br></div><div>two tools can help with this... both live in the other branch,</div><div>misc-test.  The first is libchk, this is a checker for the presence of</div>
<div>required symbols and libraries, and for those cases where symbol</div><div>versioning is used, for the correct symbol versions.  So running</div><div>a &quot;make&quot; in misc-test inside an ARM build enviroment (native,</div>
<div>or I suppose cross would also work) will hopefully build an</div><div>appropriate binary, then in libchk run &quot;./lsblibchk&quot; to generate a</div><div>report.   With such a report we would have information to update</div>
<div>the database, then continue to iterate until it&#39;s correct.</div><div><br></div><div>the second tool is devchk... in misc-test/devchk/ts/devchk.</div><div>this is a bunch of generated checks for each LSB library, and</div>
<div>it&#39;s built in two modes:  using the native compiler, so that we can</div><div>see if the descriptions in the database are aligned with the native</div><div>headers for that architecture, then a second time with the LSB</div>
<div>SDK (the stuff from build_env) so that it can check if things are</div><div>self-consistent between the LSB headers and other information.</div><div>Getting the native-build version clean is a pretty big job, it does</div>
<div>generate sql instructions but the tool is not of high enough quality</div><div>that these can just be applied verbatim.  We have a long list of</div><div>wish-list items for devchk to improve it, but unfortunately nobody</div>
<div>to work on making those improvements.   The main thing it gets</div><div>wrong is rather relevant here:  it operates in isolation, and does not</div><div>have knowledge of other architectures while it&#39;s working (irritating</div>
<div>since the information is there, but #ifdef&#39;d out), so it will often propose wrong -</div><div>update FOO with details for Arch=1 (All) rather than with details</div><div>for Arch=4 (ARM). </div><div><br></div><div>
<br></div><div><br></div><div>For browsing the database for details, we suggest the LSB Navigator,</div><div>which also has a web page:</div><div><a href="http://ispras.linuxfoundation.org/index.php/LSB_DB_Navigator">http://ispras.linuxfoundation.org/index.php/LSB_DB_Navigator</a></div>
<div><br></div><div>the hosted instance of this does not have the experimental elements</div><div>in it, but it&#39;s not too hard to set up a local instance (it&#39;s a bunch</div><div>of php code, which connects to a mysql database instance, and</div>
<div>there&#39;s really only two places you need to configure - password/name/</div><div>other details of the db instance for navigator, and then whatever</div><div>webserver setup is needed to actually allow access to the navigator).</div>
<div>I imagine Linux Foundation could also host such an instance, but</div><div>that&#39;s not mine to promise :)</div><div><br></div><div>There are conceptually two parts to the database, &quot;LSB Elements&quot;</div><div>
(which are things describing the ABI), and &quot;Community Data&quot;</div><div>(which are captured details about distributions and applications</div><div>that let developers understand more about where things are common</div>
<div>and where they aren&#39;t).   As things evolve, it will be useful to scan</div><div>some ARM-based distributions and add them to the Community</div><div>Data, just so information will be available.  There&#39;s a tool for that,</div>
<div>and it has a page on the wiki as well.</div><div><br></div><div><br></div><div>I think that&#39;s enough detail for the moment... questions welcome of course.</div><div><br></div><div><br></div>