diff options
-rw-r--r-- | Doxyfile.in | 731 | ||||
-rw-r--r-- | Doxyheader | 34 | ||||
-rw-r--r-- | INSTALL | 273 | ||||
-rw-r--r-- | Makefile.am | 10 | ||||
-rw-r--r-- | acconfig.h | 5 | ||||
-rw-r--r-- | build.c | 2 | ||||
-rw-r--r-- | configure.in | 12 | ||||
-rw-r--r-- | lib/rpmrc.c | 1463 | ||||
-rw-r--r-- | po/rpm.pot | 1108 | ||||
-rw-r--r-- | rpm.spec | 5 | ||||
-rw-r--r-- | scripts/Makefile.in | 1 |
11 files changed, 1381 insertions, 2263 deletions
diff --git a/Doxyfile.in b/Doxyfile.in index e6589d42d..bc99b28a9 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -1,171 +1,239 @@ -# Doxyfile 1.0.0 +# Doxyfile 1.2.1 # This file describes the settings to be used by doxygen for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- -# The PROJECT_NAME tag is a single word (or a sequence of word surrounded +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = @PACKAGE@ +PROJECT_NAME = @PACKAGE@ -# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = @VERSION@ +PROJECT_NUMBER = @VERSION@ # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = doxygen +OUTPUT_DIRECTORY = doxygen -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. # The default language is English, other supported languages are: -# Dutch, French, Italian, Czech, Swedish, German and Japanese +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Spanish, Russian, Croatian, Polish, and Portuguese. -OUTPUT_LANGUAGE = English +OUTPUT_LANGUAGE = English -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES -QUIET = NO +EXTRACT_ALL = YES -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. -WARNINGS = YES +EXTRACT_PRIVATE = YES -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. -DISABLE_INDEX = NO +EXTRACT_STATIC = YES -# If the EXTRACT_ALL tag is set to YES all classes and functions will be -# included in the documentation, even if no documentation was available. +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. -EXTRACT_ALL = YES +HIDE_UNDOC_MEMBERS = NO -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. -EXTRACT_PRIVATE = NO +HIDE_UNDOC_CLASSES = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members inside documented classes or files. +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. -HIDE_UNDOC_MEMBERS = NO +BRIEF_MEMBER_DESC = YES -# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all -# undocumented classes. +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. -HIDE_UNDOC_CLASSES = NO +REPEAT_BRIEF = YES -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. -BRIEF_MEMBER_DESC = YES +ALWAYS_DETAILED_SEC = NO -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. -REPEAT_BRIEF = YES +FULL_PATH_NAMES = YES -# If the ALWAYS_DETAILS_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. -ALWAYS_DETAILED_SEC = NO +STRIP_FROM_PATH = @TOP_SOURCEDIR@/ -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. -FULL_PATH_NAMES = YES +INTERNAL_DOCS = NO -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. -STRIP_FROM_PATH = @TOP_SOURCEDIR@/ +CLASS_DIAGRAMS = YES -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES -INTERNAL_DOCS = NO +# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen +# will only generate file names in lower case letters. If set to +# YES upper case letters are also allowed. This is useful if you have +# classes or files whose names only differ in case and if your file system +# supports case sensitive file names. -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a class diagram (in Html and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. +CASE_SENSE_NAMES = YES -CLASS_DIAGRAMS = YES +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. +HIDE_SCOPE_NAMES = NO -SOURCE_BROWSER = YES +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. +VERBATIM_HEADERS = YES -INLINE_SOURCES = NO +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. -# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen -# will only generate file names in lower case letters. If set to -# YES upper case letters are also allowed. This is useful if you have -# classes or files whose names only differ in case and if your file system -# supports case sensitive file names. +SHOW_INCLUDE_FILES = YES -CASE_SENSE_NAMES = NO +# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the Javadoc-style will +# behave just like the Qt-style comments. -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. +JAVADOC_AUTOBRIEF = YES -VERBATIM_HEADERS = YES +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. -# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the Javadoc-style will -# behave just like the Qt-style comments. +INHERIT_DOCS = YES -JAVADOC_AUTOBRIEF = YES +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. -# if the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. +INLINE_INFO = YES -INHERIT_DOCS = YES +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. -# if the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. +SORT_MEMBER_DOCS = YES -INLINE_INFO = YES +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. -# the TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. +TAB_SIZE = 8 -TAB_SIZE = 8 +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" #--------------------------------------------------------------------------- # configuration options related to the input files @@ -174,9 +242,10 @@ TAB_SIZE = 8 # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories -# with spaces. +# with spaces. -INPUT = \ +INPUT = \ + ./Doxyheader \ ./build.c \ ./build.h \ ./config.h \ @@ -208,6 +277,7 @@ INPUT = \ ./lib/cpio.c \ ./lib/cpio.h \ ./lib/db1.c \ + ./lib/db2.c \ ./lib/db3.c \ ./lib/depends.c \ ./lib/depends.h \ @@ -233,7 +303,6 @@ INPUT = \ ./lib/poptQV.c \ ./lib/problems.c \ ./lib/query.c \ - ./lib/rpm_malloc.h \ ./lib/rpmchecksig.c \ ./lib/rpmdb.c \ ./lib/rpmdb.h \ @@ -259,6 +328,7 @@ INPUT = \ ./rpmio/rpmerr.h \ ./rpmio/rpmio.c \ ./rpmio/rpmio.h \ + ./rpmio/rpmio_internal.h \ ./rpmio/rpmio_api.c \ ./rpmio/rpmmacro.h \ ./rpmio/rpmmalloc.c \ @@ -293,286 +363,443 @@ INPUT = \ # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +# blank all files are included. -FILE_PATTERNS = *.c *.h +FILE_PATTERNS = *.c *.h -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. -RECURSIVE = NO +RECURSIVE = NO -# The EXCLUDE tag can be used to specify files and/or directories that should +# The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. +# subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = +EXCLUDE = -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see -# the \include command). +# the \include command). -EXAMPLE_PATH = +EXAMPLE_PATH = @TOP_SOURCEDIR@/doc/manual -# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +# blank all files are included. -EXAMPLE_PATTERNS = +EXAMPLE_PATTERNS = # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see -# the \image command). +# the \image command). -IMAGE_PATH = +IMAGE_PATH = -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. -INPUT_FILTER = +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. -GENERATE_HTML = YES +GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. -HTML_OUTPUT = +HTML_OUTPUT = html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. -HTML_HEADER = +HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = +HTML_FOOTER = -# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# The HTML_STYLESHEET tag can be used to specify a user defined cascading # style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. +HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. +HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. +GENERATE_HTMLHELP = NO -ALPHABETICAL_INDEX = NO +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 +DISABLE_INDEX = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. -GENERATE_LATEX = NO +GENERATE_LATEX = NO -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. -LATEX_OUTPUT = +LATEX_OUTPUT = latex -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. -COMPACT_LATEX = NO +COMPACT_LATEX = NO -# The PAPER_TYPE tag can be used to set the paper type that is used +# The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. +# executive. If left blank a4wide will be used. -PAPER_TYPE = a4wide +PAPER_TYPE = a4wide -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. -EXTRA_PACKAGES = +EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until +# the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. -LATEX_HEADER = +USE_PDFLATEX = NO -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. -PDF_HYPERLINKS = NO +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages -GENERATE_MAN = YES +GENERATE_MAN = YES -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. -MAN_OUTPUT = +MAN_OUTPUT = man -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) -MAN_EXTENSION = .3 +MAN_EXTENSION = .3 #--------------------------------------------------------------------------- -# Configuration options related to the preprocessor +# configuration options related to the XML output #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Warning: This feature +# is still experimental and very incomplete. + +GENERATE_XML = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional -# compilation will be performed. +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. -MACRO_EXPANSION = YES +SEARCH_INCLUDES = YES -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. -SEARCH_INCLUDES = YES +INCLUDE_PATH = -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. -INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. +# omitted =1 is assumed. -PREDEFINED = +PREDEFINED = -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED tag. +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. -EXPAND_ONLY_PREDEF = NO +EXPAND_AS_DEFINED = #--------------------------------------------------------------------------- -# Configuration options related to external references +# Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES tag can be used to specify one or more tagfiles. -TAGFILES = +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. -GENERATE_TAGFILE = +DOT_PATH = -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. -ALLEXTERNALS = NO +MAX_DOT_GRAPH_WIDTH = 1024 -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. -PERL_PATH = /usr/bin/perl +MAX_DOT_GRAPH_HEIGHT = 1024 #--------------------------------------------------------------------------- -# Configuration options related to the search engine +# Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. +# used. If set to NO the values of all tags below this one will be ignored. -SEARCHENGINE = NO +SEARCHENGINE = NO -# The CGI_NAME tag should be the name of the CGI script that -# starts the search engine (doxysearch) with the correct parameters. -# A script with this name will be generated by doxygen. +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. -CGI_NAME = search.cgi +CGI_NAME = search.cgi -# The CGI_URL tag should be the absolute URL to the directory where the +# The CGI_URL tag should be the absolute URL to the directory where the # cgi binaries are located. See the documentation of your http daemon for -# details. +# details. -CGI_URL = +CGI_URL = -# The DOC_URL tag should be the absolute URL to the directory where the +# The DOC_URL tag should be the absolute URL to the directory where the # documentation is located. If left blank the absolute path to the -# documentation, with file:// prepended to it, will be used. +# documentation, with file:// prepended to it, will be used. -DOC_URL = +DOC_URL = -# The DOC_ABSPATH tag should be the absolute path to the directory where the -# documentation is located. If left blank the directory on the local machine -# will be used. +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. -DOC_ABSPATH = +DOC_ABSPATH = -# The BIN_ABSPATH tag must point to the directory where the doxysearch binary -# is installed. +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. -BIN_ABSPATH = /usr/local/bin/ +BIN_ABSPATH = /usr/local/bin/ # The EXT_DOC_PATHS tag can be used to specify one or more paths to -# documentation generated for other projects. This allows doxysearch to search -# the documentation for these projects as well. +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. -EXT_DOC_PATHS = +EXT_DOC_PATHS = diff --git a/Doxyheader b/Doxyheader new file mode 100644 index 000000000..2f476c494 --- /dev/null +++ b/Doxyheader @@ -0,0 +1,34 @@ +/*! \mainpage RPM API Documentation. + */ +/** \defgroup rpmcli RPMCLI. + */ +/** \defgroup rpmbuild RPMBUILD. + */ +/** \defgroup rpmrc RPMRC. + */ +/** \defgroup rpmdep RPMDEP. + */ +/** \defgroup rpmtrans RPMTRANS. + */ +/** \defgroup rpmdb RPMDB. + */ +/** \defgroup lead LEAD. + */ +/** \defgroup signature SIGNATURE. + */ +/** \defgroup header HEADER. + */ +/** \defgroup payload PAYLOAD. + */ +/** \defgroup dbi DBI. + */ +/** \defgroup db1 DB1. + */ +/** \defgroup db2 DB2. + */ +/** \defgroup db3 DB3. + */ +/** \defgroup rpmio RPMIO. + */ +/** \defgroup popt POPT. + */ @@ -1,75 +1,148 @@ - - To build RPM you will need several other packages: -------------------------------------------------- +The zlib library for compression support. You might also need/want +the zip executable for java jar dependency analysis. All available from + ftp://ftp.freesoftware.com/pub/infozip/zlib/ -The zlib library for compression support available from - http://www.cdrom.com/pub/infozip/zlib/ - -The berkeley db library db.1.85, or db.2* (currently the latest is -db-2.6.4) with compatibility mode for db.1.85 defined. The developers -of RPM did not upgrade RPM to use the current version of libdb because -they are uncomfortable with changes in the softwares license. Now db2 -has a special exception license within glibc-2.1 so whatever license -discomfort there is/was is quickly becoming moot. The remaining issue -is that the db_185 compatibility does not work in glibc-2.1. This is -available from - http://www.sleepycat.com/download.html. - -The instructions for building db-2.6.4: - - cd build_unix - ../dist/configure --enable-compat185 - make - make install +The Berkeley db1 and db3 libraries. These are available from + http://www.sleepycat.com. +Minimal instructions for building db3 are (see a Red Hat dbN package +spac file for more conmplete details) + cd build_unix + ../dist/configure --enable-compat185 + make + make install It may be desired to install bzip2 and gzip so that RPM can use these formats. Gzip, is necessary to build packages that contain compressed tar balls, these are quite common on the Internet. These are availible from - http://www.digistar.com/bzip2/index.html - http://www.gnu.org/ - -If National Language Support (NLS) is desired -you will need gnu gettext available from - http://www.gnu.org/ - -If you need support of RPM 1.x databases, which are in an old RPM -format. You will need the GNU db library gdbm to build the rpmconvert -binary. This is availible from : - http://www.gnu.org/ + http://www.digistar.com/bzip2/index.html + http://sources.redhat.com/bzip2/ For best results you should compile with GCC and GNU Make. Users have -reported difficulty with other build tools. available from - http://www.gnu.org/ +reported difficulty with other build tools (any patches to lift these +dependencies are welcome). Both GCC and GNU Make available from + http://www.gnu.org/ + +If National Language Support (NLS) is desired you will need gnu +gettext (currently this is required to build rpm but we hope to +lift this requirement soon), available from + http://www.gnu.org/ + +If you are going to hack the sources (or compile from anonymous cvs +retrevial) you will need most of the GNU development tools including: +autoconf, automake, gettext, libtool, makeinfo, perl, GNU m4, GNU tar +available from + http://www.gnu.org/ + +If you plan on using cryptographic signatures you will need a version +of GPG. + +Since Red Hat 6.1 uses gnupg for signing packages, previous releases were +signed with pgp-2.6.3. Pgp5 can be used instead of pgp-2.6.3 signatures iff +RSA signature's are used. + +These can be downloaded (for US citizens) from: + http://web.mit.edu/network/pgp.html + http://www.gnu.org/ + http://www.pgpi.com/ + +Note: rpm-4.0 on Red Hat 7.0 is currently using + zlib-1.1.3 + db1-1.85 + db3-3.1.14 + bzip2-1.0.1 + gnupg-1.0.2 +You may use the tarballs within those packagese, and examine the patches and +spec files for details about how to build the libraries needed by rpm. To compile RPM: -------------- -If your libraries are in a standard place you will need to change -the configure environment. +RPM uses a small shell script to run: libtool, autoconf, +automake. This step should not be necessary if you are running a +released version of rpm, however if you have gotten the rpm sources +using anonymous CVS or via anonymous FTP, you should probably regenerate +intermediate files by re-running the autogen.sh script. + +The autogen.sh script checks that the required tools are installed. +While other versions of the tools may be used, the script checks for +the same version of the tools that was used at the time the tarball +was produced. Edit the top of the script to change version numbers if you wish. + +The autogen.sh script also runs configure for you and passes the command line +arguments to configure. To run it without configure type: + + ./autogen.sh --noconfigure + +If your libraries are not in a standard place you will need to change +configures environment. These options can be passed directly to +configure or to autogen.sh which will pass them through to configure. Here is an example: - LIBS='-L/opt/libz/ -L/opt/BerkeleyDB/lib/' \ - CPPFLAGS='-I/opt/libz/ -I/opt/BerkeleyDB/include' \ - export LIBS CPPFLAGS - ./configure + LIBS='-L/opt/libz/ -L/opt/BerkeleyDB/lib/' \ + CPPFLAGS='-I/opt/libz/ -I/opt/BerkeleyDB/include' \ + ./configure + +If you have build tools stored in non standard places you should check +the resulting Makefile to be sure that the tools you wish to use have +been correctly identified. The configure script will modify your path +before looking for the build tools and it may find versions of these +tools that you do not want. It uses the following search path + + MYPATH="/bin:/usr/bin:/usr/local/bin:$PATH:/opt/gnu/bin" now build the system with: - make + make + +and then install with: + + make install + +If you wish to make a tarfile of the binaries so that you may easily +install on machines with OS package managers other then rpm (ed note: +what about putting gzip and bzip2 in the tar, modifying the +/etc/rpmrc?): + + make tar -if you wish to make a tarfile of the binaries so that you may easily -install on other machines (ed note: what about putting gzip and bzip2 -in the tar, modifying the /etc/rpmrc?): +when installing. If you do install from a tarball, you will need to do +something like - make tar + mkdir /var/lib/rpm + rpm --initdb -when installing do not forget to init the database (rpm --initdb) +to initialize your rpm database. +Finally, if you wish to prepare an rpm source tar ball, you should do + + make dist + +To package RPM: +-------------- + +After RPM has been installed you can run rpm to build an rpm package. +Edit the rpm.spec file to mirror any special steps you needed to +follow to make rpm compile and change the specfile to match your +taste. You will need to put the rpm source tar file into the +redhat/SOURCES directory and we suggest putting the specfile in the +redhat/SPECS directory, then run rpm -ba rpm.spec. You will end up +with two rpms which can be found in redhat/RPMS and redhat/SRPMS. + +If you are going to install rpm on machines with OS package managers +other then rpm, you may choose to install the base rpm package via a +cpio instead of a tar file. Instead of running "make tar" during the +build process, as discribed above, use the base rpm packages to create +a cpio. After the rpms have been created run rpm2cpio on the base rpm +package, this will give you a cpio package which can then use to +install rpm on a new system. + + rpm2cpio rpm-4.0-1.solaris2.6-sparc.rpm > rpm-4.0-1.solaris2.6-sparc.cpio Non Linux Configuration Issues: @@ -94,25 +167,31 @@ will depend on exactly how you bootstrap RPM onto your system and what parts of the sytem you put into packages as well as on the specific OS you are using. -You should satisfy dependencies for all shells and interpreters. A -reasonable list of OS installed shells can be generated with: +The script vpkg-provides.sh can be used to generate a package which +will satisfy the dependencies on your system. To run it you will need +to create a specfile header for this empty package and run the progam +with: - cat /etc/shells + --spec_header '/path/to/os-base-header.spec -You should satisfy dependencies for all system libraries. For each of -the system library directories you should run +and if you wish to ensure that some directories are not traversed you +can use the option: - echo * | find-provides.sh + --ignore_dirs 'egrep|pattern|of|paths|to|ignore -(On Linux a list of system library directories can be found in -/etc/ld.so.conf, other OS require an experienced system administrator -to know where the libraries are.) +By default the generated rpm will include a %verifyscript to verify +checksum of all files traversed has not changed. This additional +check can be surpressed with: + --no_verify -You may add as many "provides: " lines as you like to /etc/rpmrc/ but -they can not be continued. Each line is limited to 8K bytes. Here is -a example (truncated) of the provides lines used by one user of -Digital Unix. +The result of running the script will be a specfile which will create +a package continging all the dependencies found on the system. There +will be one provides line for each depednecy. The package will contain +none of the actual OS library files as it is assumed they are already +on your system and managed by other means. Here is a example +(truncated) of the provides lines used by one user of Digital Unix. (I +have put several provides on the same line for brevity) provides: /bin/sh /usr/bin/ksh /usr/bin/csh provides: libc.so.osf.1 libm.so.osf.1 libcurses.so.xpg4 libdb.so.osf.1 @@ -121,28 +200,35 @@ provides: libdnet_stub.so.osf.1 libsecurity.so.osf.1 libpthread.so.osf.1 provides: libexc.so.osf.1 libmach.so.osf.1 libdps.so libdpstk.so +The script vpkg-provides2.sh is underdevelopment as a more advanced +version of vpkg-provides.sh which is aware of many different unix +vendor packaging schemes. It will create one "dependency package" for +each unix package your OS vendor installed. + rpmfilename: ----------- If you plan on packaging for more then one OS you may want to edit -/etc/rpmrc and change the line which has rpmfilename to something -which include both the %{OS} and %{ARCH}. This will cause the name of -the generated rpm files to the operating system name as well as the -architecture which the rpm runs under. The line to change looks like: +/etc/macros or /usr/lib/rpm/macros and change the line which has +rpmfilename to something which include both the %{_target_os} and +%{_target_cpu}. This will cause the name of the generated rpm files +to the operating system name as well as the architecture which the rpm +runs under. The line to change looks like: -> rpmfilename: %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm +%_rpmfilename %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm -you may wish to include both the %{OS} and %{ARCH} in the final base -name, so that it's easier to distinguish between what package is -appropriate for a particular arch-os-version combo. We suggest +you may wish to include both the %{_target_os} and %{_target_cpu} in +the final base name, so that it's easier to distinguish between what +package is appropriate for a particular arch-os-version combo. We +suggest: -> rpmfilename: %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{OS}-%{ARCH}.rpm +%_rpmfilename %%{_target_platform/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{_target_platform}.rpm -There is no %{OS_VERSION} tag, so if you need to also distinguish between -RPMs for certain versions of the OS, you can hard-code the version in -the rpmrc on the build machine, so that .rpm files are generated with -the version as part of the filename. +There is no %{_target_os_version} tag, so if you need to also +distinguish between RPMs for certain versions of the OS, you can +hard-code the version in the rpmrc on the build machine, so that .rpm +files are generated with the version as part of the filename. For example when one user builds RPMs for Digital Unix 4.0b and 4.0d, optimization is important and he will build one set of RPMs for the @@ -154,10 +240,49 @@ on the particular build machine. The "rpmfilename: "tag on one machine (Digital Unix 4.0d, EV56 PWS 433) looks like: -rpmfilename: %{OS}/4.0d/%{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{OS}-%{ARCH}-ev56.rpm +rpmfilename: %{_target_os}/4.0d/%{_target_cpu}/%{name}-%{version}-%{release}.%{_target_os}-%{_target_cpu}ev56.rpm For package `foo-1.1', at build time that would translate into: - osf1/4.0d/alpha/foo-1.1-1.osf1-alphaev56.rpm + osf1/4.0d/alpha/foo-1.1-1.osf1-alphaev56.rpm + +The hyphen between the %{_target_cpu} and ev56 is left out for compatibility +with GNU Config.guess and because `alphaev56' looks more "normal" to +people with an alpha than alpha-ev56 for someone on an Intel Pentium +Pro would want `i586pro' over `i586-pro', but it does make parsing +this filename by other programs a bit more difficult. + + +GPG/PGP/PGP5 +------------ + +To use the signing features of rpm, you will need to configure certain +rpm macros. + +Here's what I use for gpg: + + /etc/rpm/macros for per-system (or ~/.rpmmacros for per-user) configuration + %_signature gpg + %_gpg_name Jeff Johnson (ARS N3NPQ) <jbj@redhat.com> + %_gpg_path /home/devel/jbj/.gnupg + +Here's what I use for pgp2.6: + + /etc/rpm/macros for per-system (or ~/.rpmmacros for per-user) configuration + %_signature pgp + %_pgpbin /usr/bin/pgp + %_pgp_name Jeff Johnson <jbj@redhat.com> + %_pgp_path /home/jbj/.pgp + +In order to use pgp5, you will need to change: + + %_signature pgp5 + %_pgpbin /path/to/pgp5/binary + %_pgp_path /path/to/pgp5/keyring +(Note: Only one of pgp and pgp5 may be used because of name conflicts.) +You may also need Red Hat GPG/PGP public keys. These can be found in the +rpm source tarball, in /usr/doc/rpm*, or form http://www.redhat.com. In +order to verify a package signed by Red Hat you will need to import these +keys onto you key ring. See the GPG/PGP documentation for how to do this. diff --git a/Makefile.am b/Makefile.am index c27c51592..af87d3bed 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,31 +51,31 @@ rpm_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpm_LDADD = $(myLDADD) @LIBMISC@ rpmb_SOURCES = build.c -rpmb_LDFLAGS = $(myLDFLAGS) +rpmb_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpmb_LDADD = rpmb.o $(myLDADD) rpmb.o: rpmqv.c $(COMPILE) -DIAM_RPMBT -o $@ -c $< rpmdb_SOURCES = -rpmdb_LDFLAGS = $(myLDFLAGS) +rpmdb_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpmdb_LDADD = rpmdb.o $(myLDADD) rpmdb.o: rpmqv.c $(COMPILE) -DIAM_RPMDB -o $@ -c $< rpmi_SOURCES = -rpmi_LDFLAGS = $(myLDFLAGS) +rpmi_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpmi_LDADD = rpmi.o $(myLDADD) rpmi.o: rpmqv.c $(COMPILE) -DIAM_RPMEIU -o $@ -c $< rpmk_SOURCES = -rpmk_LDFLAGS = $(myLDFLAGS) +rpmk_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpmk_LDADD = rpmk.o $(myLDADD) rpmk.o: rpmqv.c $(COMPILE) -DIAM_RPMK -o $@ -c $< rpmq_SOURCES = -rpmq_LDFLAGS = $(myLDFLAGS) +rpmq_LDFLAGS = @LDFLAGS_STATIC@ $(myLDFLAGS) rpmq_LDADD = rpmq.o $(myLDADD) rpmq.o: rpmqv.c $(COMPILE) -DIAM_RPMQV -o $@ -c $< diff --git a/acconfig.h b/acconfig.h index 32e92af33..6dac639dd 100644 --- a/acconfig.h +++ b/acconfig.h @@ -108,10 +108,7 @@ /* Full path to rpmpopt configuration file (usually /usr/lib/rpm/rpmpopt) */ #undef LIBRPMALIAS_FILENAME -/* Full path to rpmrc configuration file (usually /usr/lib/rpm/rpmrc) */ -#undef LIBRPMRC_FILENAME - -/* Full path to macros configuration file (usually /usr/lib/rpm/macros) */ +/* Colon separated paths of macro files to read. */ #undef MACROFILES /* statfs in <sys/statvfs.h> (for solaris 2.6+ systems) */ @@ -99,8 +99,6 @@ static int buildForTarget(const char *arg, struct rpmBuildArguments *ba, Spec spec = NULL; int rc; - rpmSetTables(RPM_MACHTABLE_BUILDARCH, RPM_MACHTABLE_BUILDOS); - if (ba->buildRootOverride) buildRootURL = rpmGenPath(NULL, ba->buildRootOverride, NULL); diff --git a/configure.in b/configure.in index f0daa96cf..5c02e17f0 100644 --- a/configure.in +++ b/configure.in @@ -911,12 +911,15 @@ AC_SUBST(LIBDIR) RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`" AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR") AC_SUBST(RPMCONFIGDIR) + SYSCONFIGDIR="`echo /etc/rpm`" AC_DEFINE_UNQUOTED(SYSCONFIGDIR, "$SYSCONFIGDIR") AC_SUBST(SYSCONFIGDIR) -LIBRPMRC_FILENAME="${RPMCONFIGDIR}/rpmrc" -AC_DEFINE_UNQUOTED(LIBRPMRC_FILENAME, "$LIBRPMRC_FILENAME") -AC_SUBST(LIBRPMRC_FILENAME) + +MACROFILES="${RPMCONFIGDIR}/macros:${RPMCONFIGDIR}/%{_target}/macros:${SYSCONFIGDIR}/macros:${SYSCONFIGDIR}/macros.specspo:${SYSCONFIGDIR}/%{_target}/macros:~/.rpmmacros" +AC_DEFINE_UNQUOTED(MACROFILES, "$MACROFILES") +AC_SUBST(MACROFILES) + LIBRPMALIAS_FILENAME="${RPMCONFIGDIR}/rpmpopt-${VERSION}" AC_DEFINE_UNQUOTED(LIBRPMALIAS_FILENAME, "$LIBRPMALIAS_FILENAME") AC_SUBST(LIBRPMALIAS_FILENAME) @@ -926,9 +929,6 @@ AC_SUBST(FINDREQUIRES) FINDPROVIDES="${RPMCONFIGDIR}/find-provides" AC_DEFINE_UNQUOTED(FINDPROVIDES, "$FINDPROVIDES") AC_SUBST(FINDPROVIDES) -MACROFILES="${RPMCONFIGDIR}/macros" -AC_DEFINE_UNQUOTED(MACROFILES, "$MACROFILES") -AC_SUBST(MACROFILES) TOP_SOURCEDIR="`pwd`" AC_DEFINE_UNQUOTED(TOP_SOURCEDIR, "$TOP_SOURCEDIR") AC_SUBST(TOP_SOURCEDIR) diff --git a/lib/rpmrc.c b/lib/rpmrc.c index 7d1dc7d10..086bb962d 100644 --- a/lib/rpmrc.c +++ b/lib/rpmrc.c @@ -1,951 +1,113 @@ -#include "system.h" - -#include <stdarg.h> - -#if HAVE_SYS_SYSTEMCFG_H -#include <sys/systemcfg.h> -#else -#define __power_pc() 0 -#endif - -#include <rpmlib.h> -#include <rpmmacro.h> - -#include "misc.h" - -static const char *defrcfiles = LIBRPMRC_FILENAME ":/etc/rpmrc:~/.rpmrc"; - -typedef /*@owned@*/ const char * cptr_t; - -struct machCacheEntry { - const char * name; - int count; - cptr_t * equivs; - int visited; -}; - -struct machCache { - struct machCacheEntry * cache; - int size; -}; - -struct machEquivInfo { - const char * name; - int score; -}; - -struct machEquivTable { - int count; - struct machEquivInfo * list; -}; - -struct rpmvarValue { - const char * value; - /* eventually, this arch will be replaced with a generic condition */ - const char * arch; - struct rpmvarValue * next; -}; - -struct rpmOption { - const char * name; - int var; - int archSpecific, required, macroize, localize; - struct rpmOptionValue * value; -}; - -struct defaultEntry { -/*@owned@*/ const char * name; -/*@owned@*/ const char * defName; -}; - -struct canonEntry { -/*@owned@*/ const char * name; -/*@owned@*/ const char * short_name; - short num; -}; - -/* tags are 'key'canon, 'key'translate, 'key'compat - * - * for giggles, 'key'_canon, 'key'_compat, and 'key'_canon will also work +/** \ingroup rpmrc + * \file lib/rpmrc.c */ -struct tableType { - const char * const key; - const int hasCanon; - const int hasTranslate; - struct machEquivTable equiv; - struct machCache cache; - struct defaultEntry * defaults; - struct canonEntry * canons; - int defaultsLength; - int canonsLength; -}; - -/*@-fullinitblock@*/ -static struct tableType tables[RPM_MACHTABLE_COUNT] = { - { "arch", 1, 0 }, - { "os", 1, 0 }, - { "buildarch", 0, 1 }, - { "buildos", 0, 1 } -}; -/* this *must* be kept in alphabetical order */ -/* The order of the flags is archSpecific, required, macroize, localize */ +#include "system.h" -static struct rpmOption optionTable[] = { - { "include", RPMVAR_INCLUDE, 0, 1, 0, 2 }, - { "macrofiles", RPMVAR_MACROFILES, 0, 0, 0, 1 }, - { "optflags", RPMVAR_OPTFLAGS, 1, 0, 1, 0 }, - { "provides", RPMVAR_PROVIDES, 0, 0, 0, 0 }, +#include "rpmlib.h" +#include "rpmmacro.h" + +static struct _arch_canon { + const char *ac_arch; + int ac_num; +} actbl[] = { + { "i386", 1 }, + { "alpha", 2 }, + { "sparc", 3 }, + { "mipseb", 4 }, + { "ppc", 5 }, + { "m68k", 6 }, + { "IP", 7 }, + { "rs6000", 8 }, + { "ia64", 9 }, + { "sparc64", 10 }, + { "mipsel", 11 }, + { "armv4l", 12 }, + { "m68kmint", 13 }, + { "s390", 14 }, + { NULL, 0 } }; -/*@=fullinitblock@*/ -static int optionTableSize = sizeof(optionTable) / sizeof(*optionTable); - -#define OS 0 -#define ARCH 1 - -static cptr_t current[2]; -static int currTables[2] = { RPM_MACHTABLE_INSTOS, RPM_MACHTABLE_INSTARCH }; -static struct rpmvarValue values[RPMVAR_NUM]; -static int defaultsInitialized = 0; - -/* prototypes */ -static int doReadRC( /*@killref@*/ FD_t fd, const char * urlfn); -static void rpmSetVarArch(int var, const char * val, const char * arch); -static void rebuildCompatTables(int type, const char *name); - -static int optionCompare(const void * a, const void * b) { - return strcasecmp(((struct rpmOption *) a)->name, - ((struct rpmOption *) b)->name); -} - -static void rpmRebuildTargetVars(const char **target, const char ** canontarget); - -static /*@observer@*/ struct machCacheEntry * -machCacheFindEntry(struct machCache * cache, const char * key) -{ - int i; - - for (i = 0; i < cache->size; i++) - if (!strcmp(cache->cache[i].name, key)) return cache->cache + i; - - return NULL; -} - -static int machCompatCacheAdd(char * name, const char * fn, int linenum, - struct machCache * cache) -{ - char * chptr, * equivs; - int delEntry = 0; - int i; - struct machCacheEntry * entry = NULL; - while (*name && isspace(*name)) name++; - - chptr = name; - while (*chptr && *chptr != ':') chptr++; - if (!*chptr) { - rpmError(RPMERR_RPMRC, _("missing second ':' at %s:%d"), fn, linenum); - return 1; - } else if (chptr == name) { - rpmError(RPMERR_RPMRC, _("missing architecture name at %s:%d"), fn, - linenum); - return 1; - } - - while (*chptr == ':' || isspace(*chptr)) chptr--; - *(++chptr) = '\0'; - equivs = chptr + 1; - while (*equivs && isspace(*equivs)) equivs++; - if (!*equivs) { - delEntry = 1; - } - - if (cache->size) { - entry = machCacheFindEntry(cache, name); - if (entry) { - for (i = 0; i < entry->count; i++) - xfree(entry->equivs[i]); - xfree(entry->equivs); - entry->equivs = NULL; - entry->count = 0; - } - } - - if (!entry) { - cache->cache = xrealloc(cache->cache, - (cache->size + 1) * sizeof(*cache->cache)); - entry = cache->cache + cache->size++; - entry->name = xstrdup(name); - entry->count = 0; - entry->visited = 0; - } - - if (delEntry) return 0; - - while ((chptr = strtok(equivs, " ")) != NULL) { - equivs = NULL; - if (chptr[0] == '\0') /* does strtok() return "" ever?? */ - continue; - if (entry->count) - entry->equivs = xrealloc(entry->equivs, sizeof(*entry->equivs) - * (entry->count + 1)); - else - entry->equivs = xmalloc(sizeof(*entry->equivs)); - - entry->equivs[entry->count] = xstrdup(chptr); - entry->count++; - } +static struct _os_canon { + const char *oc_os; + int oc_num; +} octbl[] = { + { "linux", 1 }, /* XXX was Linux */ + { "irix", 2 }, + { "solaris2", 3 }, /* XXX was solaris */ + { "sunos", 4 }, + { "aix", 5 }, + { "hpux", 6 }, /* XXX was HP-UX */ + { "osf1", 7 }, + { "freebsd", 8 }, + { "sco", 9 }, /* XXX was SCO_SV */ + { "irix", 10 }, /* XXX was IRIX64 */ + { "nextstep", 11 }, + { "bsdi", 12 }, /* XXX was BSD_OS */ + { "machten", 13 }, + { "cygwin", 14 }, /* XXX was cygwin32_NT */ + { "cygwin", 15 }, /* XXX was cygwin32_95 */ + { "sysv4.2uw", 16 }, /* XXX was UNIX_SV (unixware) */ + { "mint", 17 }, /* XXX was MiNT */ + { "openedition", 18 }, /* XXX was OS/390 */ + { "openedition", 19 }, /* XXX was VM/ESA */ + { "linux", 20 }, /* XXX was Linux/390 */ + { NULL, 0 } +}; - return 0; -} +static const char *macrofiles = MACROFILES; -static /*@observer@*/ struct machEquivInfo * - machEquivSearch(const struct machEquivTable * table, const char * name) +#ifndef DYING +const char *rpmGetVar(int var) { - int i; - -/* - * XXX The strcasecmp below is necessary so the old (rpm < 2.90) style - * XXX os-from-uname (e.g. "Linux") is compatible with the new - * XXX os-from-platform (e.g "linux" from "sparc-*-linux"). - * XXX A copy of this string is embedded in headers and is - * XXX used by rpmInstallPackage->{os,arch}Okay->rpmMachineScore->. - * XXX to verify correct arch/os from headers. - */ - for (i = 0; i < table->count; i++) - if (!strcasecmp(table->list[i].name, name)) - return table->list + i; - return NULL; } -static void machAddEquiv(struct machEquivTable * table, const char * name, - int distance) -{ - struct machEquivInfo * equiv; - - equiv = machEquivSearch(table, name); - if (!equiv) { - if (table->count) - table->list = xrealloc(table->list, (table->count + 1) - * sizeof(*table->list)); - else - table->list = xmalloc(sizeof(*table->list)); - - table->list[table->count].name = xstrdup(name); - table->list[table->count++].score = distance; - } -} - -static void machCacheEntryVisit(struct machCache * cache, - struct machEquivTable * table, - const char * name, - int distance) +void rpmGetArchInfo(const char ** name, int * num) { - struct machCacheEntry * entry; - int i; - - entry = machCacheFindEntry(cache, name); - if (!entry || entry->visited) return; - - entry->visited = 1; - - for (i = 0; i < entry->count; i++) { - machAddEquiv(table, entry->equivs[i], distance); - } - - for (i = 0; i < entry->count; i++) { - machCacheEntryVisit(cache, table, entry->equivs[i], distance + 1); - } +fprintf(stderr, "*** rpmGetArchInfo(%p,%p)\n", name, num); + if (name) + *name = rpmExpand("%{_target_cpu}", NULL); } -static void machFindEquivs(struct machCache * cache, - struct machEquivTable * table, - const char * key) +void rpmGetOsInfo(const char ** name, int * num) { - int i; - - for (i = 0; i < cache->size; i++) - cache->cache[i].visited = 0; - - while (table->count > 0) { - xfree(table->list[--table->count].name); - table->list[table->count].name = NULL; - } - table->count = 0; - if (table->list) xfree(table->list); - table->list = NULL; - - /* - * We have a general graph built using strings instead of pointers. - * Yuck. We have to start at a point at traverse it, remembering how - * far away everything is. - */ - machAddEquiv(table, key, 1); - machCacheEntryVisit(cache, table, key, 2); +fprintf(stderr, "*** rpmGetOsInfo(%p,%p)\n", name, num); + if (name) + *name = rpmExpand("%{_target_os}", NULL); } -static int addCanon(struct canonEntry ** table, int * tableLen, char * line, - const char * fn, int lineNum) -{ - struct canonEntry *t; - char *s, *s1; - const char * tname; - const char * tshort_name; - int tnum; - - if (! *tableLen) { - *tableLen = 2; - *table = xmalloc(2 * sizeof(struct canonEntry)); - } else { - (*tableLen) += 2; - *table = xrealloc(*table, sizeof(struct canonEntry) * (*tableLen)); - } - t = & ((*table)[*tableLen - 2]); - - tname = strtok(line, ": \t"); - tshort_name = strtok(NULL, " \t"); - s = strtok(NULL, " \t"); - if (! (tname && tshort_name && s)) { - rpmError(RPMERR_RPMRC, _("Incomplete data line at %s:%d"), fn, lineNum); - return RPMERR_RPMRC; - } - if (strtok(NULL, " \t")) { - rpmError(RPMERR_RPMRC, _("Too many args in data line at %s:%d"), - fn, lineNum); - return RPMERR_RPMRC; - } - - tnum = strtoul(s, &s1, 10); - if ((*s1) || (s1 == s) || (tnum == ULONG_MAX)) { - rpmError(RPMERR_RPMRC, _("Bad arch/os number: %s (%s:%d)"), s, - fn, lineNum); - return(RPMERR_RPMRC); - } - - t[0].name = xstrdup(tname); - t[0].short_name = xstrdup(tshort_name); - t[0].num = tnum; - - /* From A B C entry */ - /* Add B B C entry */ - t[1].name = xstrdup(tshort_name); - t[1].short_name = xstrdup(tshort_name); - t[1].num = tnum; - - return 0; -} - -static int addDefault(struct defaultEntry **table, int *tableLen, char *line, - const char *fn, int lineNum) -{ - struct defaultEntry *t; - - if (! *tableLen) { - *tableLen = 1; - *table = xmalloc(sizeof(struct defaultEntry)); - } else { - (*tableLen)++; - *table = xrealloc(*table, sizeof(struct defaultEntry) * (*tableLen)); - } - t = & ((*table)[*tableLen - 1]); - - t->name = strtok(line, ": \t"); - t->defName = strtok(NULL, " \t"); - if (! (t->name && t->defName)) { - rpmError(RPMERR_RPMRC, _("Incomplete default line at %s:%d"), - fn, lineNum); - return RPMERR_RPMRC; - } - if (strtok(NULL, " \t")) { - rpmError(RPMERR_RPMRC, _("Too many args in default line at %s:%d"), - fn, lineNum); - return RPMERR_RPMRC; - } - - t->name = xstrdup(t->name); - t->defName = xstrdup(t->defName); - - return 0; -} - -static /*@null@*/ const struct canonEntry *lookupInCanonTable(const char *name, - const struct canonEntry *table, int tableLen) +void rpmGetMachine(const char **arch, const char **os) { - while (tableLen) { - tableLen--; - if (!strcmp(name, table[tableLen].name)) { - return &(table[tableLen]); - } - } - - return NULL; } -static /*@observer@*/ const char * lookupInDefaultTable(const char *name, - const struct defaultEntry *table, int tableLen) +void rpmSetMachine(const char * arch, const char * os) { - while (tableLen) { - tableLen--; - if (!strcmp(name, table[tableLen].name)) { - return table[tableLen].defName; - } - } - - return name; } +#endif -int rpmReadConfigFiles(const char * file, const char * target) +int rpmMachineScore(int type, const char * name) { - - /* Preset target macros */ - rpmRebuildTargetVars(&target, NULL); - - /* Read the files */ - if (rpmReadRC(file)) return -1; - - /* Reset target macros */ - rpmRebuildTargetVars(&target, NULL); - - /* Finally set target platform */ - { const char *cpu = rpmExpand("%{_target_cpu}", NULL); - const char *os = rpmExpand("%{_target_os}", NULL); - rpmSetMachine(cpu, os); - xfree(cpu); - xfree(os); - } - return 0; } -static void setVarDefault(int var, const char *macroname, const char *val, const char *body) -{ - if (var >= 0) { /* XXX Dying ... */ - if (rpmGetVar(var)) return; - rpmSetVar(var, val); - } - if (body == NULL) - body = val; - addMacro(NULL, macroname, NULL, body, RMIL_DEFAULT); -} - -static void setPathDefault(int var, const char *macroname, const char *subdir) -{ - - if (var >= 0) { /* XXX Dying ... */ - const char * topdir; - char * fn; - - if (rpmGetVar(var)) return; - - topdir = rpmGetPath("%{_topdir}", NULL); - - fn = alloca(strlen(topdir) + strlen(subdir) + 2); - strcpy(fn, topdir); - if (fn[strlen(topdir) - 1] != '/') - strcat(fn, "/"); - strcat(fn, subdir); - - rpmSetVar(var, fn); - if (topdir) xfree(topdir); - } - - if (macroname != NULL) { -#define _TOPDIRMACRO "%{_topdir}/" - char *body = alloca(sizeof(_TOPDIRMACRO) + strlen(subdir)); - strcpy(body, _TOPDIRMACRO); - strcat(body, subdir); - addMacro(NULL, macroname, NULL, body, RMIL_DEFAULT); -#undef _TOPDIRMACRO - } -} - -static const char *prescriptenviron = "\n\ -RPM_SOURCE_DIR=\"%{_sourcedir}\"\n\ -RPM_BUILD_DIR=\"%{_builddir}\"\n\ -RPM_OPT_FLAGS=\"%{optflags}\"\n\ -RPM_ARCH=\"%{_arch}\"\n\ -RPM_OS=\"%{_os}\"\n\ -export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\n\ -RPM_DOC_DIR=\"%{_docdir}\"\n\ -export RPM_DOC_DIR\n\ -RPM_PACKAGE_NAME=\"%{name}\"\n\ -RPM_PACKAGE_VERSION=\"%{version}\"\n\ -RPM_PACKAGE_RELEASE=\"%{release}\"\n\ -export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\n\ -%{?buildroot:RPM_BUILD_ROOT=\"%{buildroot}\"\n\ -export RPM_BUILD_ROOT\n}\ -"; - -static void setDefaults(void) { - - addMacro(NULL, "_usr", NULL, "/usr", RMIL_DEFAULT); - addMacro(NULL, "_var", NULL, "/var", RMIL_DEFAULT); - - addMacro(NULL, "_preScriptEnvironment",NULL, prescriptenviron,RMIL_DEFAULT); - - setVarDefault(-1, "_topdir", - "/usr/src/redhat", "%{_usr}/src/redhat"); - setVarDefault(-1, "_tmppath", - "/var/tmp", "%{_var}/tmp"); - setVarDefault(-1, "_dbpath", - "/var/lib/rpm", "%{_var}/lib/rpm"); - setVarDefault(-1, "_defaultdocdir", - "/usr/doc", "%{_usr}/doc"); - - setVarDefault(-1, "_rpmfilename", - "%%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm",NULL); - - setVarDefault(RPMVAR_OPTFLAGS, "optflags", - "-O2", NULL); - setVarDefault(-1, "sigtype", - "none", NULL); - setVarDefault(-1, "_buildshell", - "/bin/sh", NULL); - - setPathDefault(-1, "_builddir", "BUILD"); - setPathDefault(-1, "_rpmdir", "RPMS"); - setPathDefault(-1, "_srcrpmdir", "SRPMS"); - setPathDefault(-1, "_sourcedir", "SOURCES"); - setPathDefault(-1, "_specdir", "SPECS"); - -} - -int rpmReadRC(const char * rcfiles) -{ - char *myrcfiles, *r, *re; - int rc; - - if (!defaultsInitialized) { - setDefaults(); - defaultsInitialized = 1; - } - - if (rcfiles == NULL) - rcfiles = defrcfiles; - - /* Read each file in rcfiles. */ - rc = 0; - for (r = myrcfiles = xstrdup(rcfiles); *r != '\0'; r = re) { - char fn[4096]; - FD_t fd; - - /* Get pointer to rest of files */ - for (re = r; (re = strchr(re, ':')) != NULL; re++) { - if (!(re[1] == '/' && re[2] == '/')) - break; - } - if (re && *re == ':') - *re++ = '\0'; - else - re = r + strlen(r); - - /* Expand ~/ to $HOME/ */ - fn[0] = '\0'; - if (r[0] == '~' && r[1] == '/') { - const char * home = getenv("HOME"); - if (home == NULL) { - /* XXX Only /usr/lib/rpm/rpmrc must exist in default rcfiles list */ - if (rcfiles == defrcfiles && myrcfiles != r) - continue; - rpmError(RPMERR_RPMRC, _("Cannot expand %s"), r); - rc = 1; - break; - } - if (strlen(home) > (sizeof(fn) - strlen(r))) { - rpmError(RPMERR_RPMRC, _("Cannot read %s, HOME is too large."), - r); - rc = 1; - break; - } - strcpy(fn, home); - r++; - } - strncat(fn, r, sizeof(fn) - (strlen(fn) + 1)); - fn[sizeof(fn)-1] = '\0'; - - /* Read another rcfile */ - fd = Fopen(fn, "r.fpio"); - if (fd == NULL || Ferror(fd)) { - /* XXX Only /usr/lib/rpm/rpmrc must exist in default rcfiles list */ - if (rcfiles == defrcfiles && myrcfiles != r) - continue; - rpmError(RPMERR_RPMRC, _("Unable to open %s for reading: %s."), - fn, Fstrerror(fd)); - rc = 1; - break; - } else { - rc = doReadRC(fd, fn); - } - if (rc) break; - } - if (myrcfiles) free(myrcfiles); - if (rc) - return rc; - - rpmSetMachine(NULL, NULL); /* XXX WTFO? Why bother? */ - - { const char *macrofiles; - if ((macrofiles = rpmGetVar(RPMVAR_MACROFILES)) != NULL) { - macrofiles = strdup(macrofiles); - rpmInitMacros(NULL, macrofiles); - xfree(macrofiles); - } - } - - return rc; -} - -static int doReadRC( /*@killref@*/ FD_t fd, const char * urlfn) +void rpmFreeRpmrc(void) { - const char *s; - char *se, *next; - int linenum = 0; - struct rpmOption searchOption, * option; - int rc; - - /* XXX really need rc = Slurp(fd, const char * filename, char ** buf) */ - { off_t size = fdSize(fd); - size_t nb = (size >= 0 ? size : (8*BUFSIZ - 2)); - if (nb == 0) { - Fclose(fd); - return 0; - } - next = alloca(nb + 2); - next[0] = '\0'; - rc = Fread(next, sizeof(*next), nb, fd); - if (Ferror(fd) || (size > 0 && rc != nb)) { /* XXX Feof(fd) */ - rpmError(RPMERR_RPMRC, _("Failed to read %s: %s."), urlfn, - Fstrerror(fd)); - rc = 1; - } else - rc = 0; - Fclose(fd); - if (rc) return rc; - next[nb] = '\n'; - next[nb + 1] = '\0'; - } - - while (*next) { - linenum++; - - s = se = next; - - /* Find end-of-line. */ - while (*se && *se != '\n') se++; - if (*se) *se++ = '\0'; - next = se; - - /* Trim leading spaces */ - while (*s && isspace(*s)) s++; - - /* We used to allow comments to begin anywhere, but not anymore. */ - if (*s == '#' || *s == '\0') continue; - - /* Find end-of-keyword. */ - se = (char *)s; - while (*se && !isspace(*se) && *se != ':') se++; - - if (isspace(*se)) { - *se++ = '\0'; - while (*se && isspace(*se) && *se != ':') se++; - } - - if (*se != ':') { - rpmError(RPMERR_RPMRC, _("missing ':' (found 0x%02x) at %s:%d"), - (0xff & *se), urlfn, linenum); - return 1; - } - *se++ = '\0'; /* terminate keyword or option, point to value */ - while (*se && isspace(*se)) se++; - - /* Find keyword in table */ - searchOption.name = s; - option = bsearch(&searchOption, optionTable, optionTableSize, - sizeof(struct rpmOption), optionCompare); - - if (option) { /* For configuration variables ... */ - const char *arch, *val, *fn; - - arch = val = fn = NULL; - if (*se == '\0') { - rpmError(RPMERR_RPMRC, _("missing argument for %s at %s:%d"), - option->name, urlfn, linenum); - return 1; - } - - switch (option->var) { - case RPMVAR_INCLUDE: - { FD_t fdinc; - - s = se; - while (*se && !isspace(*se)) se++; - if (*se) *se++ = '\0'; - - rpmRebuildTargetVars(NULL, NULL); - - fn = rpmGetPath(s, NULL); - if (fn == NULL || *fn == '\0') { - rpmError(RPMERR_RPMRC, _("%s expansion failed at %s:%d \"%s\""), - option->name, urlfn, linenum, s); - if (fn) xfree(fn); - return 1; - /*@notreached@*/ - } - - fdinc = Fopen(fn, "r.fpio"); - if (fdinc == NULL || Ferror(fdinc)) { - rpmError(RPMERR_RPMRC, _("cannot open %s at %s:%d: %s"), - fn, urlfn, linenum, Fstrerror(fdinc)); - rc = 1; - } else { - rc = doReadRC(fdinc, fn); - } - if (fn) xfree(fn); - if (rc) return rc; - continue; /* XXX don't save include value as var/macro */ - } /*@notreached@*/ break; - case RPMVAR_MACROFILES: - fn = rpmGetPath(se, NULL); - if (fn == NULL || *fn == '\0') { - rpmError(RPMERR_RPMRC, _("%s expansion failed at %s:%d \"%s\""), - option->name, urlfn, linenum, fn); - if (fn) xfree(fn); - return 1; - } - se = (char *)fn; - break; - case RPMVAR_PROVIDES: - { char *t; - s = rpmGetVar(RPMVAR_PROVIDES); - if (s == NULL) s = ""; - fn = t = xmalloc(strlen(s) + strlen(se) + 2); - while (*s) *t++ = *s++; - *t++ = ' '; - while (*se) *t++ = *se++; - *t++ = '\0'; - se = (char *)fn; - } break; - default: - break; - } - - if (option->archSpecific) { - arch = se; - while (*se && !isspace(*se)) se++; - if (*se == '\0') { - rpmError(RPMERR_RPMRC, - _("missing architecture for %s at %s:%d"), - option->name, urlfn, linenum); - return 1; - } - *se++ = '\0'; - while (*se && isspace(*se)) se++; - if (*se == '\0') { - rpmError(RPMERR_RPMRC, - _("missing argument for %s at %s:%d"), - option->name, urlfn, linenum); - return 1; - } - } - - val = se; - - /* Only add macros if appropriate for this arch */ - if (option->macroize && - (arch == NULL || !strcmp(arch, current[ARCH]))) { - char *n, *name; - n = name = xmalloc(strlen(option->name)+2); - if (option->localize) - *n++ = '_'; - strcpy(n, option->name); - addMacro(NULL, name, NULL, val, RMIL_RPMRC); - free(name); - } - rpmSetVarArch(option->var, val, arch); - if (fn) xfree(fn); - - } else { /* For arch/os compatibilty tables ... */ - int gotit; - int i; - - gotit = 0; - - for (i = 0; i < RPM_MACHTABLE_COUNT; i++) { - if (!strncmp(tables[i].key, s, strlen(tables[i].key))) - break; - } - - if (i < RPM_MACHTABLE_COUNT) { - const char *rest = s + strlen(tables[i].key); - if (*rest == '_') rest++; - - if (!strcmp(rest, "compat")) { - if (machCompatCacheAdd(se, urlfn, linenum, - &tables[i].cache)) - return 1; - gotit = 1; - } else if (tables[i].hasTranslate && - !strcmp(rest, "translate")) { - if (addDefault(&tables[i].defaults, - &tables[i].defaultsLength, - se, urlfn, linenum)) - return 1; - gotit = 1; - } else if (tables[i].hasCanon && - !strcmp(rest, "canon")) { - if (addCanon(&tables[i].canons, &tables[i].canonsLength, - se, urlfn, linenum)) - return 1; - gotit = 1; - } - } - - if (!gotit) { - rpmError(RPMERR_RPMRC, _("bad option '%s' at %s:%d"), - s, urlfn, linenum); - } - } - } - - return 0; } -static void defaultMachine(/*@out@*/ const char ** arch, /*@out@*/ const char ** os) +static void defaultMachine(/*@out@*/ char ** arch, /*@out@*/ char ** os) { static struct utsname un; static int gotDefaults = 0; - char * chptr; - const struct canonEntry * canon; if (!gotDefaults) { uname(&un); -#if !defined(__linux__) -#ifdef SNI - /* USUALLY un.sysname on sinix does start with the word "SINIX" - * let's be absolutely sure - */ - sprintf(un.sysname,"SINIX"); -#endif - if (!strcmp(un.sysname, "AIX")) { - strcpy(un.machine, __power_pc() ? "ppc" : "rs6000"); - sprintf(un.sysname,"aix%s.%s",un.version,un.release); - } - else if (!strcmp(un.sysname, "SunOS")) { - if (!strncmp(un.release,"4", 1)) /* SunOS 4.x */ { - int fd; - for (fd = 0; - (un.release[fd] != 0 && (fd < sizeof(un.release))); - fd++) { - if (!isdigit(un.release[fd]) && (un.release[fd] != '.')) { - un.release[fd] = 0; - break; - } - } - sprintf(un.sysname,"sunos%s",un.release); - } - - else /* Solaris 2.x: n.x.x becomes n-3.x.x */ - sprintf(un.sysname, "solaris%1d%s", atoi(un.release)-3, - un.release+1+(atoi(un.release)/10)); - } - else if (!strcmp(un.sysname, "HP-UX")) - /*make un.sysname look like hpux9.05 for example*/ - sprintf(un.sysname, "hpux%s", strpbrk(un.release,"123456789")); - else if (!strcmp(un.sysname, "OSF1")) - /*make un.sysname look like osf3.2 for example*/ - sprintf(un.sysname,"osf%s",strpbrk(un.release,"123456789")); - else if (!strncmp(un.sysname, "IP", 2)) - un.sysname[2] = '\0'; - else if (!strncmp(un.sysname, "SINIX", 5)) { - sprintf(un.sysname, "sinix%s",un.release); - if (!strncmp(un.machine, "RM", 2)) - sprintf(un.machine, "mips"); - } - else if ((!strncmp(un.machine, "34", 2) || - !strncmp(un.machine, "33", 2)) && \ - !strncmp(un.release, "4.0", 3)) - { - /* we are on ncr-sysv4 */ - char *prelid = NULL; - FD_t fd; - fd = Fopen("/etc/.relid", "r.fdio"); - if (!Ferror(fd)) { - chptr = (char *) xcalloc(1, 256); - if (chptr != NULL) { - int irelid = Fread(chptr, sizeof(*chptr), 256, fd); - Fclose(fd); - /* example: "112393 RELEASE 020200 Version 01 OS" */ - if (irelid > 0) { - if ((prelid=strstr(chptr, "RELEASE "))){ - prelid += strlen("RELEASE ")+1; - sprintf(un.sysname,"ncr-sysv4.%.*s",1,prelid); - } - } - free (chptr); - } - } - if (prelid == NULL) /* parsing /etc/.relid file failed? */ - strcpy(un.sysname,"ncr-sysv4"); - /* wrong, just for now, find out how to look for i586 later*/ - strcpy(un.machine,"i486"); - } -#endif /* __linux__ */ - /* get rid of the hyphens in the sysname */ - for (chptr = un.machine; *chptr; chptr++) - if (*chptr == '/') *chptr = '-'; - -# if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) - /* little endian */ - strcpy(un.machine, "mipsel"); -# elif defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) - /* big endian */ - strcpy(un.machine, "mipseb"); -# endif - -# if defined(__hpux) && defined(_SC_CPU_VERSION) - { -# if !defined(CPU_PA_RISC1_2) -# define CPU_PA_RISC1_2 0x211 /* HP PA-RISC1.2 */ -# endif -# if !defined(CPU_PA_RISC2_0) -# define CPU_PA_RISC2_0 0x214 /* HP PA-RISC2.0 */ -# endif - int cpu_version = sysconf(_SC_CPU_VERSION); - -# if defined(CPU_HP_MC68020) - if (cpu_version == CPU_HP_MC68020) - strcpy(un.machine, "m68k"); -# endif -# if defined(CPU_HP_MC68030) - if (cpu_version == CPU_HP_MC68030) - strcpy(un.machine, "m68k"); -# endif -# if defined(CPU_HP_MC68040) - if (cpu_version == CPU_HP_MC68040) - strcpy(un.machine, "m68k"); -# endif - -# if defined(CPU_PA_RISC1_0) - if (cpu_version == CPU_PA_RISC1_0) - strcpy(un.machine, "hppa1.0"); -# endif -# if defined(CPU_PA_RISC1_1) - if (cpu_version == CPU_PA_RISC1_1) - strcpy(un.machine, "hppa1.1"); -# endif -# if defined(CPU_PA_RISC1_2) - if (cpu_version == CPU_PA_RISC1_2) - strcpy(un.machine, "hppa1.2"); -# endif -# if defined(CPU_PA_RISC2_0) - if (cpu_version == CPU_PA_RISC2_0) - strcpy(un.machine, "hppa2.0"); -# endif + { char *s; + for (s = un.machine; *s; s++) + if (*s == '/') *s = '-'; } -# endif /* hpux */ # if HAVE_PERSONALITY && defined(__linux__) && defined(__sparc__) if (!strcmp(un.machine, "sparc")) { @@ -970,447 +132,112 @@ static void defaultMachine(/*@out@*/ const char ** arch, /*@out@*/ const char ** } # endif /* sparc*-linux */ - /* the uname() result goes through the arch_canon table */ - canon = lookupInCanonTable(un.machine, - tables[RPM_MACHTABLE_INSTARCH].canons, - tables[RPM_MACHTABLE_INSTARCH].canonsLength); - if (canon) - strcpy(un.machine, canon->short_name); - - canon = lookupInCanonTable(un.sysname, - tables[RPM_MACHTABLE_INSTOS].canons, - tables[RPM_MACHTABLE_INSTOS].canonsLength); - if (canon) - strcpy(un.sysname, canon->short_name); gotDefaults = 1; } - if (arch) *arch = un.machine; - if (os) *os = un.sysname; -} - -static const char * rpmGetVarArch(int var, const char * arch) { - struct rpmvarValue * next; - - if (!arch) arch = current[ARCH]; - - if (arch) { - next = &values[var]; - while (next) { - if (next->arch && !strcmp(next->arch, arch)) return next->value; - next = next->next; - } - } - - next = values + var; - while (next && next->arch) next = next->next; - - return next ? next->value : NULL; + if (arch && *arch == NULL) *arch = un.machine; + if (os && *os == NULL) *os = un.sysname; } -const char *rpmGetVar(int var) +static void rpmRebuildTargetVars(const char **ct) { - return rpmGetVarArch(var, NULL); -} + const char *target; + char * ca, * cv, * co; + char * ce; -/* this doesn't free the passed pointer! */ -static void freeRpmVar(struct rpmvarValue * orig) { - struct rpmvarValue * next, * var = orig; +fprintf(stderr, "*** rpmRebuildTargetVars(%p) %s\n", ct, (ct ? *ct : NULL)); + ca = cv = co = NULL; + if (ct && *ct) { + char * c = strcpy(alloca(strlen(*ct)), *ct); + char ** av; + int ac; - while (var) { - next = var->next; - if (var->arch) { - xfree(var->arch); - var->arch = NULL; - } - if (var->value) { - xfree(var->value); - var->value = NULL; + /* Set arch, vendor and os from specified build target */ + ac = 1; + for (ce = c; (ce = strchr(ce, '-')) != NULL; ce++) + ac++; + av = alloca(ac * sizeof(*av)); + ac = 0; + av[ac++] = c; + for (ce = c; (ce = strchr(ce, '-')) != NULL;) { + *ce++ = '\0'; + av[ac++] = ce; } - if (var != orig) free(var); - var = next; + do { + ca = av[0]; + if (ac == 1) break; + co = av[(!strcasecmp(av[ac-1], "gnu") ? (ac-2) : (ac-1))]; + if (ac == 2) break; + cv = av[1]; + if (ac == 3) break; + if (!strcasecmp(av[1], "pc")) + cv = av[2]; + } while (0); } -} - -void rpmSetVar(int var, const char *val) { - freeRpmVar(&values[var]); - values[var].value = (val ? xstrdup(val) : NULL); -} - -static void rpmSetVarArch(int var, const char * val, const char * arch) { - struct rpmvarValue * next = values + var; - - if (next->value) { - if (arch) { - while (next->next) { - if (next->arch && !strcmp(next->arch, arch)) break; - next = next->next; - } - } else { - while (next->next) { - if (!next->arch) break; - next = next->next; - } - } - - if (next->arch && arch && !strcmp(next->arch, arch)) { - if (next->value) xfree(next->value); - if (next->arch) xfree(next->arch); - } else if (next->arch || arch) { - next->next = xmalloc(sizeof(*next->next)); - next = next->next; - next->value = NULL; - next->arch = NULL; - next->next = NULL; - } - } - - next->value = xstrdup(val); /* XXX memory leak, hard to plug */ - next->arch = (arch ? xstrdup(arch) : NULL); -} - -void rpmSetTables(int archTable, int osTable) { - const char * arch, * os; - defaultMachine(&arch, &os); + /* If still not set, set target arch/os from uname(2) values */ + defaultMachine(&ca, &co); - if (currTables[ARCH] != archTable) { - currTables[ARCH] = archTable; - rebuildCompatTables(ARCH, arch); - } - - if (currTables[OS] != osTable) { - currTables[OS] = osTable; - rebuildCompatTables(OS, os); - } -} - -int rpmMachineScore(int type, const char * name) { - struct machEquivInfo * info = machEquivSearch(&tables[type].equiv, name); - return (info != NULL ? info->score : 0); -} - -void rpmGetMachine(const char **arch, const char **os) -{ - if (arch) - *arch = current[ARCH]; - - if (os) - *os = current[OS]; -} - -void rpmSetMachine(const char * arch, const char * os) { - const char * host_cpu, * host_os; - - defaultMachine(&host_cpu, &host_os); - - if (arch == NULL) { - arch = host_cpu; - if (tables[currTables[ARCH]].hasTranslate) - arch = lookupInDefaultTable(arch, - tables[currTables[ARCH]].defaults, - tables[currTables[ARCH]].defaultsLength); - } + for (ce = ca; *ce; ce++) *ce = tolower(*ce); + delMacro(NULL, "_target_cpu"); + addMacro(NULL, "_target_cpu", NULL, ca, RMIL_RPMRC); +fprintf(stderr, "*** _target_cpu: \"%s\"\n", ca); - if (os == NULL) { - os = host_os; - if (tables[currTables[OS]].hasTranslate) - os = lookupInDefaultTable(os, - tables[currTables[OS]].defaults, - tables[currTables[OS]].defaultsLength); + if (cv) { + for (ce = cv; *ce; ce++) *ce = tolower(*ce); + delMacro(NULL, "_target_vendor"); + addMacro(NULL, "_target_vendor", NULL, cv, RMIL_RPMRC); +fprintf(stderr, "*** _target_vendor: \"%s\"\n", cv); } - if (!current[ARCH] || strcmp(arch, current[ARCH])) { - if (current[ARCH]) xfree(current[ARCH]); - current[ARCH] = xstrdup(arch); - rebuildCompatTables(ARCH, host_cpu); - } + for (ce = co; *ce; ce++) *ce = tolower(*ce); + delMacro(NULL, "_target_os"); + addMacro(NULL, "_target_os", NULL, co, RMIL_RPMRC); +fprintf(stderr, "*** _target_os: \"%s\"\n", co); - if (!current[OS] || strcmp(os, current[OS])) { - char * t = xstrdup(os); - if (current[OS]) xfree(current[OS]); - /* - * XXX Capitalizing the 'L' is needed to insure that old - * XXX os-from-uname (e.g. "Linux") is compatible with the new - * XXX os-from-platform (e.g "linux" from "sparc-*-linux"). - * XXX A copy of this string is embedded in headers and is - * XXX used by rpmInstallPackage->{os,arch}Okay->rpmMachineScore-> - * XXX to verify correct arch/os from headers. - */ - if (!strcmp(t, "linux")) - *t = 'L'; - current[OS] = t; - - rebuildCompatTables(OS, host_os); + if (!(ct && *ct)) { + char * t; + int nb = strlen(ca) + strlen(co) + sizeof("-"); + if (cv) nb += strlen(cv) + 1; + target = t = alloca(nb); + t = stpcpy( stpcpy(t, ca), "-"); + if (cv) + t = stpcpy( stpcpy(t, cv), "-"); + t = stpcpy(t, co); + ct = ⌖ } -} -static void rebuildCompatTables(int type, const char * name) { - machFindEquivs(&tables[currTables[type]].cache, - &tables[currTables[type]].equiv, - name); -} - -static void getMachineInfo(int type, /*@out@*/ const char ** name, - /*@out@*/int * num) -{ - const struct canonEntry * canon; - int which = currTables[type]; - - /* use the normal canon tables, even if we're looking up build stuff */ - if (which >= 2) which -= 2; - - canon = lookupInCanonTable(current[type], - tables[which].canons, - tables[which].canonsLength); - - if (canon) { - if (num) *num = canon->num; - if (name) *name = canon->short_name; - } else { - if (num) *num = 255; - if (name) *name = current[type]; - - if (tables[currTables[type]].hasCanon) { - rpmMessage(RPMMESS_WARNING, _("Unknown system: %s\n"), current[type]); - rpmMessage(RPMMESS_WARNING, _("Please contact rpm-list@redhat.com\n")); - } + if (ct && *ct) { + delMacro(NULL, "_target"); + addMacro(NULL, "_target", NULL, *ct, RMIL_RPMRC); +fprintf(stderr, "*** _target: \"%s\"\n", *ct); } } -void rpmGetArchInfo(const char ** name, int * num) { - getMachineInfo(ARCH, name, num); -} - -void rpmGetOsInfo(const char ** name, int * num) { - getMachineInfo(OS, name, num); -} - -void rpmRebuildTargetVars(const char **buildtarget, const char ** canontarget) +int rpmReadConfigFiles(const char * mfiles, const char * target) { - char *ca = NULL, *co = NULL, *ct = NULL; - int x; - - /* Rebuild the compat table to recalculate the current target arch. */ - - rpmSetMachine(NULL, NULL); - rpmSetTables(RPM_MACHTABLE_INSTARCH, RPM_MACHTABLE_INSTOS); - rpmSetTables(RPM_MACHTABLE_BUILDARCH, RPM_MACHTABLE_BUILDOS); - - if (buildtarget && *buildtarget) { - char *c; - /* Set arch and os from specified build target */ - ca = xstrdup(*buildtarget); - if ((c = strchr(ca, '-')) != NULL) { - *c++ = '\0'; - - if ((co = strrchr(c, '-')) == NULL) { - co = c; - } else { - if (!strcasecmp(co, "-gnu")) - *co = '\0'; - if ((co = strrchr(c, '-')) == NULL) - co = c; - else - co++; - } - if (co != NULL) co = xstrdup(co); - } - } else { - const char *a = NULL; - const char *o = NULL; - /* Set build target from rpm arch and os */ - rpmGetArchInfo(&a, NULL); - ca = (a) ? xstrdup(a) : NULL; - rpmGetOsInfo(&o, NULL); - co = (o) ? xstrdup(o) : NULL; - } - - /* If still not set, Set target arch/os from default uname(2) values */ - if (ca == NULL) { - const char *a = NULL; - defaultMachine(&a, NULL); - ca = (a) ? xstrdup(a) : NULL; - } - for (x = 0; ca[x]; x++) - ca[x] = tolower(ca[x]); - - if (co == NULL) { - const char *o = NULL; - defaultMachine(NULL, &o); - co = (o) ? xstrdup(o) : NULL; - } - for (x = 0; co[x]; x++) - co[x] = tolower(co[x]); - - /* XXX For now, set canonical target to arch-os */ - if (ct == NULL) { - ct = xmalloc(strlen(ca) + sizeof("-") + strlen(co)); - sprintf(ct, "%s-%s", ca, co); - } +fprintf(stderr, "*** rpmReadConfigFiles(%s,%s) %s\n", mfiles, target, macrofiles); + if (mfiles == NULL) + mfiles = macrofiles; -/* - * XXX All this macro pokery/jiggery could be achieved by doing a delayed - * rpmInitMacros(NULL, PER-PLATFORM-MACRO-FILE-NAMES); - */ - delMacro(NULL, "_target"); - addMacro(NULL, "_target", NULL, ct, RMIL_RPMRC); - delMacro(NULL, "_target_cpu"); - addMacro(NULL, "_target_cpu", NULL, ca, RMIL_RPMRC); - delMacro(NULL, "_target_os"); - addMacro(NULL, "_target_os", NULL, co, RMIL_RPMRC); -/* - * XXX Make sure that per-arch optflags is initialized correctly. - */ - { const char *optflags = rpmGetVarArch(RPMVAR_OPTFLAGS, ca); - if (optflags != NULL) { - delMacro(NULL, "optflags"); - addMacro(NULL, "optflags", NULL, optflags, RMIL_RPMRC); - } - } - - if (canontarget) - *canontarget = ct; - else - free(ct); - free(ca); - free(co); -} + /* Preset target macros */ + rpmRebuildTargetVars(&target); -void rpmFreeRpmrc(void) -{ - int i, j, k; + if (mfiles) { + mfiles = rpmExpand(mfiles, NULL); + rpmInitMacros(NULL, mfiles); + xfree(mfiles); - for (i = 0; i < RPM_MACHTABLE_COUNT; i++) { - struct tableType *t; - t = tables + i; - if (t->equiv.list) { - for (j = 0; j < t->equiv.count; j++) { - if (t->equiv.list[j].name) xfree(t->equiv.list[j].name); - } - xfree(t->equiv.list); - t->equiv.list = NULL; - t->equiv.count = 0; - } - if (t->cache.cache) { - for (j = 0; j < t->cache.size; j++) { - struct machCacheEntry *e; - e = t->cache.cache + j; - if (e == NULL) continue; - if (e->name) xfree(e->name); - if (e->equivs) { - for (k = 0; k < e->count; k++) { - if (e->equivs[k]) xfree(e->equivs[k]); - } - xfree(e->equivs); - } - } - xfree(t->cache.cache); - t->cache.cache = NULL; - t->cache.size = 0; - } - if (t->defaults) { - for (j = 0; j < t->defaultsLength; j++) { - if (t->defaults[j].name) xfree(t->defaults[j].name); - if (t->defaults[j].defName) xfree(t->defaults[j].defName); - } - xfree(t->defaults); - t->defaults = NULL; - t->defaultsLength = 0; - } - if (t->canons) { - for (j = 0; j < t->canonsLength; j++) { - if (t->canons[j].name) xfree(t->canons[j].name); - if (t->canons[j].short_name) xfree(t->canons[j].short_name); - } - xfree(t->canons); - t->canons = NULL; - t->canonsLength = 0; - } + /* Reset target macros */ + rpmRebuildTargetVars(&target); } - for (i = 0; i < RPMVAR_NUM; i++) { - struct rpmvarValue *this; - while ((this = values[i].next) != NULL) { - values[i].next = this->next; - if (this->value) xfree(this->value); - if (this->arch) xfree(this->arch); - xfree(this); - } - if (values[i].value) - xfree(values[i].value); - values[i].value = NULL; - if (values[i].arch) - xfree(values[i].arch); - values[i].arch = NULL; - } - if (current[OS]) - xfree(current[OS]); - current[OS] = NULL; - if (current[ARCH]) - xfree(current[ARCH]); - current[ARCH] = NULL; - defaultsInitialized = 0; - return; + return 0; } int rpmShowRC(FILE *fp) { - struct rpmOption *opt; - int i; - struct machEquivTable * equivTable; - - /* the caller may set the build arch which should be printed here */ - fprintf(fp, "ARCHITECTURE AND OS:\n"); - fprintf(fp, "build arch : %s\n", current[ARCH]); - - fprintf(fp, "compatible build archs:"); - equivTable = &tables[RPM_MACHTABLE_BUILDARCH].equiv; - for (i = 0; i < equivTable->count; i++) - fprintf(fp," %s", equivTable->list[i].name); - fprintf(fp, "\n"); - - fprintf(fp, "build os : %s\n", current[OS]); - - fprintf(fp, "compatible build os's :"); - equivTable = &tables[RPM_MACHTABLE_BUILDOS].equiv; - for (i = 0; i < equivTable->count; i++) - fprintf(fp," %s", equivTable->list[i].name); - fprintf(fp, "\n"); - - rpmSetTables(RPM_MACHTABLE_INSTARCH, RPM_MACHTABLE_INSTOS); - rpmSetMachine(NULL, NULL); /* XXX WTFO? Why bother? */ - - fprintf(fp, "install arch : %s\n", current[ARCH]); - fprintf(fp, "install os : %s\n", current[OS]); - - fprintf(fp, "compatible archs :"); - equivTable = &tables[RPM_MACHTABLE_INSTARCH].equiv; - for (i = 0; i < equivTable->count; i++) - fprintf(fp," %s", equivTable->list[i].name); - fprintf(fp, "\n"); - - fprintf(fp, "compatible os's :"); - equivTable = &tables[RPM_MACHTABLE_INSTOS].equiv; - for (i = 0; i < equivTable->count; i++) - fprintf(fp," %s", equivTable->list[i].name); - fprintf(fp, "\n"); - - fprintf(fp, "\nRPMRC VALUES:\n"); - for (i = 0, opt = optionTable; i < optionTableSize; i++, opt++) { - const char *s = rpmGetVar(opt->var); - if (s != NULL || rpmGetVerbosity() < RPMMESS_NORMAL) - fprintf(fp, "%-21s : %s\n", opt->name, s ? s : "(not set)"); - } - fprintf(fp, "\n"); - - fprintf(fp, "Features supported by rpmlib:\n"); - rpmShowRpmlibProvides(fp); - fprintf(fp, "\n"); - - rpmDumpMacroTable(NULL, fp); - return 0; } diff --git a/po/rpm.pot b/po/rpm.pot index 90961d25a..2dd8b01bd 100644 --- a/po/rpm.pot +++ b/po/rpm.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2000-08-14 09:19-0400\n" +"POT-Creation-Date: 2000-08-27 15:15-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" -#: build.c:25 lib/rpminstall.c:451 +#: build.c:25 lib/rpminstall.c:455 #, c-format msgid "cannot open %s/packages.rpm\n" msgstr "" @@ -28,39 +28,39 @@ msgstr "" msgid "Unable to open spec file %s: %s\n" msgstr "" -#: build.c:128 build.c:141 +#: build.c:126 build.c:139 #, c-format msgid "Failed to open tar pipe: %s\n" msgstr "" #. Give up -#: build.c:149 +#: build.c:147 #, c-format msgid "Failed to read spec file from %s\n" msgstr "" -#: build.c:176 +#: build.c:174 #, c-format msgid "Failed to rename %s to %s: %s\n" msgstr "" -#: build.c:216 +#: build.c:214 #, c-format msgid "File is not a regular file: %s\n" msgstr "" -#: build.c:223 +#: build.c:221 #, c-format msgid "File %s does not appear to be a specfile.\n" msgstr "" #. parse up the build operators -#: build.c:284 +#: build.c:282 #, c-format msgid "Building target platforms: %s\n" msgstr "" -#: build.c:299 +#: build.c:297 #, c-format msgid "Building for target %s\n" msgstr "" @@ -691,15 +691,15 @@ msgstr "" msgid "bin/src package (prep, compile, install, package)" msgstr "" -#: lib/poptBT.c:155 rpm.c:473 rpmqv.c:586 +#: lib/poptBT.c:156 rpm.c:473 rpmqv.c:586 msgid "skip straight to specified stage (only for c,i)" msgstr "" -#: lib/poptBT.c:145 rpm.c:475 rpmqv.c:588 +#: lib/poptBT.c:146 rpm.c:475 rpmqv.c:588 msgid "remove build tree when done" msgstr "" -#: lib/poptBT.c:151 rpm.c:477 rpmqv.c:590 +#: lib/poptBT.c:152 rpm.c:477 rpmqv.c:590 msgid "remove sources when done" msgstr "" @@ -1239,7 +1239,7 @@ msgstr "" msgid " Package specification options:" msgstr "" -#: lib/poptQV.c:62 rpmqv.c:433 +#: lib/poptQV.c:66 rpmqv.c:433 msgid "query/verify all packages" msgstr "" @@ -1424,644 +1424,644 @@ msgstr "" msgid "no tar files given for build" msgstr "" -#: build/build.c:110 build/pack.c:354 +#: build/build.c:111 build/pack.c:355 msgid "Unable to open temp file." msgstr "" -#: build/build.c:189 +#: build/build.c:190 #, c-format msgid "Executing(%s): %s\n" msgstr "" -#: build/build.c:195 +#: build/build.c:196 #, c-format msgid "Exec of %s failed (%s): %s" msgstr "" -#: build/build.c:203 +#: build/build.c:204 #, c-format msgid "Bad exit status from %s (%s)" msgstr "" -#: build/expression.c:211 +#: build/expression.c:207 msgid "syntax error while parsing ==" msgstr "" -#: build/expression.c:241 +#: build/expression.c:237 msgid "syntax error while parsing &&" msgstr "" -#: build/expression.c:250 +#: build/expression.c:246 msgid "syntax error while parsing ||" msgstr "" -#: build/expression.c:292 +#: build/expression.c:288 msgid "parse error in expression" msgstr "" -#: build/expression.c:321 +#: build/expression.c:317 msgid "unmatched (" msgstr "" -#: build/expression.c:339 +#: build/expression.c:335 msgid "undefined identifier" msgstr "" -#: build/expression.c:358 +#: build/expression.c:354 msgid "- only on numbers" msgstr "" -#: build/expression.c:374 +#: build/expression.c:370 msgid "! only on numbers" msgstr "" -#: build/expression.c:413 build/expression.c:458 build/expression.c:515 -#: build/expression.c:602 +#: build/expression.c:409 build/expression.c:454 build/expression.c:511 +#: build/expression.c:598 msgid "types must match" msgstr "" -#: build/expression.c:426 +#: build/expression.c:422 msgid "* / not suported for strings" msgstr "" -#: build/expression.c:474 +#: build/expression.c:470 msgid "- not suported for strings" msgstr "" -#: build/expression.c:615 +#: build/expression.c:611 msgid "&& and || not suported for strings" msgstr "" -#: build/expression.c:649 build/expression.c:697 +#: build/expression.c:645 build/expression.c:693 msgid "syntax error in expression" msgstr "" -#: build/files.c:204 +#: build/files.c:205 #, c-format msgid "TIMECHECK failure: %s\n" msgstr "" -#: build/files.c:249 build/files.c:331 build/files.c:494 +#: build/files.c:250 build/files.c:332 build/files.c:495 #, c-format msgid "Missing '(' in %s %s" msgstr "" -#: build/files.c:260 build/files.c:448 build/files.c:505 +#: build/files.c:261 build/files.c:449 build/files.c:506 #, c-format msgid "Missing ')' in %s(%s" msgstr "" -#: build/files.c:298 build/files.c:473 +#: build/files.c:299 build/files.c:474 #, c-format msgid "Invalid %s token: %s" msgstr "" -#: build/files.c:347 +#: build/files.c:348 #, c-format msgid "Non-white space follows %s(): %s" msgstr "" -#: build/files.c:385 +#: build/files.c:386 #, c-format msgid "Bad syntax: %s(%s)" msgstr "" -#: build/files.c:395 +#: build/files.c:396 #, c-format msgid "Bad mode spec: %s(%s)" msgstr "" -#: build/files.c:407 +#: build/files.c:408 #, c-format msgid "Bad dirmode spec: %s(%s)" msgstr "" -#: build/files.c:531 +#: build/files.c:532 msgid "Unusual locale length: \"%.*s\" in %%lang(%s)" msgstr "" -#: build/files.c:541 +#: build/files.c:542 msgid "Duplicate locale %.*s in %%lang(%s)" msgstr "" -#: build/files.c:666 +#: build/files.c:667 msgid "Hit limit for %%docdir" msgstr "" -#: build/files.c:672 +#: build/files.c:673 msgid "Only one arg for %%docdir" msgstr "" #. We already got a file -- error -#: build/files.c:700 +#: build/files.c:701 #, c-format msgid "Two files on one line: %s" msgstr "" -#: build/files.c:713 +#: build/files.c:714 #, c-format msgid "File must begin with \"/\": %s" msgstr "" -#: build/files.c:725 +#: build/files.c:726 msgid "Can't mix special %%doc with other forms: %s" msgstr "" -#: build/files.c:812 +#: build/files.c:813 #, c-format msgid "File listed twice: %s" msgstr "" -#: build/files.c:921 +#: build/files.c:922 #, c-format msgid "Symlink points to BuildRoot: %s -> %s" msgstr "" -#: build/files.c:1010 +#: build/files.c:1011 #, c-format msgid "File doesn't match prefix (%s): %s" msgstr "" -#: build/files.c:1020 +#: build/files.c:1021 #, c-format msgid "File not found: %s" msgstr "" -#: build/files.c:1063 +#: build/files.c:1064 #, c-format msgid "Bad owner/group: %s\n" msgstr "" -#: build/files.c:1075 +#: build/files.c:1076 #, c-format msgid "File %4d: %07o %s.%s\t %s\n" msgstr "" -#: build/files.c:1149 +#: build/files.c:1150 #, c-format msgid "File needs leading \"/\": %s" msgstr "" -#: build/files.c:1178 +#: build/files.c:1179 #, c-format msgid "File not found by glob: %s" msgstr "" -#: build/files.c:1230 +#: build/files.c:1231 msgid "Could not open %%files file %s: %s" msgstr "" -#: build/files.c:1239 build/pack.c:100 +#: build/files.c:1240 build/pack.c:101 #, c-format msgid "line: %s" msgstr "" -#: build/files.c:1566 +#: build/files.c:1567 #, c-format msgid "Bad file: %s: %s" msgstr "" -#: build/files.c:1578 build/parsePrep.c:34 +#: build/files.c:1579 build/parsePrep.c:35 #, c-format msgid "Bad owner/group: %s" msgstr "" #. XXX this error message is probably not seen. -#: build/files.c:1633 +#: build/files.c:1634 #, c-format msgid "Couldn't exec %s: %s" msgstr "" -#: build/files.c:1638 +#: build/files.c:1639 #, c-format msgid "Couldn't fork %s: %s" msgstr "" -#: build/files.c:1720 +#: build/files.c:1721 #, c-format msgid "%s failed" msgstr "" -#: build/files.c:1724 +#: build/files.c:1725 #, c-format msgid "failed to write all data to %s" msgstr "" -#: build/files.c:1820 +#: build/files.c:1821 #, c-format msgid "Finding %s: (using %s)...\n" msgstr "" -#: build/files.c:1848 build/files.c:1858 +#: build/files.c:1849 build/files.c:1859 #, c-format msgid "Failed to find %s:" msgstr "" -#: build/files.c:1968 +#: build/files.c:1969 #, c-format msgid "Processing files: %s-%s-%s\n" msgstr "" -#: build/names.c:46 build/names.c:79 +#: build/names.c:47 build/names.c:80 msgid "RPMERR_INTERNAL: Hit limit in getUname()\n" msgstr "" -#: build/names.c:113 build/names.c:146 +#: build/names.c:114 build/names.c:147 msgid "RPMERR_INTERNAL: Hit limit in getGname()\n" msgstr "" -#: build/names.c:186 +#: build/names.c:187 #, c-format msgid "Could not canonicalize hostname: %s\n" msgstr "" -#: build/pack.c:48 +#: build/pack.c:49 #, c-format msgid "create archive failed on file %s: %s" msgstr "" -#: build/pack.c:68 +#: build/pack.c:69 #, c-format msgid "cpio_copy write failed: %s" msgstr "" -#: build/pack.c:75 +#: build/pack.c:76 #, c-format msgid "cpio_copy read failed: %s" msgstr "" -#: build/pack.c:155 +#: build/pack.c:156 #, c-format msgid "Could not open PreIn file: %s" msgstr "" -#: build/pack.c:162 +#: build/pack.c:163 #, c-format msgid "Could not open PreUn file: %s" msgstr "" -#: build/pack.c:169 +#: build/pack.c:170 #, c-format msgid "Could not open PostIn file: %s" msgstr "" -#: build/pack.c:176 +#: build/pack.c:177 #, c-format msgid "Could not open PostUn file: %s" msgstr "" -#: build/pack.c:184 +#: build/pack.c:185 #, c-format msgid "Could not open VerifyScript file: %s" msgstr "" -#: build/pack.c:199 +#: build/pack.c:200 #, c-format msgid "Could not open Trigger script file: %s" msgstr "" -#: build/pack.c:226 +#: build/pack.c:227 #, c-format msgid "readRPM: open %s: %s\n" msgstr "" -#: build/pack.c:236 +#: build/pack.c:237 #, c-format msgid "readRPM: read %s: %s\n" msgstr "" -#: build/pack.c:257 +#: build/pack.c:258 #, c-format msgid "readRPM: %s is not an RPM package\n" msgstr "" -#: build/pack.c:263 +#: build/pack.c:264 #, c-format msgid "readRPM: reading header from %s\n" msgstr "" -#: build/pack.c:366 +#: build/pack.c:367 msgid "Bad CSA data" msgstr "" -#: build/pack.c:402 +#: build/pack.c:403 #, c-format msgid "Could not open %s: %s\n" msgstr "" -#: build/pack.c:434 +#: build/pack.c:437 #, c-format msgid "Unable to write package: %s" msgstr "" -#: build/pack.c:449 +#: build/pack.c:452 #, c-format msgid "Generating signature: %d\n" msgstr "" -#: build/pack.c:465 +#: build/pack.c:468 #, c-format msgid "Unable to open sigtarget %s: %s" msgstr "" -#: build/pack.c:475 +#: build/pack.c:478 #, c-format msgid "Unable to read sigtarget %s: %s" msgstr "" -#: build/pack.c:485 +#: build/pack.c:488 #, c-format msgid "Unable to write package %s: %s" msgstr "" -#: build/pack.c:500 +#: build/pack.c:503 #, c-format msgid "Wrote: %s\n" msgstr "" -#: build/pack.c:564 +#: build/pack.c:567 #, c-format msgid "Could not generate output filename for package %s: %s\n" msgstr "" -#: build/pack.c:581 +#: build/pack.c:584 #, c-format msgid "cannot create %s: %s\n" msgstr "" -#: build/parseBuildInstallClean.c:31 +#: build/parseBuildInstallClean.c:32 #, c-format msgid "line %d: second %s" msgstr "" -#: build/parseChangelog.c:108 +#: build/parseChangelog.c:109 msgid "%%changelog entries must start with *" msgstr "" -#: build/parseChangelog.c:116 +#: build/parseChangelog.c:117 msgid "incomplete %%changelog entry" msgstr "" -#: build/parseChangelog.c:131 +#: build/parseChangelog.c:132 msgid "bad date in %%changelog: %s" msgstr "" -#: build/parseChangelog.c:136 +#: build/parseChangelog.c:137 msgid "%%changelog not in decending chronological order" msgstr "" -#: build/parseChangelog.c:144 build/parseChangelog.c:155 +#: build/parseChangelog.c:145 build/parseChangelog.c:156 msgid "missing name in %%changelog" msgstr "" -#: build/parseChangelog.c:162 +#: build/parseChangelog.c:163 msgid "no description in %%changelog" msgstr "" -#: build/parseDescription.c:38 +#: build/parseDescription.c:39 msgid "line %d: Error parsing %%description: %s" msgstr "" -#: build/parseDescription.c:51 build/parseFiles.c:46 build/parseScript.c:173 +#: build/parseDescription.c:52 build/parseFiles.c:47 build/parseScript.c:174 #, c-format msgid "line %d: Bad option %s: %s" msgstr "" -#: build/parseDescription.c:64 build/parseFiles.c:58 build/parseScript.c:186 +#: build/parseDescription.c:65 build/parseFiles.c:59 build/parseScript.c:187 #, c-format msgid "line %d: Too many names: %s" msgstr "" -#: build/parseDescription.c:74 build/parseFiles.c:67 build/parseScript.c:196 +#: build/parseDescription.c:75 build/parseFiles.c:68 build/parseScript.c:197 #, c-format msgid "line %d: Package does not exist: %s" msgstr "" -#: build/parseDescription.c:86 +#: build/parseDescription.c:87 #, c-format msgid "line %d: Second description" msgstr "" -#: build/parseFiles.c:32 +#: build/parseFiles.c:33 msgid "line %d: Error parsing %%files: %s" msgstr "" -#: build/parseFiles.c:74 +#: build/parseFiles.c:75 msgid "line %d: Second %%files list" msgstr "" -#: build/parsePreamble.c:142 +#: build/parsePreamble.c:149 #, c-format msgid "Architecture is excluded: %s" msgstr "" -#: build/parsePreamble.c:147 +#: build/parsePreamble.c:154 #, c-format msgid "Architecture is not included: %s" msgstr "" -#: build/parsePreamble.c:152 +#: build/parsePreamble.c:159 #, c-format msgid "OS is excluded: %s" msgstr "" -#: build/parsePreamble.c:157 +#: build/parsePreamble.c:164 #, c-format msgid "OS is not included: %s" msgstr "" -#: build/parsePreamble.c:171 +#: build/parsePreamble.c:178 #, c-format msgid "%s field must be present in package: %s" msgstr "" -#: build/parsePreamble.c:196 +#: build/parsePreamble.c:203 #, c-format msgid "Duplicate %s entries in package: %s" msgstr "" -#: build/parsePreamble.c:244 +#: build/parsePreamble.c:251 #, c-format msgid "Unable to open icon %s: %s" msgstr "" -#: build/parsePreamble.c:262 +#: build/parsePreamble.c:269 #, c-format msgid "Unable to read icon %s: %s" msgstr "" -#: build/parsePreamble.c:275 +#: build/parsePreamble.c:282 #, c-format msgid "Unknown icon type: %s" msgstr "" -#: build/parsePreamble.c:338 +#: build/parsePreamble.c:345 #, c-format msgid "line %d: Malformed tag: %s" msgstr "" #. Empty field -#: build/parsePreamble.c:346 +#: build/parsePreamble.c:353 #, c-format msgid "line %d: Empty tag: %s" msgstr "" -#: build/parsePreamble.c:368 build/parsePreamble.c:375 +#: build/parsePreamble.c:375 build/parsePreamble.c:382 #, c-format msgid "line %d: Illegal char '-' in %s: %s" msgstr "" -#: build/parsePreamble.c:432 build/parseSpec.c:376 +#: build/parsePreamble.c:439 build/parseSpec.c:386 #, c-format msgid "BuildRoot can not be \"/\": %s" msgstr "" -#: build/parsePreamble.c:445 +#: build/parsePreamble.c:452 #, c-format msgid "line %d: Prefixes must not end with \"/\": %s" msgstr "" -#: build/parsePreamble.c:457 +#: build/parsePreamble.c:464 #, c-format msgid "line %d: Docdir must begin with '/': %s" msgstr "" -#: build/parsePreamble.c:469 +#: build/parsePreamble.c:476 #, c-format msgid "line %d: Epoch/Serial field must be a number: %s" msgstr "" -#: build/parsePreamble.c:527 +#: build/parsePreamble.c:534 #, c-format msgid "line %d: Bad BuildArchitecture format: %s" msgstr "" -#: build/parsePreamble.c:536 +#: build/parsePreamble.c:543 #, c-format msgid "Internal error: Bogus tag %d" msgstr "" -#: build/parsePreamble.c:675 +#: build/parsePreamble.c:682 #, c-format msgid "Bad package specification: %s" msgstr "" -#: build/parsePreamble.c:681 +#: build/parsePreamble.c:688 #, c-format msgid "Package already exists: %s" msgstr "" -#: build/parsePreamble.c:708 +#: build/parsePreamble.c:715 #, c-format msgid "line %d: Unknown tag: %s" msgstr "" -#: build/parsePreamble.c:733 +#: build/parsePreamble.c:740 msgid "Spec file can't use BuildRoot" msgstr "" -#: build/parsePrep.c:30 +#: build/parsePrep.c:31 #, c-format msgid "Bad source: %s: %s" msgstr "" -#: build/parsePrep.c:57 +#: build/parsePrep.c:58 #, c-format msgid "No patch number %d" msgstr "" -#: build/parsePrep.c:139 +#: build/parsePrep.c:140 #, c-format msgid "No source number %d" msgstr "" -#: build/parsePrep.c:158 +#: build/parsePrep.c:159 #, c-format msgid "Couldn't download nosource %s: %s" msgstr "" -#: build/parsePrep.c:224 +#: build/parsePrep.c:225 msgid "Error parsing %%setup: %s" msgstr "" -#: build/parsePrep.c:239 +#: build/parsePrep.c:240 msgid "line %d: Bad arg to %%setup %c: %s" msgstr "" -#: build/parsePrep.c:257 +#: build/parsePrep.c:258 msgid "line %d: Bad %%setup option %s: %s" msgstr "" -#: build/parsePrep.c:384 +#: build/parsePrep.c:385 msgid "line %d: Need arg to %%patch -b: %s" msgstr "" -#: build/parsePrep.c:392 +#: build/parsePrep.c:393 msgid "line %d: Need arg to %%patch -z: %s" msgstr "" -#: build/parsePrep.c:404 +#: build/parsePrep.c:405 msgid "line %d: Need arg to %%patch -p: %s" msgstr "" -#: build/parsePrep.c:410 +#: build/parsePrep.c:411 msgid "line %d: Bad arg to %%patch -p: %s" msgstr "" -#: build/parsePrep.c:417 +#: build/parsePrep.c:418 msgid "Too many patches!" msgstr "" -#: build/parsePrep.c:421 +#: build/parsePrep.c:422 msgid "line %d: Bad arg to %%patch: %s" msgstr "" -#: build/parsePrep.c:458 +#: build/parsePrep.c:459 msgid "line %d: second %%prep" msgstr "" -#: build/parseReqs.c:97 +#: build/parseReqs.c:98 #, c-format msgid "" "line %d: Dependency tokens must begin with alpha-numeric, '_' or '/': %s" msgstr "" -#: build/parseReqs.c:108 +#: build/parseReqs.c:109 #, c-format msgid "line %d: File name not permitted: %s" msgstr "" -#: build/parseReqs.c:140 +#: build/parseReqs.c:141 #, c-format msgid "line %d: Versioned file name not permitted: %s" msgstr "" -#: build/parseReqs.c:170 +#: build/parseReqs.c:171 #, c-format msgid "line %d: Version required: %s" msgstr "" -#: build/parseScript.c:141 +#: build/parseScript.c:142 #, c-format msgid "line %d: triggers must have --: %s" msgstr "" -#: build/parseScript.c:151 build/parseScript.c:214 +#: build/parseScript.c:152 build/parseScript.c:215 #, c-format msgid "line %d: Error parsing %s: %s" msgstr "" -#: build/parseScript.c:161 +#: build/parseScript.c:162 #, c-format msgid "line %d: script program must begin with '/': %s" msgstr "" -#: build/parseScript.c:205 +#: build/parseScript.c:206 #, c-format msgid "line %d: Second %s" msgstr "" -#: build/parseSpec.c:137 +#: build/parseSpec.c:136 #, c-format msgid "line %d: %s" msgstr "" @@ -2076,301 +2076,301 @@ msgstr "" msgid "Unclosed %%if" msgstr "" -#: build/parseSpec.c:261 +#: build/parseSpec.c:271 #, c-format msgid "%s:%d: parseExpressionBoolean returns %d" msgstr "" #. Got an else with no %if ! -#: build/parseSpec.c:269 +#: build/parseSpec.c:279 msgid "%s:%d: Got a %%else with no if" msgstr "" #. Got an end with no %if ! -#: build/parseSpec.c:280 +#: build/parseSpec.c:290 msgid "%s:%d: Got a %%endif with no if" msgstr "" -#: build/parseSpec.c:294 build/parseSpec.c:303 +#: build/parseSpec.c:304 build/parseSpec.c:313 msgid "malformed %%include statement" msgstr "" -#: build/parseSpec.c:471 +#: build/parseSpec.c:489 msgid "No buildable architectures" msgstr "" -#: build/parseSpec.c:520 +#: build/parseSpec.c:544 msgid "Package has no %%description: %s" msgstr "" -#: build/spec.c:35 +#: build/spec.c:36 #, c-format msgid "archive = %s, fs = %s\n" msgstr "" -#: build/spec.c:244 +#: build/spec.c:245 #, c-format msgid "line %d: Bad number: %s" msgstr "" -#: build/spec.c:250 +#: build/spec.c:251 #, c-format msgid "line %d: Bad no%s number: %d" msgstr "" -#: build/spec.c:309 +#: build/spec.c:310 #, c-format msgid "line %d: Bad %s number: %s\n" msgstr "" -#: lib/cpio.c:362 +#: lib/cpio.c:378 #, c-format msgid "can't rename %s to %s: %s\n" msgstr "" -#: lib/cpio.c:368 +#: lib/cpio.c:384 #, c-format msgid "can't unlink %s: %s\n" msgstr "" -#: lib/cpio.c:612 +#: lib/cpio.c:632 #, c-format msgid "getNextHeader: %s\n" msgstr "" -#: lib/cpio.c:1073 +#: lib/cpio.c:1093 #, c-format msgid "(error 0x%x)" msgstr "" -#: lib/cpio.c:1076 +#: lib/cpio.c:1096 msgid "Bad magic" msgstr "" -#: lib/cpio.c:1077 +#: lib/cpio.c:1097 msgid "Bad/unreadable header" msgstr "" -#: lib/cpio.c:1095 +#: lib/cpio.c:1115 msgid "Header size too big" msgstr "" -#: lib/cpio.c:1096 +#: lib/cpio.c:1116 msgid "Unknown file type" msgstr "" -#: lib/cpio.c:1097 +#: lib/cpio.c:1117 msgid "Missing hard link" msgstr "" -#: lib/cpio.c:1098 +#: lib/cpio.c:1118 msgid "Internal error" msgstr "" -#: lib/cpio.c:1107 +#: lib/cpio.c:1127 msgid " failed - " msgstr "" #. XXX legacy epoch-less requires/conflicts compatibility -#: lib/depends.c:456 +#: lib/depends.c:522 #, c-format msgid "" "the \"B\" dependency needs an epoch (assuming same as \"A\")\n" "\tA %s\tB %s\n" msgstr "" -#: lib/depends.c:485 +#: lib/depends.c:551 #, c-format msgid " %s A %s\tB %s\n" msgstr "" -#: lib/depends.c:825 +#: lib/depends.c:905 #, c-format msgid "%s: %-45s YES (added files)\n" msgstr "" -#: lib/depends.c:874 +#: lib/depends.c:964 #, c-format msgid "%s: %-45s YES (added provide)\n" msgstr "" -#: lib/depends.c:918 +#: lib/depends.c:1016 #, c-format msgid "%s: %-45s %-3s (cached)\n" msgstr "" -#: lib/depends.c:935 +#: lib/depends.c:1035 #, c-format msgid "%s: %-45s YES (rpmrc provides)\n" msgstr "" -#: lib/depends.c:951 +#: lib/depends.c:1052 #, c-format msgid "%s: %-45s YES (rpmlib provides)\n" msgstr "" -#: lib/depends.c:972 +#: lib/depends.c:1073 #, c-format msgid "%s: %-45s YES (db files)\n" msgstr "" -#: lib/depends.c:985 +#: lib/depends.c:1086 #, c-format msgid "%s: %-45s YES (db provides)\n" msgstr "" -#: lib/depends.c:998 +#: lib/depends.c:1099 #, c-format msgid "%s: %-45s NO\n" msgstr "" -#: lib/depends.c:1019 +#: lib/depends.c:1120 #, c-format msgid "%s: (%s, %s) added to Depends cache.\n" msgstr "" #. requirements are not satisfied. -#: lib/depends.c:1073 +#: lib/depends.c:1174 #, c-format msgid "package %s-%s-%s require not satisfied: %s\n" msgstr "" #. conflicts exist. -#: lib/depends.c:1140 +#: lib/depends.c:1241 #, c-format msgid "package %s conflicts: %s\n" msgstr "" -#: lib/depends.c:1266 +#: lib/depends.c:1367 #, c-format msgid "loop in prerequisite chain: %s" msgstr "" -#: lib/db1.c:96 lib/db3.c:441 +#: lib/db1.c:102 lib/db3.c:449 #, c-format msgid "db%d error(%d)" msgstr "" -#: lib/db1.c:98 lib/db3.c:443 +#: lib/db1.c:104 lib/db3.c:451 #, c-format msgid " performing %s" msgstr "" -#: lib/db1.c:390 +#: lib/db1.c:396 #, c-format msgid "closed db file %s\n" msgstr "" -#: lib/db1.c:393 +#: lib/db1.c:399 #, c-format msgid "removed db file %s\n" msgstr "" -#: lib/db1.c:424 +#: lib/db1.c:430 #, c-format msgid "bad db file %s" msgstr "" -#: lib/db1.c:429 +#: lib/db1.c:435 #, c-format msgid "opening db file %s mode 0x%x\n" msgstr "" #. XXX check errno validity -#: lib/db1.c:452 +#: lib/db1.c:458 #, c-format msgid "cannot get %s lock on database" msgstr "" -#: lib/db1.c:453 lib/db3.c:1104 +#: lib/db1.c:459 lib/db3.c:1112 msgid "exclusive" msgstr "" -#: lib/db1.c:453 lib/db3.c:1104 +#: lib/db1.c:459 lib/db3.c:1112 msgid "shared" msgstr "" -#: lib/db2.c:133 +#: lib/db2.c:137 #, c-format msgid "closed db environment %s/%s(%s)\n" msgstr "" -#: lib/db2.c:145 +#: lib/db2.c:149 #, c-format msgid "removed db environment %s/%s(%s)\n" msgstr "" -#: lib/db2.c:182 +#: lib/db2.c:186 #, c-format msgid "opening db environment %s/%s(%s) %s\n" msgstr "" -#: lib/db2.c:557 +#: lib/db2.c:561 #, c-format msgid "closed db index %s/%s(%s)\n" msgstr "" -#: lib/db2.c:635 +#: lib/db2.c:639 #, c-format msgid "opening db index %s/%s(%s) %s mode=0x%x\n" msgstr "" -#: lib/db3.c:257 +#: lib/db3.c:265 #, c-format msgid "dbiSetConfig: unrecognized db option: \"%s\" ignored\n" msgstr "" -#: lib/db3.c:285 +#: lib/db3.c:293 #, c-format msgid "%s has invalid numeric value, skipped\n" msgstr "" -#: lib/db3.c:293 +#: lib/db3.c:301 #, c-format msgid "%s has too large or too small long value, skipped\n" msgstr "" -#: lib/db3.c:301 +#: lib/db3.c:309 #, c-format msgid "%s has too large or too small integer value, skipped\n" msgstr "" -#: lib/db3.c:468 +#: lib/db3.c:476 #, c-format msgid "closed db environment %s/%s\n" msgstr "" -#: lib/db3.c:484 +#: lib/db3.c:492 #, c-format msgid "removed db environment %s/%s\n" msgstr "" -#: lib/db3.c:521 +#: lib/db3.c:529 #, c-format msgid "opening db environment %s/%s %s\n" msgstr "" -#: lib/db3.c:907 +#: lib/db3.c:915 #, c-format msgid "closed db index %s/%s\n" msgstr "" -#: lib/db3.c:997 +#: lib/db3.c:1005 #, c-format msgid "opening db index %s/%s %s mode=0x%x\n" msgstr "" -#: lib/db3.c:1102 +#: lib/db3.c:1110 #, c-format msgid "cannot get %s lock on %s/%s\n" msgstr "" -#: lib/db3.c:1109 +#: lib/db3.c:1117 #, c-format msgid "locked db index %s/%s\n" msgstr "" -#: lib/falloc.c:135 +#: lib/falloc.c:140 #, c-format msgid "" "free list corrupt (%u)- please run\n" @@ -2380,669 +2380,670 @@ msgid "" "if \"rpm --rebuilddb\" fails to correct the problem.\n" msgstr "" -#: lib/formats.c:69 lib/formats.c:86 lib/formats.c:106 lib/formats.c:138 -#: lib/header.c:2092 lib/header.c:2108 lib/header.c:2127 +#: lib/formats.c:86 lib/formats.c:112 lib/formats.c:141 lib/formats.c:182 +#: lib/header.c:2114 lib/header.c:2131 lib/header.c:2151 msgid "(not a number)" msgstr "" -#: lib/fs.c:56 +#: lib/fs.c:60 #, c-format msgid "mntctl() failed to return fugger size: %s" msgstr "" -#: lib/fs.c:91 lib/fs.c:261 +#: lib/fs.c:95 lib/fs.c:265 #, c-format msgid "failed to stat %s: %s" msgstr "" -#: lib/fs.c:127 +#: lib/fs.c:131 msgid "getting list of mounted filesystems\n" msgstr "" -#: lib/fs.c:132 +#: lib/fs.c:136 #, c-format msgid "failed to open %s: %s" msgstr "" -#: lib/fs.c:283 +#: lib/fs.c:287 #, c-format msgid "file %s is on an unknown device" msgstr "" #. This should not be allowed -#: lib/header.c:219 +#: lib/header.c:223 msgid "grabData() RPM_STRING_TYPE count must be 1.\n" msgstr "" -#: lib/header.c:250 lib/header.c:721 lib/install.c:324 +#: lib/header.c:254 lib/header.c:726 lib/install.c:351 #, c-format msgid "Data type %d not supported\n" msgstr "" -#: lib/header.c:1078 +#: lib/header.c:1089 #, c-format msgid "Bad count for headerAddEntry(): %d\n" msgstr "" -#: lib/header.c:1485 +#: lib/header.c:1499 #, c-format msgid "missing { after %" msgstr "" -#: lib/header.c:1513 +#: lib/header.c:1527 msgid "missing } after %{" msgstr "" -#: lib/header.c:1525 +#: lib/header.c:1539 msgid "empty tag format" msgstr "" -#: lib/header.c:1535 +#: lib/header.c:1549 msgid "empty tag name" msgstr "" -#: lib/header.c:1550 +#: lib/header.c:1564 msgid "unknown tag" msgstr "" -#: lib/header.c:1575 +#: lib/header.c:1589 msgid "] expected at end of array" msgstr "" -#: lib/header.c:1591 +#: lib/header.c:1605 msgid "unexpected ]" msgstr "" -#: lib/header.c:1593 +#: lib/header.c:1607 msgid "unexpected }" msgstr "" -#: lib/header.c:1648 +#: lib/header.c:1665 msgid "? expected in expression" msgstr "" -#: lib/header.c:1655 +#: lib/header.c:1672 msgid "{ expected after ? in expression" msgstr "" -#: lib/header.c:1666 lib/header.c:1701 +#: lib/header.c:1683 lib/header.c:1718 msgid "} expected in expression" msgstr "" -#: lib/header.c:1674 +#: lib/header.c:1691 msgid ": expected following ? subexpression" msgstr "" -#: lib/header.c:1688 +#: lib/header.c:1705 msgid "{ expected after : in expression" msgstr "" -#: lib/header.c:1709 +#: lib/header.c:1726 msgid "| expected at end of expression" msgstr "" -#: lib/header.c:1874 +#: lib/header.c:1893 msgid "(unknown type)" msgstr "" -#: lib/install.c:149 lib/uninstall.c:195 +#: lib/install.c:168 lib/uninstall.c:193 #, c-format msgid " file: %s action: %s\n" msgstr "" -#: lib/install.c:168 +#: lib/install.c:189 #, c-format msgid "user %s does not exist - using root" msgstr "" -#: lib/install.c:176 +#: lib/install.c:197 #, c-format msgid "group %s does not exist - using root" msgstr "" -#: lib/install.c:205 +#: lib/install.c:230 msgid "%%instchangelog value in macro file should be a number, but isn't" msgstr "" #. this would probably be a good place to check if disk space #. was used up - if so, we should return a different error -#: lib/install.c:580 +#. XXX FIXME: Fclose with libio destroys errno +#: lib/install.c:612 #, c-format msgid "unpacking of archive failed%s%s: %s" msgstr "" -#: lib/install.c:581 +#: lib/install.c:613 msgid " on file " msgstr "" -#: lib/install.c:625 +#: lib/install.c:657 msgid "installing a source package\n" msgstr "" -#: lib/install.c:645 +#: lib/install.c:677 #, c-format msgid "cannot create sourcedir %s" msgstr "" -#: lib/install.c:651 lib/install.c:681 +#: lib/install.c:683 lib/install.c:713 #, c-format msgid "cannot write to %s" msgstr "" -#: lib/install.c:655 +#: lib/install.c:687 #, c-format msgid "sources in: %s\n" msgstr "" -#: lib/install.c:675 +#: lib/install.c:707 #, c-format msgid "cannot create specdir %s" msgstr "" -#: lib/install.c:685 +#: lib/install.c:717 #, c-format msgid "spec file in: %s\n" msgstr "" -#: lib/install.c:719 lib/install.c:747 +#: lib/install.c:751 lib/install.c:779 msgid "source package contains no .spec file" msgstr "" -#: lib/install.c:769 +#: lib/install.c:801 #, c-format msgid "renaming %s to %s\n" msgstr "" -#: lib/install.c:771 lib/install.c:1044 lib/uninstall.c:28 +#: lib/install.c:803 lib/install.c:1070 lib/uninstall.c:40 #, c-format msgid "rename of %s to %s failed: %s" msgstr "" -#: lib/install.c:863 +#: lib/install.c:892 msgid "source package expected, binary found" msgstr "" -#: lib/install.c:913 +#: lib/install.c:939 #, c-format msgid "package: %s-%s-%s files test = %d\n" msgstr "" -#: lib/install.c:973 +#: lib/install.c:999 msgid "stopping install as we're running --test\n" msgstr "" -#: lib/install.c:978 +#: lib/install.c:1004 msgid "running preinstall script (if any)\n" msgstr "" -#: lib/install.c:1003 +#: lib/install.c:1029 #, c-format msgid "warning: %s created as %s" msgstr "" -#: lib/install.c:1040 +#: lib/install.c:1066 #, c-format msgid "warning: %s saved as %s" msgstr "" -#: lib/install.c:1128 +#: lib/install.c:1154 msgid "running postinstall scripts (if any)\n" msgstr "" -#: lib/misc.c:273 lib/misc.c:278 lib/misc.c:284 +#: lib/misc.c:277 lib/misc.c:282 lib/misc.c:288 #, c-format msgid "error creating temporary file %s" msgstr "" -#: lib/package.c:52 +#: lib/package.c:60 msgid "packaging version 1 is not supported by this version of RPM" msgstr "" -#: lib/package.c:112 +#: lib/package.c:120 msgid "" "only packaging with major numbers <= 4 is supported by this version of RPM" msgstr "" -#: lib/poptBT.c:82 +#: lib/poptBT.c:83 msgid "buildroot already specified" msgstr "" -#: lib/poptBT.c:108 +#: lib/poptBT.c:109 msgid "build through %%prep stage from spec file" msgstr "" -#: lib/poptBT.c:110 +#: lib/poptBT.c:111 msgid "build through %%build stage from spec file" msgstr "" -#: lib/poptBT.c:112 +#: lib/poptBT.c:113 msgid "build through %%install stage from spec file" msgstr "" -#: lib/poptBT.c:114 +#: lib/poptBT.c:115 msgid "verify %%files section from spec file" msgstr "" -#: lib/poptBT.c:116 +#: lib/poptBT.c:117 msgid "build source and binary package from spec file" msgstr "" -#: lib/poptBT.c:118 +#: lib/poptBT.c:119 msgid "build binary package from spec file" msgstr "" -#: lib/poptBT.c:120 +#: lib/poptBT.c:121 msgid "build source package from spec file" msgstr "" -#: lib/poptBT.c:123 +#: lib/poptBT.c:124 msgid "build through %%prep stage from tar ball" msgstr "" -#: lib/poptBT.c:125 +#: lib/poptBT.c:126 msgid "build through %%build stage from tar ball" msgstr "" -#: lib/poptBT.c:127 +#: lib/poptBT.c:128 msgid "build through %%install stage from tar ball" msgstr "" -#: lib/poptBT.c:129 +#: lib/poptBT.c:130 msgid "verify %%files section from tar ball" msgstr "" -#: lib/poptBT.c:131 +#: lib/poptBT.c:132 msgid "build source and binary package from tar ball" msgstr "" -#: lib/poptBT.c:133 +#: lib/poptBT.c:134 msgid "build binary package from tar ball" msgstr "" -#: lib/poptBT.c:135 +#: lib/poptBT.c:136 msgid "build source package from tar ball" msgstr "" -#: lib/poptBT.c:138 +#: lib/poptBT.c:139 msgid "build binary package from source package" msgstr "" -#: lib/poptBT.c:140 +#: lib/poptBT.c:141 msgid "build through %%install stage from source package" msgstr "" -#: lib/poptBT.c:143 +#: lib/poptBT.c:144 msgid "override build root" msgstr "" -#: lib/poptBT.c:147 +#: lib/poptBT.c:148 msgid "do not execute any stages of the build" msgstr "" -#: lib/poptBT.c:149 +#: lib/poptBT.c:150 msgid "do not accept I18N msgstr's from specfile" msgstr "" -#: lib/poptBT.c:153 +#: lib/poptBT.c:154 msgid "remove specfile when done" msgstr "" -#: lib/poptBT.c:157 +#: lib/poptBT.c:158 msgid "override target platform" msgstr "" -#: lib/poptBT.c:159 +#: lib/poptBT.c:160 msgid "lookup I18N strings in specfile catalog" msgstr "" -#: lib/poptQV.c:64 +#: lib/poptQV.c:68 msgid "query/verify package owning file" msgstr "" -#: lib/poptQV.c:66 +#: lib/poptQV.c:70 msgid "query/verify packages in group" msgstr "" -#: lib/poptQV.c:68 +#: lib/poptQV.c:72 msgid "query/verify a package file" msgstr "" -#: lib/poptQV.c:70 +#: lib/poptQV.c:74 msgid "rpm query mode" msgstr "" -#: lib/poptQV.c:74 +#: lib/poptQV.c:78 msgid "display known query tags" msgstr "" -#: lib/poptQV.c:76 +#: lib/poptQV.c:80 msgid "query a spec file" msgstr "" -#: lib/poptQV.c:78 +#: lib/poptQV.c:82 msgid "query the pacakges triggered by the package" msgstr "" -#: lib/poptQV.c:80 +#: lib/poptQV.c:84 msgid "rpm verify mode" msgstr "" -#: lib/poptQV.c:82 +#: lib/poptQV.c:86 msgid "rpm verify mode (legacy)" msgstr "" -#: lib/poptQV.c:84 +#: lib/poptQV.c:88 msgid "query the packages which require a capability" msgstr "" -#: lib/poptQV.c:86 +#: lib/poptQV.c:90 msgid "query the packages which provide a capability" msgstr "" -#: lib/poptQV.c:126 +#: lib/poptQV.c:130 msgid "list all configuration files" msgstr "" -#: lib/poptQV.c:128 +#: lib/poptQV.c:132 msgid "list all documentation files" msgstr "" -#: lib/poptQV.c:130 +#: lib/poptQV.c:134 msgid "dump basic file information" msgstr "" -#: lib/poptQV.c:132 +#: lib/poptQV.c:136 msgid "list files in package" msgstr "" -#: lib/poptQV.c:136 +#: lib/poptQV.c:140 msgid "use the following query format" msgstr "" -#: lib/poptQV.c:138 +#: lib/poptQV.c:142 msgid "substitute i18n sections into spec file" msgstr "" -#: lib/poptQV.c:140 +#: lib/poptQV.c:144 msgid "display the states of the listed files" msgstr "" -#: lib/poptQV.c:142 +#: lib/poptQV.c:146 msgid "display a verbose file listing" msgstr "" -#: lib/problems.c:76 +#: lib/problems.c:80 #, c-format msgid " is needed by %s-%s-%s\n" msgstr "" -#: lib/problems.c:79 +#: lib/problems.c:83 #, c-format msgid " conflicts with %s-%s-%s\n" msgstr "" -#: lib/problems.c:99 +#: lib/problems.c:103 #, c-format msgid "package %s-%s-%s is for a different architecture" msgstr "" -#: lib/problems.c:104 +#: lib/problems.c:108 #, c-format msgid "package %s-%s-%s is for a different operating system" msgstr "" -#: lib/problems.c:109 +#: lib/problems.c:113 #, c-format msgid "package %s-%s-%s is already installed" msgstr "" -#: lib/problems.c:114 +#: lib/problems.c:118 #, c-format msgid "path %s is not relocateable for package %s-%s-%s" msgstr "" -#: lib/problems.c:119 +#: lib/problems.c:123 #, c-format msgid "file %s conflicts between attemped installs of %s-%s-%s and %s-%s-%s" msgstr "" -#: lib/problems.c:125 +#: lib/problems.c:129 #, c-format msgid "" "file %s from install of %s-%s-%s conflicts with file from package %s-%s-%s" msgstr "" -#: lib/problems.c:131 +#: lib/problems.c:135 #, c-format msgid "package %s-%s-%s (which is newer than %s-%s-%s) is already installed" msgstr "" -#: lib/problems.c:137 +#: lib/problems.c:141 #, c-format msgid "installing package %s-%s-%s needs %ld%cb on the %s filesystem" msgstr "" -#: lib/problems.c:147 +#: lib/problems.c:151 #, c-format msgid "package %s-%s-%s pre-transaction syscall(s): %s failed: %s" msgstr "" -#: lib/problems.c:155 +#: lib/problems.c:159 #, c-format msgid "unknown error %d encountered while manipulating package %s-%s-%s" msgstr "" -#: lib/query.c:139 +#: lib/query.c:143 #, c-format msgid "error in format: %s\n" msgstr "" -#: lib/query.c:201 +#: lib/query.c:205 msgid "(contains no files)" msgstr "" -#: lib/query.c:260 +#: lib/query.c:264 msgid "normal " msgstr "" -#: lib/query.c:262 +#: lib/query.c:266 msgid "replaced " msgstr "" -#: lib/query.c:264 +#: lib/query.c:268 msgid "not installed " msgstr "" -#: lib/query.c:266 +#: lib/query.c:270 msgid "net shared " msgstr "" -#: lib/query.c:268 +#: lib/query.c:272 #, c-format msgid "(unknown %3d) " msgstr "" -#: lib/query.c:272 +#: lib/query.c:276 msgid "(no state) " msgstr "" -#: lib/query.c:289 lib/query.c:332 +#: lib/query.c:293 lib/query.c:336 msgid "package has neither file owner or id lists" msgstr "" -#: lib/query.c:376 +#: lib/query.c:380 #, c-format msgid "can't query %s: %s\n" msgstr "" #. XXX Fstrerror -#: lib/query.c:493 +#: lib/query.c:497 #, c-format msgid "open of %s failed: %s\n" msgstr "" -#: lib/query.c:511 +#: lib/query.c:515 msgid "old format source packages cannot be queried\n" msgstr "" -#: lib/query.c:520 lib/rpminstall.c:234 +#: lib/query.c:524 lib/rpminstall.c:238 #, c-format msgid "%s does not appear to be a RPM package\n" msgstr "" -#: lib/query.c:524 +#: lib/query.c:528 #, c-format msgid "query of %s failed\n" msgstr "" -#: lib/query.c:557 +#: lib/query.c:561 #, c-format msgid "query of specfile %s failed, can't parse\n" msgstr "" -#: lib/query.c:580 +#: lib/query.c:584 msgid "no packages\n" msgstr "" -#: lib/query.c:590 +#: lib/query.c:594 #, c-format msgid "group %s does not contain any packages\n" msgstr "" -#: lib/query.c:600 +#: lib/query.c:604 #, c-format msgid "no package triggers %s\n" msgstr "" -#: lib/query.c:610 +#: lib/query.c:614 #, c-format msgid "no package requires %s\n" msgstr "" -#: lib/query.c:621 +#: lib/query.c:625 #, c-format msgid "no package provides %s\n" msgstr "" -#: lib/query.c:651 +#: lib/query.c:655 #, c-format msgid "file %s: %s\n" msgstr "" -#: lib/query.c:654 +#: lib/query.c:658 #, c-format msgid "file %s is not owned by any package\n" msgstr "" -#: lib/query.c:680 +#: lib/query.c:684 #, c-format msgid "invalid package number: %s\n" msgstr "" -#: lib/query.c:683 +#: lib/query.c:687 #, c-format msgid "package record number: %u\n" msgstr "" -#: lib/query.c:687 +#: lib/query.c:691 #, c-format msgid "record %d could not be read\n" msgstr "" -#: lib/query.c:698 lib/rpminstall.c:464 +#: lib/query.c:702 lib/rpminstall.c:468 #, c-format msgid "package %s is not installed\n" msgstr "" -#: lib/rpmchecksig.c:31 +#: lib/rpmchecksig.c:34 #, c-format msgid "%s: open failed: %s\n" msgstr "" -#: lib/rpmchecksig.c:42 +#: lib/rpmchecksig.c:45 msgid "makeTempFile failed\n" msgstr "" -#: lib/rpmchecksig.c:74 +#: lib/rpmchecksig.c:77 #, c-format msgid "%s: Fwrite failed: %s\n" msgstr "" -#: lib/rpmchecksig.c:80 +#: lib/rpmchecksig.c:83 #, c-format msgid "%s: Fread failed: %s\n" msgstr "" -#: lib/rpmchecksig.c:113 lib/rpmchecksig.c:243 +#: lib/rpmchecksig.c:116 lib/rpmchecksig.c:246 #, c-format msgid "%s: readLead failed\n" msgstr "" -#: lib/rpmchecksig.c:118 +#: lib/rpmchecksig.c:121 #, c-format msgid "%s: Can't sign v1.0 RPM\n" msgstr "" -#: lib/rpmchecksig.c:122 +#: lib/rpmchecksig.c:125 #, c-format msgid "%s: Can't re-sign v2.0 RPM\n" msgstr "" -#: lib/rpmchecksig.c:130 lib/rpmchecksig.c:257 +#: lib/rpmchecksig.c:133 lib/rpmchecksig.c:260 #, c-format msgid "%s: rpmReadSignature failed\n" msgstr "" -#: lib/rpmchecksig.c:134 lib/rpmchecksig.c:262 +#: lib/rpmchecksig.c:137 lib/rpmchecksig.c:265 #, c-format msgid "%s: No signature available\n" msgstr "" -#: lib/rpmchecksig.c:167 +#: lib/rpmchecksig.c:170 #, c-format msgid "%s: writeLead failed: %s\n" msgstr "" -#: lib/rpmchecksig.c:173 +#: lib/rpmchecksig.c:176 #, c-format msgid "%s: rpmWriteSignature failed: %s\n" msgstr "" -#: lib/rpmchecksig.c:249 +#: lib/rpmchecksig.c:252 #, c-format msgid "%s: No signature available (v1.0 RPM)\n" msgstr "" -#: lib/rpmchecksig.c:412 +#: lib/rpmchecksig.c:415 msgid "NOT OK" msgstr "" -#: lib/rpmchecksig.c:413 lib/rpmchecksig.c:427 +#: lib/rpmchecksig.c:416 lib/rpmchecksig.c:430 msgid " (MISSING KEYS:" msgstr "" -#: lib/rpmchecksig.c:415 lib/rpmchecksig.c:429 +#: lib/rpmchecksig.c:418 lib/rpmchecksig.c:432 msgid ") " msgstr "" -#: lib/rpmchecksig.c:416 lib/rpmchecksig.c:430 +#: lib/rpmchecksig.c:419 lib/rpmchecksig.c:433 msgid " (UNTRUSTED KEYS:" msgstr "" -#: lib/rpmchecksig.c:418 lib/rpmchecksig.c:432 +#: lib/rpmchecksig.c:421 lib/rpmchecksig.c:435 msgid ")" msgstr "" -#: lib/rpmchecksig.c:426 +#: lib/rpmchecksig.c:429 msgid "OK" msgstr "" -#: lib/rpmdb.c:95 +#: lib/rpmdb.c:99 #, c-format msgid "dbiTagsInit: unrecognized tag name: \"%s\" ignored\n" msgstr "" -#: lib/rpmdb.c:258 +#: lib/rpmdb.c:262 msgid "" "\n" "--> This version of rpm was not compiled with support for \"%%_dbapi %d\".\n" @@ -3051,17 +3052,17 @@ msgid "" "\n" msgstr "" -#: lib/rpmdb.c:273 +#: lib/rpmdb.c:277 #, c-format msgid "cannot open %s index using db%d - %s (%d)" msgstr "" -#: lib/rpmdb.c:293 +#: lib/rpmdb.c:297 #, c-format msgid "cannot open %s index" msgstr "" -#: lib/rpmdb.c:308 +#: lib/rpmdb.c:312 #, c-format msgid "" "\n" @@ -3071,7 +3072,7 @@ msgid "" "\n" msgstr "" -#: lib/rpmdb.c:321 +#: lib/rpmdb.c:325 msgid "" "\n" "--> The configured %%_dbapi was db%d, but the rpm database is db%d format.\n" @@ -3081,7 +3082,7 @@ msgid "" "\n" msgstr "" -#: lib/rpmdb.c:336 +#: lib/rpmdb.c:340 msgid "" "\n" "--> The rpm database is in db%d format, not the suggested db%d format.\n" @@ -3092,751 +3093,656 @@ msgid "" "\n" msgstr "" -#: lib/rpmdb.c:404 +#: lib/rpmdb.c:408 #, c-format msgid "error(%d) getting \"%s\" records from %s index" msgstr "" -#: lib/rpmdb.c:522 +#: lib/rpmdb.c:526 #, c-format msgid "error(%d) storing record %s into %s" msgstr "" -#: lib/rpmdb.c:531 +#: lib/rpmdb.c:535 #, c-format msgid "error(%d) removing record %s from %s" msgstr "" -#: lib/rpmdb.c:766 lib/rpmdb.c:2293 +#: lib/rpmdb.c:770 lib/rpmdb.c:2304 msgid "no dbpath has been set" msgstr "" -#: lib/rpmdb.c:865 +#: lib/rpmdb.c:869 msgid "" "old format database is present; use --rebuilddb to generate a new format " "database" msgstr "" #. error -#: lib/rpmdb.c:1077 +#: lib/rpmdb.c:1081 #, c-format msgid "error(%d) counting packages" msgstr "" -#: lib/rpmdb.c:1136 lib/rpmdb.c:1663 lib/uninstall.c:97 +#: lib/rpmdb.c:1140 lib/rpmdb.c:1674 #, c-format msgid "%s: cannot read header at 0x%x" msgstr "" -#: lib/rpmdb.c:1716 +#: lib/rpmdb.c:1727 #, c-format msgid "removing 0 %s entries.\n" msgstr "" -#: lib/rpmdb.c:1727 +#: lib/rpmdb.c:1738 #, c-format msgid "removing \"%s\" from %s index.\n" msgstr "" -#: lib/rpmdb.c:1736 +#: lib/rpmdb.c:1747 #, c-format msgid "removing %d entries from %s index.\n" msgstr "" -#: lib/rpmdb.c:1878 +#: lib/rpmdb.c:1889 #, c-format msgid "error(%d) allocating new package instance" msgstr "" -#: lib/rpmdb.c:1935 +#: lib/rpmdb.c:1946 #, c-format msgid "adding 0 %s entries.\n" msgstr "" -#: lib/rpmdb.c:1951 +#: lib/rpmdb.c:1962 #, c-format msgid "adding \"%s\" to %s index.\n" msgstr "" -#: lib/rpmdb.c:1960 +#: lib/rpmdb.c:1971 #, c-format msgid "adding %d entries to %s index.\n" msgstr "" -#: lib/rpmdb.c:2318 +#: lib/rpmdb.c:2329 #, c-format msgid "rebuilding database %s into %s\n" msgstr "" -#: lib/rpmdb.c:2322 +#: lib/rpmdb.c:2333 #, c-format msgid "temporary database %s already exists" msgstr "" -#: lib/rpmdb.c:2328 +#: lib/rpmdb.c:2339 #, c-format msgid "creating directory %s\n" msgstr "" -#: lib/rpmdb.c:2330 +#: lib/rpmdb.c:2341 #, c-format msgid "error creating directory %s: %s" msgstr "" -#: lib/rpmdb.c:2337 +#: lib/rpmdb.c:2348 #, c-format msgid "opening old database with dbapi %d\n" msgstr "" -#: lib/rpmdb.c:2348 +#: lib/rpmdb.c:2359 #, c-format msgid "opening new database with dbapi %d\n" msgstr "" -#: lib/rpmdb.c:2371 +#: lib/rpmdb.c:2382 #, c-format msgid "record number %d in database is bad -- skipping." msgstr "" -#: lib/rpmdb.c:2403 +#: lib/rpmdb.c:2414 #, c-format msgid "cannot add record originally at %d" msgstr "" -#: lib/rpmdb.c:2421 +#: lib/rpmdb.c:2432 msgid "failed to rebuild database: original database remains in place\n" msgstr "" -#: lib/rpmdb.c:2429 +#: lib/rpmdb.c:2440 msgid "failed to replace old database with new database!\n" msgstr "" -#: lib/rpmdb.c:2431 +#: lib/rpmdb.c:2442 #, c-format msgid "replace files in %s with files from %s to recover" msgstr "" -#: lib/rpmdb.c:2441 +#: lib/rpmdb.c:2452 #, c-format msgid "removing directory %s\n" msgstr "" -#: lib/rpmdb.c:2443 +#: lib/rpmdb.c:2454 #, c-format msgid "failed to remove directory %s: %s\n" msgstr "" -#: lib/rpminstall.c:129 +#: lib/rpminstall.c:133 msgid "counting packages to install\n" msgstr "" -#: lib/rpminstall.c:133 +#: lib/rpminstall.c:137 #, c-format msgid "found %d packages\n" msgstr "" -#: lib/rpminstall.c:138 +#: lib/rpminstall.c:142 msgid "looking for packages to download\n" msgstr "" -#: lib/rpminstall.c:153 +#: lib/rpminstall.c:157 #, c-format msgid "skipping %s - rpmGlob failed(%d)\n" msgstr "" -#: lib/rpminstall.c:168 +#: lib/rpminstall.c:172 #, c-format msgid "Retrieving %s\n" msgstr "" #. XXX undefined %{name}/%{version}/%{release} here #. XXX %{_tmpdir} does not exist -#: lib/rpminstall.c:178 +#: lib/rpminstall.c:182 #, c-format msgid " ... as %s\n" msgstr "" -#: lib/rpminstall.c:182 +#: lib/rpminstall.c:186 #, c-format msgid "skipping %s - transfer failed - %s\n" msgstr "" -#: lib/rpminstall.c:209 +#: lib/rpminstall.c:213 #, c-format msgid "retrieved %d packages\n" msgstr "" -#: lib/rpminstall.c:220 lib/rpminstall.c:389 +#: lib/rpminstall.c:224 lib/rpminstall.c:393 #, c-format msgid "cannot open file %s: %s\n" msgstr "" -#: lib/rpminstall.c:238 lib/rpminstall.c:529 +#: lib/rpminstall.c:242 lib/rpminstall.c:533 #, c-format msgid "%s cannot be installed\n" msgstr "" -#: lib/rpminstall.c:253 +#: lib/rpminstall.c:257 #, c-format msgid "cannot open Packages database in %s\n" msgstr "" -#: lib/rpminstall.c:273 +#: lib/rpminstall.c:277 #, c-format msgid "package %s is not relocateable\n" msgstr "" -#: lib/rpminstall.c:318 +#: lib/rpminstall.c:322 #, c-format msgid "error reading from file %s\n" msgstr "" -#: lib/rpminstall.c:323 +#: lib/rpminstall.c:327 #, c-format msgid "file %s requires a newer version of RPM\n" msgstr "" -#: lib/rpminstall.c:340 +#: lib/rpminstall.c:344 #, c-format msgid "found %d source and %d binary packages\n" msgstr "" -#: lib/rpminstall.c:351 +#: lib/rpminstall.c:355 msgid "failed dependencies:\n" msgstr "" -#: lib/rpminstall.c:369 +#: lib/rpminstall.c:373 msgid "installing binary packages\n" msgstr "" -#: lib/rpminstall.c:467 +#: lib/rpminstall.c:471 #, c-format msgid "\"%s\" specifies multiple packages\n" msgstr "" -#: lib/rpminstall.c:490 +#: lib/rpminstall.c:494 msgid "removing these packages would break dependencies:\n" msgstr "" -#: lib/rpminstall.c:518 +#: lib/rpminstall.c:522 #, c-format msgid "cannot open %s: %s\n" msgstr "" -#: lib/rpminstall.c:524 +#: lib/rpminstall.c:528 #, c-format msgid "Installing %s\n" msgstr "" -#: lib/rpmlead.c:48 +#: lib/rpmlead.c:52 #, c-format msgid "read failed: %s (%d)" msgstr "" -#: lib/rpmrc.c:147 -#, c-format -msgid "missing second ':' at %s:%d" -msgstr "" - -#: lib/rpmrc.c:150 -#, c-format -msgid "missing architecture name at %s:%d" -msgstr "" - -#: lib/rpmrc.c:310 -#, c-format -msgid "Incomplete data line at %s:%d" -msgstr "" - -#: lib/rpmrc.c:314 -#, c-format -msgid "Too many args in data line at %s:%d" -msgstr "" - -#: lib/rpmrc.c:321 -#, c-format -msgid "Bad arch/os number: %s (%s:%d)" -msgstr "" - -#: lib/rpmrc.c:356 -#, c-format -msgid "Incomplete default line at %s:%d" -msgstr "" - -#: lib/rpmrc.c:361 -#, c-format -msgid "Too many args in default line at %s:%d" -msgstr "" - -#: lib/rpmrc.c:551 -#, c-format -msgid "Cannot expand %s" -msgstr "" - -#: lib/rpmrc.c:556 -#, c-format -msgid "Cannot read %s, HOME is too large." -msgstr "" - -#: lib/rpmrc.c:573 -#, c-format -msgid "Unable to open %s for reading: %s." -msgstr "" - -#. XXX Feof(fd) -#: lib/rpmrc.c:618 -#, c-format -msgid "Failed to read %s: %s." -msgstr "" - -#: lib/rpmrc.c:655 -#, c-format -msgid "missing ':' (found 0x%02x) at %s:%d" -msgstr "" - -#: lib/rpmrc.c:672 lib/rpmrc.c:746 -#, c-format -msgid "missing argument for %s at %s:%d" -msgstr "" - -#: lib/rpmrc.c:689 lib/rpmrc.c:711 -#, c-format -msgid "%s expansion failed at %s:%d \"%s\"" -msgstr "" - -#: lib/rpmrc.c:698 -#, c-format -msgid "cannot open %s at %s:%d: %s" -msgstr "" - -#: lib/rpmrc.c:738 -#, c-format -msgid "missing architecture for %s at %s:%d" -msgstr "" - -#: lib/rpmrc.c:805 -#, c-format -msgid "bad option '%s' at %s:%d" -msgstr "" - -#: lib/rpmrc.c:1176 -#, c-format -msgid "Unknown system: %s\n" -msgstr "" - -#: lib/rpmrc.c:1177 -msgid "Please contact rpm-list@redhat.com\n" -msgstr "" - -#: lib/signature.c:107 +#: lib/signature.c:111 #, c-format msgid "sigsize : %d\n" msgstr "" -#: lib/signature.c:108 +#: lib/signature.c:112 #, c-format msgid "Header + Archive: %d\n" msgstr "" -#: lib/signature.c:109 +#: lib/signature.c:113 #, c-format msgid "expected size : %d\n" msgstr "" -#: lib/signature.c:113 +#: lib/signature.c:117 msgid "file is not regular -- skipping size check\n" msgstr "" -#: lib/signature.c:135 +#: lib/signature.c:139 msgid "No signature\n" msgstr "" -#: lib/signature.c:138 +#: lib/signature.c:142 msgid "Old PGP signature\n" msgstr "" -#: lib/signature.c:150 +#: lib/signature.c:154 msgid "Old (internal-only) signature! How did you get that!?" msgstr "" -#: lib/signature.c:154 +#: lib/signature.c:158 msgid "New Header signature\n" msgstr "" #. 8-byte pad -#: lib/signature.c:161 lib/signature.c:203 +#: lib/signature.c:165 lib/signature.c:207 #, c-format msgid "Signature size: %d\n" msgstr "" -#: lib/signature.c:162 lib/signature.c:204 +#: lib/signature.c:166 lib/signature.c:208 #, c-format msgid "Signature pad : %d\n" msgstr "" -#: lib/signature.c:267 +#: lib/signature.c:271 #, c-format msgid "Couldn't exec pgp (%s)" msgstr "" -#: lib/signature.c:278 +#: lib/signature.c:282 msgid "pgp failed" msgstr "" #. PGP failed to write signature #. Just in case -#: lib/signature.c:285 +#: lib/signature.c:289 msgid "pgp failed to write signature" msgstr "" -#: lib/signature.c:290 +#: lib/signature.c:294 #, c-format msgid "PGP sig size: %d\n" msgstr "" -#: lib/signature.c:301 lib/signature.c:378 +#: lib/signature.c:305 lib/signature.c:382 msgid "unable to read the signature" msgstr "" -#: lib/signature.c:306 +#: lib/signature.c:310 #, c-format msgid "Got %d bytes of PGP sig\n" msgstr "" -#: lib/signature.c:344 lib/signature.c:687 +#: lib/signature.c:348 lib/signature.c:691 msgid "Couldn't exec gpg" msgstr "" -#: lib/signature.c:355 +#: lib/signature.c:359 msgid "gpg failed" msgstr "" #. GPG failed to write signature #. Just in case -#: lib/signature.c:362 +#: lib/signature.c:366 msgid "gpg failed to write signature" msgstr "" -#: lib/signature.c:367 +#: lib/signature.c:371 #, c-format msgid "GPG sig size: %d\n" msgstr "" -#: lib/signature.c:383 +#: lib/signature.c:387 #, c-format msgid "Got %d bytes of GPG sig\n" msgstr "" -#: lib/signature.c:410 +#: lib/signature.c:414 msgid "Generating signature using PGP.\n" msgstr "" -#: lib/signature.c:416 +#: lib/signature.c:420 msgid "Generating signature using GPG.\n" msgstr "" -#: lib/signature.c:493 lib/signature.c:555 +#: lib/signature.c:497 lib/signature.c:559 msgid "Could not run pgp. Use --nopgp to skip PGP checks." msgstr "" -#: lib/signature.c:553 lib/signature.c:626 +#: lib/signature.c:557 lib/signature.c:630 msgid "exec failed!\n" msgstr "" -#: lib/signature.c:628 +#: lib/signature.c:632 msgid "Could not run gpg. Use --nogpg to skip GPG checks." msgstr "" -#: lib/signature.c:716 +#: lib/signature.c:720 msgid "Couldn't exec pgp" msgstr "" #. @notreached@ #. This case should have been screened out long ago. -#: lib/signature.c:720 lib/signature.c:773 +#: lib/signature.c:724 lib/signature.c:777 msgid "Invalid %%_signature spec in macro file" msgstr "" -#: lib/signature.c:753 +#: lib/signature.c:757 msgid "You must set \"%%_gpg_name\" in your macro file" msgstr "" -#: lib/signature.c:765 +#: lib/signature.c:769 msgid "You must set \"%%_pgp_name\" in your macro file" msgstr "" -#: lib/transaction.c:413 +#: lib/transaction.c:425 #, c-format msgid "excluding file %s%s\n" msgstr "" -#: lib/transaction.c:439 lib/transaction.c:522 +#: lib/transaction.c:451 lib/transaction.c:534 #, c-format msgid "excluding directory %s\n" msgstr "" -#: lib/transaction.c:444 +#: lib/transaction.c:456 #, c-format msgid "relocating %s to %s\n" msgstr "" -#: lib/transaction.c:515 +#: lib/transaction.c:527 #, c-format msgid "relocating directory %s to %s\n" msgstr "" -#: lib/transaction.c:667 +#: lib/transaction.c:679 #, c-format msgid "%s skipped due to missingok flag\n" msgstr "" -#: lib/uninstall.c:42 +#: lib/uninstall.c:54 #, c-format msgid "cannot remove %s - directory not empty" msgstr "" -#: lib/uninstall.c:46 +#: lib/uninstall.c:58 #, c-format msgid "rmdir of %s failed: %s" msgstr "" -#: lib/uninstall.c:56 +#: lib/uninstall.c:68 #, c-format msgid "removal of %s failed: %s" msgstr "" -#: lib/uninstall.c:141 +#: lib/uninstall.c:133 #, c-format msgid "will remove files test = %d\n" msgstr "" -#: lib/uninstall.c:209 +#: lib/uninstall.c:217 msgid "running postuninstall script (if any)\n" msgstr "" -#: lib/uninstall.c:406 +#: lib/uninstall.c:419 #, c-format msgid "execution of %s-%s-%s script failed, exit status %d" msgstr "" -#: lib/verify.c:39 +#: lib/verify.c:43 msgid "don't verify files in package" msgstr "" -#: lib/verify.c:215 +#: lib/verify.c:219 msgid "package lacks both user name and id lists (this should never happen)" msgstr "" -#: lib/verify.c:233 +#: lib/verify.c:237 msgid "package lacks both group name and id lists (this should never happen)" msgstr "" -#: lib/verify.c:269 +#: lib/verify.c:273 #, c-format msgid "missing %s\n" msgstr "" -#: lib/verify.c:331 +#: lib/verify.c:335 #, c-format msgid "Unsatisfied dependencies for %s-%s-%s: " msgstr "" -#: rpmio/rpmio.c:529 +#: rpmio/rpmio.c:533 msgid "Success" msgstr "" -#: rpmio/rpmio.c:532 +#: rpmio/rpmio.c:536 msgid "Bad server response" msgstr "" -#: rpmio/rpmio.c:535 +#: rpmio/rpmio.c:539 msgid "Server IO error" msgstr "" -#: rpmio/rpmio.c:538 +#: rpmio/rpmio.c:542 msgid "Server timeout" msgstr "" -#: rpmio/rpmio.c:541 +#: rpmio/rpmio.c:545 msgid "Unable to lookup server host address" msgstr "" -#: rpmio/rpmio.c:544 +#: rpmio/rpmio.c:548 msgid "Unable to lookup server host name" msgstr "" -#: rpmio/rpmio.c:547 +#: rpmio/rpmio.c:551 msgid "Failed to connect to server" msgstr "" -#: rpmio/rpmio.c:550 +#: rpmio/rpmio.c:554 msgid "Failed to establish data connection to server" msgstr "" -#: rpmio/rpmio.c:553 +#: rpmio/rpmio.c:557 msgid "IO error to local file" msgstr "" -#: rpmio/rpmio.c:556 +#: rpmio/rpmio.c:560 msgid "Error setting remote server to passive mode" msgstr "" -#: rpmio/rpmio.c:559 +#: rpmio/rpmio.c:563 msgid "File not found on server" msgstr "" -#: rpmio/rpmio.c:562 +#: rpmio/rpmio.c:566 msgid "Abort in progress" msgstr "" -#: rpmio/rpmio.c:566 +#: rpmio/rpmio.c:570 msgid "Unknown or unexpected error" msgstr "" -#: rpmio/rpmio.c:1161 +#: rpmio/rpmio.c:1165 #, c-format msgid "logging into %s as %s, pw %s\n" msgstr "" -#: rpmio/macro.c:161 +#: rpmio/macro.c:166 #, c-format msgid "======================== active %d empty %d\n" msgstr "" #. XXX just in case -#: rpmio/macro.c:256 +#: rpmio/macro.c:261 #, c-format msgid "%3d>%*s(empty)" msgstr "" -#: rpmio/macro.c:291 +#: rpmio/macro.c:296 #, c-format msgid "%3d<%*s(empty)\n" msgstr "" -#: rpmio/macro.c:470 +#: rpmio/macro.c:475 msgid "Macro %%%s has unterminated body" msgstr "" -#: rpmio/macro.c:496 +#: rpmio/macro.c:501 msgid "Macro %%%s has illegal name (%%define)" msgstr "" -#: rpmio/macro.c:502 +#: rpmio/macro.c:507 msgid "Macro %%%s has unterminated opts" msgstr "" -#: rpmio/macro.c:507 +#: rpmio/macro.c:512 msgid "Macro %%%s has empty body" msgstr "" -#: rpmio/macro.c:512 +#: rpmio/macro.c:517 msgid "Macro %%%s failed to expand" msgstr "" -#: rpmio/macro.c:537 +#: rpmio/macro.c:542 msgid "Macro %%%s has illegal name (%%undefine)" msgstr "" -#: rpmio/macro.c:614 +#: rpmio/macro.c:619 msgid "Macro %%%s (%s) was not used below level %d" msgstr "" -#: rpmio/macro.c:698 +#: rpmio/macro.c:703 #, c-format msgid "Unknown option %c in %s(%s)" msgstr "" -#: rpmio/macro.c:854 +#: rpmio/macro.c:859 #, c-format msgid "Recursion depth(%d) greater than max(%d)" msgstr "" -#: rpmio/macro.c:920 rpmio/macro.c:936 +#: rpmio/macro.c:925 rpmio/macro.c:941 #, c-format msgid "Unterminated %c: %s" msgstr "" -#: rpmio/macro.c:976 +#: rpmio/macro.c:981 msgid "A %% is followed by an unparseable macro" msgstr "" -#: rpmio/macro.c:1102 +#: rpmio/macro.c:1107 msgid "Macro %%%.*s not found, skipping" msgstr "" -#: rpmio/macro.c:1183 +#: rpmio/macro.c:1188 msgid "Target buffer overflow" msgstr "" #. XXX Fstrerror -#: rpmio/macro.c:1363 rpmio/macro.c:1369 +#: rpmio/macro.c:1368 rpmio/macro.c:1374 #, c-format msgid "File %s: %s" msgstr "" -#: rpmio/macro.c:1372 +#: rpmio/macro.c:1377 #, c-format msgid "File %s is smaller than %d bytes" msgstr "" -#: rpmio/messages.c:55 +#: rpmio/messages.c:59 msgid "warning: " msgstr "" -#: rpmio/messages.c:64 +#: rpmio/messages.c:68 msgid "error: " msgstr "" -#: rpmio/messages.c:73 +#: rpmio/messages.c:77 msgid "fatal error: " msgstr "" -#: rpmio/messages.c:82 +#: rpmio/messages.c:86 msgid "internal error (rpm bug?): " msgstr "" -#: rpmio/rpmmalloc.c:9 +#: rpmio/rpmmalloc.c:13 #, c-format msgid "memory alloc (%u bytes) returned NULL.\n" msgstr "" -#: rpmio/url.c:88 +#: rpmio/url.c:92 #, c-format msgid "warning: u %p ctrl %p nrefs != 0 (%s %s)\n" msgstr "" -#: rpmio/url.c:105 +#: rpmio/url.c:109 #, c-format msgid "warning: u %p data %p nrefs != 0 (%s %s)\n" msgstr "" -#: rpmio/url.c:132 +#: rpmio/url.c:136 #, c-format msgid "warning: uCache[%d] %p nrefs(%d) != 1 (%s %s)\n" msgstr "" -#: rpmio/url.c:218 +#: rpmio/url.c:222 #, c-format msgid "Password for %s@%s: " msgstr "" -#: rpmio/url.c:243 rpmio/url.c:269 +#: rpmio/url.c:247 rpmio/url.c:273 #, c-format msgid "error: %sport must be a number\n" msgstr "" -#: rpmio/url.c:405 +#: rpmio/url.c:409 msgid "url port must be a number\n" msgstr "" -#: rpmio/url.c:445 +#: rpmio/url.c:449 #, c-format msgid "failed to open %s: %s\n" msgstr "" #. XXX Fstrerror -#: rpmio/url.c:462 +#: rpmio/url.c:466 #, c-format msgid "failed to create %s: %s\n" msgstr "" @@ -21,6 +21,8 @@ Requires: popt, bzip2 >= 0.9.0c-2 %ifnarch ia64 Requires: glibc >= 2.1.92 %endif +# XXX needed to avoid libdb.so.2 satisfied by compat/libc5 provides. +Requires: db1 = 1.85 BuildRequires: db3-devel BuildRequires: bzip2 >= 0.9.0c-2 BuildRequires: python-devel >= 1.5.2 @@ -129,6 +131,7 @@ mkdir -p $RPM_BUILD_ROOT/etc/rpm rm -rf $RPM_BUILD_ROOT %post +/sbin/ldconfig %ifos linux if [ ! -e /etc/rpm/macros -a -e /etc/rpmrc -a -f %{__prefix}/lib/rpm/convertrpmrc.sh ] then @@ -138,6 +141,8 @@ fi /bin/rpm --initdb %endif +%postun -p /sbin/ldconfig + %ifos linux %post devel -p /sbin/ldconfig %postun devel -p /sbin/ldconfig diff --git a/scripts/Makefile.in b/scripts/Makefile.in index e71282bcf..c5ef9d39d 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -97,7 +97,6 @@ LIBDIR = @LIBDIR@ LIBMISC = @LIBMISC@ LIBOBJS = @LIBOBJS@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@ -LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ |