LSB Database Updates

From ISP_RAS

Jump to: navigation, search

Contents

LSB DB & Scripts Update 1.4 (2008-06-23)

New database can be obtained through the Bazaar, as usual. This release affects unofficial/ispras-lsb/specdb, ispras-lsb/build_env, ispras-lsb/misc-test, ispras-lsb/lsbspec and ispras-lsb/packaging modules. Note that lsbspec changes are committed in a 'normal way' this time, i.e. using bzr. Note also that this time 'packaging' module is affected.

Init files for community tables are stored in spidey:/srv/www/bzr/unofficial/ispras-lsb/community_init folder.

Changes in Database Schema

  1. New tables in the community part - ApprovedLibrary, AppInterpreter and DistrVendor.
  2. ArchInt.AIdeprecated field is introduced, Interface.Ideprecated field is dropped. This allows deprecating certain versions of symbols.
  3. Size of all 'appearedin', 'withdrawnin', 'mandatorysince' and 'deprecatedsince' fields is reduced to 5.
  4. New cache table (cache_RIntCaseInsensitiveNames) with case insensitive interface names for Navigator search speed up
  5. The release incorporates the following changes already released as patches through bugzilla:
    1. Drop Csrconly field (bug 2039)
    2. Separate Ctype value for accessors (bug 2070)

Data Changes

  1. For those LSB functions whose version is shifted due to long double support changes (see bug 2177) necessary data is added to the ArchInt table.
  2. Added data for 7 distributions and 77 applications.
  3. Pure python/perl applications are now assigned to the 'Generic' architecture.
  4. Empty 'Ilibrary' fields in the Interface table are now filled with appropriate data.
  5. The release incorporates the following changes already released as patches through bugzilla:
    1. libc - uplift and analysis of excluded symbols used by applications (~50 entries in Bugzilla)
    2. libstdc++ uplift (bug 1962, bug 2110)
    3. GTK+ stack uplift (bug 2095)
    4. Added libXtst information (bug 2020)
    5. Fixes for GL and some X11 headers (bug 706)
    6. Fixes for 'overspecified' pthreads (bug 1926)
    7. Add missing png.h structures (bug 1966)
    8. Add missing glu.h declarations (bug 2027)

Scripts Changes

  1. 'gensrc' target in the build_env/stub_libs makefile now produces libraries for all LSB versions at the same time. Instead of 7 folders (one per architecture) we now have a folder for every LSB version starting with 3.0 with seven subfolders corresponding to different architectures.
  2. packaging scripts are modified according to the stub_libs structure changes. LSB SDK now contains a separate library directory for every LSB version starting with 3.0. Directories are named 'lib-3.0', 'lib-3.1', etc. (for 64bit architectures, 'lib64' prefix is used). /opt/lsb/lib is still exists as a symlink to a directory corresponding to the highest LSB version.
  3. lsbcc now uses directory corresponding to the target LSB version. If no version is specified, '/opt/lsb/lib/' will be used.
  4. mkstublibs can now handle several versions of one symbol in the same library. Not-deprecated version will be marked as default in this case. There should be no several not-deprecated versions.
  5. mkstublibs now automatically calculates size for _ZTSN* ('typeinfo name for ...') symbols, appropriate records are dropped from the 'missing_data' files.
  6. Corrections to mkheader to deal with types having FuncPtr as a base type
  7. The release incorporates the following changes already released as patches through bugzilla:
    1. Remove needs for hand-edited devchk tests for 3 headers (bug 1519)
    2. Generators speed up (bug 2049 - libchk, bug 2035 - mkstublibs)
    3. build_env/headers/makefile modification to generate .defs in different directories for for different LSB versions (bug 2041)
    4. devchk modification to omit type's reserved members checks (bug 1494)
    5. Added 'optimize' rule for specdb 'make restore' for general speedup (bug 2062)

LSB DB & Scripts Update 1.3 (2008-04-03)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. Init files for community tables are stored in spidey:/srv/www/bzr/unofficial/ispras-lsb/community_init folder. New versions of scripts are available in ispras-lsb/build_env and ispras-lsb/misc-test directories. Note that this release incorporates some changes to the lsbcc tool.

Changes in Database Schema

  1. New tables - IntStd (to track history of Interface<->Standard mapping), LibraryAttribute (similar to InterfaceAttribute) and InterfaceVote (to store 'voting' results for interfaces - available in the new Navigator).
  2. New way of storing community data - files are more thatn 2 times smaller, 'make restore' is more than 2 times faster.
  3. New field in the Interface table - Itestable - to mark symbols that cannot be tested by their nature (the only available type of tests for them is 'existence' check perfromed by libchk).
  4. Hsrconly fields is dropped from the Header table.
  5. Triggers are now used to fill in some fields with data automatically:
    1. Ilibrary is set on LGIint insert or update.
    2. Itestable is set to 'No' on Interface insert/update for thunks, private functions data symbols.
    3. Idocumented is set to 'Yes', Isrcbin to 'BinOnly' and IntStd record is added for newly added c++ compiler things (vtables, typeinfos, etc.).
  6. New type of InterfaceAttribute - 'Rejection'.

Data Changes

  1. All thunks, vtable, typeinfos and guard variables are now marked as BinOnly. Note that some of Qt3 thunks were incorrectly marked as SrcOnly, which was reflected in the spec ('NULL or' was added before these symbols inside class vtable layout).
  2. Additional changes in Qt4 parameters - previously some parameters of Qt4 symbols were referencing types from Qt3 with the same name.
  3. Iclass, Ivirtual, Iaccess and Ifkind fields are set properly for C++ symbols.
  4. Data corrections for unwind.h header (to correct issues concerning devchk).
  5. Data reupload for libICE, libSM and libGL headers. Note that these modifications cause changes in the spec text (in the 'Data Definitions' section). Also note that some of X11/GL headers generated using new data are still incorrect (partially due to mkheader restrictions - at the moment it can't deal with types having function pointer as a base type), so we still can't place them to the SDK at tee moment.
  6. Records in the Interface table added for new libstdc++ symbols.
  7. Data for 1 more distribution (RHEL 5.1 for x86-64) and some applications (including 29 Chiphopper's ones).

Scripts Changes

  1. mkheader now generates multiversion headers (using '__LSB_VERSION__' macro).
  2. Multiversion headers support in the lsbcc tool (using LSBCC_LSBVERSION environment variable).
  3. Some common functions from mkdatadef and mkheader are separated in the new 'specdb.pm' Perl module (located in the build_env directory).

LSB DB & Scripts Update 1.2 (2008-02-11)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. Init files for community tables are stored in spidey:/srv/www/bzr/unofficial/ispras-lsb/community_init folder. New versions of scripts are available in ispras-lsb/build_env and ispras-lsb/misc-test directories. Modified scripts from lsbspec module are available in spidey:/srv/www/bzr/unofficial/ispras-lsb/lsbspec folder.

Changes in Database Schema

  1. New tables for LSB Interpreted Languages - InterpretedLanguage and InterpretedLanguageModule. New tables in community part - AppRILM, CompRILM, RawILModule.
  2. 'Module' table now contains actual modules, as observed by specification reader. The former modules have moved to the new 'SubModule' table. There is also new auxiliary ModSMod table which allows to simply move submodules among modules.
  3. New column, ArchConst.ACorder, added as requested in bug 1016. Note that all entries have zero ACorder at the moment.
  4. 'Deep', 'Normal' and 'Shallow' quality levels are now used instead of 'Primary', 'Secondary' and 'Called'.
  5. New fields - SubModule.SMdeprecatedsince and Library.Ldeprecatedsince (requested in bug 1795).
  6. Type name unification - BaseTypes.BTrttiid renamed to BTbasetype (this field means exactly the same as VMIBaseTypes.VBTbasetype for VMI inheritance).
  7. Now (Hname, Happearedin) is a unique key in the Header table instead of single Hname.
  8. New field in the AppCategory table - ACcategory - representing application functional category.

Data Changes

  1. Lots of changes concerning Qt4 data - missing interface parameters and types added.
  2. libGLU symbols added to the Interface table, libGLU itself to the Library table. No types yet. libGLU and glu* interfaces are marked as included in 4.0.
  3. Test coverage data updated for LSB 3.2 test suites.
  4. Documentation urls added for some c++ symbols described in Itanium C++ ABI and for LSB interfaces whose descriptions appeared in 3.2.
  5. More applications and distributions added to the community data, as usual. For all (old and new) distributions new components are uploaded providing perl and python modules.

Scripts Changes

  1. All perl scripts except some from the 'lsbspec' module now use DBI interface to access specification database instead of Perl MySql module. Additional changes to lsbspec scripts will be available in the appropriate bugzilla bug soon.
  2. mkheader marks deprecated interfaces with compiler-specific attribute (as requested in bug 1920).

LSB DB & Scripts Update 1.1 (2007-11-15)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. No community tables update this time. As for scripts, only mkheader and mkdatadef are modifed, they are available in in ispras-lsb/build_env directory.

Changes in Database Schema

  1. New field, Command.Cdeprecatedsince, to indicate LSB version where the command became deprecated.
  2. New table, CommandAttribute, with the same purposes as InterfaceAttribute.
  3. New table, ConstantAttribute. Now it is possible to define additional conditions (e.g. ifdef or ifndef) that will be printed before constant declarations. mkheader and mkdatadef are modified to handle such attributes. Note that all such conditions should start with one of '#if*' directives, since for every condition '#endif' will be printed after constant declaration.

Data Changes

  1. Qt 4 is uplifted to 4.2. Interfaces requested by Trolltech are marked as included (1828 binary symbols total, 1639 source level interfaces). 32 classes for which inclusion of appropriate 'vtable for ...' and 'typeinfo for ...' interfaces was requested are also marked as included (i.e. libchk will check their virtual tables structure). 8 classes with included 'vtable for ...' interfaces are not included themselves since vtable information in the database is insufficient at the moment.
  2. Qt 4 documentation links updated from Qt 4.1 to Qt 4.2 (i.e. from http://doc.trolltech.com/4.1/ to http://doc.trolltech.com/4.2/). In addition to Interface.Iurl fields, Standard table is also updated.
  3. New ConstantAttribute table contains values to fix Bug 1186.

LSB DB & Scripts Update 1.0 (2007-10-30)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. Init files for community tables are stored in spidey:/srv/www/bzr/unofficial/ispras-lsb/community_init folder. New versions of scripts are available in ispras-lsb/build_env, ispras-lsb/misc-test and ispras-lsb/scripts directories. Modified scripts from lsbspec module are available in spidey:/srv/www/bzr/unofficial/ispras-lsb/lsbspec folder.

Changes in Database Schema

  1. Iisdeprecated is renamed to Ideprecatedsince and now has varchar type. Now it is possible to set LSB version where interface became deprecated, and scripts can understand deprecated interfaces in a given LSB version.
  2. Theadergroup renamed to Theadgroup, to make names more uniform.
  3. New cache tables created by stored procedures through 'create_stored_procs.sql'.

Data Changes

  1. ALSA (libasound) uploaded. No alsa interfaces or headers are marked as included. All types required by interfaes are marked as included in '3.2', but this can be simply changed after the decision is made which interfaces should be included. All constants from alsa headers are also marked as included, but a separate decision is required here, too.
  2. Recommendations for ~600 deprecated GTK-related interfaces taken from appropriate documentation (most of these interfaces are not included in LSB; however, recommendations for them will be displayed on their pages and will be used by ATK Manager during standalone application analysis).
  3. Test coverage information uploaded for 'Desktop-t2c 0.1' test suite developed at ISP RAS.
  4. 4 more distributions - Mandriva 2008 for x86, Ubuntu 7.10 for x86 and x86-64 and openSUSE 10.3 for x86-64

Scripts Changes

  1. devchk *.inc files for alsa headers to be compilation with system headers possible.
  2. 'grep' in specdb/makefile is now forced to run with 'C' locale when grepping 'INSERT' from mysql dump. On openSUSE 10.3 with UTF-8 locale grep is extremely slow. The full database dump when UTF-8 is used takes several hours instead of several minutes in case of one-byte locale - it's a known grep bug on multibyte locales.
  3. Script changes to handle renamed 'Theadgroup' and 'Ideprecatedsince' fields.

LSB DB & Scripts Update 0.9 (2007-09-27)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. New versions of scripts are available in ispras-lsb/build_env and ispras-lsb/scripts directories (files from the 'misc-tests' branch have not been changed). Important note: MySQL 4 is not supported any more. MySQL 4 capabilities are not sufficient to handle large ammount of distributions and applications data. Changes in scripts are minimalistic.

Changes in Database Schema

  1. Changes in field length and keys in Community tables. The new Community tables can by handled only by MySQL 5.x
  2. New table - InterfaceComment, for user coments in Navigator. 'INSERT' privileges for lsbuser are required for this table.
  3. New table - AppCategory - to store different application characteristics.
  4. New field - Distribution.Dreleasedate - to store distribution release dates.
  5. New field - TypeMember.TMvalue for enumeration values. Previously TMarray was used, but this led to confusion with Qt4 upload process. Now Qt4 data is corrected, mkheader is modified to use TMvalue.
  6. InterfaceAttribute now is assined to key <interface name, interface library>, not Interface.Iid. This allows to store attributes for interfaces from the RawInterface table.
  7. New cache tables are now creted when restoring database throgh 'make restore'. Some tables are created using 'create_cache_tables_inits.sh' which should be executable.

Data Changes

  1. Huge ammount of data about distributions is uploaded in order to build 'interface<->library' mapping.
  2. Some freetype and Xft interfaces were erroneously assigned to qt3 headers. Corrected.
  3. Updated links for OpenGL interfaces
  4. Some more urls added and 'Idocumented' field is set to correct values for some Qt interfaces.

Scripts Changes

  1. Changes in mkdatadef and mkheader to handle new TMvalue field and to make the way they displaying type declarations more uniform.
  2. Changes in addTypes.pl to work with the new schema.

LSB DB & Scripts Update 0.8 (2007-08-03)

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. New versions of scripts are available in ispras-lsb/build_env and ispras-lsb/misc-test directories (files from the 'scripts' branch have not been changed). Note that there are also important modifications in the lsbspec scripts; updated versions of these scripts are stored in the ispras-lsb/lsbspec directory.

Changes in Database Schema

Changes for Correct Reflection of C++ Interfaces

  1. New kinds of types
    • References — organized similarly to pointers, consts etc.
    • Namespaces
    • Pointers to member of class, struct or union
    • Pointers to method of class, struct or union
    • Templates and instantiated templates
  2. New properties of types
    • Member of — for types embedded in other types or namespaces
    • Instance of — for instantiated templates
    • Library name — types from different libraries can have same names (examples — Qt3 and Qt4) and they should be distinguished. Unique index based on names and kinds of types replaced by the unique index based on names, kinds and library names.
  3. New properties of type members
    • Accessibility — private, protected, public field
  4. New properties on interfaces
    • Context — static or non-static method
    • Virtuality — virtual or non-virtual method
    • Accessibility — private, protected, public method
    • Method kind — normal, constructor, destructor, const (observer)
    • Charging — special marks for constructors and destructors — in-charge, not-in-charge, in-charge-deleting
    • Class — reference on declaring class type for all methods, not only virtual ones grouped in virtual tables
    • Library name — each interface belongs to unique library and interfaces from different libraries can have same names
  5. New properties of classes
    • Abstractness — whether the class is pure virtual (has undefined methods) or not
    • Unique index based on names replaced by the unique index based on names and library groups, since classes from different libraries can have same names.
  6. Additions to tables reflecting links along class inheritance
    • Accessibility of inheritance — private, protected, public — added to BaseTypes and VMIBaseTypes tables
    • Offset of parent class — added to VMIBaseTypes table. Actually, this value is already encoded in VBTflags field, but this field is too complex — it encodes information on three different aspects — accessibility, offset and virtuality. It is much more natural and suitable to make this field virtuality flag and create two additional fields for other data, exactly this is done now (but contents of VBTflags field kept unchanged).
  7. Template parameter
    • Additional table with data on parameters of template types and functions, contains references on the corresponding type or interface and the types of its parameters.

Binary Only Symbols Support

  1. Interface.Isrconly field is renamed to Isrcbin in order to handle binary only symbols as well as source only. Now this field can have one of the following values:
    • BinOnly
    • SrcOnly
    • Both
  2. New tables - AbiApi and AbiMacro implementing dependencies 'binary only symbols <-> source level symbols' and 'binary only symbols <-> macro definitions'.

Note that these new tables an Isrcbin field are not filled with actual data yet (although data about 'SrcOnly' symbols have been presrved) - only a few examples are available).

Changes Concerning LSB Navigator

  1. 'Cache' tables - these tables are created automatically by the new 'create_cache_tables.sql' script when 'make restore' is performed. Two tables are created at the moment, containing data about correspondence between Interface and RawInterface tables. More 'cache' tables can be added in future.
  2. New table - LSBVersion. This table contains data about LSB Specification versions with a flag indicating if the version has been released or it is being developed.
  3. New fields - Interface.Ilibrary and RawInterface.RIlibrary. These fields help us to distinguish interfaces with the same name provided by different libraries and to build correspondence between RawInterface and Interface tables.
  4. New field Application.Apackager - since every application can be compiled in different ways, it can be important to know who built the version uploaded into the database.

Data Changes

Changes in Data on Qt3 Interfaces

  1. Corrected names of Qt3 types and classes. Previously classes had names like ‘_Y…’ and types had broken mangled names of the corresponding classes.
  2. 2100 Qt3 types added. Including:
    • All 299 Qt3 classes already existing in LSB DB — now put in DB with their correct names.
    • Additional classes, structs, unions, enums, templates and template instances, typedefs, pointers, references, arrays, consts, pointers to members and methods used in description of main Qt3 classes and as parameter and result types of Qt3 interfaces.
    • All data on links between these types.
  3. 3770 members of added types. Structure of main classes is uncovered, but structure of auxiliary and inner structs and classes is mostly hidden. For 2007 members of structured types (classes, structs, unions, template instances) accessibility field set.
  4. 806 classes and structs added to ClassInfo table. Including:
    • 299 Qt3 classes already existing in LSB DB— now put in DB with their correct names.
    • Information on number of virtual functions, number of virtual tables, inheritance links and inheritance accessibility and offsets for all classes.
    • Information on contents of virtual tables is filled for 337 classes — 299 Qt3 classes already existing in LSB DB, 32 classes, which methods have been included in Qt3 part of LSB, but classes themselves are missed from DB, and 6 pure virtual classes, for which virtual table fields have been included in Qt3 part of LSB. Other new classes and structs in ClassInfo table have no information on their virtual methods now, because they have no virtual methods at all or none of their methods is included in Qt3 part of LSB.
  5. All 12881 interfaces of Qt3 are now augmented with information on their parameters and result types, virtuality, static or non-static context, accessibility, and links with containing classes.
  6. Additional 1653 interfaces (from which 37 are data) of Qt3 classes are put in the DB with Excluded status. Additional data interfaces are type info and virtual table fields of added classes. Additional functional interfaces are methods of classes, which (classes) were absent in LSB DB previously, although their other methods were included in Qt3 part of LSB.
  7. Qt3 types and interfaces are assigned to newly added 247 Qt3 headers.

New Data in Community Tables

  1. Data about more than 500 applications uploaded. Now we have data for more than 750 applications.
  2. More data about distributions:
    • Oracle Enterprise Linux
    • Ubuntu 7.04 64 bit
    • Mandriva 2007 Spring and Corporate Server 4
    • Gentoo 2007.0
    • Fedora 7 test 4 is replaced with Fedora 7 final

Scripts Changes

  1. Improved hadnling of c++ entities in the mkheader. Now headers can be generated containing the following elements:
  2. Class declarations:
    • Base classes information, with inheritance accessibility taken into account
    • Declaration of all class members
    • Type declarations inside classes
    • Class members accessibility is taken into account
    • Virtual and static fields are handled successfully
  3. Structures containing functions declarations
  4. 'Reference' ('&') types

To try out these improvements, it is useful to mark Qt3 headers as 'included' and to generate them. (Qt4 headers are already marked as included, but there is not enough data for them).

Note that this realization of mkheader is preliminary and generated headers can not be used in the building environment.

LSB DB & Scripts Update 0.7 (2007-06-05)

Changes in Database Schema

  1. ArchTypeMem is renamed to TypeMemberExtras. The sense of this table differs from one of other Arch* tables; this table is simply a storage of additional information for devchk
  2. New field - Tunmangled, storing unmangled names of 'Class' types
  3. Tattribute is now in the ArchType table (new name - ATattribute)
  4. New fields - ArchES.AESurl, SectionTypes.STurl storing relative urls for elf sections and section types descriptions
  5. TestSuites now have fields TSappearedin and TSwithdrawnin to indicate for which LSB versions they are targeted for
  6. Pconst field is dropped. mkheader and mkdatadef scripts have different ways of handling Pconst field, thus they sometimes gave different output for the same interfaces declarations. Now their behavior is the same, but note that the generated data has changed
  7. New field - Pvalue - to store default parameters value (for C++ part of the specification). This field is not used by scripts yet
  8. Itested field is dropped
  9. New table - InterfaceAttribute - allows to store different interface attributes. Two kinds of attributes are supproted at the moment - 'Recommendation' and 'Custom'. Values of 'Recommendation' attributes are displayed by the LSB Navigator. 'BinOnly' flag is also implemented using this table, but it is not used by scripts yet.
  10. New fields, Irefspec & Crefspec, for elements described in the LSB with references to other specifications

Data Changes

  1. Duplicated names in the Type table are removed. All references in other tables are updated correspondingly (Note: ordering has been changed inside some header sections)
  2. Interface 'gets' is now assigned to 'Standard I/O' lib group from libc library. This interface is excluded, but marked as 'SrcOnly'. This change doesn't affect any files generated
  3. Descriptions corrected for some ElfSections
  4. TMaid field is now filled with the appropriate data and is used by all scripts. Now it is possible to simly handle complex types with arch-specific structure
  5. Updated links to documentation for 24 glX interfaces
  6. Invalid references removed from the BaseTypes table
  7. Type data cleanup - 145 types previously assigned to 'zero' architecture now assigned to the generic one. All types are not included in the current specification, so these changes don't affect any generated files
  8. Type headergroup changes: _libc_xmmreg is now in 387 hg (Default Header Section for ucontext.h) since it is used by some other types from ucontext.h and its declaration should be printed first
  9. 'pt_regs' struct was assigned to different headers on different architectures - to 'signal.h' on PPC64 and to 'ucontext.h' on PPC32. Assigning it to 'ucontext.h' introduces potential cyclic dependancy between ucontext.h and signal.h, and now it is assigned to signal.h on all architectures. (And actually this is a type from kernel headers)

Changes in Community Tables

  1. Fedora 7 test 4 uploaded
  2. Additional X11 libraries uploaded for distributions where each library is installed as a separate package (RHEL 5, all Debian based)
  3. binutils, coreutils, findutils, diffutils and patch components are uploaded for all distributions (in order to provide information about commands)
  4. Information about some more applications uploaded: Eclipse, VMware Workstation, sendmail, Scribus, mplayer, festival, tellico, icewm, Xara Xtreme, Xarchiver, nmap, hplip

DevChk Modifications

  1. Generic checks are not printed if there is architecture specific data (e.g. for all intrinsic types)
  2. Bugzilla 1507 patch adopted and partially implemented. However, some more work on data is required to fully implement the patch.
  3. "REPLACE INTO ArchType VALUES" messages removed in some cases - they were printed on the basis of the Tarch field; Tarch is dropped now and all connected inconsistencies cleaned up
  4. A lot of empty 'ifdef's removed from generated tests
  5. 'Indirect' types not included in the specification are not checked now


LSB DB & Scripts Update 0.6 (2007-04-28)

New release introduces a new way of test suites and coverage handling. The release doesn't contain any changes leading to changes in the generated files. New database can be obtained from the Bazaar, unofficial/ispras-lsb/specdb directory. No script changes accompany this release.

Changes in Database Schema

  1. New table - TestCaseSource - for test cases and their source files. TestInt table now implements relationship between this table (not TestSuite) and the Interface one.
  2. New fields in the TestSuite table - TSpartof, TSversion, TSlsbversion.

Data Changes

  1. Test coverage information for interfaces is now up to date with the only exception, libstdcpp tests, that have not been processed yet.
  2. New distributions, Ubuntu 7.04 and RHEL 5 uploaded to the Community tables.
  3. New libraries, xrender, xft and freetype uploaded for all distributions.
  4. Changes in descriptions of the ElfSections and SectionTypes, already released as a separate patch for bug 1608) and included in the 'devel' branch.

Other Changes

  1. dbperms.sql file is modified. Now 'CREATE TEMPORARY TABLES' privilegy is granted to the 'lsbuser'. This privilegy is vital for the LSB DB Navigator work (even in the 'browse' mode).


LSB DB & Scripts Update 0.5 (2007-04-12)

New release includes all changes from the previous changesets (not included in the official Bazaar branches) and was synchronized with lsb/devel branch of Bazaar on 2007-04-12. So it may be useful to read release notes for LSB DB &s Scripts Updates 0.3 and 0.4 (see below).

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. New versions of scripts are available in ispras-lsb/scripts, ispras-lsb/build_env and ispras-lsb/misc-test directories. The ispras-lsb/lsbspec directory contains the new version of the scripts and makefiles from 'lsbspec' module.

Note that files generated by the scripts and stored in the bazaar directories are not updated.

Changes in Database Schema

  1. Tbasetype field is dropped, ATbasetype should be used instead. All scripts have been modified correspondingly.
  2. New fields - Interface.Iurl, Command.Curl and Standard.Sbaselink - in order to be able to get documentation link for the particular interface/command. These fields are filled with data, where possible.
  3. HGarch and LGarch fields are dropped - they were not used anywhere.
  4. New field TypeMember.TMaid - for future use (we are going to drop ArchTypeMem table and mark architecture-specific type members directly in TypeMember table).
  5. New community table - AppLib, where libraries required by applications are stored.
  6. New keys (mostly in Community tables) in order to speed up the DB Navigator.

Changes in Database Data

  1. Community tables are filled using upload scripts developed at ISP RAS.
  2. Dots added in the end of descriptions of some RpmTags (most of them had dots, but for some they were absent).
  3. HeaderGroups are renamed to "Header Sections"
  4. Corrected some Header Section names - they were truncated (it seems that long time ago when these records were inserted HGname length was limited to 60 symbols).
  5. Idocumented field is now up to date.
  6. Extra spaces removed, missing spaces added in Standards names (near dots, semicolons, etc.).
  7. Records with duplicated names in Interface table removed (except records assigned to different libraries). All linkages between the Interface table and other tables were changed respectively. Some records in ArchInt and LGIint tables became superfluous and were removed. Note that after such cleanup some empty 'Entry' tags ('<ENTRY></ENTRY>') disappeared in the output of mklibspec. The other side effect is that the ordering of the interfaces has changed a little bit (in places where they are ordered by id) in the output of mklibspec and mklibapnd.
  8. Parameters update - some interfaces had incorrect parameters (not regarding Qt interfaces). There were more than one records for '__fpclassifyl' interface in the Interface table (assigned to different architectures). Some of them had parameter 'long double', while there were no parameters assigned to others (but records without parameters were not included in the specification). Now duplicated records removed, and on all architectures the interface has one parameter with 'long double' type. The same thing was found and corrected for the following functions:
    • __signbitl
    • _Unwind_GetGR
    • _Unwind_GetIP
    • _Unwind_GetLanguageSpecificData
    • _Unwind_GetRegionStart
    • _Unwind_RaiseException
    • _Unwind_Resume
    • _Unwind_SetGR
    • _Unwind_SetIP
    • _Unwind_DeleteException
    • _Unwind_Find_FDE
    • _Unwind_ForcedUnwind
    • _Unwind_GetTextRelBase
    • _Unwind_GetDataRelBase
  9. There were several records with '_ZNKSs8_M_limitEmm' name in the Interface table (unmangled name - 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_limit(unsigned long, unsigned long) const'. One of them was assigned to 'Class std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >' Lib Group, the others - to 'Class std::basic_string<char, std::char_traits<char>, std::allocator<char> >'. The latter assignment is a correct one. Now the duplicates are removed, the rest record is assigned to the latter lib group.
  10. _Unwind_Exception_Class, _Unwind_Action and _Unwind_Exception_Cleanup_Fn types are now assigned to 'All' architecture (instead of non-existent architecture with '0' id)

Changes in Scripts

  1. Small correction in mklsbspec concerning interfaces described in the LSB itself. When determining if such interfaces are included in the generic specification, LSB version where they are valid was not taken into account. This mistake didn't affect any files generated.

LSB DB & Scripts Update 0.4 (2007-01-31)

New release includes all changes from the previous changeset (not included in the official Bazaar branches) and was synchronized with lsb/3.1 branch of Bazaar on 2007-01-30. So it may be useful to read release notes for LSB DB & Scripts Update 0.3 (see below).

New database can be obtained through the Bazaar, it is stored in unofficial/ispras-lsb-specdb directory. New versions of scripts are available in ispras-lsb-scripts, ispras-lsb-build_env and ispras-lsb-misc-test directories. The ispras-lsb/lsbspec directory contains the new version of the scripts and makefiles from 'lsbspec' module.

Note that files generated by the scripts and stored in the bazaar directories are not updated.

LSB Versions Support

The main feature of the new release is the LSB versions support. Now it is possible to obtain data not only about the current state of the specification, but also about previous versions. All the scripts now accept a parameter indicating the target LSB version are capaple can also generate files corresponding to the given LSB version. For more details, please refer to LSB Versions Support in the Database page.

Changes in the Specification Generated

Most changes come from previous (0.3) release. Those changes concern appendixes generation and interface version information printed in the specification. Shortly, in the past the appendixes contained only small part of the interfaces described in the specification; now all interfaces are included. As for interface versions, the changes affect interfaces that appear both in the generic part of the specification and in some architecture specific parts. If for all architectures base versions are specified for the given interface, then in the generic part the version will be specified which is the mimimum of architecture-specific versions (but there are still some problems with versions pointed out in bug #1524, so the current situation is not ultimate, and correction of the base symbol versions data will be performed before our next release).

Changes in addition to release 0.3

  1. Toolkit_Qt4-generic, section 6.8 - Interfaces for libQtOpenGL says "The behavior of the interfaces in this library is specified by the following specifications: [QtGui] QtGui 4.1.0 [QtOpenGL] QtOpenGL 4.1.0". In fact, there are no references to QtGui among interfaces in this library and in the specification text. After some corrections performed while adding LSB versions support "QtGui" dissappeared from the list.
  2. _Unwind_Backtrace and _Unwind_ForcedUnwind interfaces have parameters of _Unwind_Trace_Fn and _Unwind_Stop_Fn types, but these types were not declared in 'unwind.h' section of the specification. This came from the fact that these types are not assigned to any architecture (they have Tarch=0 and no records in ArchType), even though they had 'Referenced' status. The sections in arch-specific document containing 'Data Definitions for libgcc_s', 'unwind.h' subscetion, is changed - declarations of '_Unwind_Trace_Fn' and '_Unwind_Stop_Fn' have been added. In the header generated by mkheader these types appeared as generic ones. Now they are assigned to architectures where _Unwind_Backtrace and _Unwind_ForcedUnwind interfaces present, so in header generated these types are declared with appropriate "ifdef"s.
  3. _Unwind_Exception_Class, _Unwind_Exception_Cleanup_Fn and _Unwind_Action types also had 'Referenced' status but they were assigned to the architecture '0'. So they appeared in headers generated, but not in the specification. Now they don't appear anywhere at all. These types are not used by any interface, and if there is a need to include them in the specfifcation or headers, one should decide what architectures they are valid on.

DB Schema Changes

  1. New fields - Interface.Iunmangled and ClassInfo.CIunmangled, in order to store unmangled names of interfaces and classes.
  2. Tarch usage. Tarch field is obsolete and should be dropped, the ArchType table should be used instead. However, a lot of scripts used Tarch field in quite strange manner - they took records from ArchType by the key (Tid,Tarch). Now most scipts are corrected to deal with the ArchType only (it should be mentioned here that mkheader now for each arch-specific record performs a check if a generic record presents for the same type and if this is a case only generic record is processed; so mkheader now works a bit slower, and maybe the better solution is required). The only scripts that are not corrected yet are devchk/mktests and dynchk/gen_lib.pl. Deep analysis of these scripts should be performed, since it seems that now they generate incorrect files in many situatuations, and some of the bugs can come from incorrect Tarch/ArchType processing. After their corrections Tarch will be dropped.
  3. Some additional keys in tables - to increase the speed of DB Navigator in future

DB Data Cleanup

In addition to db data changes mentioned above, there are some cleanup changes that don't affect any files generated.

  1. Unsupported architectures were removed from Architecture table. Artifacts assigned to removed architectures are also removed. Some additional notes here:
    • Architecture 'None' was used in the ArchLib table in order to show that the library presents on all architectures, but has different run names on them. Now this situation is successfully caught by scripts - when asked to generate library list for 'None' architecture, they detect such libraries and the files generated are the same as before 'None' arch removing
    • makefiles in the 'lsbspec' module are modified in order to skip M32R directories
  2. Records from the ArchConst table with invalid ACcid value (i.e. records with references to constants that don't exist) have been removed
  3. The same for the ArchType table - records with invalid ATtid values have been removed
  4. There are some new records in LGInt table for some interfaces that were not assigned to any library earlier. The current changes concern only excluded interfaces, so they don't affect anything else. But there are still some interfaces not assigned to any library (while they should be), and some of them are included in the specification. So more cleanup will be performed in the future.


Bug Fixes in Scripts

  1. elfchk/mkfunclist now takes into account the status of both libraries and interfaces. Earlier the interface's status was ignored, so interfaces not included in the LSB appeared in the list generated. Note that this change seems to affect appchk.
  2. dynchk/gen_tests.pl - extra semicolon was printed in some cases after the closing bracket of 'if' condition like the following:
  3. Some correction in scripts from dynchk concerning usage of the ArchInt table

LSB DB & Scripts Update 0.3 (2006-12-11)

New release can be obtained through the FSG Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. New versions of scripts are available in ispras-lsb/scripts, ispras-lsb/build_env and ispras-lsb/misc-test directories. The ispras-lsb/libspec directory contains the new version of scripts from 'lsbspec' CVS module.

Changes in Database Schema:

  1. Iarch and Iversion fields are removed from Interface table. All scripts now work with ArchInt table only. The information from these fields that was missing in ArchInt was transferred to ArchInt table. As for Iversion, in some cases it had wrong values, so there are some changes in scripts that have used it (see below).
  2. VerInt table is dropped. It had no usage at all.
  3. ElfSections.ESSecType field is dropped. This field also had no usage and seemed to have the same semantics as the ElfSections.EStype field.
  4. New keys: ArchType.ATtid, TypeMember.TMtypeid, HeaderGroup.HGheader and Constant.Cheadgroup. These keys greatly increase the speed of DB Navigator.

Changes in Scripts:

Bug Fixes

  1. lsbspec/mklibapnd had a bug that led to incorrect version information generated for large amount of interfaces. For example, let’s see LSB-Core-generic.html. Table A-1. “libc Function Interfaces” contains interfaces with empty brackets (getservent(), sighold(), etc.) and interfaces with incorrect versions (for example, getpwuid_r has version GLIBC_2.1.1 while it should be GLIBC_2.0). Now all information generated is correct (see bug 1524 at bugs.linuxbase.org, patch is also available there).
  2. In files generated by devchk/mktests semicolon was missing after CheckBitField(), CheckTypeSize() and CheckOffset() calls.

Other Changes

  1. lsbspec/mklibapand has been changed. Now appendixes with alphabetical listings of interfaces in architecture specific documents contain both interfaces that belong only to the given architecture and interfaces that belong to ‘All’ architecture.
  2. lsbspec/mklibspec now generates additional explicit wording in architecture specific documents that for some Interface Definitions one should refer to the generic document.

Changes in Generation Results Caused by Iarch and Iversion Removing

  1. build_env/stub_libs/mkstublibs script didn't take into account the value of Iarch. So interfaces with Iarch=1 but with no record in ArchInt with AIarch=1 were not included in stub libraries for every architecture. For example, pthread_attr_setstack had Iarch=1 but there was only one record in ArchInt table for this interface and this record had AIarch=2. pthread_attr_setstack was included in stub libraries only on architecture with Aid=2 (i.e. IA32). Now for all interfaces that had Iarch=1 there is a record in ArchInt table with AIarch=1 and such interfaces are included in stub libraries for every architecture. As for Iversion, mkstublibs didn’t use it, too. Since not all information was stored in ArchInt table, the ”Version“ files generated by mkstublibs now differ from the previous ones.
  2. elfchk/mkfunclist & elfchk/mkfunclist2. The same as for mkstublibs. Moreover, there were no entries in ArchInt table for some interfaces and such interfaces were not included in elfchk (for example, '_ZTI12QDashStroker' had Iarch=1 and 'Included' status, but there were no records for it in ArchInt, so it was not included in elfchk).
  3. libchk/mkfunclist. Tthis script had quite strange behavior – it used 'Iarch' field almost everywhere, but in one query ArchInt table was joined in addition to Iarch. The check "Iarch != 8" was performed, but there was no check "AIarch != 8". Moreover, since there were no records in ArchInt for some interfaces, usage of ArchInt table in query led to incorrect interface size data generated - for example, in libncurses_so_5.c the size of 'acs_map' is zero, while it should be 128.
  4. In lsbspec/mkintlist, lsbspec/mklibapnd, dynchk/libs/gen_lib.pl and build_env/stub_libs/check_lsb_symbols Iversion was used. Now they use AIversion, so the generated files now differ from the previous ones.


LSB DB & Scripts Update 0.2 (2006-11-17)

New release can be obtained through the FSG Bazaar, it is stored in unofficial/ispras-lsb/specdb directory. Note, that in order to work correctly with the new DB schema, some scripts should be changed. In order to get all necessary files, one should perform checkout of ispras-lsb/dbadmin, ispras-lsb/scripts, ispras-lsb/build_env and ispras-lsb/misc-test directories. The ispras-lsb/libspec directory contains the new version of scripts from 'lsbspec' CVS module, which is not currently in Bazaar.

Changes in database schema:

  1. New `HGheader` key in HeaderGroup table and 'Cheadgroup` key to Constant - this greatly improves the speed of dbadmin
  2. Changes in keys - the following keys are not Unique any more. There is no need to declare these keys as 'unique', because `Iid`, `TSid` and `TTid` fields are primary keys, so all keys that include these fields will be unique.
    • Interface: UNIQUE KEY `k_Name` (`Iname`,`Iid`)
    • TestSuite: UNIQUE KEY `TSid` (`TSid`, `TSname`)
    • TypeType: UNIQUE KEY `TTid` (`TTid`,`TTname`)
  3. KEY `VTcid` (`VTcid`) is removed from Vtable. It was superfluous key, the field `VTcid` is indexed by primary key.
  4. Changes in field declarations:
    • ClassInfo.CInumbasetype is now enum('0','1')
    • ClassInfo.CIvtclass is now enum('1','2')
    • LibGroup.LGorder now is not allowed to have NULL values. The default value is 0. (All other 'order' and 'pos' fields are declared in this way)
  5. Yes/No enums. The following fields are now declared as enum('Yes','No','Unknown'):
    • Parameter.Pconst
    • Parameter.Pnull
    • Command.Cdocumented
    • Command.Ctested
    • TestSuite.TSstatus
  6. Corrections in 'init' scripts not concerned with db schema changes:
    • Parameter.init - some records had empty value for 'Pnull' field. Now these values are set to 'No'
    • Constant.init - some records had empty values in their 'Cstd' field (now this field is called 'Cstdstatus'). Now these values are set to 'Excluded'.
    • Two records from Command.init had empty values for 'Ctype' field. Now these values are set to 'Unknown' (in fact, it's not a good pratice to set the fields declared as enums and NOT NULLs do empty values).
  7. Changes in fields indicating entity's status in LSB Specification (affect tables Command, Constant, DynamicEntries, Header, Interface and Library):
    • All fields indicating entity's status in LSB Specification are now named as 'stdstatus' (Cstdstatus, DEstdstatus, etc.).
    • For Command.Cstdstatus, DynamicEntries.DEstdstatus and Library.Lstdstatus enum('Included','Excluded','Unknown','Withdrawn','Future') is used.
    • For Constant.Cstdstatus, Header.Hstdstatus and Interface.Istdstatus enum('Included','Excluded','Unknown','Withdrawn','Future','SrcOnly') is used.
    • New field - 'candidatefor' - is added to Command, Constant, Header, Interface and Library tables. This fields are used for artifacts that are not included yet in Specification but that are planned for including in the future. This field is significant only for artifatcs with 'Future' status, for other artifacts they should be NULL. After next database release that will include tables describing distribution packages (versions of libraries, interfaces etc) we will be able to fill thef ield 'candidatefor' automatically, guiding by information from distros tables. The type of this new field is varchar(255).
    • The value 'Defered' is removed from available values for Interface status. The value 'Future' should be used instead, 'Icandidatefor' field should be set to 'Unknown' for such interfaces.
    • The value 'Deprecated' is removed from available values for Interface status. The new field 'Iisdeprecated' enum('Yes','No','Unknown') is created instead. The status of deprecated interfaces is set to 'Included'.
    • The value 'SrcError' is removed from available values for Header status. The new field 'Hsrcerror' enum('Yes','No','Unknown') is created instead. The status of such headers is set to 'Excluded'.
    • The value 'Builtin' is removed from available values for Command status. The new field 'Cbuiltin' enum('Yes','No','Unknown') is created instead. The status of built in commands is set to 'Included'
  8. CmdInt & CmdLib tables are removed. According to documentation, these tables were used as "historical data". But all relationships defined in CmdLib had invalid Library id. CmdInt contained 3038 relationships between interfaces and commands, but only 1340 of those relationships had valid interface id.
  9. Changes in reference fields:
    • ElfSections - ESSecType now is not allowed to have NULL values. The default value is '0'. (It seems to be a reference to a SectionTypes table)
    • Type - Tbasetype now is not allowed to have NULL values. The default value is '0'. (It seems to be a reference to a SectionTypes table)
  10. Changes in 'comment' fields:
    • Some 'descritpion', 'desc' and 'comment' fields were renamed. Now 'description' field is the field whose value is used in source file, header or document generated using data from database. The values of 'comment' fields are not used anywhere. 'Comment' fields' default value is NULL, 'description' fields are not allowed to have NULL values; default values for 'descritpion' fields of varchar type are set to . The list of fields affected:
    • DynamicEntries.DEdescription
    • ElfSections.ESdescription
    • HeaderGroup.HGdescription
    • SectionTypes.STdescription
    • Interface.Icomment
    • TypeType.TTdesc - was renamed to TTcomment
    • Module.Mdesc - was renamed to Mcomment
    • Constant.Ccomment - was renamed to Cdescription
    • Type.Tcomment - was renamed to Tdescription
    • TypeMember.TMComment - was renamed to TMdescription
    • Standard.Scomment - was renamed to Sdescription
  11. Changes in Library table - Larch and Lruntime fields were dropped. These fields were obsolete, the information about architecture and runname for library is now stored in ArchLib table.

Changes in scripts:

All scripts have been changed according to the database changes. Futhermore, there are some changes in scripts that correct some bugs/inconsistencies found:

  1. gen_lib.pl: "Group by Iid" was removed from queries. `Iid` is a primary key, so grouping by Iid has no effect.
  2. Changes in scripts from 'dbadmin' module:

All corrections for dbadmin were made for both 'admin' and 'browse' modes.


LSB DB Update 0.1 (2006-10-03)

This is a simple update incorporating pure technical changes that do not affect DB data, tools and scripts. The deliverable is a tar.gz file that contains sql scripts for creating new DB schema; scripts that insert actual data have not beed affected.

Download 2006-10-03 LSB DB update (rev.0.1)

The full list of changes is:

  1. Some tables had no primary keys - unique keys were declared instead, and each table had the only one unique key. Such unique keys are replaced with primary ones. Here is the full list of the tables affected:
    • ArchConst
    • ArchConst
    • ArchInt
    • ArchLib
    • ArchType
    • ClassVtab
    • CmdInt
    • CmdLib
    • LGInt
    • Parameter
    • TestCmd
    • TestInt
    • VerInt
  2. 'id' fields in all tables and all reference fields now have 'int unsigned' type. All reference fields also have type 'int unsigned'.
  3. In ModLib and ModCmd tables primary keys now contain two fields, unique keys were removed.
  4. All 'name', 'comment' and 'description' fields (except those that had 'blob' or 'text' type) now have 'varchar(255)' type. Here is the full list of fields affected:
    • ArchLib.ALrunname
    • Architecture.Aname
    • Architecture.Aspecification
    • ClassInfo.CIname
    • Command.Cname
    • Command.Cpath
    • Constant.Cname
    • Constant.Ccomment
    • DynamicEntries.DEname
    • ElfSections.ESname
    • Header.Hname
    • HeaderGroup.HGname
    • Interface.Iname
    • Interface.Icomment
    • LibGroup.LGname
    • Library.Lname
    • Library.Lrunname
    • Module.Mname
    • Module.Mdesc
    • Profile.Pname
    • Profile.Pdesc
    • RpmTag.Rname
    • SectionTypes.STname
    • Standard.Sname
    • Standard.Surl
    • Standard.Scomment
    • Standard.Sshort
    • TestSuite.TSname
    • TestSuite.TSfullname
    • TestSuite.TSvendor
    • Type.Tname
    • Type.Tcomment
    • TypeMember.TMname
    • TypeType.TTname
    • TypeType.TTdesc
    • Version.Vname
  5. In MySQL, with the declaration of a key (a, b, c, d) also indexes for (a, b, c), (a, b), (a) are created. So, the following keys were superfluous and now they are removed:
    • ArchInt: KEY 'AIint' ('AIint')
    • BaseTypes: KEY 'BTcid' ('BTcid')
    • LGInt: KEY `LGIint` (`LGIint`)
    • Interface: KEY `Iname` (`Iname`)
    • ModCmd: KEY `MCmid_2` (`MCmid`)
    • ModLib: KEY `MLmid_2` (`MLmid`)
    • Parameter: KEY `Pint` (`Pint`)
    • Profile: UNIQUE KEY `Pid` (`Pid`)
    • RpmTag: UNIQUE KEY `Rid` (`Rid`),
    • TestSuite: KEY `TSid_2` (`TSid`,`TSname`)
    • VMIBaseTypes: KEY `VBTciid` (`VBTcid`)
  6. All 'size' and 'num' ('number of') fields now have 'int unsigned' type. The full list of fields affected:
    • ArchType.ATsize
    • ArchTypeMem.ATMsize
    • ClassInfo.CInumvfunc
    • ClassInfo.CInumvtab
    • ClassInfo.CInumvmitypes
    • ClassInfo.CInumvtt
    • ClassVtab.CVnumvtfuncs
    • TypeMember.TMsize
    Note: the Parameter.Parsize field is not affected yet, cause we don't know what it is used for and it has quite strange type now - smallint(6)
  7. All 'offset', 'pos' and 'order' fields now have 'int' type. The full list of fields affected:
    • ArchClass.ACpos
    • ArchClass.ACbaseoffset
    • ArchClass.ACvoffset
    • ArchTypeMem.ATMoffset
    • BaseTypes.BTpos
    • ClassInfo.CIvcalloffset
    • ClassInfo.CIbaseoffset
    • ClassVtab.CVpos
    • HeaderGroup.HGorder
    • LibGroup.LGorder
    • Parameter.Ppos
    • TypeMember.TMoffset
    • TypeMember.TMposition
    • VMIBaseTypes.VBTpos
    • Vtable.VTpos
Personal tools