LSB Database Updates

Jump to: navigation, search


LSB DB & Scripts Update 1.9 (2016-09-30)

This update was inspired by the work done during Google Summer of Code 2016 so we decided to prepare a separate release notes for this set of changes.

All the changes have been committed to the Bazaar. This release primarily affects community tables and data, as well as community data collection scripts ("componenttodb" repository). Tarball with init files for community tables is now available at the Linux Foundation ftp.

Changes in Database Schema

  1. RawVtable doesn't have RVaid field anymore since vtable architecture can be identified by architecture of the library it is assigned to

Data Changes

  1. Added data about 16 distributions.
  2. All new data contains information about packages Provides/Requires fields.

Changes in Community Data Processing Scripts

  1. Data for AppRequires, CompInfo, CompFile, CompProvides and CompRequires tables is no collected by default
  2. Data collection scripts can now collect dependenices
  3. Processing of deb packages speed up - now we directly query dpkg for necessary fields instead of taking them from general package information
  4. Aux scripts (delete_distr, delete_app, delete_comp and dump_distr_data_from_db) now takes into account CompProvides, CompRequires and AppRequires tables

LSB DB & Scripts Update 1.8 (2010-10-28)

New database can be obtained through the Bazaar, as usual. This release primarily affects community tables and data, as well as community data collection scripts available at unofficial/componenttodb branch. In addition, several changes are introduced in the unofficial/ispras-lsb/specdb module.

Tarball with init files for community tables is now available at the linuxfoundation ftp.

Changes in Database Schema

  1. Implemented stored procedures to regenerate cache_DistrContent and cache_IntStatus tables by request
  2. New new cache_AppLibName table to store mapping between applications and names of libraries (RawLibrary.RLname) required by them
  3. New CompInfo table to store descriptions and URLs for distribution components
  4. New CompFile and CompProvides tables to store information about files and capabilities provided by distribution components. These tables are not populated with data at the moment; data collection tools don't collect such data by default
  5. New CompRequires and AppRequires tables to store information about dependencies of distribution components and application packages. These tables are not populated with data at the moment; data collection tools don't collect such data by default
  6. Added 'Rejection_soname' value to the set of possible LibraryAttribute record types to designate records that should apply for particular soname only (not for other sonames of the library)

Data Changes

  1. Added data about 24 distributions and 110 applications.

Changes in Community Data Processing Scripts

  1. Improved community data collection scripts to gather information to populate new AppRequires, CompInfo, CompFile, CompProvides and CompRequires tables with data
  2. now detects ELF files by checking magic number instead of relying on 'file' command. This allows to avoid extra calls to readelf on files erroneously reported to be ELFs
  3. now automatically extracts information about packagers from RPM and Deb files
  4. now doesn't fail when it meets ELF file whose architecture is not known to the database
  5. upload data tools - fix issue which led to empty AppRInt.ARIriid value when RawInterface is added during app upload and cache update is performed in parallel
  6. - added support for lzma/xz and zip archives
  7. Distribution data collection tools now detect components with the same name but with different archs and rename them, to avoid appearance of biarch components and thus speed up distribution upload
  8. When processing application represented as a set of RPM or Deb files, now tries to automatically detect application description and URL using the first file from the set
  9. - added support for txz packages and Deb files with xz archives
  10. Added proper handling of protected symbols and symbols with UNIQUE binding

LSB DB & Scripts Update 1.7 (2010-04-06)

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 and ispras-lsb/lsbspec modules.

Tarball with init files for community tables is now available at the linuxfoundation ftp.

Changes in Database Schema

  1. New ILModAttribute table with recommendations for interpreted language modules.
  2. New RLibLink table to store information about library symlinks in distributions.
  3. New RILMBuiltin table to store information about modules that can be implemented as interpreter builtins.
  4. New CompLDpath table to store information about ldconfig search paths changes performed by different components.
  5. New cache_RCnameRLnameMapping cache table to store unique (RCname, RLname) pairs to speed up class search in Navigator.
  6. New cache_Component* tables to simplify work with Component aliases in Navigator.
  7. cache_RIntCaseInsensitiveNames is now a 'merge' table (joining several physical tables on the storage media). This allows Navigator to perform interface search faster.
  8. *Attribute tables can now contain references to another interfaces, libraries or constants enclosed with special tags which are transformed by legal URLs in Navigator.
  9. New stored procedures:
    • detect_aliases_for_distr -detects Component aliases for the given distribution.
    • detect_biarch_comps_for_distr - detects components inside distribution that provide libraries for several architectures and splits such components into several ones.
    • fill_lib_loaded_deps_full - calculates complete list of libraries loaded as dependencies of library with given name in every distribution.
    • fill_lib_loaded_deps_limited - the same as fill_lib_loaded_deps_full, but takes into account only first two steps of every dependency chain.
  10. In the Version table, Vname is now an unique key.
  11. Dropped 'Unknown' from a list of possible values of many table fields. For most of the fields, 'Unknown' value had the same semantics as the 'No' one. For others, 'Unknown' value, if set, could actually lead to undesired behavior - e.g. interfaces with Itype='Unknown' were ignored by stub libs and libchk generators.
  12. New Constant.Ctype value added - 'literal'.
  13. Minor improvements in cahce* tables structure and creation process.

Data Changes

  1. Added SGML pages with documentation for 169 Qt4 symbols. These symbols are not intended to be directly used by applications so they are not documented in the upstream reference; however, they can appear among application dependencies through templates or inlines. All these symbols are tested by the Azov-Qt4 tests.
  2. Populated TypeMember.TMappearedin and TMwithdrawnin fields with actual data.
  3. Improvements in glib macros to match upstream (will be visible starting with LSB 4.1).
  4. Updated documentation URLs for several LSB interfaces.
  5. The database now contains names of all GTK headers, for better integration between LSB Navigator and LSB Eclipse Plugin.
  6. Minor ArchType updates to make the data more complete and consistent.
  7. Added 32 InterfaceAttribute records and 18 LibraryAttribute records (primarily prepared during the Moblin Proposed Library List analysis).
  8. Incorporated fix for bug 2308 (libICE and multithreading).
  9. Collected data about coverage provided by t2c-cpp tests for recently added C++ 'true long double' symbols.
  10. Added data about 38 distributions and 114 applications.
  11. Minor fixes in X11 headers (discussed in bug 2920).
  12. A set of changes in ArchConst, ArchType and similar tables to make 'historical' data for related items more correlated (e.g., constants should not 'appear' before headers).

Scripts Changes

  1. Implemented FILEOPTS variable in the specdb makefile to simplify adjustment of db restoration parameters.
  2. build_env generators (mkdatadef, mkheader), as well as devchk/mktests, now support 'versioning' for TypeMembers - that is, depending on TMappearedin/TMwithdrawnin values, they can make declaration of particular type member visible only for certain LSB versions.
  3. In devchk, CFLAGS and CXXFLAGS are now set in a separate file ( and are not hardcoded to the mktests generator.
  4. Incorporated improved mkmanpp script (bug 2178).

LSB DB & Scripts Update 1.6 (2009-07-15)

All the changes in this update concern Community tables and data. The only files from Bazaar that should be updated are Component.sql, create_cache_tables.sql and create_stored_procs.sql from the specdb folder. New versions of these scripts are available at the unofficial/ispras-lsb/specdb branch.

Tarball with init files for community tables is available at the linuxfoundation ftp.

Changes in Database Schema

  1. New Component.Calias field to implement aliasing of Components - if several components have identical content, then the data (libraries, interfaces, etc.) are stored for only one of them, and the others are marked as its 'aliases'.
  2. Implemented Calias field support in community data upload scripts.

Data Changes

  1. Added data for 112 distributions (different updates of RHEL 4 and SLES 10 on all architectures). Though the increment is very significant (the previous database contained data only about 90 distributions), the actual db size is increased by only 20% due to usage of Component aliases.
  2. Added data for 20 applications.
  3. Added 14 libraries to the 'approved' list (analyzed during Moblin Library List processing).

LSB DB & Scripts Update 1.5 (2009-03-13)

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 and ispras-lsb/lsbspec modules.

Tarball with init files for community tables is now available at the linuxfoundation ftp.

Accompanying scripts from componenttodb and libtodb2.

Changes in Database Schema

  1. New types of Constants (Ctype field): 'protector' and 'flag'.
  2. ModLib table is renamed to SModLib, ModCmd - to SModCmd (to reflect the actual meaning of these tables and not confuse users).
  3. Added community tables to store information about Java elements.
  4. Added BinVariable Ttype to store information about binary data symbols.
  5. Community part of the database is extended with the following tables:
    • RLibDeps, to store DT_NEEDED dependencies of libraries in distributions.
    • RawLibSonames - auxiliary table to store library sonames.
    • CompatSymbol, to store information about not-default symbol versions.
    • WeakSymbol, to store information about symbols binding.
    • AppShippedLib, to store sonames of libraries shipped with the application.
    • AppInfo, to store general information about application (url, summary, etc.).
  6. Added tables for the new LSB Futures Tracker.
  7. Added SModStd table (2292). Makefiles for the LSB, ELF and Toolkit_Gtk submodules of lsbspec are modifed to give an example of using this table. (Other way of listing standards manually is also supported).
  8. Added new tables to store C++ source-level data.
  9. Added Parameter.Pname field to store parameter names.

Data Changes

  1. Added parameter names for about 40% of interfaces.
  2. Added test coverage data for LSB 4.0 test suites.
  3. Added data about command coverage by test suites.
  4. Fixes in X11 data, including fixes for bugs:
    1. 2315 (unify NeedWidePrototypes usage).
    2. 2523 (SDK should provide EventI.h).
    3. 2524 (missing constants in XEVI.h).
    4. 2525 (XKB* headers are missing from the SDK).
    5. 2526 (missing Widget class declarations).
  5. Incorporated fix for 2539 (PTHREAD_PRIO defines are missing).
  6. Added data about 65 applications (including 28 proprietary ones).
  7. Added 486 libraries to the approved list, collected appropriate data.
  8. Added more LibraryAttribute and InterfaceAttribute records.
  9. Performed unification of type names, dropped records that turned out to be unnecessary after unification.
  10. More documentation urls for C++ and Qt symbols.
  11. Tid values are decreased in the Type table (not to have Tid > 1,000,000).
  12. Added more than 2000 of 'BinVariable' types to store size of C++ data symbols.
  13. Collected data about Qt4 headers - complete enough to display valuable information in the Navigator.
  14. Added 'native' protectors to nss and nspr headers.

Scripts Changes

  1. mkheader and mkdatadef unification - these scripts now use common functions located in the build_env/ module. These functions are also used now by mklsbmanpage and mksynop scripts from the lsbspec module. Note that this unification leads to a lot of formatting differences in the generated headers and defs files.
  2. Both mkheader and mkdatadef now print names of parameters taken from the Parameter.Pname field (if it is not empty).
  3. mksynop and mklsbmanpage now also use Parameter.Pname (if it is not available, then the old way of naming is applied).
  4. New kinds of checks in devchk:
    • check for presence of 'protector' and 'flag' constants.
    • check for value of 'accessor' constants.
    • check for some kind of data interfaces (not all types are supported yet).
    • check for macros (optional, disabled by default due to "false positives" for macros that reference other macros).
  5. Implemented multiversion cmdchk (bug 2038).
  6. New consistency checkers available at the unofficial repository. Detailed description is available on this wiki, as well as in the README file in the repository.
  7. makefiles in build_env/headers and build_env/stub_libs now take lsb versions from the db when 'make gensrc' is perfromed and store them into files that are used for actual libs compilation during 'make'. Note that now 'make gensrc' should be performed in build_env/headers before 'make all', like it is done on all other places that use db-generated files.

Bug Fixes in Scripts

  1. Anonymous enum declarations were sometimes missing in the files generated by mkdatadef.
  2. mkdatadef didn't display comments for members of structures.
  3. TMEdeclaration field (if not empty) is now used by mkdatadef (similar to mkheader).
  4. Fixed dump of declaration of functions returning function pointers in mkdatedef.

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 '' 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 to 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 '' 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 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/ 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/ - 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, 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/ 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. "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