openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2009
- 1 participants
- 754 discussions
Hello community,
here is the log from the commit of package doxygen for openSUSE:Factory
checked in at Wed May 6 18:37:39 CEST 2009.
--------
--- doxygen/doxygen.changes 2009-02-09 10:03:30.000000000 +0100
+++ /mounts/work_src_done/STABLE/doxygen/doxygen.changes 2009-05-04 13:26:04.000000000 +0200
@@ -1,0 +2,48 @@
+Mon May 4 13:17:40 CEST 2009 - mseben(a)suse.cz
+
+- updated to version 1.5.9
+ - New features
+ * Added new option LATEX_SOURCE_CODE, which when enabled adds
+ source code also to the latex output
+ * Included updates for the Finnish, Romanian, Korean, German,
+ Japanese, and Hongarian translation.
+ * Added translation support for Esperanto.
+ * Added class attribute to the \todo and \bug HTML
+ code so they can be customized via CSS.
+ * Added support for Æ and æ characters.
+
+ - Bug fixes (ids refer to the gnome bugzilla database)
+ * id 395169: Some links via tagfiles were not correct in
+ combination with CREATE_SUBDIRS=YES
+ * id 539080: Having the same comment for the declaration and
+ definition of a function could result in duplicate documentation
+ in case the indentation level was different.
+ * id 566713: Dot font was not removed even though DOT_CLEANUP was YES.
+ * id 566925: Fixed problem resolving symbolic links.
+ * id 567044: Fully qualified name was not shown correctly for
+ nested classes.
+ * id 567375: Fixed parse problem for typedefs with redundant braces.
+ * id 567535: Fixed problem when parsing operator%= for CLI/C++ code.
+ * id 567777: Fixed problem with latex output when using enums.
+ * id 567990: Doxygen could crash when there was a symlink in project.
+ * id 568237: Non-ascii values entered where not saved according
+ to the INPUT_ENCODING.
+ * id 568505: Fixed build problem for old Linux distributions.
+ * id 569478: Fixed line continuation issue with the Fortran parser.
+ * id 570960: C++ class defined in a .mm file was sometimes parsed
+ as Objective-C code.
+ * id 571013: In the wizard, editing a text field in the middle of
+ the text in the expert tab caused the cursor to jump to the end
+ of the line.
+ * id 571096: Fixed Objective-C parsing problem when multiple
+ protocol forward declarations are put on one line.
+ * id 571990: Fixed compiler issue with portable_iconv by moving
+ the function to a C file.
+ * id 572560: Fixed parse issue when a #define is inside an enum.
+ * id 572740: Fixed problem parsing C++ comments using line continuation.
+ * id 573057: Included update for Swedish translator and changed
+ the language code from SE to SV to comply with ISO 639.
+ * id 578382: When referring to a static variable or function
+ doxygen will now look at the file context in case of ambiguity.
+
+-------------------------------------------------------------------
doxywizard.changes: same change
calling whatdependson for head-i586
Old:
----
doxygen-1.5.8-64archs.patch
doxygen-1.5.8-arm.patch
doxygen-1.5.8-html.tar.bz2
doxygen-1.5.8-libpng.patch
doxygen-1.5.8-man.patch
doxygen-1.5.8-qtdir.patch
doxygen-1.5.8.src.tar.bz2
doxygen_manual-1.5.8.pdf.bz2
doxywizard-1.5.8-flex.patch
New:
----
doxygen-1.5.9-64archs.patch
doxygen-1.5.9-arm.patch
doxygen-1.5.9-html.tar.bz2
doxygen-1.5.9-libpng.patch
doxygen-1.5.9-man.patch
doxygen-1.5.9-qtdir.patch
doxygen-1.5.9.src.tar.bz2
doxygen_manual-1.5.9.pdf.bz2
doxywizard-1.5.9-flex.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ doxygen.spec ++++++
--- /var/tmp/diff_new_pack.O13291/_old 2009-05-06 18:36:37.000000000 +0200
+++ /var/tmp/diff_new_pack.O13291/_new 2009-05-06 18:36:37.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package doxygen (Version 1.5.8)
+# spec file for package doxygen (Version 1.5.9)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,8 +20,8 @@
Name: doxygen
BuildRequires: bison flex gcc-c++ libpng-devel
-Version: 1.5.8
-Release: 2
+Version: 1.5.9
+Release: 1
AutoReqProv: on
License: GPL v2 or later
Group: Development/Tools/Doc Generators
@@ -90,6 +90,50 @@
%attr(755,root,root) /usr/bin/*
%changelog
+* Mon May 04 2009 mseben(a)suse.cz
+- updated to version 1.5.9
+ - New features
+ * Added new option LATEX_SOURCE_CODE, which when enabled adds
+ source code also to the latex output
+ * Included updates for the Finnish, Romanian, Korean, German,
+ Japanese, and Hongarian translation.
+ * Added translation support for Esperanto.
+ * Added class attribute to the \todo and \bug HTML
+ code so they can be customized via CSS.
+ * Added support for Æ and æ characters.
+ - Bug fixes (ids refer to the gnome bugzilla database)
+ * id 395169: Some links via tagfiles were not correct in
+ combination with CREATE_SUBDIRS=YES
+ * id 539080: Having the same comment for the declaration and
+ definition of a function could result in duplicate documentation
+ in case the indentation level was different.
+ * id 566713: Dot font was not removed even though DOT_CLEANUP was YES.
+ * id 566925: Fixed problem resolving symbolic links.
+ * id 567044: Fully qualified name was not shown correctly for
+ nested classes.
+ * id 567375: Fixed parse problem for typedefs with redundant braces.
+ * id 567535: Fixed problem when parsing operator%%= for CLI/C++ code.
+ * id 567777: Fixed problem with latex output when using enums.
+ * id 567990: Doxygen could crash when there was a symlink in project.
+ * id 568237: Non-ascii values entered where not saved according
+ to the INPUT_ENCODING.
+ * id 568505: Fixed build problem for old Linux distributions.
+ * id 569478: Fixed line continuation issue with the Fortran parser.
+ * id 570960: C++ class defined in a .mm file was sometimes parsed
+ as Objective-C code.
+ * id 571013: In the wizard, editing a text field in the middle of
+ the text in the expert tab caused the cursor to jump to the end
+ of the line.
+ * id 571096: Fixed Objective-C parsing problem when multiple
+ protocol forward declarations are put on one line.
+ * id 571990: Fixed compiler issue with portable_iconv by moving
+ the function to a C file.
+ * id 572560: Fixed parse issue when a #define is inside an enum.
+ * id 572740: Fixed problem parsing C++ comments using line continuation.
+ * id 573057: Included update for Swedish translator and changed
+ the language code from SE to SV to comply with ISO 639.
+ * id 578382: When referring to a static variable or function
+ doxygen will now look at the file context in case of ambiguity.
* Mon Feb 09 2009 olh(a)suse.de
- compile with RPM_OPT_FLAGS again
- apply 64bit patch unconditionally
@@ -396,7 +440,7 @@
* Wed May 16 2001 cihlar(a)suse.cz
- update to version 1.2.7
- fixed warnings on ia64
-* Sun Mar 18 2001 ro(a)suse.de
+* Mon Mar 19 2001 ro(a)suse.de
- fixed neededforbuild
* Mon Mar 12 2001 cihlar(a)suse.cz
- update to version 1.2.6
@@ -423,7 +467,7 @@
* Tue Aug 15 2000 garloff(a)suse.de
- Update to stable version 1.2.1.
- No need for using -g for release version any longer.
-* Tue Jul 04 2000 garloff(a)suse.de
+* Wed Jul 05 2000 garloff(a)suse.de
- Update to doxygen-1.1.5: Many bugfixes (last pre-1.2)
- Documentation (.ps,.pdf) is now being build from the sources
* Tue Jun 27 2000 garloff(a)suse.de
++++++ doxywizard.spec ++++++
--- /var/tmp/diff_new_pack.O13291/_old 2009-05-06 18:36:37.000000000 +0200
+++ /var/tmp/diff_new_pack.O13291/_new 2009-05-06 18:36:37.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package doxywizard (Version 1.5.8)
+# spec file for package doxywizard (Version 1.5.9)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,8 +20,8 @@
Name: doxywizard
BuildRequires: bison flex libdrm-devel libjpeg-devel libqt4-devel update-desktop-files
-Version: 1.5.8
-Release: 2
+Version: 1.5.9
+Release: 1
AutoReqProv: on
Requires: doxygen = %{version}
License: GPL v2 or later
@@ -84,6 +84,50 @@
%attr(444,root,root) %doc %{_mandir}/man1/doxywizard.1.gz
%changelog
+* Mon May 04 2009 mseben(a)suse.cz
+- updated to version 1.5.9
+ - New features
+ * Added new option LATEX_SOURCE_CODE, which when enabled adds
+ source code also to the latex output
+ * Included updates for the Finnish, Romanian, Korean, German,
+ Japanese, and Hongarian translation.
+ * Added translation support for Esperanto.
+ * Added class attribute to the \todo and \bug HTML
+ code so they can be customized via CSS.
+ * Added support for Æ and æ characters.
+ - Bug fixes (ids refer to the gnome bugzilla database)
+ * id 395169: Some links via tagfiles were not correct in
+ combination with CREATE_SUBDIRS=YES
+ * id 539080: Having the same comment for the declaration and
+ definition of a function could result in duplicate documentation
+ in case the indentation level was different.
+ * id 566713: Dot font was not removed even though DOT_CLEANUP was YES.
+ * id 566925: Fixed problem resolving symbolic links.
+ * id 567044: Fully qualified name was not shown correctly for
+ nested classes.
+ * id 567375: Fixed parse problem for typedefs with redundant braces.
+ * id 567535: Fixed problem when parsing operator%%= for CLI/C++ code.
+ * id 567777: Fixed problem with latex output when using enums.
+ * id 567990: Doxygen could crash when there was a symlink in project.
+ * id 568237: Non-ascii values entered where not saved according
+ to the INPUT_ENCODING.
+ * id 568505: Fixed build problem for old Linux distributions.
+ * id 569478: Fixed line continuation issue with the Fortran parser.
+ * id 570960: C++ class defined in a .mm file was sometimes parsed
+ as Objective-C code.
+ * id 571013: In the wizard, editing a text field in the middle of
+ the text in the expert tab caused the cursor to jump to the end
+ of the line.
+ * id 571096: Fixed Objective-C parsing problem when multiple
+ protocol forward declarations are put on one line.
+ * id 571990: Fixed compiler issue with portable_iconv by moving
+ the function to a C file.
+ * id 572560: Fixed parse issue when a #define is inside an enum.
+ * id 572740: Fixed problem parsing C++ comments using line continuation.
+ * id 573057: Included update for Swedish translator and changed
+ the language code from SE to SV to comply with ISO 639.
+ * id 578382: When referring to a static variable or function
+ doxygen will now look at the file context in case of ambiguity.
* Mon Feb 09 2009 olh(a)suse.de
- compile with RPM_OPT_FLAGS again
- apply 64bit patch unconditionally
++++++ doxygen-1.5.8-64archs.patch -> doxygen-1.5.9-64archs.patch ++++++
++++++ doxygen-1.5.8-arm.patch -> doxygen-1.5.9-arm.patch ++++++
++++++ doxygen-1.5.8-html.tar.bz2 -> doxygen-1.5.9-html.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/arch.html new/doxygen-1.5.9/html/arch.html
--- old/doxygen-1.5.8/html/arch.html 2008-12-27 10:38:14.000000000 +0100
+++ new/doxygen-1.5.9/html/arch.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="arch">Doxygen's Internals </a></h1><h3>Doxygen's internals</h3>
<p>
@@ -107,8 +107,8 @@
$now = time;
utime $now, $now, $file
</pre></div> </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:14 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/autolink.html new/doxygen-1.5.9/html/autolink.html
--- old/doxygen-1.5.8/html/autolink.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/autolink.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="autolink">Automatic link generation </a></h1>Most documentation systems have special `see also' sections where links to other pieces of documentation can be inserted. Although doxygen also has a command to start such a section (See section <a class="el" href="commands.html#cmdsa">\sa</a>), it does allow you to put these kind of links anywhere in the documentation. For <img class="formulaInl" alt="$\mbox{\LaTeX}$" src="form_0.png"> documentation a reference to the page number is written instead of a link. Furthermore, the index at the end of the document can be used to quickly find the documentation of a member, class, namespace or file. For man pages no reference information is generated.<p>
The next sections show how to generate links to the various documented entities in a source file.<h2><a class="anchor" name="linkurl">
@@ -185,8 +185,8 @@
for the corresponding HTML documentation that is generated by Doxygen.
</dd></dl>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/commands.html new/doxygen-1.5.9/html/commands.html
--- old/doxygen-1.5.8/html/commands.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/commands.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="commands">Special Commands </a></h1><h2><a class="anchor" name="cmd_intro">
Introduction</a></h2>
@@ -1330,8 +1330,8 @@
</ul>
<hr>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/config.html new/doxygen-1.5.9/html/config.html
--- old/doxygen-1.5.8/html/config.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/config.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="config">Configuration </a></h1><h2><a class="anchor" name="config_format">
Format</a></h2>
@@ -398,8 +398,25 @@
</HEAD>
<BODY BGCOLOR="#FFFFFF">
</pre></div> If the tag is left blank doxygen will generate a standard header.<p>
-The following commands have a special meaning inside the header: <code>$title</code>, <code>$datetime</code>, <code>$date</code>, <code>$doxygenversion</code>, <code>$projectname</code>, and <code>$projectnumber</code>. Doxygen will replace them by respectively the title of the page, the current date and time, only the current date, the version number of doxygen, the project name (see <code>PROJECT_NAME</code>), or the project number (see <code>PROJECT_NUMBER</code>).<p>
-If <code>CREATE_SUBDIRS</code> is enabled, the command <code>$relpath$</code> can be used to produce a relative path to the root of the HTML output directory, e.g. use $relpath$doxygen.css, to refer to the standard style sheet.<p>
+The following markers have a special meaning inside the header and footer: <dl>
+<dt><code>$title</code></dt>
+<dd>will be replaced with the title of the page. </dd>
+<dt><code>$datetime</code></dt>
+<dd>will be replaced with current the date and time. </dd>
+<dt><code>$date</code></dt>
+<dd>will be replaced with the current date. </dd>
+<dt><code>$year</code></dt>
+<dd>will be replaces with the current year. </dd>
+<dt><code>$doxygenversion</code></dt>
+<dd>will be replaced with the version of doxygen </dd>
+<dt><code>$projectname</code></dt>
+<dd>will be replaced with the name of the project (see <code>PROJECT_NAME</code>) </dd>
+<dt><code>$projectnumber</code></dt>
+<dd>will be replaced with the project number (see <code>PROJECT_NUMBER</code>) </dd>
+<dt><code>$relpath$</code></dt>
+<dd>If <code>CREATE_SUBDIRS</code> is enabled, the command <code>$relpath$</code> can be used to produce a relative path to the root of the HTML output directory, e.g. use $relpath$doxygen.css, to refer to the standard style sheet. </dd>
+</dl>
+<p>
See also section <a class="el" href="doxygen_usage.html">Doxygen usage</a> for information on how to generate the default header that doxygen normally uses.<p>
<a class="anchor" name="cfg_html_footer"></a> </dd>
<dt><code>HTML_FOOTER</code> </dt>
@@ -869,8 +886,8 @@
Q_VARIANT_AS
</pre></div><p>
Here doxygen's preprocessor is used to substitute some macro names that are normally substituted by the C preprocessor, but without doing full macro expansion. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/custcmd.html new/doxygen-1.5.9/html/custcmd.html
--- old/doxygen-1.5.8/html/custcmd.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/custcmd.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="custcmd">Custom Commands </a></h1>Doxygen provides a large number of <a class="el" href="commands.html">special commands</a>, <a class="el" href="xmlcmds.html">XML commands</a>, and <a class="el" href="htmlcmds.html">HTML commands</a>. that can be used to enhance or structure the documentation inside a comment block. If you for some reason have a need to define new commands you can do so by means of an <em>alias</em> definition.<p>
The definition of an alias should be specified in the configuration file using the <a class="el" href="config.html#cfg_aliases">ALIASES</a> configuration tag.<h2><a class="anchor" name="custcmd_simple">
@@ -55,8 +55,8 @@
</pre></div> which will expand to <div class="fragment"><pre class="fragment">
/** This is a <b>bold <em>and</em> Emphasized</b> text fragment. */
</pre></div> </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/customize.html new/doxygen-1.5.9/html/customize.html
--- old/doxygen-1.5.8/html/customize.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/customize.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="customize">Customizing the output </a></h1>Doxygen provides various levels of customization. The <a class="el" href="customize.html#minor_tweaks">first section</a> discusses what to do if you want to do minor tweaker to the look and feel of the output. The <a class="el" href="customize.html#layout">next</a> section show how to reorder and hide certain information on a page. The <a class="el" href="customize.html#xmlgenerator">last</a> section show how to generate whatever output you want based on the XML output produced by doxygen.<h2><a class="anchor" name="minor_tweaks">
Minor Tweaks</a></h2>
@@ -110,8 +110,8 @@
The XML output consists of an index file named <code>index.xml</code> which lists all items extracted by doxygen with references to the other XML files for details. The structure of the index is described by a schema file <code>index.xsd</code>. All other XML files are described by the schema file named <code>compound.xsd</code>. If you prefer one big XML file you can combine the index and the other files using the XSLT file <code>combine.xslt</code>.<p>
You can use any XML parser to parse the file or use the one that can be found in the <code>addon/doxmlparser</code> directory of doxygen source distribution. Look at <code>addon/doxmlparser/include/doxmlintf.h</code> for the interface of the parser and in <code>addon/doxmlparser/example</code> for examples.<p>
The advantage of using the doxmlparser is that it will only read the index file into memory and then only those XML files that you implicitly load via navigating through the index. As a result this works even for very large projects where reading all XML files as one big DOM tree would not fit into memory. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/diagrams.html new/doxygen-1.5.9/html/diagrams.html
--- old/doxygen-1.5.8/html/diagrams.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/diagrams.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="diagrams">Graphs and diagrams </a></h1>Doxygen has built-in support to generate inheritance diagrams for C++ classes.<p>
Doxygen can use the "dot" tool from graphviz to generate more advanced diagrams and graphs. Graphviz is an open-source, cross-platform graph drawing toolkit and can be found at <a href="http://www.graphviz.org/">http://www.graphviz.org/</a><p>
@@ -116,8 +116,8 @@
Go to the <a href="preprocessing.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/docblocks.html new/doxygen-1.5.9/html/docblocks.html
--- old/doxygen-1.5.8/html/docblocks.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/docblocks.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="docblocks">Documenting the code </a></h1><h2><a class="anchor" name="specialblock">
Special documentation blocks</a></h2>
@@ -37,7 +37,7 @@
is also valid.<p>
</li>
<li>
-A third alternative is to use a block of at least two C++ comment lines, where each line starts with an additional slash or an exclamation mark. Here are examples of the two cases:<p>
+A third alternative is to use a block of <em>at least two</em> C++ comment lines, where each line starts with an additional slash or an exclamation mark. Here are examples of the two cases:<p>
<div class="fragment"><pre class="fragment">
///
/// ... text ...
@@ -49,6 +49,7 @@
//!... text ...
//!
</pre></div><p>
+Note that a blank line ends a documentation block in this case.<p>
</li>
<li>
<p>
@@ -522,8 +523,8 @@
for the corresponding HTML documentation that is generated by doxygen.
<p>
To get proper looking output you need to set <a class="el" href="config.html#cfg_optimize_output_vhdl">OPTIMIZE_OUTPUT_VHDL</a> to <code>YES</code> in the config file. This will also affect a number of other settings. When they were not already set correctly doxygen will produce a warning telling which settings where overruled. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/doxygen_usage.html new/doxygen-1.5.9/html/doxygen_usage.html
--- old/doxygen-1.5.8/html/doxygen_usage.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/doxygen_usage.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="doxygen_usage">Doxygen usage </a></h1>Doxygen is a command line based utility. Calling <code>doxygen</code> with the <code>--help</code> option at the command line will give you a brief description of the usage of the program.<p>
All options consist of a leading character <code>-</code>, followed by one character and one or more arguments depending on the option.<p>
@@ -49,8 +49,8 @@
To make doxygen read/write to standard input/output instead of from/to a file, use <code>-</code> for the file name. </li>
</ul>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/doxytag_usage.html new/doxygen-1.5.9/html/doxytag_usage.html
--- old/doxygen-1.5.8/html/doxytag_usage.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/doxytag_usage.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="doxytag_usage">Doxytag usage </a></h1>Doxytag is a small command line based utility. It can generate <em>tag files</em>. These tag files can be used with <a href="doxygen_usage.html">doxygen</a> to generate references to external documentation (i.e. documentation not contained in the input files that are used by doxygen).<p>
A tag file contains information about files, classes and members documented in external documentation. Doxytag extracts this information directly from the HTML files. This has the advantage that you do not need to have the sources from which the documentation was extracted.<p>
@@ -54,8 +54,8 @@
doxytag -t qt.tag $QTDIR/doc/html
</pre></div> </dd></dl>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/doxywizard_usage.html new/doxygen-1.5.9/html/doxywizard_usage.html
--- old/doxygen-1.5.8/html/doxywizard_usage.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/doxywizard_usage.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="doxywizard_usage">Doxywizard usage </a></h1>Doxywizard is a GUI front-end for configuring and running doxygen.<p>
When you start doxywizard it will display the main window (the actual look depends on the OS used).<p>
@@ -84,8 +84,8 @@
<dd>Restores the factory defaults as the default settings to use. You will be asked to confirm the action. </dd>
</dl>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/external.html new/doxygen-1.5.9/html/external.html
--- old/doxygen-1.5.8/html/external.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/external.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="external">Linking to external documentation </a></h1>If your project depends on external libraries or tools, there are several reasons to not include all sources for these with every run of doxygen:<p>
<dl>
@@ -67,8 +67,8 @@
Go to the <a href="faq.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/faq.html new/doxygen-1.5.9/html/faq.html
--- old/doxygen-1.5.8/html/faq.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/faq.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="faq">Frequently Asked Questions </a></h1><ol>
<li>
@@ -172,8 +172,8 @@
Go to the <a href="trouble.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/features.html new/doxygen-1.5.9/html/features.html
--- old/doxygen-1.5.8/html/features.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/features.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="features">Features </a></h1> <ul>
<li>
@@ -60,8 +60,8 @@
<p>
Although doxygen can now be used in any project written in a language that is supported by doxygen, initially it was specifically designed to be used for projects that make use of Qt Software's <a href="http://www.trolltech.com/products/qt.html">Qt toolkit</a>. I have tried to make doxygen `Qt-compatible'. That is: Doxygen can read the documentation contained in the Qt source code and create a class browser that looks quite similar to the one that is generated by Qt Software. Doxygen understands the C++ extensions used by Qt such as signals and slots and many of the markup commands used in the Qt sources.<p>
Doxygen can also automatically generate links to existing documentation that was generated with Doxygen or with Qt's non-public class browser generator. For a Qt based project this means that whenever you refer to members or classes belonging to the Qt toolkit, a link will be generated to the Qt documentation. This is done independent of where this documentation is located! </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/formulas.html new/doxygen-1.5.9/html/formulas.html
--- old/doxygen-1.5.8/html/formulas.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/formulas.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="formulas">Including formulas </a></h1>Doxygen allows you to put <img class="formulaInl" alt="$\mbox{\LaTeX}$" src="form_0.png"> formulas in the output (this works only for the HTML and <img class="formulaInl" alt="$\mbox{\LaTeX}$" src="form_0.png"> output, not for the RTF nor for the man page output). To be able to include formulas (as images) in the HTML documentation, you will also need to have the following tools installed <ul>
<li>
@@ -58,8 +58,8 @@
Go to the <a href="diagrams.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/grouping.html new/doxygen-1.5.9/html/grouping.html
--- old/doxygen-1.5.8/html/grouping.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/grouping.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="grouping">Grouping </a></h1>Doxygen has three mechanisms to group things together. One mechanism works at a global level, creating a new page for each group. These groups are called <a class="el" href="grouping.html#modules">'modules'</a> in the documentation. The second mechanism works within a member list of some compound entity, and is refered to as a <a class="el" href="grouping.html#memgroup">'member groups'</a>. For <a class="el" href="commands.html#cmdpage">pages</a> there is a third grouping mechanism referred to as <a class="el" href="grouping.html#subpaging">subpaging</a>.<h2><a class="anchor" name="modules">
Modules</a></h2>
@@ -222,8 +222,8 @@
Go to the <a href="formulas.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/history.html new/doxygen-1.5.9/html/history.html
--- old/doxygen-1.5.8/html/history.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/history.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="history">Doxygen History </a></h1><h2>Version 1.2.0</h2>
<p>
@@ -142,8 +142,8 @@
<h2>Version 0.1</h2>
<p>
Initial version. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/htmlcmds.html new/doxygen-1.5.9/html/htmlcmds.html
--- old/doxygen-1.5.8/html/htmlcmds.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/htmlcmds.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="htmlcmds">HTML Commands </a></h1>Here is a list of all HTML commands that may be used inside the documentation. Note that although these HTML tags are translated to the proper commands for outer formats other than HTML, all attributes of a HTML tag are passed on to the HTML output only (the HREF and NAME attributes for the A tag are the only exception).<p>
<ul>
@@ -209,8 +209,8 @@
Finally, to put invisible comments inside comment blocks, HTML style comments can be used: <div class="fragment"><pre class="fragment">
/*! <!-- This is a comment with a comment block --> Visible text */
</pre></div> </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/index.html new/doxygen-1.5.9/html/index.html
--- old/doxygen-1.5.8/html/index.html 2008-12-27 10:38:11.000000000 +0100
+++ new/doxygen-1.5.9/html/index.html 2009-04-30 15:16:42.000000000 +0200
@@ -4,12 +4,12 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<center>
<img align=center lowsrc="doxygen_logo_low.gif" src="doxygen_logo.gif"
width=634 height=197 alt="doxygen"><br>
-Version: 1.5.8
+Version: 1.5.9
</center><p>
<h2>Introduction</h2>
<p>
@@ -151,8 +151,8 @@
many, many others for suggestions, patches and bug reports. </li>
</ul>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:11 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:42 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/installdox_usage.html new/doxygen-1.5.9/html/installdox_usage.html
--- old/doxygen-1.5.8/html/installdox_usage.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/installdox_usage.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="installdox_usage">Installdox usage </a></h1>Installdox is a perl script that is generated by doxygen whenever tag files are used (See <code>TAGFILES</code> in section <a class="el" href="config.html#config_extref">External reference options</a>) or the search engine is enabled (See <code>SEARCHENGINE</code> in section <a class="el" href="config.html#config_search">Search engine options</a>). The script is located in the same directory where the HTML files are located.<p>
Its purpose is to set the location of the external documentation for each tag file and to set the correct links to the search engine at install time.<p>
@@ -19,8 +19,8 @@
</dl>
Optionally a list of HTML files may be given. These files are scanned and modified if needed. If this list is omitted all files in the current directory that end with <code></code>.html are used.<p>
The <code>installdox</code> script is unique for each generated class browser in the sense that it `knows' what tag files are used. It will generate an error if the <b>-l</b> option is missing for a tag file or if an invalid tag file is given. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/install.html new/doxygen-1.5.9/html/install.html
--- old/doxygen-1.5.8/html/install.html 2008-12-27 10:38:11.000000000 +0100
+++ new/doxygen-1.5.9/html/install.html 2009-04-30 15:16:42.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="install">Installation </a></h1> First go to the <a href="http://www.doxygen.org/download.html">download</a> page to get the latest distribution, if you did not have it already.<p>
This section is divided into the following sections: <ul>
@@ -252,8 +252,8 @@
Go to the <a href="starting.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:11 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:42 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/langhowto.html new/doxygen-1.5.9/html/langhowto.html
--- old/doxygen-1.5.8/html/langhowto.html 2008-12-27 10:38:14.000000000 +0100
+++ new/doxygen-1.5.9/html/langhowto.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,12 +4,12 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="langhowto">Internationalization </a></h1><h3>Support for multiple languages</h3>
<p>
Doxygen has built-in support for multiple languages. This means that the text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration file (with default name and known as Doxyfile).<p>
-Currently (version 1.5.7.1), 37 languages are supported (sorted alphabetically): Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean (+En), Lithuanian, Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese..<p>
+Currently (version 1.5.9), 38 languages are supported (sorted alphabetically): Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean (+En), Lithuanian, Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese..<p>
The table of information related to the supported languages follows. It is sorted by language alphabetically. The <b>Status</b> column was generated from sources and shows approximately the last version when the translator was updated.<p>
<table align=center cellspacing=0 cellpadding=0 border=0>
@@ -92,6 +92,12 @@
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
+ <td>Esperanto</td>
+ <td>Ander Martinez</td>
+ <td>dwarfnauko at gmail dot com</td>
+ <td>up-to-date</td>
+ </tr>
+ <tr bgcolor="#ffffff">
<td>Finnish</td>
<td>Antti Laine</td>
<td>antti.a.laine at tut dot fi</td>
@@ -135,9 +141,9 @@
</tr>
<tr bgcolor="#ffffff">
<td>Japanese</td>
- <td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td>
- <td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td>
- <td>1.5.4</td>
+ <td>Hiroki Iseri<br>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td>
+ <td>goyoki at gmail dot com<br>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>JapaneseEn</td>
@@ -197,7 +203,7 @@
<td>Romanian</td>
<td>Ionut Dumitrascu<br>Alexandru Iosup</td>
<td>reddumy at yahoo dot com<br>aiosup at yahoo dot com</td>
- <td>1.4.1</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Russian</td>
@@ -231,15 +237,15 @@
</tr>
<tr bgcolor="#ffffff">
<td>Spanish</td>
- <td>Bartomeu<br>Francisco Oltra Thennet</td>
- <td>bartomeu at loteria3cornella dot com<br>foltra at puc dot cl</td>
+ <td>Bartomeu<br>Francisco Oltra Thennet<br>David Vaquero</td>
+ <td>bartomeu at loteria3cornella dot com<br>foltra at puc dot cl<br>david at grupoikusnet dot com</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Swedish</td>
<td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td>
- <td>1.4.6</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Turkish</td>
@@ -378,8 +384,8 @@
<b>The most obsolete language translators</b> would lead to implementation of too complicated adapters. Because of that, doxygen developers may decide to derive such translators from the <code>TranslatorEnglish</code> class, which is by definition always up-to-date.<p>
When doing so, all the missing methods will be replaced by the English translation. This means that not-implemented methods will always return the English result. Such translators are marked using word <code>obsolete</code>. You should read it <b>really obsolete</b>. No guess about the last update can be done.<p>
Often, it is possible to construct better result from the obsolete methods. Because of that, the translator adapter classes should be used if possible. On the other hand, implementation of adapters for really obsolete translators brings too much maintenance and run-time overhead. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:14 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/lists.html new/doxygen-1.5.9/html/lists.html
--- old/doxygen-1.5.8/html/lists.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/lists.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="lists">Lists </a></h1>Doxygen provides a number of ways to create lists of items.<p>
<b>Using dashes</b><p>
@@ -88,8 +88,8 @@
Go to the <a href="grouping.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/output.html new/doxygen-1.5.9/html/output.html
--- old/doxygen-1.5.8/html/output.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/output.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="output">Output Formats </a></h1><h2><a class="anchor" name="output">
Output Formats</a></h2>
@@ -37,8 +37,8 @@
<dd>Generated from the <img class="formulaInl" alt="$\mbox{\LaTeX}$" src="form_0.png"> output by running <code>make pdf</code> in the output directory. To improve the PDF output, you typically would want to enable the use of <code>pdflatex</code> by setting <a class="el" href="config.html#cfg_use_pdflatex">USE_PDFLATEX</a> to <code>YES</code> in the configuration file. In order to get hyperlinks in the PDF file you also need to enable <a class="el" href="config.html#cfg_pdf_hyperlinks">PDF_HYPERLINKS</a>. </dd>
</dl>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/pages.html new/doxygen-1.5.9/html/pages.html
--- old/doxygen-1.5.8/html/pages.html 2008-12-27 10:38:11.000000000 +0100
+++ new/doxygen-1.5.9/html/pages.html 2009-04-30 15:16:42.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
<li><a class="el" href="index.html">index</a>
@@ -69,8 +69,8 @@
</ul>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:11 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:42 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/perlmod.html new/doxygen-1.5.9/html/perlmod.html
--- old/doxygen-1.5.8/html/perlmod.html 2008-12-27 10:38:14.000000000 +0100
+++ new/doxygen-1.5.9/html/perlmod.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="perlmod">Perl Module output format documentation </a></h1><p>
Since version 1.2.18, Doxygen can generate a new output format we have called the "Perl Module output format". It has been designed as an intermediate format that can be used to generate new and customized output without having to modify the Doxygen source. Therefore, its purpose is similar to the XML output format that can be also generated by Doxygen. The XML output format is more standard, but the Perl Module output format is possibly simpler and easier to use.<p>
@@ -94,8 +94,8 @@
Data structure describing the Perl Module documentation tree.</a></h2>
You might be interested in processing the documentation contained in <b>DoxyDocs.pm</b> without needing to take into account the semantics of each node of the documentation tree. For this purpose, Doxygen generates a <b>DoxyModel.pm</b> file which contains a data structure describing the type and children of each node in the documentation tree.<p>
The rest of this section is to be written yet, but in the meantime you can look at the Perl scripts generated by Doxygen (such as <b>doxylatex.pl</b> or <b>doxytemplate-latex.pl</b>) to get an idea on how to use <b>DoxyModel.pm</b>. </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:14 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/perlmod_tree.html new/doxygen-1.5.9/html/perlmod_tree.html
--- old/doxygen-1.5.8/html/perlmod_tree.html 2008-12-27 10:38:14.000000000 +0100
+++ new/doxygen-1.5.9/html/perlmod_tree.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="perlmod_tree">Nodes in the documentation tree of the Perl Module output format </a></h1><h2>Nodes in the documentation tree of the Perl Module output format.</h2>
<p>
@@ -554,8 +554,8 @@
</li>
</ul>
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:14 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/preprocessing.html new/doxygen-1.5.9/html/preprocessing.html
--- old/doxygen-1.5.8/html/preprocessing.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/preprocessing.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="preprocessing">Preprocessing </a></h1>Source files that are used as input to doxygen can be parsed by doxygen's built-in C-preprocessor.<p>
By default doxygen does only partial preprocessing. That is, it evaluates conditional compilation statements (like #if) and evaluates macro definitions, but it does not perform macro expansion.<p>
@@ -171,8 +171,8 @@
Go to the <a href="external.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/starting.html new/doxygen-1.5.9/html/starting.html
--- old/doxygen-1.5.8/html/starting.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/starting.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="starting">Getting started </a></h1>The executable <code>doxygen</code> is the main program that parses the sources and generates the documentation. See section <a class="el" href="doxygen_usage.html">Doxygen usage</a> for more detailed usage information.<p>
The executable <code>doxytag</code> is only needed if you want to generate references to external documentation (i.e. documentation that was generated by doxygen) for which you do not have the sources. See section <a class="el" href="doxytag_usage.html">Doxytag usage</a> for more detailed usage information.<p>
@@ -86,8 +86,8 @@
Go to the <a href="docblocks.html">next</a> section or return to the
<a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/trouble.html new/doxygen-1.5.9/html/trouble.html
--- old/doxygen-1.5.8/html/trouble.html 2008-12-27 10:38:13.000000000 +0100
+++ new/doxygen-1.5.9/html/trouble.html 2009-04-30 15:16:43.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="trouble">Troubleshooting </a></h1><h2>Known problems:</h2>
<p>
@@ -59,8 +59,8 @@
Return to the <a href="index.html">index</a>.
</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:13 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:43 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/doxygen-1.5.8/html/xmlcmds.html new/doxygen-1.5.9/html/xmlcmds.html
--- old/doxygen-1.5.8/html/xmlcmds.html 2008-12-27 10:38:14.000000000 +0100
+++ new/doxygen-1.5.9/html/xmlcmds.html 2009-04-30 15:16:44.000000000 +0200
@@ -4,7 +4,7 @@
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1><a class="anchor" name="xmlcmds">XML Commands </a></h1>Doxygen supports most of the XML commands that are typically used in C# code comments. The XML tags are defined in Appendix E of the <a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm">ECMA-334</a> standard, which defines the C# language. Unfortunately, the specification is not very precise and a number of the examples given are of poor quality.<p>
Here is the list of tags supported by doxygen:<p>
@@ -34,7 +34,7 @@
<li>
<code><paramref name="paramName"></code> Refers to a parameter with name "paramName". Similar to using <a class="el" href="commands.html#cmda">\a</a>. </li>
<li>
-<code><permission></code> Identifies the security accessibility of a member. Ignored by doygen. </li>
+<code><permission></code> Identifies the security accessibility of a member. Ignored by doxygen. </li>
<li>
<code><remarks></code> Identifies the detailed description. </li>
<li>
@@ -79,8 +79,8 @@
}
}
</pre></div> </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sat Dec 27 10:38:14 2008 for Doxygen manual by
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Apr 30 15:16:44 2009 for Doxygen manual by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>
++++++ doxygen-1.5.8-libpng.patch -> doxygen-1.5.9-libpng.patch ++++++
++++++ doxygen-1.5.8-man.patch -> doxygen-1.5.9-man.patch ++++++
++++++ doxygen-1.5.8-qtdir.patch -> doxygen-1.5.9-qtdir.patch ++++++
++++++ doxygen-1.5.8.src.tar.bz2 -> doxygen-1.5.9.src.tar.bz2 ++++++
++++ 54935 lines of diff (skipped)
++++++ doxywizard-1.5.8-flex.patch -> doxywizard-1.5.9-flex.patch ++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa-utils for openSUSE:Factory
checked in at Wed May 6 18:37:31 CEST 2009.
--------
--- alsa-utils/alsa-utils.changes 2009-04-23 15:28:34.000000000 +0200
+++ /mounts/work_src_done/STABLE/alsa-utils/alsa-utils.changes 2009-05-06 18:10:48.000000000 +0200
@@ -1,0 +2,7 @@
+Wed May 6 18:07:23 CEST 2009 - tiwai(a)suse.de
+
+- updated to version 1.0.20:
+ * including previous patches
+ * a few more fixes about alsactl init command
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
alsa-utils-1.0.19.tar.bz2
alsa-utils-git-fixes.diff
New:
----
alsa-utils-1.0.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-utils.spec ++++++
--- /var/tmp/diff_new_pack.G10543/_old 2009-05-06 18:35:12.000000000 +0200
+++ /var/tmp/diff_new_pack.G10543/_new 2009-05-06 18:35:12.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa-utils (Version 1.0.19)
+# spec file for package alsa-utils (Version 1.0.20)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,17 +20,17 @@
Name: alsa-utils
BuildRequires: alsa-devel ncurses-devel xmlto
-%define package_version 1.0.19
+%define package_version 1.0.20
License: GPL v2 or later
Group: Productivity/Multimedia/Sound/Players
Provides: alsa-conf
Requires: dialog pciutils
AutoReqProv: on
Summary: Advanced Linux Sound Architecture Utilities
-Version: 1.0.19
-Release: 4
+Version: 1.0.20
+Release: 1
Source: ftp://ftp.alsa-project.org/pub/util/alsa-utils-%{package_version}.tar.bz2
-Patch: alsa-utils-git-fixes.diff
+# Patch: alsa-utils-git-fixes.diff
Url: http://www.alsa-project.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -48,8 +48,8 @@
%prep
%setup -q -n %{name}-%{package_version}
# fix stupid automake's automatic action
-sed -i -e's/EXTRA_DIST= config.rpath /EXTRA_DIST=/' Makefile.am
-%patch -p1
+# sed -i -e's/EXTRA_DIST= config.rpath /EXTRA_DIST=/' Makefile.am
+# %patch -p1
mv alsamixer/README alsamixer/README-alsamixer
%build
@@ -78,6 +78,10 @@
%{_datadir}/alsa
%changelog
+* Wed May 06 2009 tiwai(a)suse.de
+- updated to version 1.0.20:
+ * including previous patches
+ * a few more fixes about alsactl init command
* Thu Apr 23 2009 tiwai(a)suse.de
- updated as of 2009.04.23:
* Added vi-like key bindings to alsamixer
++++++ alsa-utils-1.0.19.tar.bz2 -> alsa-utils-1.0.20.tar.bz2 ++++++
++++ 3288 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsaconf/alsaconf.in new/alsa-utils-1.0.20/alsaconf/alsaconf.in
--- old/alsa-utils-1.0.19/alsaconf/alsaconf.in 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsaconf/alsaconf.in 2009-05-06 09:07:24.000000000 +0200
@@ -291,6 +291,8 @@
# cfgfile = base config file to remove/update the sound setting
# cfgout = new config file to write the sound setting (if different from $cfgfile)
+cfgout=""
+cfgoldout=""
if [ -n "$cfgfile" ]; then
if [ ! -r "$cfgfile" ]; then
xecho "ERROR: The config file doesn't exist: "
@@ -301,10 +303,22 @@
if [ "$distribution" = "gentoo" ]; then
cfgfile="/etc/modules.d/alsa"
elif [ "$kernel" = "new" ]; then
+ cfgfile="/etc/modprobe.conf"
if [ -d /etc/modprobe.d ]; then
- cfgout="/etc/modprobe.d/sound"
+ cfgout="/etc/modprobe.d/50-sound.conf"
+ cfgoldout="/etc/modprobe.d/sound"
+ if [ ! -f $cfgout ]; then
+ modver=$(modprobe -V | sed -e's/^module-init-tools version //')
+ case "$modver" in
+ 3.[789]*)
+ ;;
+ *)
+ cfgout="/etc/modprobe.d/sound"
+ cfgoldout=""
+ ;;
+ esac
+ fi
fi
- cfgfile="/etc/modprobe.conf"
elif [ "$distribution" = "debian" ]; then
cfgfile="/etc/modutils/sound"
elif [ -e /etc/modules.conf ]; then
@@ -818,7 +832,7 @@
msg=$(xmsg "
Configuring %s
Do you want to modify %s (and %s if present)?" $CARD_DRIVER $cfgout $cfgfile)
- $DIALOG --yesno "$msg" 8 50 || acex 0
+ $DIALOG --yesno "$msg" 10 50 || acex 0
else
msg=$(xmsg "
Configuring %s
@@ -875,6 +889,7 @@
if [ -n "$cfgout" ]; then
[ ! -r "$cfgfile" ] || cmp -s "$TMP" "$cfgfile" || cat "$TMP" > "$cfgfile"
cmp -s "$addcfg" "$cfgout" || cat "$addcfg" > "$cfgout"
+ test -n "$cfgoldout" && rm -f "$cfgoldout"
else
echo "$ACB
# --- ALSACONF version $version ---" >> $TMP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/alsactl.c new/alsa-utils-1.0.20/alsactl/alsactl.c
--- old/alsa-utils-1.0.19/alsactl/alsactl.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/alsactl.c 2009-05-06 09:07:24.000000000 +0200
@@ -97,7 +97,8 @@
};
char *cfgfile = SYS_ASOUNDRC;
char *initfile = DATADIR "/init/00main";
- char *cardname, **tmp, ncardname[16];
+ char *cardname, ncardname[16];
+ const char *const *tmp;
int removestate = 0;
int init_fallback = 1; /* new default behavior */
int res;
@@ -106,7 +107,7 @@
while (1) {
int c;
- if ((c = getopt_long(argc, argv, "hdvf:FgE:i:Pr:R", long_option, NULL)) < 0)
+ if ((c = getopt_long(argc, argv, "hdvf:FgE:i:IPr:R", long_option, NULL)) < 0)
break;
switch (c) {
case 'h':
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/alsactl_init.xml new/alsa-utils-1.0.20/alsactl/alsactl_init.xml
--- old/alsa-utils-1.0.19/alsactl/alsactl_init.xml 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/alsactl_init.xml 2009-05-06 09:07:24.000000000 +0200
@@ -279,7 +279,7 @@
<listitem>
<para>The relative path to sysfs subsystem specifying
the root directory of a soundcard device. Usually,
- it should be set to "/class/sound/controlC$cardinfo{card}/device".
+ it should be set to "/class/sound/card$cardinfo{card}/device".
</para>
</listitem>
</varlistentry>
@@ -462,7 +462,7 @@
<listitem>
<para>The relative path to sysfs subsystem specifying
the root directory of a soundcard device. Usually,
- it should be set to "/class/sound/controlC$cardinfo{card}/device".
+ it should be set to "/class/sound/card$cardinfo{card}/device".
</para>
</listitem>
</varlistentry>
@@ -553,6 +553,13 @@
</varlistentry>
<varlistentry>
+ <term><option>$config{<replaceable>key</replaceable>}</option>, <option>%g{<replaceable>key</replaceable>}</option></term>
+ <listitem>
+ <para>The value of a configuration variable. See CONFIG{} for more details.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>%%</option></term>
<listitem>
<para>The '%' character itself.</para>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/init/00main new/alsa-utils-1.0.20/alsactl/init/00main
--- old/alsa-utils-1.0.19/alsactl/init/00main 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/init/00main 2009-05-06 09:07:24.000000000 +0200
@@ -2,7 +2,9 @@
# See 'man alsactl_init' for syntax.
# set root device directory in sysfs for soundcard for ATTR{} command
-CONFIG{sysfs_device}="/class/sound/controlC$cardinfo{card}/device"
+CONFIG{sysfs_device}="/class/sound/card$cardinfo{card}/device"
+ACCESS!="$sysfsroot$config{sysfs_device}", \
+ CONFIG{sysfs_device}="/class/sound/controlC$cardinfo{card}/device"
# test for extra commands
ENV{CMD}=="help", INCLUDE="help", GOTO="00main_end"
@@ -29,6 +31,7 @@
# real ALSA configuration database
CARDINFO{driver}=="HDA-Intel", INCLUDE="hda", GOTO="init_end"
+CARDINFO{driver}=="CA0106", INCLUDE="ca0106", GOTO="init_end"
CARDINFO{driver}=="Test", INCLUDE="test", GOTO="init_end"
LABEL="init_end"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/init/default new/alsa-utils-1.0.20/alsactl/init/default
--- old/alsa-utils-1.0.19/alsactl/init/default 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/init/default 2009-05-06 09:07:24.000000000 +0200
@@ -10,71 +10,99 @@
# playback
# **************************************************************************
-ENV{volume}:="-20dB"
+ENV{ppercent}:="75%"
+ENV{cpercent}:="75%"
+ENV{pvolume}:="-20dB"
+ENV{cvolume}:="12dB"
+ENV{has_pmaster_vol}:="false"
CTL{reset}="mixer"
CTL{name}="Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Master Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ ENV{has_pmaster_vol}:="true", \
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Master Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Master Digital Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Master Digital Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
-CTL{name}="Front Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+CTL{name}="Front Playback Volume",PROGRAM!="__ctl_search",GOTO="front0_end"
+# if master volume control is present, turn front volume to max
+ENV{has_pmaster_vol}=="true",CTL{values}="0dB",RESULT=="0",GOTO="front0_end"
+ENV{has_pmaster_vol}=="true",CTL{values)="100%",GOTO="front0_end"
+CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+LABEL="front0_end"
CTL{name}="Front Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
-CTL{name}="Headphone Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+CTL{name}="Headphone Playback Volume",PROGRAM=="__ctl_search",GOTO="headphone0_end"
+# if master volume control is present, turn headphone volume to max
+ENV{has_pmaster_vol}=="true",CTL{values}="0dB",RESULT=="0",GOTO="headphone0_end"
+ENV{has_pmaster_vol}=="true",CTL{values)="100%",GOTO="headphone0_end"
+CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+LABEL="headphone0_end"
CTL{name}="Headphone Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Speaker Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Speaker Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="PC Speaker Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="PC Speaker Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
-CTL{name}="PCM Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+CTL{name}="PCM Playback Volume",PROGRAM!="__ctl_search",GOTO="pcm0_end"
+# if master volume control is present, turn PCM volume to max
+ENV{has_pmaster_vol}=="true",CTL{values}="0dB",RESULT=="0",GOTO="pcm0_end"
+ENV{has_pmaster_vol}=="true",CTL{values)="100%",GOTO="pcm0_end"
+# exception - some HDA codecs have shifted dB range
+CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{values}="0dB",GOTO="pcm0_end"
+CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{values}="0dB",GOTO="pcm0_end"
+CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="75%"
+LABEL="pcm0_end"
CTL{name}="PCM Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
-CTL{name}="PCM Playback Volume",CTL{index}="1",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+CTL{name}="PCM Playback Volume",CTL{index}="1",PROGRAM!="__ctl_search", \
+ GOTO="pcm1_end"
+# if master volume control is present, turn PCM volume to max
+ENV{has_pmaster_vol}=="true",CTL{values}="0dB",RESULT=="0",GOTO="pcm1_end"
+ENV{has_pmaster_vol}=="true",CTL{values)="100%",GOTO="pcm1_end"
+# exception - some HDA codecs have shifted dB range
+CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{values}="0dB",GOTO="pcm1_end"
+CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{values}="0dB",GOTO="pcm1_end"
+CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="75%"
+LABEL="pcm1_end"
CTL{name}="PCM Playback Switch",CTL{index}="1",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="DAC Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="DAC Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Synth Playback Volume",,PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Synth Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
@@ -91,20 +119,27 @@
CTL{values}="on"
CTL{reset}="mixer"
-CTL{name}="CD Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+CTL{name}="CD Playback Volume",PROGRAM!="__ctl_search", GOTO="cd0_end"
+# if master volume control is present, turn CD volume to max
+ENV{has_pmaster_vol}=="true",CTL{values}="0dB",RESULT=="0",GOTO="cd0_end"
+ENV{has_pmaster_vol}=="true",CTL{values)="100%",GOTO="cd0_end"
+# exception - some HDA codecs have shifted dB range
+CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{values}="0dB",GOTO="cd0_end"
+CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{values}="0dB",GOTO="cd0_end"
+CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+LABEL="cd0_end"
CTL{name}="CD Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Mono Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Mono Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
CTL{reset}="mixer"
CTL{name}="Master Mono Playback Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
CTL{name}="Master Mono Playback Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
@@ -120,25 +155,22 @@
CTL{reset}="mixer"
CTL{name}="DRC Range",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
# **************************************************************************
# capture
# **************************************************************************
-ENV{volume}:="20dB"
-
CTL{reset}="mixer"
CTL{name}="Capture Volume",PROGRAM=="__ctl_search", \
- CTL{values}="$env{volume}",RESULT!="0",CTL{values}="75%"
+ CTL{values}="$env{cvolume}",RESULT!="0",CTL{values}="$env{cpercent}"
CTL{name}="Capture Switch",PROGRAM=="__ctl_search", \
CTL{values}="on"
-CTL{name}="Input Source",PROGRAM=="__ctl_search", \
- CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", \
+CTL{name}="Input Source",PROGRAM!="__ctl_search", GOTO="end_input_source"
+CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", \
GOTO="end_input_source"
-CTL{name}="Input Source",PROGRAM=="__ctl_search", \
- CTL{enums}=="*|Mic|*",CTL{values}="Mic"
+CTL{enums}=="*|Mic|*",CTL{values}="Mic"
LABEL="end_input_source"
CTL{name}="Internal Mic Boost",PROGRAM=="__ctl_search", \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/init/hda new/alsa-utils-1.0.20/alsactl/init/hda
--- old/alsa-utils-1.0.19/alsactl/init/hda 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/init/hda 2009-05-06 09:07:24.000000000 +0200
@@ -11,10 +11,12 @@
LABEL="Acer Travelmate 8100"
# playback
CTL{reset}="mixer"
+CTL{name}="Master Playback Volume", CTL{value}="-21dB"
+CTL{name}="Master Playback Switch", CTL{value}="on"
CTL{name}="Headphone Playback Switch", CTL{value}="on,on"
CTL{name}="Front Playback Volume", CTL{value}="-29dB,-29dB"
CTL{name}="Front Playback Switch", CTL{value}="on,on"
-CTL{name}="PCM Playback Volume", CTL{value}="-21dB,-21dB"
+CTL{name}="PCM Playback Volume", CTL{value}="0dB,0dB"
# capture
CTL{name}="Input Source", CTL{value}="Mic"
CTL{name}="Capture Volume", CTL{value}="20dB,20dB"
@@ -24,8 +26,10 @@
LABEL="Lenovo T61"
# playback
CTL{reset}="mixer"
+CTL{name}="Master Playback Volume", CTL{value}="-13.5dB"
+CTL{name}="Master Playback Switch", CTL{value}="on"
CTL{name}="Headphone Playback Switch", CTL{value}="on,on"
-CTL{name}="PCM Playback Volume", CTL{value}="-13.5dB,-13.5dB"
+CTL{name}="PCM Playback Volume", CTL{value}="0dB,0dB"
# capture
CTL{name}="Input Source", CTL{value}="Internal Mic"
CTL{name}="Internal Mic Boost", CTL{value}="1"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/init_parse.c new/alsa-utils-1.0.20/alsactl/init_parse.c
--- old/alsa-utils-1.0.19/alsactl/init_parse.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/init_parse.c 2009-05-06 09:07:24.000000000 +0200
@@ -381,7 +381,7 @@
snd_ctl_elem_value_set_integer(space->ctl_value, idx, val);
} else if (items > 2 && value[items-2] == 'd' && value[items-1] == 'B') {
val = strtol(value, NULL, 0) * 100;
- if ((pos2 = index(value, '.')) != NULL) {
+ if ((pos2 = strchr(value, '.')) != NULL) {
if (isdigit(*(pos2-1)) && isdigit(*(pos2-2))) {
if (val < 0)
val -= strtol(pos2 + 1, NULL, 0);
@@ -396,7 +396,7 @@
}
val = snd_ctl_convert_from_dB(snd_hctl_ctl(space->ctl_handle), space->ctl_id, val, &lval, -1);
if (val < 0) {
- Perror(space, "unable to convert dB value '%s' to internal integer range", value);
+ dbg("unable to convert dB value '%s' to internal integer range", value);
return val;
}
snd_ctl_elem_value_set_integer(space->ctl_value, idx, lval);
@@ -929,6 +929,7 @@
SUBST_ATTR,
SUBST_SYSFSROOT,
SUBST_ENV,
+ SUBST_CONFIG,
};
static const struct subst_map {
char *name;
@@ -941,6 +942,7 @@
{ .name = "attr", .fmt = 's', .type = SUBST_ATTR },
{ .name = "sysfsroot", .fmt = 'r', .type = SUBST_SYSFSROOT },
{ .name = "env", .fmt = 'E', .type = SUBST_ENV },
+ { .name = "config", .fmt = 'g', .type = SUBST_CONFIG },
{ NULL, '\0', 0 }
};
enum subst_type type;
@@ -1101,6 +1103,16 @@
dbg("substitute env '%s=%s'", attr, pos);
strlcat(string, pos, maxsize);
break;
+ case SUBST_CONFIG:
+ if (attr == NULL) {
+ dbg("missing attribute");
+ break;
+ }
+ pair = value_find(space, attr);
+ if (pair == NULL)
+ break;
+ strlcat(string, pair->value, maxsize);
+ break;
default:
Perror(space, "unknown substitution type=%i", type);
break;
@@ -1253,7 +1265,7 @@
res = strdup(filename);
if (res) {
- tmp = rindex(res, '/');
+ tmp = strrchr(res, '/');
if (tmp)
*tmp = '\0';
}
@@ -1313,10 +1325,9 @@
}
snprintf(string, sizeof(string), "%i", err);
space->program_result = strdup(string);
- if (err < 0 || space->program_result == NULL) {
- err = 0;
+ err = 0;
+ if (space->program_result == NULL)
break;
- }
} else if (op == KEY_OP_MATCH || op == KEY_OP_NOMATCH) {
dbg("ctl match: '%s' '%s'", value, attr);
temp = (char *)elemid_get(space, attr);
@@ -1521,15 +1532,23 @@
}
if (strncasecmp(key, "ACCESS", 6) == 0) {
if (op == KEY_OP_MATCH || op == KEY_OP_NOMATCH) {
+ if (value[0] == '$') {
+ strlcpy(string, value, sizeof(string));
+ apply_format(space, string, sizeof(string));
+ if (string[0] == '/')
+ goto __access1;
+ }
if (value[0] != '/') {
strlcpy(string, space->rootdir, sizeof(string));
strlcat(string, "/", sizeof(string));
strlcat(string, value, sizeof(string));
} else {
- strlcat(string, value, sizeof(string));
+ strlcpy(string, value, sizeof(string));
}
+ apply_format(space, string, sizeof(string));
+ __access1:
count = access(string, F_OK);
- dbg("access(%s) = %i", value, count);
+ dbg("access(%s) = %i (%s)", string, count, value);
if (op == KEY_OP_MATCH && count != 0)
break;
if (op == KEY_OP_NOMATCH && count == 0)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsactl/init_utils_string.c new/alsa-utils-1.0.20/alsactl/init_utils_string.c
--- old/alsa-utils-1.0.19/alsactl/init_utils_string.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsactl/init_utils_string.c 2009-05-06 09:07:24.000000000 +0200
@@ -17,17 +17,6 @@
*/
-static int string_is_true(const char *str)
-{
- if (strcasecmp(str, "true") == 0)
- return 1;
- if (strcasecmp(str, "yes") == 0)
- return 1;
- if (strcasecmp(str, "1") == 0)
- return 1;
- return 0;
-}
-
static void remove_trailing_chars(char *path, char c)
{
size_t len;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/alsamixer/alsamixer.c new/alsa-utils-1.0.20/alsamixer/alsamixer.c
--- old/alsa-utils-1.0.19/alsamixer/alsamixer.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/alsamixer/alsamixer.c 2009-05-06 09:07:24.000000000 +0200
@@ -2113,11 +2113,13 @@
mixer_hscroll_delta -= 1;
break;
case KEY_UP:
+ case 'k':
case 'w':
case 'W':
mixer_vscroll_delta -= 1;
break;
case KEY_DOWN:
+ case 'j':
case 'x':
case 'X':
mixer_vscroll_delta += 1;
@@ -2179,12 +2181,14 @@
break;
case 'w':
case KEY_UP:
+ case 'k':
mixer_set_delta(1);
case 'W':
mixer_add_delta(1);
break;
case 'x':
case KEY_DOWN:
+ case 'j':
mixer_set_delta(-1);
case 'X':
mixer_add_delta(-1);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/aplay/aplay.c new/alsa-utils-1.0.20/aplay/aplay.c
--- old/alsa-utils-1.0.19/aplay/aplay.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/aplay/aplay.c 2009-05-06 09:07:24.000000000 +0200
@@ -101,12 +101,15 @@
static int avail_min = -1;
static int start_delay = 0;
static int stop_delay = 0;
+static int monotonic = 0;
static int verbose = 0;
static int vumeter = VUMETER_NONE;
static int buffer_pos = 0;
static size_t bits_per_sample, bits_per_frame;
static size_t chunk_bytes;
static int test_position = 0;
+static int test_coef = 8;
+static int test_nowait = 0;
static snd_output_t *log;
static int fd = -1;
@@ -188,7 +191,10 @@
" --disable-channels disable automatic channel conversions\n"
" --disable-format disable automatic format conversions\n"
" --disable-softvol disable software volume control (softvol)\n"
-" --test-position test ring buffer position\n")
+" --test-position test ring buffer position\n"
+" --test-coef=# test coeficient for ring buffer position (default 8)\n"
+" expression for validation is: coef * (buffer_size / 2)\n"
+" --test-nowait do not wait for ring buffer - eats whole CPU\n")
, command);
printf(_("Recognized sample formats are:"));
for (k = 0; k < SND_PCM_FORMAT_LAST; ++k) {
@@ -350,7 +356,9 @@
OPT_DISABLE_CHANNELS,
OPT_DISABLE_FORMAT,
OPT_DISABLE_SOFTVOL,
- OPT_TEST_POSITION
+ OPT_TEST_POSITION,
+ OPT_TEST_COEF,
+ OPT_TEST_NOWAIT
};
int main(int argc, char *argv[])
@@ -389,6 +397,8 @@
{"disable-format", 0, 0, OPT_DISABLE_FORMAT},
{"disable-softvol", 0, 0, OPT_DISABLE_SOFTVOL},
{"test-position", 0, 0, OPT_TEST_POSITION},
+ {"test-coef", 1, 0, OPT_TEST_COEF},
+ {"test-nowait", 0, 0, OPT_TEST_NOWAIT},
{0, 0, 0, 0}
};
char *pcm_name = "default";
@@ -570,6 +580,14 @@
case OPT_TEST_POSITION:
test_position = 1;
break;
+ case OPT_TEST_COEF:
+ test_coef = strtol(optarg, NULL, 0);
+ if (test_coef < 1)
+ test_coef = 1;
+ break;
+ case OPT_TEST_NOWAIT:
+ test_nowait = 1;
+ break;
default:
fprintf(stderr, _("Try `%s --help' for more information.\n"), command);
return 1;
@@ -1017,6 +1035,7 @@
&buffer_frames);
}
assert(err >= 0);
+ monotonic = snd_pcm_hw_params_is_monotonic(params);
err = snd_pcm_hw_params(handle, params);
if (err < 0) {
error(_("Unable to install hw params:"));
@@ -1112,6 +1131,18 @@
} while (0)
#endif
+#ifndef timermsub
+#define timermsub(a, b, result) \
+do { \
+ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
+ (result)->tv_nsec = (a)->tv_nsec - (b)->tv_nsec; \
+ if ((result)->tv_nsec < 0) { \
+ --(result)->tv_sec; \
+ (result)->tv_nsec += 1000000000L; \
+ } \
+} while (0)
+#endif
+
/* I/O error handler */
static void xrun(void)
{
@@ -1124,13 +1155,27 @@
exit(EXIT_FAILURE);
}
if (snd_pcm_status_get_state(status) == SND_PCM_STATE_XRUN) {
- struct timeval now, diff, tstamp;
- gettimeofday(&now, 0);
- snd_pcm_status_get_trigger_tstamp(status, &tstamp);
- timersub(&now, &tstamp, &diff);
- fprintf(stderr, _("%s!!! (at least %.3f ms long)\n"),
- stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
- diff.tv_sec * 1000 + diff.tv_usec / 1000.0);
+ if (monotonic) {
+#ifdef HAVE_CLOCK_GETTIME
+ struct timespec now, diff, tstamp;
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ snd_pcm_status_get_trigger_htstamp(status, &tstamp);
+ timermsub(&now, &tstamp, &diff);
+ fprintf(stderr, _("%s!!! (at least %.3f ms long)\n"),
+ stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
+ diff.tv_sec * 1000 + diff.tv_nsec / 10000000.0);
+#else
+ fprintf(stderr, "%s !!!\n", _("underrun"));
+#endif
+ } else {
+ struct timeval now, diff, tstamp;
+ gettimeofday(&now, 0);
+ snd_pcm_status_get_trigger_tstamp(status, &tstamp);
+ timersub(&now, &tstamp, &diff);
+ fprintf(stderr, _("%s!!! (at least %.3f ms long)\n"),
+ stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
+ diff.tv_sec * 1000 + diff.tv_usec / 1000.0);
+ }
if (verbose) {
fprintf(stderr, _("Status:\n"));
snd_pcm_status_dump(status, log);
@@ -1396,20 +1441,60 @@
static void do_test_position(void)
{
- static int counter = 0;
+ static long counter = 0;
+ static time_t tmr = -1;
+ time_t now;
+ static float availsum, delaysum, samples;
+ static snd_pcm_sframes_t maxavail, maxdelay;
+ static snd_pcm_sframes_t minavail, mindelay;
+ static snd_pcm_sframes_t badavail = 0, baddelay = 0;
+ snd_pcm_sframes_t outofrange;
snd_pcm_sframes_t avail, delay;
int err;
err = snd_pcm_avail_delay(handle, &avail, &delay);
if (err < 0)
return;
- if (avail > 4 * (snd_pcm_sframes_t)buffer_frames ||
- avail < -4 * (snd_pcm_sframes_t)buffer_frames ||
- delay > 4 * (snd_pcm_sframes_t)buffer_frames ||
- delay < -4 * (snd_pcm_sframes_t)buffer_frames) {
- fprintf(stderr, "Suspicious buffer position (%i total): avail = %li, delay = %li, buffer = %li\n", ++counter, (long)avail, (long)delay, (long)buffer_frames);
+ outofrange = (test_coef * (snd_pcm_sframes_t)buffer_frames) / 2;
+ if (avail > outofrange || avail < -outofrange ||
+ delay > outofrange || delay < -outofrange) {
+ badavail = avail; baddelay = delay;
+ availsum = delaysum = samples = 0;
+ maxavail = maxdelay = 0;
+ minavail = mindelay = buffer_frames * 16;
+ fprintf(stderr, _("Suspicious buffer position (%li total): "
+ "avail = %li, delay = %li, buffer = %li\n"),
+ ++counter, (long)avail, (long)delay, (long)buffer_frames);
} else if (verbose) {
- fprintf(stderr, "Buffer position: %li/%li (%li)\n", (long)avail, (long)delay, (long)buffer_frames);
+ time(&now);
+ if (tmr == (time_t) -1) {
+ tmr = now;
+ availsum = delaysum = samples = 0;
+ maxavail = maxdelay = 0;
+ minavail = mindelay = buffer_frames * 16;
+ }
+ if (avail > maxavail)
+ maxavail = avail;
+ if (delay > maxdelay)
+ maxdelay = delay;
+ if (avail < minavail)
+ minavail = avail;
+ if (delay < mindelay)
+ mindelay = delay;
+ availsum += avail;
+ delaysum += delay;
+ samples++;
+ if (avail != 0 && now != tmr) {
+ fprintf(stderr, "BUFPOS: avg%li/%li "
+ "min%li/%li max%li/%li (%li) (%li:%li/%li)\n",
+ (long)(availsum / samples),
+ (long)(delaysum / samples),
+ (long)minavail, (long)mindelay,
+ (long)maxavail, (long)maxdelay,
+ (long)buffer_frames,
+ counter, badavail, baddelay);
+ tmr = now;
+ }
}
}
@@ -1433,7 +1518,8 @@
if (test_position)
do_test_position();
if (r == -EAGAIN || (r >= 0 && (size_t)r < count)) {
- snd_pcm_wait(handle, 1000);
+ if (!test_nowait)
+ snd_pcm_wait(handle, 1000);
} else if (r == -EPIPE) {
xrun();
} else if (r == -ESTRPIPE) {
@@ -1478,7 +1564,8 @@
if (test_position)
do_test_position();
if (r == -EAGAIN || (r >= 0 && (size_t)r < count)) {
- snd_pcm_wait(handle, 1000);
+ if (!test_nowait)
+ snd_pcm_wait(handle, 1000);
} else if (r == -EPIPE) {
xrun();
} else if (r == -ESTRPIPE) {
@@ -1520,7 +1607,8 @@
if (test_position)
do_test_position();
if (r == -EAGAIN || (r >= 0 && (size_t)r < count)) {
- snd_pcm_wait(handle, 1000);
+ if (!test_nowait)
+ snd_pcm_wait(handle, 1000);
} else if (r == -EPIPE) {
xrun();
} else if (r == -ESTRPIPE) {
@@ -1562,7 +1650,8 @@
if (test_position)
do_test_position();
if (r == -EAGAIN || (r >= 0 && (size_t)r < count)) {
- snd_pcm_wait(handle, 1000);
+ if (!test_nowait)
+ snd_pcm_wait(handle, 1000);
} else if (r == -EPIPE) {
xrun();
} else if (r == -ESTRPIPE) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/aplay/Makefile.am new/alsa-utils-1.0.20/aplay/Makefile.am
--- old/alsa-utils-1.0.19/aplay/Makefile.am 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/aplay/Makefile.am 2009-05-06 09:07:24.000000000 +0200
@@ -1,5 +1,7 @@
+LIBRT = @LIBRT@
+
INCLUDES = -I$(top_srcdir)/include
-LDADD = $(LIBINTL)
+LDADD = $(LIBINTL) $(LIBRT)
# debug flags
#LDFLAGS = -static
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/configure.in new/alsa-utils-1.0.20/configure.in
--- old/alsa-utils-1.0.19/configure.in 2009-01-19 12:24:19.000000000 +0100
+++ new/alsa-utils-1.0.20/configure.in 2009-05-06 09:17:13.000000000 +0200
@@ -2,7 +2,7 @@
AC_PREREQ(2.59)
AC_INIT(alsamixer/alsamixer.c)
AC_PREFIX_DEFAULT(/usr)
-AM_INIT_AUTOMAKE(alsa-utils, 1.0.19)
+AM_INIT_AUTOMAKE(alsa-utils, 1.0.20)
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.15])
@@ -29,10 +29,44 @@
AC_PROG_LN_S
AM_PATH_ALSA(1.0.16)
+dnl Check components
+AC_CHECK_HEADERS([alsa/pcm.h], [have_pcm="yes"], [have_pcm="no"],
+ [#include <alsa/asoundlib.h>])
+AC_CHECK_HEADERS([alsa/mixer.h], [have_mixer="yes"], [have_mixer="no"],
+ [#include <alsa/asoundlib.h>])
+AC_CHECK_HEADERS([alsa/rawmidi.h], [have_rawmidi="yes"], [have_rawmidi="no"],
+ [#include <alsa/asoundlib.h>])
+AC_CHECK_HEADERS([alsa/seq.h], [have_seq="yes"], [have_seq="no"],
+ [#include <alsa/asoundlib.h>])
+
+AM_CONDITIONAL(HAVE_PCM, test "$have_pcm" = "yes")
+AM_CONDITIONAL(HAVE_MIXER, test "$have_mixer" = "yes")
+AM_CONDITIONAL(HAVE_RAWMIDI, test "$have_rawmidi" = "yes")
+AM_CONDITIONAL(HAVE_SEQ, test "$have_seq" = "yes")
+
+dnl Check for librt
+LIBRT=""
+AC_MSG_CHECKING(for librt)
+AC_ARG_WITH(librt,
+ AS_HELP_STRING([--with-librt], [Use librt for monotonic clock (default = yes)]),
+ [ have_librt="$withval" ], [ have_librt="yes" ])
+if test "$have_librt" = "yes"; then
+ AC_CHECK_LIB([rt], [clock_gettime], [HAVE_LIBRT="yes"])
+ if test "$HAVE_LIBRT" = "yes" ; then
+ LIBRT="-lrt"
+ AC_DEFINE([HAVE_LIBRT], 1, [Have librt])
+ AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Have clock gettime])
+ fi
+else
+ AC_MSG_RESULT(no)
+fi
+
dnl Disable alsamixer
CURSESINC=""
CURSESLIB=""
CURSES_CFLAGS=""
+alsamixer=
+if test "$have_mixer" = "yes"; then
AC_ARG_ENABLE(alsamixer,
[ --disable-alsamixer Disable alsamixer compilation],
[case "${enableval}" in
@@ -40,6 +74,7 @@
no) alsamixer=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-alsamixer) ;;
esac],[alsamixer=true])
+fi
AM_CONDITIONAL(ALSAMIXER, test x$alsamixer = xtrue)
dnl Disable alsaconf
@@ -142,6 +177,8 @@
SAVE_UTIL_VERSION
+AC_SUBST(LIBRT)
+
AC_OUTPUT(Makefile alsactl/Makefile alsactl/init/Makefile \
alsamixer/Makefile amidi/Makefile amixer/Makefile \
m4/Makefile po/Makefile.in \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/include/aconfig.h.in new/alsa-utils-1.0.20/include/aconfig.h.in
--- old/alsa-utils-1.0.19/include/aconfig.h.in 2009-01-19 12:24:21.000000000 +0100
+++ new/alsa-utils-1.0.20/include/aconfig.h.in 2009-05-06 09:17:15.000000000 +0200
@@ -7,6 +7,18 @@
language is requested. */
#undef ENABLE_NLS
+/* Define to 1 if you have the <alsa/mixer.h> header file. */
+#undef HAVE_ALSA_MIXER_H
+
+/* Define to 1 if you have the <alsa/pcm.h> header file. */
+#undef HAVE_ALSA_PCM_H
+
+/* Define to 1 if you have the <alsa/rawmidi.h> header file. */
+#undef HAVE_ALSA_RAWMIDI_H
+
+/* Define to 1 if you have the <alsa/seq.h> header file. */
+#undef HAVE_ALSA_SEQ_H
+
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT
@@ -15,6 +27,9 @@
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+/* Have clock gettime */
+#undef HAVE_CLOCK_GETTIME
+
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
@@ -28,6 +43,9 @@
/* Define to 1 if you have the `asound' library (-lasound). */
#undef HAVE_LIBASOUND
+/* Have librt */
+#undef HAVE_LIBRT
+
/* Name of package */
#undef PACKAGE
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/include/version.h new/alsa-utils-1.0.20/include/version.h
--- old/alsa-utils-1.0.19/include/version.h 2009-01-19 12:24:28.000000000 +0100
+++ new/alsa-utils-1.0.20/include/version.h 2009-05-06 09:17:22.000000000 +0200
@@ -4,9 +4,9 @@
#define SND_UTIL_MAJOR 1
#define SND_UTIL_MINOR 0
-#define SND_UTIL_SUBMINOR 19
+#define SND_UTIL_SUBMINOR 20
#define SND_UTIL_VERSION ((SND_UTIL_MAJOR<<16)|\
(SND_UTIL_MINOR<<8)|\
SND_UTIL_SUBMINOR)
-#define SND_UTIL_VERSION_STR "1.0.19"
+#define SND_UTIL_VERSION_STR "1.0.20"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/Makefile.am new/alsa-utils-1.0.20/Makefile.am
--- old/alsa-utils-1.0.19/Makefile.am 2009-01-19 12:24:19.000000000 +0100
+++ new/alsa-utils-1.0.20/Makefile.am 2009-05-06 09:17:13.000000000 +0200
@@ -1,16 +1,25 @@
INCLUDES=-I$(top_srcdir)/include
+
+SUBDIRS = include alsactl utils m4 po
if ALSAMIXER
-ALSAMIXER_DIR=alsamixer
-else
-ALSAMIXER_DIR=
+SUBDIRS += alsamixer
+endif
+if HAVE_MIXER
+SUBDIRS += amixer
+endif
+if HAVE_RAWMIDI
+SUBDIRS += amidi
endif
if ALSACONF
-ALSACONF_DIR=alsaconf
-else
-ALSACONF_DIR=
+SUBDIRS += alsaconf
endif
-SUBDIRS= include alsactl $(ALSACONF_DIR) $(ALSAMIXER_DIR) amidi amixer \
- aplay iecset seq speaker-test utils m4 po
+if HAVE_PCM
+SUBDIRS += aplay iecset speaker-test
+endif
+if HAVE_SEQ
+SUBDIRS += seq
+endif
+
EXTRA_DIST= config.rpath TODO gitcompile
AUTOMAKE_OPTIONS=foreign
ACLOCAL_AMFLAGS = -I m4
Files old/alsa-utils-1.0.19/po/ja.gmo and new/alsa-utils-1.0.20/po/ja.gmo differ
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/po/ja.po new/alsa-utils-1.0.20/po/ja.po
--- old/alsa-utils-1.0.19/po/ja.po 2009-01-19 12:24:37.000000000 +0100
+++ new/alsa-utils-1.0.20/po/ja.po 2009-05-06 09:17:24.000000000 +0200
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: alsa-utils 1.0.9a\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-19 12:24+0100\n"
+"POT-Creation-Date: 2009-05-06 09:17+0200\n"
"PO-Revision-Date: 2006-04-18 15:51+0200\n"
"Last-Translator: Takashi Iwai <tiwai(a)suse.de>\n"
"Language-Team: Japanese\n"
@@ -17,23 +17,23 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: aplay/aplay.c:136
+#: aplay/aplay.c:139
msgid "raw data"
msgstr "raw データ"
-#: aplay/aplay.c:137
+#: aplay/aplay.c:140
msgid "VOC"
msgstr "VOC"
-#: aplay/aplay.c:139
+#: aplay/aplay.c:142
msgid "WAVE"
msgstr "WAVE"
-#: aplay/aplay.c:140
+#: aplay/aplay.c:143
msgid "Sparc Audio"
msgstr "Sparc オーディオ"
-#: aplay/aplay.c:161
+#: aplay/aplay.c:164
#, fuzzy, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -68,6 +68,10 @@
" --disable-format disable automatic format conversions\n"
" --disable-softvol disable software volume control (softvol)\n"
" --test-position test ring buffer position\n"
+" --test-coef=#\t test coeficient for ring buffer position (default 8)\n"
+" expression for validation is: coef * (buffer_size / "
+"2)\n"
+" --test-nowait do not wait for ring buffer - eats whole CPU\n"
msgstr ""
"使用法: %s [オプション]... [ファイル]...\n"
"\n"
@@ -96,12 +100,12 @@
"-v, --verbose PCM の設定を表示 (複数指定可能)\n"
"-I, --separate-channels 各チャネルに一つのファイルを用いる\n"
-#: aplay/aplay.c:193 speaker-test/speaker-test.c:783
+#: aplay/aplay.c:199 speaker-test/speaker-test.c:783
#, c-format
msgid "Recognized sample formats are:"
msgstr "認識されるサンプルフォーマット:"
-#: aplay/aplay.c:199
+#: aplay/aplay.c:205
#, c-format
msgid ""
"\n"
@@ -110,154 +114,154 @@
"\n"
"これらのいくつかは指定のハードウェアで使用不可能な場合があります\n"
-#: aplay/aplay.c:200
+#: aplay/aplay.c:206
#, c-format
msgid "The availabled format shortcuts are:\n"
msgstr "可能なフォーマットの省略形:\n"
-#: aplay/aplay.c:201
+#: aplay/aplay.c:207
#, c-format
msgid "-f cd (16 bit little endian, 44100, stereo)\n"
msgstr "-f cd (16 ビット、リトルエンディアン、44100、ステレオ)\n"
-#: aplay/aplay.c:202
+#: aplay/aplay.c:208
#, c-format
msgid "-f cdr (16 bit big endian, 44100, stereo)\n"
msgstr "-f cdr (16 ビット、ビッグエンディアン、44100、ステレオ)\n"
-#: aplay/aplay.c:203
+#: aplay/aplay.c:209
#, c-format
msgid "-f dat (16 bit little endian, 48000, stereo)\n"
msgstr "-f dat (16 ビット、リトルエンディアン、48000、ステレオ)\n"
-#: aplay/aplay.c:217
+#: aplay/aplay.c:223
msgid "no soundcards found..."
msgstr "サウンドカードが見つかりません..."
-#: aplay/aplay.c:220
+#: aplay/aplay.c:226
#, c-format
msgid "**** List of %s Hardware Devices ****\n"
msgstr "**** ハードウェアデバイス %s のリスト ****\n"
-#: aplay/aplay.c:249
+#: aplay/aplay.c:255
#, c-format
msgid "card %i: %s [%s], device %i: %s [%s]\n"
msgstr "カード %i: %s [%s], デバイス %i: %s [%s]\n"
-#: aplay/aplay.c:255
+#: aplay/aplay.c:261
#, c-format
msgid " Subdevices: %i/%i\n"
msgstr " サブデバイス: %i/%i\n"
-#: aplay/aplay.c:262
+#: aplay/aplay.c:268
#, c-format
msgid " Subdevice #%i: %s\n"
msgstr " サブデバイス #%i: %s\n"
-#: aplay/aplay.c:326
+#: aplay/aplay.c:332
#, c-format
msgid "Aborted by signal %s...\n"
msgstr "シグナル %s で中断...\n"
-#: aplay/aplay.c:420
+#: aplay/aplay.c:430
msgid "command should be named either arecord or aplay"
msgstr "arecord または aplay コマンドのみ可能"
-#: aplay/aplay.c:459
+#: aplay/aplay.c:469
#, c-format
msgid "unrecognized file format %s"
msgstr "不正なファイルフォーマット %s"
-#: aplay/aplay.c:466
+#: aplay/aplay.c:476
#, c-format
msgid "value %i for channels is invalid"
msgstr "不正なチャネル数 %i"
-#: aplay/aplay.c:485
+#: aplay/aplay.c:495
#, c-format
msgid "wrong extended format '%s'"
msgstr "不正な拡張フォーマット '%s'"
-#: aplay/aplay.c:496
+#: aplay/aplay.c:506
#, c-format
msgid "bad speed value %i"
msgstr "不正なレート値 %i"
-#: aplay/aplay.c:574
+#: aplay/aplay.c:592
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "より詳しい情報は「%s --help」を実行してください\n"
-#: aplay/aplay.c:590
+#: aplay/aplay.c:608
#, c-format
msgid "audio open error: %s"
msgstr ""
-#: aplay/aplay.c:595
+#: aplay/aplay.c:613
#, c-format
msgid "info error: %s"
msgstr ""
-#: aplay/aplay.c:602
+#: aplay/aplay.c:620
#, c-format
msgid "nonblock setting error: %s"
msgstr ""
-#: aplay/aplay.c:612 aplay/aplay.c:719 aplay/aplay.c:1073
+#: aplay/aplay.c:630 aplay/aplay.c:737 aplay/aplay.c:1092
msgid "not enough memory"
msgstr "メモリが足りません"
-#: aplay/aplay.c:709
+#: aplay/aplay.c:727
#, c-format
msgid "read error (called from line %i)"
msgstr "リードエラー (%i 行)"
-#: aplay/aplay.c:767
+#: aplay/aplay.c:785
#, c-format
msgid "unknown length of 'fmt ' chunk (read %u, should be %u at least)"
msgstr ""
-#: aplay/aplay.c:777
+#: aplay/aplay.c:795
#, c-format
msgid ""
"unknown length of extensible 'fmt ' chunk (read %u, should be %u at least)"
msgstr ""
-#: aplay/aplay.c:782
+#: aplay/aplay.c:800
msgid "wrong format tag in extensible 'fmt ' chunk"
msgstr ""
-#: aplay/aplay.c:789
+#: aplay/aplay.c:807
#, c-format
msgid "can't play WAVE-file format 0x%04x which is not PCM or FLOAT encoded"
msgstr ""
-#: aplay/aplay.c:793
+#: aplay/aplay.c:811
#, c-format
msgid "can't play WAVE-files with %d tracks"
msgstr "%d トラックを含む WAVE ファイルは再生できません"
-#: aplay/aplay.c:801 aplay/aplay.c:901
+#: aplay/aplay.c:819 aplay/aplay.c:919
#, c-format
msgid "Warning: format is changed to U8\n"
msgstr "警告: フォーマットは U8 に変更されます\n"
-#: aplay/aplay.c:807
+#: aplay/aplay.c:825
#, c-format
msgid "Warning: format is changed to S16_LE\n"
msgstr "警告: フォーマットは S16_LE に変更されます\n"
-#: aplay/aplay.c:815
+#: aplay/aplay.c:833
#, c-format
msgid "Warning: format is changed to S24_3LE\n"
msgstr "警告: フォーマットは S24_3LE に変更されます\n"
-#: aplay/aplay.c:821
+#: aplay/aplay.c:839
#, c-format
msgid "Warning: format is changed to S24_LE\n"
msgstr "警告: フォーマットは S24_LE に変更されます\n"
-#: aplay/aplay.c:825
+#: aplay/aplay.c:843
#, c-format
msgid ""
" can't play WAVE-files with sample %d bits in %d bytes wide (%d channels)"
@@ -265,254 +269,261 @@
"%2$d バイト長 %1$d サンプルビット (%3$d チャネル) の WAVE ファイルは再生でき"
"ません"
-#: aplay/aplay.c:837
+#: aplay/aplay.c:855
#, c-format
msgid " can't play WAVE-files with sample %d bits wide"
msgstr "%d ビット長のサンプルの WAVE ファイルは再生できません"
-#: aplay/aplay.c:895
+#: aplay/aplay.c:913
#, c-format
msgid "Warning: format is changed to MU_LAW\n"
msgstr "警告: フォーマットは MU_LAW に変更されます\n"
-#: aplay/aplay.c:907
+#: aplay/aplay.c:925
#, c-format
msgid "Warning: format is changed to S16_BE\n"
msgstr "警告: フォーマットは S16_BE に変更されます\n"
-#: aplay/aplay.c:920 aplay/aplay.c:1679 aplay/aplay.c:1686 aplay/aplay.c:2208
-#: aplay/aplay.c:2220
+#: aplay/aplay.c:938 aplay/aplay.c:1768 aplay/aplay.c:1775 aplay/aplay.c:2297
+#: aplay/aplay.c:2309
msgid "read error"
msgstr "リードエラー"
-#: aplay/aplay.c:939
+#: aplay/aplay.c:957
msgid "Broken configuration for this PCM: no configurations available"
msgstr "指定の PCM を使用できません: 設定がありません"
-#: aplay/aplay.c:956
+#: aplay/aplay.c:974
msgid "Access type not available"
msgstr "アクセスタイプが使用不可能"
-#: aplay/aplay.c:961
+#: aplay/aplay.c:979
msgid "Sample format non available"
msgstr "サンプルフォーマットが使用不可能"
-#: aplay/aplay.c:966
+#: aplay/aplay.c:984
msgid "Channels count non available"
msgstr "チャネル数が使用不可能"
-#: aplay/aplay.c:981
+#: aplay/aplay.c:999
#, c-format
msgid "Warning: rate is not accurate (requested = %iHz, got = %iHz)\n"
msgstr "警告: レートが不正確です (要求値 = %iHz, 使用値 = %iHz)\n"
-#: aplay/aplay.c:987
+#: aplay/aplay.c:1005
#, c-format
msgid " please, try the plug plugin %s\n"
msgstr " plug プラグイン%s を使用してください\n"
-#: aplay/aplay.c:1022
+#: aplay/aplay.c:1041
msgid "Unable to install hw params:"
msgstr "hw params のインストールに失敗しました:"
-#: aplay/aplay.c:1029
+#: aplay/aplay.c:1048
#, c-format
msgid "Can't use period equal to buffer size (%lu == %lu)"
msgstr "period と buffer サイズには同じ値を使用できません (%lu == %lu)"
-#: aplay/aplay.c:1060
+#: aplay/aplay.c:1079
msgid "unable to install sw params:"
msgstr "sw params のインストールに失敗しました:"
-#: aplay/aplay.c:1123
+#: aplay/aplay.c:1154
#, c-format
msgid "status error: %s"
msgstr "ステータスエラー: %s"
-#: aplay/aplay.c:1131
+#: aplay/aplay.c:1164 aplay/aplay.c:1175
#, c-format
msgid "%s!!! (at least %.3f ms long)\n"
msgstr "%s!!! (少なくとも %.3f ms)\n"
-#: aplay/aplay.c:1132
+#: aplay/aplay.c:1165 aplay/aplay.c:1168 aplay/aplay.c:1176
msgid "underrun"
msgstr "アンダーラン"
-#: aplay/aplay.c:1132
+#: aplay/aplay.c:1165 aplay/aplay.c:1176
msgid "overrun"
msgstr "オーバーラン"
-#: aplay/aplay.c:1135
+#: aplay/aplay.c:1180
#, c-format
msgid "Status:\n"
msgstr "ステータス:\n"
-#: aplay/aplay.c:1139
+#: aplay/aplay.c:1184
#, c-format
msgid "xrun: prepare error: %s"
msgstr ""
-#: aplay/aplay.c:1145
+#: aplay/aplay.c:1190
#, c-format
msgid "Status(DRAINING):\n"
msgstr "ステータス(DRAINING):\n"
-#: aplay/aplay.c:1149
+#: aplay/aplay.c:1194
#, c-format
msgid "capture stream format change? attempting recover...\n"
msgstr "録音ストリームのフォーマットが変更? 修復を試みます...\n"
-#: aplay/aplay.c:1151
+#: aplay/aplay.c:1196
#, c-format
msgid "xrun(DRAINING): prepare error: %s"
msgstr ""
-#: aplay/aplay.c:1158
+#: aplay/aplay.c:1203
#, c-format
msgid "Status(R/W):\n"
msgstr "ステータス(R/W):\n"
-#: aplay/aplay.c:1161
+#: aplay/aplay.c:1206
#, c-format
msgid "read/write error, state = %s"
msgstr "読み書きエラー, ステータス = %s"
-#: aplay/aplay.c:1171
+#: aplay/aplay.c:1216
#, c-format
msgid "Suspended. Trying resume. "
msgstr "サスペンド中です。レジュームします。"
-#: aplay/aplay.c:1176
+#: aplay/aplay.c:1221
#, c-format
msgid "Failed. Restarting stream. "
msgstr "失敗しました。ストリームを再スタートします。"
-#: aplay/aplay.c:1178
+#: aplay/aplay.c:1223
#, c-format
msgid "suspend: prepare error: %s"
msgstr "サスペンド: prepare エラー: %s"
-#: aplay/aplay.c:1183
+#: aplay/aplay.c:1228
#, c-format
msgid "Done.\n"
msgstr "終了\n"
-#: aplay/aplay.c:1205
+#: aplay/aplay.c:1250
#, c-format
msgid " !clip "
msgstr ""
-#: aplay/aplay.c:1352
+#: aplay/aplay.c:1397
#, c-format
msgid "Unsupported bit size %d.\n"
msgstr ""
-#: aplay/aplay.c:1386
+#: aplay/aplay.c:1431
#, c-format
msgid "Max peak (%li samples): 0x%08x "
msgstr "最大ピーク (%li サンプル): 0x%08x "
-#: aplay/aplay.c:1442
+#: aplay/aplay.c:1465
+#, c-format
+msgid ""
+"Suspicious buffer position (%li total): avail = %li, delay = %li, buffer = %"
+"li\n"
+msgstr ""
+
+#: aplay/aplay.c:1528
#, c-format
msgid "write error: %s"
msgstr "書込エラー: %s"
-#: aplay/aplay.c:1487
+#: aplay/aplay.c:1574
#, c-format
msgid "writev error: %s"
msgstr "書込(writev)エラー: %s"
-#: aplay/aplay.c:1529
+#: aplay/aplay.c:1617
#, c-format
msgid "read error: %s"
msgstr "読込エラー: %s"
-#: aplay/aplay.c:1571
+#: aplay/aplay.c:1660
#, c-format
msgid "readv error: %s"
msgstr "読込(readv)エラー: %s"
-#: aplay/aplay.c:1619
+#: aplay/aplay.c:1708
msgid "can't allocate buffer for silence"
msgstr "サイレンス用のバッファの取得に失敗しました"
-#: aplay/aplay.c:1628 aplay/aplay.c:1854 aplay/aplay.c:1859 aplay/aplay.c:1906
-#: aplay/aplay.c:1915 aplay/aplay.c:1922 aplay/aplay.c:1932 aplay/aplay.c:1938
-#: aplay/aplay.c:2010 aplay/aplay.c:2040 aplay/aplay.c:2054
+#: aplay/aplay.c:1717 aplay/aplay.c:1943 aplay/aplay.c:1948 aplay/aplay.c:1995
+#: aplay/aplay.c:2004 aplay/aplay.c:2011 aplay/aplay.c:2021 aplay/aplay.c:2027
+#: aplay/aplay.c:2099 aplay/aplay.c:2129 aplay/aplay.c:2143
msgid "write error"
msgstr "書込エラー"
-#: aplay/aplay.c:1641
+#: aplay/aplay.c:1730
#, c-format
msgid "voc_pcm_flush - silence error"
msgstr ""
-#: aplay/aplay.c:1644
+#: aplay/aplay.c:1733
msgid "voc_pcm_flush error"
msgstr ""
-#: aplay/aplay.c:1670
+#: aplay/aplay.c:1759
msgid "malloc error"
msgstr "malloc エラー"
-#: aplay/aplay.c:1674
+#: aplay/aplay.c:1763
#, c-format
msgid "Playing Creative Labs Channel file '%s'...\n"
msgstr "Creative Labs Channel ファイル '%s' を演奏中...\n"
-#: aplay/aplay.c:1742 aplay/aplay.c:1834
+#: aplay/aplay.c:1831 aplay/aplay.c:1923
msgid "can't play packed .voc files"
msgstr "packed .voc ファイルは演奏できません"
-#: aplay/aplay.c:1794
+#: aplay/aplay.c:1883
#, c-format
msgid "can't play loops; %s isn't seekable\n"
msgstr "ループ演奏できません。%s はシーク不可能です\n"
-#: aplay/aplay.c:1843
+#: aplay/aplay.c:1932
#, c-format
msgid "unknown blocktype %d. terminate."
msgstr "未知のブロックタイプ %d: 終了します。"
-#: aplay/aplay.c:1974
+#: aplay/aplay.c:2063
#, c-format
msgid "Wave doesn't support %s format..."
msgstr "WAVE は %s フォーマットをサポートしません..."
-#: aplay/aplay.c:2034
+#: aplay/aplay.c:2123
#, c-format
msgid "Sparc Audio doesn't support %s format..."
msgstr "Sparc オーディオは %s フォーマットをサポートしません..."
-#: aplay/aplay.c:2115
+#: aplay/aplay.c:2204
msgid "Playing"
msgstr "再生中"
-#: aplay/aplay.c:2115
+#: aplay/aplay.c:2204
msgid "Recording"
msgstr "録音中"
-#: aplay/aplay.c:2119
+#: aplay/aplay.c:2208
#, c-format
msgid "Rate %d Hz, "
msgstr "レート %d Hz, "
-#: aplay/aplay.c:2121
+#: aplay/aplay.c:2210
#, c-format
msgid "Mono"
msgstr "モノラル"
-#: aplay/aplay.c:2123
+#: aplay/aplay.c:2212
#, c-format
msgid "Stereo"
msgstr "ステレオ"
-#: aplay/aplay.c:2125
+#: aplay/aplay.c:2214
#, c-format
msgid "Channels %i"
msgstr "チャネル数 %i"
-#: aplay/aplay.c:2484 aplay/aplay.c:2537
+#: aplay/aplay.c:2573 aplay/aplay.c:2626
#, c-format
msgid "You need to specify %d files"
msgstr "%d 個のファイルを指定してください"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-utils-1.0.19/speaker-test/speaker-test.c new/alsa-utils-1.0.20/speaker-test/speaker-test.c
--- old/alsa-utils-1.0.19/speaker-test/speaker-test.c 2009-01-19 12:17:19.000000000 +0100
+++ new/alsa-utils-1.0.20/speaker-test/speaker-test.c 2009-05-06 09:07:24.000000000 +0200
@@ -85,48 +85,48 @@
static char *wav_file_dir = SOUNDSDIR;
static const char *const channel_name[MAX_CHANNELS] = {
- N_("Front Left"),
- N_("Front Right"),
- N_("Rear Left"),
- N_("Rear Right"),
- N_("Center"),
- N_("LFE"),
- N_("Side Left"),
- N_("Side Right"),
- N_("Channel 9"),
- N_("Channel 10"),
- N_("Channel 11"),
- N_("Channel 12"),
- N_("Channel 13"),
- N_("Channel 14"),
- N_("Channel 15"),
- N_("Channel 16")
+ /* 0 */ N_("Front Left"),
+ /* 1 */ N_("Front Right"),
+ /* 2 */ N_("Rear Left"),
+ /* 3 */ N_("Rear Right"),
+ /* 4 */ N_("Center"),
+ /* 5 */ N_("LFE"),
+ /* 6 */ N_("Side Left"),
+ /* 7 */ N_("Side Right"),
+ /* 8 */ N_("Channel 9"),
+ /* 9 */ N_("Channel 10"),
+ /* 10 */ N_("Channel 11"),
+ /* 11 */ N_("Channel 12"),
+ /* 12 */ N_("Channel 13"),
+ /* 13 */ N_("Channel 14"),
+ /* 14 */ N_("Channel 15"),
+ /* 15 */ N_("Channel 16")
};
static const int channels4[] = {
- 0,
- 1,
- 3,
- 2
+ 0, /* Front Left */
+ 1, /* Front Right */
+ 3, /* Rear Right */
+ 2, /* Rear Left */
};
static const int channels6[] = {
- 0,
- 4,
- 1,
- 3,
- 2,
- 5
-};
+ 0, /* Front Left */
+ 4, /* Center */
+ 1, /* Front Right */
+ 3, /* Rear Right */
+ 2, /* Rear Left */
+ 5, /* LFE */
+};
static const int channels8[] = {
- 0,
- 4,
- 1,
- 7,
- 3,
- 2,
- 6,
- 5
-};
+ 0, /* Front Left */
+ 4, /* Center */
+ 1, /* Front Right */
+ 7, /* Side Right */
+ 3, /* Rear Right */
+ 2, /* Rear Left */
+ 6, /* Side Left */
+ 5, /* LFE */
+};
static void generate_sine(uint8_t *frames, int channel, int count, double *_phase) {
double phase = *_phase;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package device-mapper for openSUSE:Factory
checked in at Wed May 6 18:36:18 CEST 2009.
--------
--- device-mapper/device-mapper.changes 2009-03-06 21:41:52.000000000 +0100
+++ /mounts/work_src_done/STABLE/device-mapper/device-mapper.changes 2009-04-27 12:51:44.000000000 +0200
@@ -0,0 +1 @@
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
@@ -2 +2,0 @@
-Fri Mar 6 21:41:44 CET 2009 - crrodriguez(a)suse.de
@@ -4 +4,19 @@
-- remove static libraries
+- Upgrade to 1.02.31
+ . Add "all" field to reports expanding to all fields of report type.
+ . Enforce device name length and character limitations in libdm.
+ . Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines.
+ . Only resume devices in dm_tree_preload_children if size changes.
+ . Extend deptree buffers so the largest possible device numbers fit.
+ . Generate versioned libdevmapper-event.so.
+ . Underline longer report help text headings.
+
+-------------------------------------------------------------------
+Tue Apr 21 10:11:35 CEST 2009 - xwhu(a)suse.de
+
+- bnc#479104, export additional information
+
+-------------------------------------------------------------------
+Tue Feb 3 08:42:58 CET 2009 - hare(a)suse.de
+
+- No whitespace for DM_STATE export variable (bnc#440959)
+- Remove obsolete reference to boot.scsidev from init script
New Changes file:
--- /dev/null 2009-04-14 11:58:14.000000000 +0200
+++ /mounts/work_src_done/STABLE/device-mapper/lvm2.changes 2009-04-27 12:52:19.000000000 +0200
@@ -0,0 +1,878 @@
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
+-------------------------------------------------------------------
+
+- Upgrade to LVM2 2.02.45
+ Avoid scanning empty metadata areas for VG names
+ Pass --test from lvresize to fsadm as --dry-run.
+ Remove duplicate cpg_initialize from clvmd startup.
+ Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
+ Remove external dependency on the 'cut' command from fsadm.
+ Fix pvs segfault when pv mda attributes requested for not available PV.
+ Fix lvresize size conversion for fsadm when block size is not 1K.
+ Add pv_mda_size to pvs and vg_mda_size to vgs.
+ Add "--refresh" functionality to vgchange and vgmknodes.
+ Fix vgrename using UUID if there are VGs with identical names.
+ Fix segfault when invalid field given in reporting commands.
+ Merge device-mapper into the lvm2 tree.
+ Exit with non-zero status from vgdisplay if couldn't show any requested VG.
+ Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
+ Fix conversion of md chunk size into sectors.
+ Fix misleading error message when there are no allocatable extents in VG.
+ Fix handling of PVs which reappeared with old metadata version.
+ Fix mirror DSO to call vgreduce with proper parameters.
+ Fix validation of --minor and --major in lvcreate to require -My always.
+ Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
+
+-------------------------------------------------------------------
+Tue Mar 31 11:59:03 CST 2009 - xwhu(a)suse.de
+
+- Handle the case that drbd virtual device has the same PV uuid
+ with the underlining physical device.
+
+-------------------------------------------------------------------
+Wed Mar 25 23:14:29 CST 2009 - xwhu(a)suse.de
+
+- Do not filter out tmp device file(bnc#485572)
+- Do not try to activate VG when all paths are down already(bnc#479104)
+
+-------------------------------------------------------------------
+Wed Mar 25 22:50:50 CST 2009 - xwhu(a)suse.de
+
+- Split CLVMD as a independent package
+
+-------------------------------------------------------------------
+Tue Mar 24 00:23:13 CST 2009 - xwhu(a)suse.de
+
+- Fix for bnc#486952
+ use "killproc -INT" instead of "killproc"
+ handle signal in the main loop thread only
+
+-------------------------------------------------------------------
+Thu Feb 26 14:08:22 CST 2009 - xwhu(a)suse.de
+
+- add daemon_options parameter to clvmd.ocf
+- check EUNLOCK for dlm_ls_unlock_wait
+
+-------------------------------------------------------------------
+Wed Feb 25 18:39:26 CST 2009 - xwhu(a)suse.de
+
+- bnc#479422, check both lksb.sb_status and status.
+
+-------------------------------------------------------------------
+Fri Feb 20 10:24:00 CET 2009 - xwhu(a)suse.de
+
+- simplify patch of dlm lock to clvmd
+
+-------------------------------------------------------------------
+Fri Feb 20 08:06:37 CET 2009 - xwhu(a)suse.de
+
+- bnc#476861, clvmd.ocf doesn't report the correct status when
+ kill -9 doesn't terminate the process
+
+-------------------------------------------------------------------
+Thu Jan 22 13:00:26 CST 2009 - xwhu(a)suse.de
+
+- bnc#464851, use dlm instead of openais lck
+
+-------------------------------------------------------------------
+Wed Jan 21 15:23:31 CET 2009 - ro(a)suse.de
+
+- do not require a specific package release from subpackage
+ (bnc#467704)
+
+-------------------------------------------------------------------
+Wed Dec 3 18:51:27 CST 2008 - xwhu(a)suse.de
+
+- Add OCF script for clvmd
+
+-------------------------------------------------------------------
+Wed Nov 12 02:22:56 CST 2008 - xwhu(a)suse.de
+
+- bnc#443677. dmeventd DSOs are linked against liblvm2cmd
+
+-------------------------------------------------------------------
+Thu Oct 9 11:54:47 CEST 2008 - xwhu(a)suse.de
+
+- bnc#432782. Remove vol_id in 64-lvm2.rules.
+
+-------------------------------------------------------------------
+Mon Sep 29 14:09:33 CEST 2008 - ro(a)suse.de
+
+- buildreq: replace openais-devel by libopenais-devel
+
+-------------------------------------------------------------------
+Wed Sep 24 18:25:40 CEST 2008 - ro(a)suse.de
+
+- change "udevsettle" to "udevadm settle"
+
+-------------------------------------------------------------------
+Sat Sep 13 11:59:34 CEST 2008 - xwhu(a)novell.com
+
+- added missing directories to filelist
+
+-------------------------------------------------------------------
+Wed Sep 10 13:43:17 CEST 2008 - xwhu(a)novell.com
+
+- Upgrade to 2.0.39
+ Fix up cache for PVs without mdas after consistent VG metadata is processed.
+ Update validation of safe mirror log type conversions in lvconvert.
+ Fix lvconvert to disallow snapshot and mirror combinations.
+ Fix reporting of LV fields alongside unallocated PV segments.
+ Add --unquoted and --rows to reporting tools.
+ Avoid undefined return value after _memlock manipulation in lvm2_run.
+ Avoid link failure if configured without --enable-cmdlib or --enable-readline.
+ Make clvmd return at once if other nodes down in a gulm or openais cluster.
+ Fix and improve readahead 'auto' calculation for stripe_size.
+ Fix lvchange output for -r auto setting if auto is already set.
+ Fix ambiguous use of identifier error_message_produced.
+ Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
+ Don't call openlog for every debug line output by clvmd.
+ Add --force to lvextend and lvresize.
+ Fix vgchange to not activate mirror leg and log volumes directly.
+ Fix test directory clean up in make distclean.
+- pvcreate/pvremove/pvchange will create symlinks in /dev/disk/by-id/
+ to the device file
+-------------------------------------------------------------------
+Wed Sep 3 11:09:34 CEST 2008 - hare(a)suse.de
+
+- Call mkinitrd_setup during %post and %postun (bnc#413709)
+
+-------------------------------------------------------------------
+Tue Sep 2 16:59:00 CEST 2008 - hare(a)suse.de
+
+- Fix initrd scripts if no 'root=' parameter is given
+ (bnc#421546)
+
+-------------------------------------------------------------------
+Mon Aug 25 12:49:58 CEST 2008 - aj(a)suse.de
+
+- Provide and obsolete evms.
+
+-------------------------------------------------------------------
+Mon Aug 25 12:04:29 CEST 2008 - prusnak(a)suse.cz
+
+- enabled SELinux support [Fate#303662]
+
+-------------------------------------------------------------------
+Fri Aug 22 12:58:08 CEST 2008 - xwhu(a)suse.de
+
+- Remove the -p option for fillup_and_insserv
+
+-------------------------------------------------------------------
+Wed Aug 13 06:18:44 CEST 2008 - xwhu(a)suse.de
+
+- Add Should-Stop to boot.lvm
+
+-------------------------------------------------------------------
+Thu Jul 31 16:13:59 CST 2008 - xwhu(a)suse.de
+
+- repack LVM2.2.02.38.tar.bz2 into bz2 format
+
+-------------------------------------------------------------------
+Wed Jul 23 15:38:13 CEST 2008 - hare(a)suse.de
+
+- Include mkinitrd scriptlets.
+
+-------------------------------------------------------------------
+Fri Jun 27 07:51:31 CEST 2008 - xwhu(a)suse.de
+
+- update to 2.02.38
+ Fix tracking of validity of PVs with no mdas in lvmcache.
+ Fix return values for reporting commands when run with no PVs, LVs, or VGs.
+ Fix free_count when reading pool metadata.
+ Fix segfault when using pvcreate on a device containing pool metadata.
+ Fix segfault after _free_vginfo by remembering to remove vginfo from list.
+ Fix setpriority error message to signed int.
+ Fix uninitialised mutex in clvmd if all daemons are not running at startup.
+ Fix fsadm.sh to work with older blockdev, blkid & readlink binaries.
+ Fix lvresize to pass new size to fsadm when extending device.
+ Fix nodes list in clvmd-openais, and allow for broadcast messages.
+ Fix vgsplit internal counting of snapshot LVs.
+ Fix vgmerge snapshot_count when source VG contains snapshots.
+ Fix internal LV counter when a snapshot is removed.
+ Fix metadata corruption writing lvm1-formatted metadata with snapshots.
+ Fix lvconvert -m0 allocatable space check.
+ Fix vgdisplay 'Cur LV' field to match lvdisplay output.
+ Fix lv_count report field to exclude hidden LVs.
+ Fix vgsplit to only move hidden 'snapshotN' LVs when necessary.
++++ 681 more lines (skipped)
++++ between /dev/null
++++ and /mounts/work_src_done/STABLE/device-mapper/lvm2.changes
New Changes file:
--- /dev/null 2009-04-14 11:58:14.000000000 +0200
+++ /mounts/work_src_done/STABLE/device-mapper/lvm2-clvm.changes 2009-04-27 12:52:10.000000000 +0200
@@ -0,0 +1,46 @@
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
+-------------------------------------------------------------------
+
+- Upgrade to LVM2 2.02.45
+ Avoid scanning empty metadata areas for VG names
+ Pass --test from lvresize to fsadm as --dry-run.
+ Remove duplicate cpg_initialize from clvmd startup.
+ Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
+ Remove external dependency on the 'cut' command from fsadm.
+ Fix pvs segfault when pv mda attributes requested for not available PV.
+ Fix lvresize size conversion for fsadm when block size is not 1K.
+ Add pv_mda_size to pvs and vg_mda_size to vgs.
+ Add "--refresh" functionality to vgchange and vgmknodes.
+ Fix vgrename using UUID if there are VGs with identical names.
+ Fix segfault when invalid field given in reporting commands.
+ Merge device-mapper into the lvm2 tree.
+ Exit with non-zero status from vgdisplay if couldn't show any requested VG.
+ Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
+ Fix conversion of md chunk size into sectors.
+ Fix misleading error message when there are no allocatable extents in VG.
+ Fix handling of PVs which reappeared with old metadata version.
+ Fix mirror DSO to call vgreduce with proper parameters.
+ Fix validation of --minor and --major in lvcreate to require -My always.
+ Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
+
+-------------------------------------------------------------------
+Tue Apr 1 01:10:00 CST 2009 - lmb(a)suse.de
+
+- clvmd: Ensure that the lockspace is released locally even we were the
+ lock master, avoiding an unclean shutdown (bnc#490415).
+
+-------------------------------------------------------------------
+Tue Mar 31 19:16:18 CST 2009 - xwhu(a)suse.de
+
+- Call cpg_leave before shutting down clvmd
+
+-------------------------------------------------------------------
+Wed Mar 25 23:14:29 CST 2009 - xwhu(a)suse.de
+
+- Do not filter out tmp device file(bnc#485572)
+
+-------------------------------------------------------------------
+Wed Mar 25 22:50:50 CST 2009 - xwhu(a)suse.de
+
+- Newly splitted off from lvm2, as a independent package now
+
calling whatdependson for head-i586
Old:
----
device-mapper.1.02.27.tar.bz2
device-mapper-gcc-warnings.patch
device-mapper-nochown.patch
device-mapper-static.patch
wait_udev.diff
New:
----
64-lvm2.rules
boot.lvm
bug-486952_clvmd-check-returncode-of-dlmrelease.diff
call_cpg_leave_before_shutdown.diff
clvmd.ocf
clvmd-openais-use-dlm.diff
cmdline_large_minor.diff
collect_lvm
device-mapper-dmsetup-deps-export.patch
device-mapper-gcc-warning.diff
device-mapper-static.diff
device-mapper-wait_udev.diff
dont_ignore_tmp_device_file.diff
enable-clvmd.patch
improve_probing.diff
LVM2.2.02.45.tar.bz2
lvm2.changes
lvm2-clvm.changes
lvm2-clvm.spec
lvm2.spec
lvm.conf
lvm-no_chown.diff
lvm-pv-create-link.diff
man_page_sectors.diff
no_buildroot_shared.diff
no-inc-audit.diff
pipe_buff-definition.diff
pvscan_2TB_limit.diff
sigterm_in_main_thread.diff
support-drbd-filter.diff
sysconfig.lvm
sys_mount_instead_linux_fs.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ device-mapper.spec ++++++
--- /var/tmp/diff_new_pack.Q11167/_old 2009-05-06 18:35:22.000000000 +0200
+++ /var/tmp/diff_new_pack.Q11167/_new 2009-05-06 18:35:22.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package device-mapper (Version 1.02.27)
+# spec file for package device-mapper (Version 1.02.31)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -26,19 +26,38 @@
Obsoletes: device-mapper-64bit
%endif
#
-Version: 1.02.27
-Release: 9
+Version: 1.02.31
+Release: 1
Summary: Device Mapper Tools
-Source: device-mapper.%{version}.tar.bz2
+Source: LVM2.2.02.45.tar.bz2
Source1: boot.device-mapper
Source2: mkinitrd-setup.sh
Source3: mkinitrd-boot.sh
-Patch: k_dev_t.dif
-Patch1: %{name}-dmsetup-export.patch
-Patch2: %{name}-gcc-warnings.patch
-Patch3: %{name}-static.patch
-Patch4: %{name}-nochown.patch
-Patch5: wait_udev.diff
+Patch: improve_probing.diff
+Patch2: no-inc-audit.diff
+Patch3: no_buildroot_shared.diff
+Patch4: sys_mount_instead_linux_fs.diff
+Patch5: pvscan_2TB_limit.diff
+Patch6: man_page_sectors.diff
+Patch10: lvm-no_chown.diff
+Patch11: cmdline_large_minor.diff
+Patch12: enable-clvmd.patch
+Patch13: pipe_buff-definition.diff
+Patch14: lvm-pv-create-link.diff
+#Patch15: dmeventd-link-libcmd.diff
+Patch16: clvmd-openais-use-dlm.diff
+Patch17: bug-486952_clvmd-check-returncode-of-dlmrelease.diff
+Patch18: sigterm_in_main_thread.diff
+Patch19: dont_ignore_tmp_device_file.diff
+Patch20: support-drbd-filter.diff
+Patch21: call_cpg_leave_before_shutdown.diff
+#Patches for device mapper
+Patch60: k_dev_t.dif
+Patch61: device-mapper-dmsetup-export.patch
+Patch62: device-mapper-gcc-warning.diff
+Patch63: device-mapper-static.diff
+Patch64: device-mapper-wait_udev.diff
+Patch65: device-mapper-dmsetup-deps-export.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libselinux-devel
PreReq: %insserv_prereq %fillup_prereq
@@ -69,29 +88,54 @@
Joe Thornber <thornber(a)sistina.com>
%prep
-%setup -q -n device-mapper.%{version}
+%setup -n LVM2.2.02.45
%patch
-%patch1 -p1
-%patch2 -p1
+%patch2
%patch3
%patch4
%patch5
+%patch6
+%patch10
+%patch11
+%patch12
+%patch13
+%patch14 -p1
+#%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch60 -p1
+%patch61 -p1
+%patch62 -p1
+%patch63 -p1
+%patch64 -p1
+%patch65 -p1
%build
-%configure --disable-static --with-pic --bindir=/bin --libdir=/%_lib --sbindir=/sbin --enable-dmeventd \
- --enable-selinux \
+CFLAGS="$RPM_OPT_FLAGS" \
+%configure --bindir=/bin --libdir=/%_lib --sbindir=/sbin --enable-dmeventd \
+ --enable-selinux --enable-cmdlib \
--with-dmeventd-path=/sbin/dmeventd \
--with-device-uid=0 --with-device-gid=6 --with-device-mode=0640
make %{?jobs:-j %jobs}
%install
-%makeinstall
-%{__mkdir_p} %{buildroot}%{_libdir}
-for libname in libdevmapper libdevmapper-event; do
-%{__ln_s} -v /%{_lib}/$(readlink %{buildroot}/%{_lib}/$libname.so) %{buildroot}%{_libdir}/$libname.so
-%{__rm} -v %{buildroot}/%{_lib}/$libname.so
-done
-install -m 744 scripts/devmap_mknod.sh $RPM_BUILD_ROOT/sbin/
+#%makeinstall
+make install_device-mapper DESTDIR=$RPM_BUILD_ROOT
+#make libdir=$RPM_BUILD_ROOT/%_libdir install_static_lib
+mkdir -p $RPM_BUILD_ROOT/%_libdir
+ln -s /%_lib/libdevmapper.so.1.02 $RPM_BUILD_ROOT/%_libdir/libdevmapper.so
+ln -s /%_lib/libdevmapper-event.so.1.02 $RPM_BUILD_ROOT/%_libdir/libdevmapper-event.so
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper.so
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event.so
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2mirror.so
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2mirror.so.2.02
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2snapshot.so
+rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2snapshot.so.2.02
+#install -m 744 scripts/devmap_mknod.sh $RPM_BUILD_ROOT/sbin/
mkdir -p $RPM_BUILD_ROOT/etc/init.d
install -m 744 %{SOURCE1} $RPM_BUILD_ROOT/etc/init.d
install -d $RPM_BUILD_ROOT/lib/mkinitrd/scripts
@@ -110,13 +154,13 @@
%files
%defattr(-,root,root)
-%doc INSTALL COPYING COPYING.LIB INTRO README
+%doc INSTALL COPYING COPYING.LIB README VERSION_DM WHATS_NEW_DM
%config /etc/init.d/boot.device-mapper
/%_lib/libdevmapper.so.1.02
/%_lib/libdevmapper-event.so.1.02
/sbin/dmsetup
/sbin/dmeventd
-/sbin/devmap_mknod.sh
+#/sbin/devmap_mknod.sh
%{_mandir}/man8/dmsetup.8.gz
%dir /lib/mkinitrd
%dir /lib/mkinitrd/scripts
@@ -127,12 +171,25 @@
%defattr(-,root,root)
/%_libdir/libdevmapper.so
/%_libdir/libdevmapper-event.so
+#%attr(644, root, root) %_libdir/libdevmapper.a
/usr/include/libdevmapper.h
/usr/include/libdevmapper-event.h
%changelog
-* Fri Mar 06 2009 crrodriguez(a)suse.de
-- remove static libraries
+* Mon Apr 27 2009 xwhu(a)suse.de
+- Upgrade to 1.02.31
+ . Add "all" field to reports expanding to all fields of report type.
+ . Enforce device name length and character limitations in libdm.
+ . Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines.
+ . Only resume devices in dm_tree_preload_children if size changes.
+ . Extend deptree buffers so the largest possible device numbers fit.
+ . Generate versioned libdevmapper-event.so.
+ . Underline longer report help text headings.
+* Tue Apr 21 2009 xwhu(a)suse.de
+- bnc#479104, export additional information
+* Tue Feb 03 2009 hare(a)suse.de
+- No whitespace for DM_STATE export variable (bnc#440959)
+- Remove obsolete reference to boot.scsidev from init script
* Wed Dec 10 2008 olh(a)suse.de
- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade
(bnc#437293)
@@ -142,7 +199,7 @@
will be processed (bnc#413059)
* Thu Oct 30 2008 olh(a)suse.de
- obsolete old -XXbit packages (bnc#437293)
-* Sat Sep 13 2008 xwhu(a)suse.de
+* Fri Sep 12 2008 xwhu(a)suse.de
- Fix typo for correct compiling
- Timeout if udevd's not running (bnc#425436)
* Wed Sep 10 2008 xwhu(a)suse.de
@@ -159,7 +216,7 @@
- enabled SELinux support [Fate#303662]
* Fri Aug 22 2008 xwhu(a)suse.de
- Remove the -p option for fillup_and_insserv
-* Wed Aug 13 2008 xwhu(a)suse.de
+* Tue Aug 12 2008 xwhu(a)suse.de
- Add Should-Stop to boot.device-mapper
* Wed Jul 23 2008 hare(a)suse.de
- Include mkinitrd scriptlets.
@@ -167,7 +224,7 @@
- repack device-mapper.1.02.26.tar.bz2 into bzip2.
- change the owner of device to root:disk, with permission
0640 (bnc#407952)
-* Tue Jun 24 2008 xwhu(a)suse.de
+* Mon Jun 23 2008 xwhu(a)suse.de
- update to new version 1.02.26
Initialise params buffer to empty string in _emit_segment.
Skip add_dev_node when ioctls disabled.
@@ -341,7 +398,7 @@
- fix typo in start script (#36168)
* Mon Mar 15 2004 fehr(a)suse.de
- do not depend on existence of /dev/mapper dir (#35825)
-* Tue Mar 02 2004 ro(a)suse.de
+* Mon Mar 01 2004 ro(a)suse.de
- remove root-fsck stuff in bootscript
- instead depend on boot.rootfsck
* Fri Dec 05 2003 fehr(a)suse.de
++++++ lvm2-clvm.spec ++++++
#
# spec file for package lvm2-clvm (Version 2.02.45)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Url: http://sources.redhat.com/cluster/clvm/
Name: lvm2-clvm
BuildRequires: device-mapper-devel libdlm-devel libopenais-devel readline-devel
BuildRequires: libselinux-devel
License: GPL v2 or later; LGPL v2.1 or later
Group: System/Base
Version: 2.02.45
Release: 1
Requires: device-mapper >= 1.02.25 lvm2 = %{version} openais
Provides: clvm
PreReq: %fillup_prereq %insserv_prereq
AutoReqProv: on
Summary: Clustered LVM2
Source: LVM2.%{version}.tar.bz2
Source1: lvm.conf
Source2: boot.lvm
Source3: sysconfig.lvm
Source4: mkinitrd-setup.sh
Source5: mkinitrd-boot.sh
Source6: 64-lvm2.rules
Source7: collect_lvm
Source8: clvmd.ocf
Patch: improve_probing.diff
Patch2: no-inc-audit.diff
Patch3: no_buildroot_shared.diff
Patch4: sys_mount_instead_linux_fs.diff
Patch5: pvscan_2TB_limit.diff
Patch6: man_page_sectors.diff
Patch10: lvm-no_chown.diff
Patch11: cmdline_large_minor.diff
Patch12: enable-clvmd.patch
Patch13: pipe_buff-definition.diff
Patch14: lvm-pv-create-link.diff
#Patch15: dmeventd-link-libcmd.diff
Patch16: clvmd-openais-use-dlm.diff
Patch17: bug-486952_clvmd-check-returncode-of-dlmrelease.diff
Patch18: sigterm_in_main_thread.diff
Patch19: dont_ignore_tmp_device_file.diff
Patch20: support-drbd-filter.diff
Patch21: call_cpg_leave_before_shutdown.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
A daemon for using LVM2 Logival Volumes in a clustered environment.
%prep
%setup -n LVM2.%{version}
%patch
%patch2
%patch3
%patch4
%patch5
%patch6
%patch10
%patch11
%patch12
%patch13
%patch14 -p1
#%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%build
CFLAGS="$RPM_OPT_FLAGS" MODPROBE_CMD=/sbin/modprobe \
LDFLAGS="-L /usr/%_lib/openais" \
./configure --prefix=/ \
--mandir=%{_mandir} \
--includedir=/usr/include \
--enable-selinux \
--enable-cmdlib \
--libdir=/%_lib --enable-dmeventd --enable-cmdlib \
--with-clvmd=openais
make
%install
pushd daemons
make install DESTDIR=$RPM_BUILD_ROOT
popd
pushd man
make install DESTDIR=$RPM_BUILD_ROOT
popd
install -D -m 755 $RPM_BUILD_ROOT/sbin/clvmd $RPM_BUILD_ROOT/usr/sbin/clvmd
rm $RPM_BUILD_ROOT/sbin/clvmd
rm $RPM_BUILD_ROOT/sbin/dmeventd
rm $RPM_BUILD_ROOT/usr/include/libdevmapper-event.h
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event-lvm2mirror.*
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event-lvm2snapshot.*
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event.*
rm -rf $RPM_BUILD_ROOT/%{_mandir}/man5
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/lv*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/pv*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/vg*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/dmsetup*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/fsadm*
install -m755 -D %{S:8} $RPM_BUILD_ROOT/usr/lib/ocf/resource.d/lvm2/clvmd
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/sbin/clvmd
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
%dir /usr/lib/ocf/resource.d/lvm2
/usr/lib/ocf/resource.d/lvm2/clvmd
%{_mandir}/man8/clvmd.8.gz
%changelog
* Mon Apr 27 2009 xwhu(a)suse.de
- Upgrade to LVM2 2.02.45
Avoid scanning empty metadata areas for VG names
Pass --test from lvresize to fsadm as --dry-run.
Remove duplicate cpg_initialize from clvmd startup.
Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
Remove external dependency on the 'cut' command from fsadm.
Fix pvs segfault when pv mda attributes requested for not available PV.
Fix lvresize size conversion for fsadm when block size is not 1K.
Add pv_mda_size to pvs and vg_mda_size to vgs.
Add "--refresh" functionality to vgchange and vgmknodes.
Fix vgrename using UUID if there are VGs with identical names.
Fix segfault when invalid field given in reporting commands.
Merge device-mapper into the lvm2 tree.
Exit with non-zero status from vgdisplay if couldn't show any requested VG.
Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
Fix conversion of md chunk size into sectors.
Fix misleading error message when there are no allocatable extents in VG.
Fix handling of PVs which reappeared with old metadata version.
Fix mirror DSO to call vgreduce with proper parameters.
Fix validation of --minor and --major in lvcreate to require -My always.
Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
* Wed Apr 01 2009 lmb(a)suse.de
- clvmd: Ensure that the lockspace is released locally even we were the
lock master, avoiding an unclean shutdown (bnc#490415).
* Tue Mar 31 2009 xwhu(a)suse.de
- Call cpg_leave before shutting down clvmd
* Wed Mar 25 2009 xwhu(a)suse.de
- Do not filter out tmp device file(bnc#485572)
* Wed Mar 25 2009 xwhu(a)suse.de
- Newly splitted off from lvm2, as a independent package now
++++++ lvm2.spec ++++++
++++ 830 lines (skipped)
++++++ 64-lvm2.rules ++++++
# This file causes block devices with LVM signatures to be automatically
# added to their volume group.
# See udev(8) for syntax
SUBSYSTEM!="block", GOTO="lvm_end"
ACTION!="add|change", GOTO="lvm_end"
ENV{ID_FS_TYPE}!="LVM2_member", GOTO="lvm_end"
ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-id/lvm2-pvuuid-$env{ID_FS_UUID_ENC}"
ENV{DMDEPS}=="0", GOTO="lvm_end"
IMPORT{PROGRAM}="collect_lvm $tempnode"
ENV{VGUUID}!="?*", GOTO="lvm_end"
ENV{VGNAME}!="?*", GOTO="lvm_end"
# If all related PV's available already, active all LVs inside.
ENV{COLLECT}=="0", RUN+="/sbin/vgchange -a y $env{VGNAME}"
LABEL="lvm_end"
++++++ boot.device-mapper ++++++
--- /var/tmp/diff_new_pack.Q11167/_old 2009-05-06 18:35:22.000000000 +0200
+++ /var/tmp/diff_new_pack.Q11167/_new 2009-05-06 18:35:22.000000000 +0200
@@ -7,9 +7,7 @@
### BEGIN INIT INFO
# Provides: boot.device-mapper
# Required-Start: boot.udev boot.rootfsck
-# Should-Start: boot.scsidev
# Required-Stop: boot.udev
-# Should-Stop: $null
# Default-Start: B
# Default-Stop:
# Description: activate device mapper
++++++ boot.lvm ++++++
#! /bin/sh
#
# Copyright (c) 2001 SuSE GmbH Nuernberg, Germany. All rights reserved.
#
# /etc/init.d/boot.lvm
#
### BEGIN INIT INFO
# Provides: boot.lvm
# Required-Start: boot.device-mapper boot.udev boot.rootfsck
# Should-Start: boot.multipath boot.md boot.dmraid
# Required-Stop: $null
# Should-Stop: $null
# Default-Start: B
# Default-Stop:
# Description: start logical volumes
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/lvm
# udev interaction
if [ -x /sbin/udevadm ] ; then
[ -z "$LVM_DEVICE_TIMEOUT" ] && LVM_DEVICE_TIMEOUT=60
else
LVM_DEVICE_TIMEOUT=0
fi
rc_reset
case "$1" in
start)
#
# Find and activate volume groups (HM 1/1/1999)
#
if test -d /etc/lvm -a -x /sbin/vgscan -a -x /sbin/vgchange ; then
# Waiting for udev to settle
if [ "$LVM_DEVICE_TIMEOUT" -gt 0 ] ; then
echo "Waiting for udev to settle..."
/sbin/udevadm settle --timeout=$LVM_DEVICE_TIMEOUT
fi
echo "Scanning for LVM volume groups..."
/sbin/vgscan --mknodes
echo "Activating LVM volume groups..."
/sbin/vgchange -a y $LVM_VGS_ACTIVATED_ON_BOOT
rc_status -v -r
fi
;;
stop)
if test -d /etc/lvm -a -x /sbin/vgchange ; then
/sbin/vgchange -a n
fi
rc_status -v
;;
status)
rc_failed 4
rc_status -v
;;
reload)
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|reload}"
exit 1
;;
esac
rc_exit
++++++ bug-486952_clvmd-check-returncode-of-dlmrelease.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
@@ -368,7 +368,16 @@ static void _cluster_closedown(void)
DEBUGLOG("cluster_closedown\n");
unlock_all();
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ int r;
+ r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ if (r == -1) {
+ if (errno == EBUSY) {
+ syslog(LOG_ERR, "Some locks still active, close by force\n");
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
+ } else {
+ syslog(LOG_ERR, "dlm_release_lockspace failed\n");
+ }
+ }
cpg_finalize(cpg_handle);
}
++++++ call_cpg_leave_before_shutdown.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c 2009-04-01 20:12:52.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c 2009-04-01 20:13:23.000000000 +0800
@@ -342,7 +342,7 @@
err = cpg_join(cpg_handle, &cpg_group_name);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
syslog(LOG_ERR, "Cannot join clvmd process group");
DEBUGLOG("Cannot join clvmd process group: %d\n", err);
return ais_to_errno(err);
@@ -351,8 +351,9 @@
err = cpg_local_get(cpg_handle,
&our_nodeid);
if (err != SA_AIS_OK) {
+ cpg_leave(cpg_handle, &cpg_group_name);
cpg_finalize(cpg_handle);
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
syslog(LOG_ERR, "Cannot get local node id\n");
return ais_to_errno(err);
}
@@ -369,15 +370,11 @@
unlock_all();
int r;
- r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
- if (r == -1) {
- if (errno == EBUSY) {
- syslog(LOG_ERR, "Some locks still active, close by force\n");
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
- } else {
- syslog(LOG_ERR, "dlm_release_lockspace failed\n");
- }
+ r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
+ if (r != 0) {
+ syslog(LOG_ERR, "dlm_release_lockspace failed: %d\n", errno);
}
+ cpg_leave(cpg_handle, &cpg_group_name);
cpg_finalize(cpg_handle);
}
++++++ clvmd.ocf ++++++
#!/bin/bash
# Copyright (c) 2008 Xinwei Hu
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like. Any license provided herein, whether implied or
# otherwise, applies only to this software file. Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
#
#######################################################################
# OCF initialization
. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
# Parameter defaults
: ${OCF_RESKEY_CRM_meta_gloablly_unique:="false"}
: ${OCF_RESKEY_daemon_timeout:="80"}
: ${OCF_RESKEY_daemon_options:="-d0"}
# Common variables
DAEMON="/usr/sbin/clvmd"
status_daemon()
{
PID=`pidofproc "$DAEMON"`
if [ -n "$PID" ]; then
return $OCF_SUCCESS
fi
return $OCF_NOT_RUNNING
}
bringup_daemon()
{
if [ ! -e "$DAEMON" ]; then
ocf_log err "Required binary not found: $DAEMON"
return $OCF_ERR_INSTALLED
fi
start_daemon "$DAEMON" "$OCF_RESKEY_daemon_options"; rc=$?
if [ $rc != 0 ]; then
ocf_log err "Could not start $DAEMON"
return $OCF_ERR_GENERIC
fi
sleep 1
COUNT=0
rc=$OCF_NOT_RUNNING
while [ $rc = $OCF_NOT_RUNNING ]; do
COUNT=`expr $COUNT + 1`
if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then
ocf_log err "`basename $DAEMON` did not come up"
return $OCF_ERR_GENERIC
fi
status_daemon; rc=$?
sleep 1
done
return $rc
}
kill_daemon()
{
status_daemon; rc=$?
if [ $rc != $OCF_SUCCESS ]; then
return rc
fi
ocf_log info "Stopping `basename "$DAEMON"`"
killproc -INT "$DAEMON"
sleep 1
status_daemon; rc=$?
COUNT=0
while [ $rc = $OCF_SUCCESS ]; do
COUNT=`expr $COUNT + 1`
if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then
ocf_log err "`basename $DAEMON` shutdown emergency"
killproc -9 "$DAEMON"
status_daemon; rc=$?
if [ $rc = $OCF_NOT_RUNNING ]; then
return $OCF_SUCCESS
else
return $OCF_ERR_GENERIC
fi
fi
killproc -INT "$DAEMON"
sleep 1
status_daemon; rc=$?
done
return $OCF_SUCCESS
}
clvmd_start() {
clvmd_monitor; rc=$?
if [ $rc != $OCF_NOT_RUNNING ]; then
return $rc
fi
ocf_log info "Starting $OCF_RESOURCE_INSTANCE"
bringup_daemon
return $?
}
clvmd_stop() {
clvmd_monitor; rc=$?
case $rc in
$OCF_NOT_RUNNING) return $OCF_SUCCESS;;
esac
ocf_log info "Stopping $OCF_RESOURCE_INSTANCE"
kill_daemon
}
clvmd_monitor() {
clvmd_validate
status_daemon
return $?
}
clvmd_usage() {
echo "usage: $0 {start|stop|monitor|validate-all|meta-data}"
echo " Expects to have a fully populated OCF RA-compliant environment set."
echo " In particualr, a value for OCF_ROOT"
}
clvmd_validate() {
: TODO: check for gloablly_unique=true and return OCF_ERR_CONFIGURED
case ${OCF_RESKEY_CRM_meta_gloablly_unique} in
yes|Yes|true|True|1)
ocf_log err "$OCF_RESOURCE_INSTANCE must be configured with the gloablly_unique=false meta attribute"
exit $OCF_ERR_CONFIGURED
;;
esac
return $OCF_SUCCESS
}
meta_data() {
cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="clvmd">
<version>1.0</version>
<longdesc lang="en">
This is a clvmd Resource Agent.
It starts clvmd as anonymous clones.
</longdesc>
<shortdesc lang="en">clvmd resource agent</shortdesc>
<parameters>
<parameter name="daemon_timeout" unique="0">
<longdesc lang="en">
Number of seconds to allow the control daemon to come up and down
</longdesc>
<shortdesc lang="en">Daemon Timeout</shortdesc>
<content type="string" default="80"/>
</parameter>
<parameter name="daemon_options" unique="0">
<longdesc lang="en">
Options to clvmd. Refer to clvmd.8 for detailed descriptions.
</longdesc>
<shortdesc lang="en">Daemon Options</shortdesc>
<content type="string" default="-d0"/>
</parameter>
</parameters>
<actions>
<action name="start" timeout="90" />
<action name="stop" timeout="100" />
<action name="monitor" timeout="20" depth="0"/>
<action name="meta-data" timeout="5" />
<action name="validate-all" timeout="30" />
</actions>
</resource-agent>
END
}
case $__OCF_ACTION in
meta-data) meta_data
exit $OCF_SUCCESS
;;
start) clvmd_start
;;
stop) clvmd_stop
;;
monitor) clvmd_monitor
;;
validate-all) clvmd_validate
;;
usage|help) clvmd_usage
exit $OCF_SUCCESS
;;
*) clvmd_usage
exit $OCF_ERR_UNIMPLEMENTED
;;
esac
exit $?
++++++ clvmd-openais-use-dlm.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c 2008-06-20 20:46:21.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c 2009-02-25 22:13:32.000000000 +0800
@@ -34,9 +34,9 @@
#include <syslog.h>
#include <assert.h>
#include <libdevmapper.h>
+#include <libdlm.h>
#include <openais/saAis.h>
-#include <openais/saLck.h>
#include <openais/cpg.h>
#include "list.h"
@@ -50,6 +50,8 @@
/* Timeout value for several openais calls */
#define TIMEOUT 10
+#define LOCKSPACE_NAME "clvmd"
+
static void cpg_deliver_callback (cpg_handle_t handle,
struct cpg_name *groupName,
uint32_t nodeid,
@@ -66,9 +68,6 @@
/* Hash list of nodes in the cluster */
static struct dm_hash_table *node_hash;
-/* For associating lock IDs & resource handles */
-static struct dm_hash_table *lock_hash;
-
/* Number of active nodes */
static int num_nodes;
static unsigned int our_nodeid;
@@ -77,9 +76,15 @@
/* OpenAIS handles */
static cpg_handle_t cpg_handle;
-static SaLckHandleT lck_handle;
static struct cpg_name cpg_group_name;
+static dlm_lshandle_t *lockspace;
+
+struct lock_wait {
+ pthread_cond_t cond;
+ pthread_mutex_t mutex;
+ struct dlm_lksb lksb;
+};
/* Openais callback structs */
cpg_callbacks_t cpg_callbacks = {
@@ -93,13 +98,6 @@
int nodeid;
};
-struct lock_info
-{
- SaLckResourceHandleT res_handle;
- SaLckLockIdT lock_id;
- SaNameT lock_name;
-};
-
/* Set errno to something approximating the right value and return 0 or -1 */
static int ais_to_errno(SaAisErrorT err)
{
@@ -309,22 +307,11 @@
num_nodes = member_list_entries;
}
-static int lck_dispatch(struct local_client *client, char *buf, int len,
- const char *csid, struct local_client **new_client)
-{
- *new_client = NULL;
- saLckDispatch(lck_handle, SA_DISPATCH_ONE);
- return 1;
-}
-
static int _init_cluster(void)
{
SaAisErrorT err;
- SaVersionT ver = { 'B', 1, 1 };
- int select_fd;
node_hash = dm_hash_create(100);
- lock_hash = dm_hash_create(10);
err = cpg_initialize(&cpg_handle,
&cpg_callbacks);
@@ -335,16 +322,19 @@
return ais_to_errno(err);
}
- err = saLckInitialize(&lck_handle,
- NULL,
- &ver);
- if (err != SA_AIS_OK) {
- cpg_initialize(&cpg_handle, &cpg_callbacks);
- syslog(LOG_ERR, "Cannot initialise OpenAIS lock service: %d",
- err);
- DEBUGLOG("Cannot initialise OpenAIS lock service: %d\n\n", err);
- return ais_to_errno(err);
+ /* Create a lockspace for LV & VG locks to live in */
+ lockspace = dlm_create_lockspace(LOCKSPACE_NAME, 0600);
+ if (!lockspace) {
+ if (errno == EEXIST) {
+ lockspace = dlm_open_lockspace(LOCKSPACE_NAME);
+ }
+ if (!lockspace) {
+ syslog(LOG_ERR, "Unable to create lockspace for CLVM: %m");
+ return -1;
+ }
}
+ dlm_ls_pthread_init(lockspace);
+ DEBUGLOG("DLM initialisation complete\n");
/* Connect to the clvmd group */
strcpy((char *)cpg_group_name.value, "clvmd");
@@ -352,7 +342,7 @@
err = cpg_join(cpg_handle, &cpg_group_name);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
syslog(LOG_ERR, "Cannot join clvmd process group");
DEBUGLOG("Cannot join clvmd process group: %d\n", err);
return ais_to_errno(err);
@@ -362,15 +352,12 @@
&our_nodeid);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
syslog(LOG_ERR, "Cannot get local node id\n");
return ais_to_errno(err);
}
DEBUGLOG("Our local node id is %d\n", our_nodeid);
- saLckSelectionObjectGet(lck_handle, (SaSelectionObjectT *)&select_fd);
- add_internal_client(select_fd, lck_dispatch);
-
DEBUGLOG("Connected to OpenAIS\n");
return 0;
@@ -381,7 +368,7 @@
DEBUGLOG("cluster_closedown\n");
unlock_all();
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
cpg_finalize(cpg_handle);
}
@@ -472,156 +459,69 @@
return somedown;
}
-/* Real locking */
-static int _lock_resource(char *resource, int mode, int flags, int *lockid)
+static int _sync_lock(const char *resource, int mode, int flags, int *lockid)
{
- struct lock_info *linfo;
- SaLckResourceHandleT res_handle;
- SaAisErrorT err;
- SaLckLockIdT lock_id;
- SaLckLockStatusT lockStatus;
-
- /* This needs to be converted from DLM/LVM2 value for OpenAIS LCK */
- if (flags & LCK_NONBLOCK) flags = SA_LCK_LOCK_NO_QUEUE;
-
- linfo = malloc(sizeof(struct lock_info));
- if (!linfo)
- return -1;
+ struct dlm_lksb lksb;
+ int err;
DEBUGLOG("lock_resource '%s', flags=%d, mode=%d\n", resource, flags, mode);
- linfo->lock_name.length = strlen(resource)+1;
- strcpy((char *)linfo->lock_name.value, resource);
-
- err = saLckResourceOpen(lck_handle, &linfo->lock_name,
- SA_LCK_RESOURCE_CREATE, TIMEOUT, &res_handle);
- if (err != SA_AIS_OK)
- {
- DEBUGLOG("ResourceOpen returned %d\n", err);
- free(linfo);
- return ais_to_errno(err);
- }
+ if (flags & LKF_CONVERT)
+ lksb.sb_lkid = *lockid;
- err = saLckResourceLock(
- res_handle,
- &lock_id,
+ err = dlm_ls_lock_wait(lockspace,
mode,
+ &lksb,
flags,
+ resource,
+ strlen(resource),
0,
- SA_TIME_END,
- &lockStatus);
- if (err != SA_AIS_OK && lockStatus != SA_LCK_LOCK_GRANTED)
+ NULL, NULL, NULL);
+
+ if (err != 0)
{
- free(linfo);
- saLckResourceClose(res_handle);
- return ais_to_errno(err);
+ DEBUGLOG("dlm_ls_lock returned %d\n", errno);
+ return err;
+ }
+ errno = lksb.sb_status;
+ if (lksb.sb_status != 0)
+ {
+ DEBUGLOG("dlm_ls_lock returns lksb.sb_status %d\n", lksb.sb_status);
+ return -1;
}
-
- /* Wait for it to complete */
-
- DEBUGLOG("lock_resource returning %d, lock_id=%llx\n", err,
- lock_id);
- linfo->lock_id = lock_id;
- linfo->res_handle = res_handle;
+ DEBUGLOG("lock_resource returning %d, lock_id=%x\n", err, lksb.sb_lkid);
- dm_hash_insert(lock_hash, resource, linfo);
+ *lockid = lksb.sb_lkid;
- return ais_to_errno(err);
+ return 0;
}
-
-static int _unlock_resource(char *resource, int lockid)
+static int _sync_unlock(const char *resource, int lockid)
{
- SaAisErrorT err;
- struct lock_info *linfo;
+ struct dlm_lksb lksb;
+ int err;
- DEBUGLOG("unlock_resource %s\n", resource);
- linfo = dm_hash_lookup(lock_hash, resource);
- if (!linfo)
- return 0;
+ DEBUGLOG("unlock_resource: %s lockid: %x\n", resource, lockid);
+ lksb.sb_lkid = lockid;
- DEBUGLOG("unlock_resource: lockid: %llx\n", linfo->lock_id);
- err = saLckResourceUnlock(linfo->lock_id, SA_TIME_END);
- if (err != SA_AIS_OK)
+ err = dlm_ls_unlock_wait(lockspace,
+ lockid,
+ 0,
+ &lksb);
+ if (err != 0)
{
DEBUGLOG("Unlock returned %d\n", err);
- return ais_to_errno(err);
+ return err;
}
-
- /* Release the resource */
- dm_hash_remove(lock_hash, resource);
- saLckResourceClose(linfo->res_handle);
- free(linfo);
-
- return ais_to_errno(err);
-}
-
-static int _sync_lock(const char *resource, int mode, int flags, int *lockid)
-{
- int status;
- char lock1[strlen(resource)+3];
- char lock2[strlen(resource)+3];
-
- snprintf(lock1, sizeof(lock1), "%s-1", resource);
- snprintf(lock2, sizeof(lock2), "%s-2", resource);
-
- switch (mode)
+ errno = lksb.sb_status;
+ if (lksb.sb_status != EUNLOCK)
{
- case LCK_EXCL:
- status = _lock_resource(lock1, SA_LCK_EX_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
-
- /* If we can't get this lock too then bail out */
- status = _lock_resource(lock2, SA_LCK_EX_LOCK_MODE, LCK_NONBLOCK,
- lockid);
- if (status == SA_LCK_LOCK_NOT_QUEUED)
- {
- _unlock_resource(lock1, *lockid);
- status = -1;
- errno = EAGAIN;
- }
- break;
-
- case LCK_PREAD:
- case LCK_READ:
- status = _lock_resource(lock1, SA_LCK_PR_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
- _unlock_resource(lock2, *lockid);
- break;
-
- case LCK_WRITE:
- status = _lock_resource(lock2, SA_LCK_EX_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
- _unlock_resource(lock1, *lockid);
- break;
-
- default:
- status = -1;
- errno = EINVAL;
- break;
+ DEBUGLOG("dlm_ls_unlock_wait returns lksb.sb_status: %x\n", lksb.sb_status);
+ return -1;
}
-out:
- *lockid = mode;
- return status;
-}
-
-static int _sync_unlock(const char *resource, int lockid)
-{
- int status = 0;
- char lock1[strlen(resource)+3];
- char lock2[strlen(resource)+3];
-
- snprintf(lock1, sizeof(lock1), "%s-1", resource);
- snprintf(lock2, sizeof(lock2), "%s-2", resource);
-
- _unlock_resource(lock1, lockid);
- _unlock_resource(lock2, lockid);
+ return 0;
- return status;
}
/* We are always quorate ! */
Index: LVM2.2.02.39/daemons/clvmd/Makefile.in
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/Makefile.in 2009-02-25 18:52:32.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/Makefile.in 2009-02-25 18:52:32.000000000 +0800
@@ -59,7 +59,7 @@
ifeq ("$(OPENAIS)", "yes")
SOURCES += clvmd-openais.c
- LMLIBS += -lSaLck -lcpg
+ LMLIBS += -ldlm -lcpg
DEFS += -DUSE_OPENAIS
endif
Index: LVM2.2.02.39/daemons/clvmd/clvm.h
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvm.h 2009-02-25 18:52:32.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvm.h 2009-02-25 18:52:32.000000000 +0800
@@ -79,6 +79,7 @@
/* Locking flags - these match the ones
* in dlm.h
*/
+#ifndef LKF_NOQUEUE
#define LKF_NOQUEUE (0x00000001)
#define LKF_CANCEL (0x00000002)
#define LKF_CONVERT (0x00000004)
@@ -94,3 +95,4 @@
#define LKF_HEADQUE (0x00001000)
#define LKF_NOORDER (0x00002000)
#endif
+#endif
++++++ cmdline_large_minor.diff ++++++
--- tools/lvmcmdline.c
+++ tools/lvmcmdline.c 2008/02/20 10:45:12
@@ -265,8 +265,8 @@
if (!_get_int_arg(a, &ptr) || (*ptr) || (a->sign == SIGN_MINUS))
return 0;
- if (a->i_value > 255) {
- log_error("Minor number outside range 0-255");
+ if (a->i_value > 1048575) {
+ log_error("Minor number outside range 0-1048575");
return 0;
}
++++++ collect_lvm ++++++
#!/bin/sh
PVNAME=$1
/sbin/lvm pvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o vg_name,vg_attr,pv_uuid,vg_uuid --ignorelockingfailure --noheadings $PVNAME 2>/dev/null | while read vgname vgattr pvuuid vguuid; do
if [[ $vgattr =~ mode. ]]; then
continue
fi
if [[ $vgattr =~ .....c ]]; then
exit 1
fi
lvlist=$(/sbin/lvm lvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o lv_name,lv_attr --ignorelockingfailure --noheadings $vgname 2>/dev/null | while read lvname lvattr; do
if [[ $lvattr =~ mode. ]] ; then
continue
fi
if [[ $lvattr =~ ....-. ]]; then
echo -n $lvname
fi
done)
if [ -z "$lvlist" ] ; then
exit 1
fi
pvlist=$(/sbin/lvm vgdisplay --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -v $vgname 2>/dev/null | while read str1 str2 val; do
if [[ $str1 =~ PV && $str2 =~ UUID ]]; then
echo $val
fi
done)
echo PVUUID=$pvuuid
echo VGUUID=$vguuid
echo VGNAME=$vgname
collected=0
for pv in $pvlist; do
if [[ x$pv = x$pvuuid ]]; then
continue
fi
if [[ ! -h /dev/disk/by-id/lvm2-pvuuid-$pv ]]; then
echo COLLECT=1
collected=1
break
fi
done
if [[ $collected = 0 ]]; then
echo COLLECT=0
fi
# /lib/udev/collect $vguuid $pvuuid $pvlist
# echo COLLECT=$?
done
++++++ device-mapper-dmsetup-deps-export.patch ++++++
Index: LVM2.2.02.45/tools/dmsetup.c
===================================================================
--- LVM2.2.02.45.orig/tools/dmsetup.c 2009-04-27 17:46:16.000000000 +0800
+++ LVM2.2.02.45/tools/dmsetup.c 2009-04-27 17:58:50.000000000 +0800
@@ -1087,6 +1087,7 @@
const char *name = NULL;
const char *uuid = NULL;
struct dm_info info;
+ struct dm_deps *deps;
if (data)
name = names->name;
@@ -1156,6 +1157,22 @@
printf("\n");
}
+ dm_task_destroy(dmt);
+
+ if (!(dmt = dm_task_create(DM_DEVICE_DEPS)))
+ goto out;
+
+ if (!_set_task_device(dmt, name, 0))
+ goto out;
+
+ if (!dm_task_run(dmt))
+ goto out;
+
+ if (!(deps = dm_task_get_deps(dmt)))
+ goto out;
+
+ printf("DM_DEPS=%d\n", deps->count);
+
r = 1;
out:
if (dmt)
++++++ device-mapper-dmsetup-export.patch ++++++
--- /var/tmp/diff_new_pack.Q11167/_old 2009-05-06 18:35:22.000000000 +0200
+++ /var/tmp/diff_new_pack.Q11167/_new 2009-05-06 18:35:22.000000000 +0200
@@ -1,8 +1,8 @@
-diff --git a/dmsetup/dmsetup.c b/dmsetup/dmsetup.c
-index 25f14a6..b693008 100644
---- a/dmsetup/dmsetup.c
-+++ b/dmsetup/dmsetup.c
-@@ -995,6 +995,94 @@ static int _status(int argc, char **argv
+Index: LVM2.2.02.45/tools/dmsetup.c
+===================================================================
+--- LVM2.2.02.45.orig/tools/dmsetup.c 2008-10-31 01:52:06.000000000 +0800
++++ LVM2.2.02.45/tools/dmsetup.c 2009-04-27 17:46:16.000000000 +0800
+@@ -1075,6 +1075,94 @@
return r;
}
@@ -52,7 +52,7 @@
+
+ printf("DM_STATE=%s\n",
+ info.suspended ? "SUSPENDED" :
-+ (info.read_only ? " READONLY" : "ACTIVE"));
++ (info.read_only ? "READONLY" : "ACTIVE"));
+
+ if (!info.live_table && !info.inactive_table)
+ printf("DM_TABLE_STATE=NONE\n");
@@ -97,7 +97,7 @@
/* Show target names and their version numbers */
static int _targets(int argc __attribute((unused)), char **argv __attribute((unused)), void *data __attribute((unused)))
{
-@@ -1699,6 +1787,7 @@ static struct command _commands[] = {
+@@ -2115,6 +2203,7 @@
{"info", "[<device>]", 0, 1, _info},
{"deps", "[<device>]", 0, 1, _deps},
{"status", "[<device>] [--target <target_type>]", 0, 1, _status},
@@ -105,19 +105,11 @@
{"table", "[<device>] [--target <target_type>] [--showkeys]", 0, 1, _status},
{"wait", "<device> [<event_nr>]", 0, 2, _wait},
{"mknodes", "[<device>]", 0, 1, _mknodes},
-diff --git a/man/dmsetup.8 b/man/dmsetup.8
-index 5b2ed9f..c4524aa 100644
---- a/man/dmsetup.8
-+++ b/man/dmsetup.8
-@@ -39,13 +39,16 @@ dmsetup \- low level logical volume mana
- .B dmsetup ls
- .I [--target target_type] [--exec command] [--tree [-o options]]
- .br
--.B dmsetup info
-+.B dmsetup info
- .I [device_name]
- .br
- .B dmsetup info -c|-C|--columns
+Index: LVM2.2.02.45/man/dmsetup.8.in
+===================================================================
+--- LVM2.2.02.45.orig/man/dmsetup.8.in 2007-12-28 23:13:38.000000000 +0800
++++ LVM2.2.02.45/man/dmsetup.8.in 2009-04-27 17:48:53.000000000 +0800
+@@ -46,6 +46,9 @@
.I [--noheadings] [--separator separator] [-o fields] [-O|--sort sort_fields]
.I [device_name]
.br
@@ -127,7 +119,7 @@
.B dmsetup deps
.I [device_name]
.br
-@@ -138,6 +141,10 @@ device_name in subsequent dmsetup comman
+@@ -146,6 +149,10 @@
If successful a device will appear as
/dev/device-mapper/<device-name>.
See below for information on the table format.
++++++ device-mapper-gcc-warning.diff ++++++
Index: LVM2.2.02.45/libdm/datastruct/hash.c
===================================================================
--- LVM2.2.02.45.orig/libdm/datastruct/hash.c 2008-11-04 02:59:59.000000000 +0800
+++ LVM2.2.02.45/libdm/datastruct/hash.c 2009-04-27 17:52:05.000000000 +0800
@@ -19,7 +19,7 @@
struct dm_hash_node *next;
void *data;
unsigned keylen;
- char key[0];
+ unsigned char key[0];
};
struct dm_hash_table {
@@ -140,7 +140,7 @@
static struct dm_hash_node **_find(struct dm_hash_table *t, const char *key,
uint32_t len)
{
- unsigned h = _hash(key, len) & (t->num_slots - 1);
+ unsigned h = _hash((unsigned char*)key, len) & (t->num_slots - 1);
struct dm_hash_node **c;
for (c = &t->slots[h]; *c; c = &((*c)->next))
@@ -235,7 +235,7 @@
char *dm_hash_get_key(struct dm_hash_table *t __attribute((unused)),
struct dm_hash_node *n)
{
- return n->key;
+ return (char*)n->key;
}
void *dm_hash_get_data(struct dm_hash_table *t __attribute((unused)),
Index: LVM2.2.02.45/libdm/ioctl/libdm-iface.c
===================================================================
--- LVM2.2.02.45.orig/libdm/ioctl/libdm-iface.c 2009-02-13 04:42:07.000000000 +0800
+++ LVM2.2.02.45/libdm/ioctl/libdm-iface.c 2009-04-27 17:53:30.000000000 +0800
@@ -1668,7 +1668,8 @@
dmt->no_open_count ? 'N' : 'O',
dmt->no_flush ? 'N' : 'F',
dmt->skip_lockfs ? "S " : "",
- dmt->sector, dmt->message ? dmt->message : "",
+ (unsigned long long int)dmt->sector,
+ dmt->message ? dmt->message : "",
dmi->data_size);
#ifdef DM_IOCTLS
if (ioctl(_control_fd, command, dmi) < 0) {
++++++ device-mapper-static.diff ++++++
Index: LVM2.2.02.45/libdm/Makefile.in
===================================================================
--- LVM2.2.02.45.orig/libdm/Makefile.in 2009-04-27 17:41:57.000000000 +0800
+++ LVM2.2.02.45/libdm/Makefile.in 2009-04-27 17:56:06.000000000 +0800
@@ -78,7 +78,6 @@
$(libdir)/libdevmapper.$(LIB_SUFFIX)
install_static: install_@interface@_static
- $(LN_S) -f libdevmapper.a.$(LIB_VERSION_DM) $(libdir)/libdevmapper.a
install_ioctl: ioctl/libdevmapper.$(LIB_SUFFIX)
$(INSTALL) -D -m 555 $(STRIP) $< \
@@ -90,7 +89,7 @@
install_ioctl_static: ioctl/libdevmapper.a
$(INSTALL) -D -m 555 $(STRIP) $< \
- $(libdir)/libdevmapper.a.$(LIB_VERSION_DM)
+ $(libdir)/libdevmapper.a
$(VERSIONED_SHLIB): %.$(LIB_SUFFIX).$(LIB_VERSION_DM): $(interface)/%.$(LIB_SUFFIX)
rm -f $@
++++++ device-mapper-wait_udev.diff ++++++
Index: LVM2.2.02.45/libdm/ioctl/libdm-iface.c
===================================================================
--- LVM2.2.02.45.orig/libdm/ioctl/libdm-iface.c 2009-04-27 17:53:30.000000000 +0800
+++ LVM2.2.02.45/libdm/ioctl/libdm-iface.c 2009-04-27 17:57:54.000000000 +0800
@@ -129,6 +129,67 @@
# define DM_EXISTS_FLAG 0x00000004
#endif
+static unsigned long long get_seq()
+{
+ struct stat s;
+ int r;
+ unsigned long long seq = 0;
+ FILE* fp;
+ r = stat("/sys/kernel/uevent_seqnum", &s);
+ if (r) { return seq; }
+ if (!S_ISREG(s.st_mode)) { return seq; }
+ fp = fopen("/sys/kernel/uevent_seqnum", "r");
+ if (fp == NULL) { return seq; }
+ fscanf(fp, "%llu\n", &seq);
+ fclose(fp);
+ return seq;
+}
+
+static int wait_4_udev(unsigned long long start_seq, unsigned long long end_seq)
+{
+ FILE* fp;
+ struct stat s;
+ int r;
+ int ite=30; /* Iterate 30 times. Otherwise, it's considered timed out */
+ unsigned long long seq;
+ /*
+ * len("/dev/.udev/queue/") + len(str(0xffffffffffffffff)) = 38
+ */
+ #define PATH_SIZE 40
+ char filename[PATH_SIZE];
+ #undef PATH_SIZE
+
+ if (start_seq > end_seq || end_seq == 0) return 1;
+
+ /* Wait until end_seq is enqueued into udev */
+ r = stat("/dev/.udev/uevent_seqnum", &s);
+ if (r) { return 1; }
+ if (!S_ISREG(s.st_mode)) { return 1; }
+ while (ite-- > 0) {
+ fp = fopen("/dev/.udev/uevent_seqnum", "r");
+ if (fp == NULL) { return 1; }
+ fscanf(fp, "%llu\n", &seq);
+ fclose(fp);
+ if (seq >= end_seq) { break; }
+ usleep(200000);
+ }
+ if (ite <=0 ) return 1;
+
+ /* Loop to make sure all $seq are unlinked in /dev/.udev/queue then */
+ for (seq = start_seq; seq <= end_seq; seq++) {
+ ite = 30;
+ while (ite-- > 0) {
+ snprintf(filename, sizeof(filename), "/dev/.udev/queue/%llu", seq);
+ r = open(filename, O_RDONLY);
+ if (r == -1 && errno == ENOENT) break;
+ if (r >= 0) close(r);
+ usleep(200000);
+ }
+ if (ite <=0 ) return 1;
+ }
+ return 0;
+}
+
static void *_align(void *ptr, unsigned int a)
{
register unsigned long agn = --a;
@@ -679,6 +740,7 @@
{
struct dm_ioctl_v1 *dmi;
unsigned int command;
+ unsigned long long before_seq, after_seq;
dmi = _flatten_v1(dmt);
if (!dmi) {
@@ -705,6 +767,8 @@
dmi->name, dmi->uuid, dmt->newname ? " " : "",
dmt->newname ? dmt->newname : "",
dmi->data_size);
+
+ before_seq = get_seq();
if (dmt->type == DM_DEVICE_LIST) {
if (!_dm_names_v1(dmi))
goto bad;
@@ -724,10 +788,13 @@
#else /* Userspace alternative for testing */
#endif
+ after_seq = get_seq();
if (dmi->flags & DM_BUFFER_FULL_FLAG)
/* FIXME Increase buffer size and retry operation (if query) */
log_error("WARNING: libdevmapper buffer too small for data");
+ wait_4_udev(before_seq, after_seq);
+
switch (dmt->type) {
case DM_DEVICE_CREATE:
add_dev_node(dmt->dev_name, MAJOR(dmi->dev), MINOR(dmi->dev),
@@ -1706,6 +1773,7 @@
{
struct dm_ioctl *dmi;
unsigned command;
+ unsigned long long before_seq, after_seq;
#ifdef DM_COMPAT
if (_dm_version == 1)
@@ -1736,9 +1804,11 @@
return 0;
repeat_ioctl:
+ before_seq = get_seq();
if (!(dmi = _do_dm_ioctl(dmt, command, _ioctl_buffer_double_factor)))
return 0;
+ after_seq = get_seq();
if (dmi->flags & DM_BUFFER_FULL_FLAG) {
switch (dmt->type) {
case DM_DEVICE_LIST_VERSIONS:
@@ -1755,6 +1825,8 @@
}
}
+ wait_4_udev(before_seq, after_seq);
+
switch (dmt->type) {
case DM_DEVICE_CREATE:
if (dmt->dev_name && *dmt->dev_name)
++++++ dont_ignore_tmp_device_file.diff ++++++
Index: LVM2.2.02.39/lib/device/dev-cache.c
===================================================================
--- LVM2.2.02.39.orig/lib/device/dev-cache.c 2008-05-29 06:27:47.000000000 +0800
+++ LVM2.2.02.39/lib/device/dev-cache.c 2009-03-16 23:14:49.000000000 +0800
@@ -356,7 +356,11 @@
dirent_count = scandir(dir, &dirent, NULL, alphasort);
if (dirent_count > 0) {
for (n = 0; n < dirent_count; n++) {
- if (dirent[n]->d_name[0] == '.') {
+ if (dirent[n]->d_name[0] == '.' && dirent[n]->d_name[1] == '\0') {
+ free(dirent[n]);
+ continue;
+ }
+ if (dirent[0]->d_name[0] == '.' && dirent[n]->d_name[1] == '.' && dirent[n]->d_name[2] == '\0') {
free(dirent[n]);
continue;
}
++++++ enable-clvmd.patch ++++++
--- daemons/clvmd/clvmd.c
+++ daemons/clvmd/clvmd.c
@@ -37,7 +37,7 @@
#include <syslog.h>
#include <errno.h>
#include <limits.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "clvmd-comms.h"
#include "lvm-functions.h"
--- daemons/clvmd/clvmd-command.c
+++ daemons/clvmd/clvmd-command.c
@@ -65,7 +65,7 @@
#include <unistd.h>
#include <errno.h>
#include <libdevmapper.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "list.h"
#include "locking.h"
--- daemons/clvmd/clvm.h
+++ daemons/clvmd/clvm.h
@@ -68,4 +68,29 @@
#define CLVMD_CMD_GET_CLUSTERNAME 41
#define CLVMD_CMD_SET_DEBUG 42
#define CLVMD_CMD_VG_BACKUP 43
+
+/* Lock modes: */
+#define LKM_NLMODE 0 /* null lock */
+#define LKM_CRMODE 1 /* concurrent read */
+#define LKM_CWMODE 2 /* concurrent write */
+#define LKM_PRMODE 3 /* protected read */
+#define LKM_PWMODE 4 /* protected write */
+#define LKM_EXMODE 5 /* exclusive */
+/* Locking flags - these match the ones
+ * in dlm.h
+ */
+#define LKF_NOQUEUE (0x00000001)
+#define LKF_CANCEL (0x00000002)
+#define LKF_CONVERT (0x00000004)
+#define LKF_VALBLK (0x00000008)
+#define LKF_QUECVT (0x00000010)
+#define LKF_IVVALBLK (0x00000020)
+#define LKF_CONVDEADLK (0x00000040)
+#define LKF_PERSISTENT (0x00000080)
+#define LKF_NODLCKWT (0x00000100)
+#define LKF_NODLCKBLK (0x00000200)
+#define LKF_EXPEDITE (0x00000400)
+#define LKF_NOQUEUEBAST (0x00000800)
+#define LKF_HEADQUE (0x00001000)
+#define LKF_NOORDER (0x00002000)
#endif
--- daemons/clvmd/lvm-functions.c
+++ daemons/clvmd/lvm-functions.c
@@ -31,7 +31,7 @@
#include <syslog.h>
#include <assert.h>
#include <libdevmapper.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "list.h"
#include "lvm-types.h"
++++++ improve_probing.diff ++++++
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:37.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:39.000000000 +0800
@@ -13,6 +13,12 @@
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <sys/ioctl.h>
+#include <linux/fs.h>
+#undef MAJOR
+#undef MINOR
+#undef MKDEV
+
#include "lib.h"
#include "dev-cache.h"
#include "filter.h"
@@ -103,11 +109,18 @@
}
/* Check it's accessible */
- if (!dev_open_flags(dev, O_RDONLY, 0, 1)) {
+ if (!dev_open_flags(dev, O_RDONLY|O_NONBLOCK, 0, 1)) {
log_debug("%s: Skipping: open failed", name);
return 0;
}
-
+
+ /* Skip cdrom device */
+ #define CDROM_GET_CAPABILITY 0x5331
+ if (ioctl(dev->fd, CDROM_GET_CAPABILITY) >= 0) {
+ log_debug("%s: Skipping: cdrom device", name );
+ goto out;
+ }
+
/* Check it's not too small */
if (!dev_get_size(dev, &size)) {
log_debug("%s: Skipping: dev_get_size failed", name);
++++++ k_dev_t.dif ++++++
--- /var/tmp/diff_new_pack.Q11167/_old 2009-05-06 18:35:23.000000000 +0200
+++ /var/tmp/diff_new_pack.Q11167/_new 2009-05-06 18:35:23.000000000 +0200
@@ -1,6 +1,8 @@
---- lib/ioctl/libdm-compat.h
-+++ lib/ioctl/libdm-compat.h 2003/10/02 09:45:33
-@@ -31,7 +31,7 @@
+Index: LVM2.2.02.45/libdm/ioctl/libdm-compat.h
+===================================================================
+--- LVM2.2.02.45.orig/libdm/ioctl/libdm-compat.h 2008-11-01 10:19:18.000000000 +0800
++++ LVM2.2.02.45/libdm/ioctl/libdm-compat.h 2009-04-27 17:43:08.000000000 +0800
+@@ -40,7 +40,7 @@
int32_t open_count; /* out */
uint32_t flags; /* in/out */
@@ -9,7 +11,7 @@
char name[DM_NAME_LEN]; /* device name */
char uuid[DM_UUID_LEN]; /* unique identifier for
-@@ -51,7 +51,7 @@
+@@ -60,7 +60,7 @@
struct dm_target_deps_v1 {
uint32_t count;
++++++ lvm.conf ++++++
# This is an example configuration file for the LVM2 system.
# It contains the default settings that would be used if there was no
# /etc/lvm/lvm.conf file.
#
# Refer to 'man lvm.conf' for further information including the file layout.
#
# To put this file in a different directory and override /etc/lvm set
# the environment variable LVM_SYSTEM_DIR before running the tools.
# This section allows you to configure which block devices should
# be used by the LVM system.
devices {
# Where do you want your volume groups to appear ?
dir = "/dev"
# An array of directories that contain the device nodes you wish
# to use with LVM2.
scan = [ "/dev" ]
# A filter that tells LVM2 to only use a restricted set of devices.
# The filter consists of an array of regular expressions. These
# expressions can be delimited by a character of your choice, and
# prefixed with either an 'a' (for accept) or 'r' (for reject).
# The first expression found to match a device name determines if
# the device will be accepted or rejected (ignored). Devices that
# don't match any patterns are accepted.
# Remember to run vgscan after you change this parameter to ensure
# that the cache file gets regenerated (see below).
# By default we accept every block device except udev names:
filter = [ "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "a/.*/" ]
# Exclude the cdrom drive
# filter = [ "r|/dev/cdrom|" ]
# When testing I like to work with just loopback devices:
# filter = [ "a/loop/", "r/.*/" ]
# Or maybe all loops and ide drives except hdc:
# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
# Use anchors if you want to be really specific
# filter = [ "a|^/dev/hda8$|", "r/.*/" ]
# The results of the filtering are cached on disk to avoid
# rescanning dud devices (which can take a very long time). By
# default this cache file is hidden in the /etc/lvm directory.
# It is safe to delete this file: the tools regenerate it.
cache = "/etc/lvm/.cache"
# You can turn off writing this cache file by setting this to 0.
write_cache_state = 1
# Advanced settings.
# List of pairs of additional acceptable block device types found
# in /proc/devices with maximum (non-zero) number of partitions.
# types = [ "fd", 16 ]
# If sysfs is mounted (2.6 kernels) restrict device scanning to
# the block devices it believes are valid.
# 1 enables; 0 disables.
sysfs_scan = 1
# By default, LVM2 will ignore devices used as components of
# software RAID (md) devices by looking for md superblocks.
# 1 enables; 0 disables.
md_component_detection = 1
}
# This section that allows you to configure the nature of the
# information that LVM2 reports.
log {
# Controls the messages sent to stdout or stderr.
# There are three levels of verbosity, 3 being the most verbose.
verbose = 0
# Should we send log messages through syslog?
# 1 is yes; 0 is no.
syslog = 1
# Should we log error and debug messages to a file?
# By default there is no log file.
#file = "/var/log/lvm2.log"
# Should we overwrite the log file each time the program is run?
# By default we append.
overwrite = 0
# What level of log messages should we send to the log file and/or syslog?
# There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
# 7 is the most verbose (LOG_DEBUG).
level = 0
# Format of output messages
# Whether or not (1 or 0) to indent messages according to their severity
indent = 1
# Whether or not (1 or 0) to display the command name on each line output
command_names = 0
# A prefix to use before the message text (but after the command name,
# if selected). Default is two spaces, so you can see/grep the severity
# of each message.
prefix = " "
# To make the messages look similar to the original LVM tools use:
# indent = 0
# command_names = 1
# prefix = " -- "
# Set this if you want log messages during activation.
# Don't use this in low memory situations (can deadlock).
# activation = 0
}
# Configuration of metadata backups and archiving. In LVM2 when we
# talk about a 'backup' we mean making a copy of the metadata for the
# *current* system. The 'archive' contains old metadata configurations.
# Backups are stored in a human readeable text format.
backup {
# Should we maintain a backup of the current metadata configuration ?
# Use 1 for Yes; 0 for No.
# Think very hard before turning this off!
backup = 1
# Where shall we keep it ?
# Remember to back up this directory regularly!
backup_dir = "/etc/lvm/backup"
# Should we maintain an archive of old metadata configurations.
# Use 1 for Yes; 0 for No.
# On by default. Think very hard before turning this off.
archive = 1
# Where should archived files go ?
# Remember to back up this directory regularly!
archive_dir = "/etc/lvm/archive"
# What is the minimum number of archive files you wish to keep ?
retain_min = 10
# What is the minimum time you wish to keep an archive file for ?
retain_days = 30
}
# Settings for the running LVM2 in shell (readline) mode.
shell {
# Number of lines of history to store in ~/.lvm_history
history_size = 100
}
# Miscellaneous global LVM2 settings
global {
# The file creation mask for any files and directories created.
# Interpreted as octal if the first digit is zero.
umask = 077
# Allow other users to read the files
#umask = 022
# Enabling test mode means that no changes to the on disk metadata
# will be made. Equivalent to having the -t option on every
# command. Defaults to off.
test = 0
# Whether or not to communicate with the kernel device-mapper.
# Set to 0 if you want to use the tools to manipulate LVM metadata
# without activating any logical volumes.
# If the device-mapper kernel driver is not present in your kernel
# setting this to 0 should suppress the error messages.
activation = 1
# If we can't communicate with device-mapper, should we try running
# the LVM1 tools?
# This option only applies to 2.4 kernels and is provided to help you
# switch between device-mapper kernels and LVM1 kernels.
# The LVM1 tools need to be installed with .lvm1 suffices
# e.g. vgscan.lvm1 and they will stop working after you start using
# the new lvm2 on-disk metadata format.
# The default value is set when the tools are built.
# fallback_to_lvm1 = 0
# The default metadata format that commands should use - "lvm1" or "lvm2".
# The command line override is -M1 or -M2.
# Defaults to "lvm1" if compiled in, else "lvm2".
# format = "lvm1"
# Location of proc filesystem
proc = "/proc"
# Type of locking to use. Defaults to file-based locking (1).
# Turn locking off by setting to 0 (dangerous: risks metadata corruption
# if LVM2 commands get run concurrently).
locking_type = 1
# Local non-LV directory that holds file-based locks while commands are
# in progress. A directory like /tmp that may get wiped on reboot is OK.
locking_dir = "/var/lock/lvm"
# Other entries can go here to allow you to load shared libraries
# e.g. if support for LVM1 metadata was compiled as a shared library use
# format_libraries = "liblvm2format1.so"
# Full pathnames can be given.
# Search this directory first for shared libraries.
# library_dir = "/lib"
}
activation {
# Device used in place of missing stripes if activating incomplete volume.
# For now, you need to set this up yourself first (e.g. with 'dmsetup')
# For example, you could make it return I/O errors using the 'error'
# target or make it return zeros.
missing_stripe_filler = "/dev/ioerror"
# Size (in KB) of each copy operation when mirroring
mirror_region_size = 512
# How much stack (in KB) to reserve for use while devices suspended
reserved_stack = 256
# How much memory (in KB) to reserve for use while devices suspended
reserved_memory = 8192
# Nice value used while devices suspended
process_priority = -18
# If volume_list is defined, each LV is only activated if there is a
# match against the list.
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
}
####################
# Advanced section #
####################
# Metadata settings
#
# metadata {
# Default number of copies of metadata to hold on each PV. 0, 1 or 2.
# It's best to leave this at 2.
# You might want to override it from the command line with 0 or 1
# when running pvcreate on new PVs which are to be added to large VGs.
# pvmetadatacopies = 2
# Approximate default size of on-disk metadata areas in sectors.
# You should increase this if you have large volume groups or
# you want to retain a large on-disk history of your metadata changes.
# pvmetadatasize = 255
# List of directories holding live copies of text format metadata.
# These directories must not be on logical volumes!
# It's possible to use LVM2 with a couple of directories here,
# preferably on different (non-LV) filesystems, and with no other
# on-disk metadata (pvmetadatacopies = 0). Or this can be in
# addition to on-disk metadata areas.
# The feature was originally added to simplify testing and is not
# supported under low memory situations - the machine could lock up.
#
# Never edit any files in these directories by hand unless you
# you are absolutely sure you know what you are doing! Use
# the supplied toolset to make changes (e.g. vgcfgrestore).
# dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
#}
dmeventd {
# mirror_library is the library used when monitoring a mirror device.
#
# "libdevmapper-event-lvm2mirror.so" attempts to recover from
# failures. It removes failed devices from a volume group and
# reconfigures a mirror as necessary. If no mirror library is
# provided, mirrors are not monitored through dmeventd.
mirror_library = "libdevmapper-event-lvm2mirror.so.2.02"
# snapshot_library is the library used when monitoring a snapshot device.
#
# "libdevmapper-event-lvm2snapshot.so" monitors the filling of
# snapshots and emits a warning through syslog, when the use of
# snapshot exceedes 80%. The warning is repeated when 85%, 90% and
# 95% of the snapshot are filled.
snapshot_library = "libdevmapper-event-lvm2snapshot.so.2.02"
}
++++++ lvm-no_chown.diff ++++++
Index: daemons/clvmd/Makefile.in
===================================================================
--- daemons/clvmd/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ daemons/clvmd/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -107,7 +107,7 @@
.PHONY: install_clvmd
install_clvmd: $(TARGETS)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) clvmd \
+ $(INSTALL) -D -m 555 $(STRIP) clvmd \
$(usrsbindir)/clvmd
install: $(INSTALL_TARGETS)
Index: doc/Makefile.in
===================================================================
--- doc/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ doc/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -23,7 +23,7 @@
install:
@if [ ! -e $(confdir)/$(CONFDEST) ]; then \
echo "Installing $(CONFSRC) as $(confdir)/$(CONFDEST)"; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 644 $(CONFSRC) \
+ @INSTALL@ -D -m 644 $(CONFSRC) \
$(confdir)/$(CONFDEST); \
fi
Index: lib/format1/Makefile.in
===================================================================
--- lib/format1/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/format1/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -31,7 +31,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2format1.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2format1.so.$(LIB_VERSION)
$(LN_S) -f liblvm2format1.so.$(LIB_VERSION) $(libdir)/liblvm2format1.so
Index: lib/format_pool/Makefile.in
===================================================================
--- lib/format_pool/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/format_pool/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -28,7 +28,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2formatpool.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2formatpool.so.$(LIB_VERSION)
$(LN_S) -f liblvm2formatpool.so.$(LIB_VERSION) \
$(libdir)/liblvm2formatpool.so
Index: lib/locking/Makefile.in
===================================================================
--- lib/locking/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/locking/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install install_cluster: liblvm2clusterlock.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2clusterlock.so.$(LIB_VERSION)
$(LN_S) -f liblvm2clusterlock.so.$(LIB_VERSION) \
$(libdir)/liblvm2clusterlock.so
Index: lib/mirror/Makefile.in
===================================================================
--- lib/mirror/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/mirror/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2mirror.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2mirror.so.$(LIB_VERSION)
$(LN_S) -f liblvm2mirror.so.$(LIB_VERSION) $(libdir)/liblvm2mirror.so
Index: lib/snapshot/Makefile.in
===================================================================
--- lib/snapshot/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/snapshot/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2snapshot.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2snapshot.so.$(LIB_VERSION)
$(LN_S) -f liblvm2snapshot.so.$(LIB_VERSION) \
$(libdir)/liblvm2snapshot.so
Index: man/Makefile.in
===================================================================
--- man/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ man/Makefile.in 2009-04-27 16:52:20.000000000 +0800
@@ -62,14 +62,14 @@
@for f in $(MAN8); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
@echo "Installing $(MAN5) in $(MAN5DIR)"
@for f in $(MAN5); \
do \
$(RM) $(MAN5DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN5DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN5DIR)/$$f; \
done
install_cluster:
@@ -77,7 +77,7 @@
@for f in $(MAN8CLUSTER); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
install_device-mapper:
@@ -85,5 +85,5 @@
@for f in $(MAN8DM); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
Index: po/Makefile.in
===================================================================
--- po/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ po/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -53,13 +53,13 @@
@echo Installing translation files in $(localedir)
@( \
for lang in $(LANGS); do \
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 $$lang.mo \
+ $(INSTALL) -D -m 444 $$lang.mo \
$(localedir)/$$lang/LC_MESSAGES/lvm2.mo;\
done; \
)
@( \
for lang in $(LANGS); do \
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 $$lang.mo \
+ $(INSTALL) -D -m 444 $$lang.mo \
$(localedir)/$$lang/LC_MESSAGES/device-mapper.mo;\
done; \
)
Index: scripts/Makefile.in
===================================================================
--- scripts/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ scripts/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -18,9 +18,9 @@
include $(top_srcdir)/make.tmpl
install:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm_dump.sh \
+ $(INSTALL) -D -m 555 $(STRIP) lvm_dump.sh \
$(sbindir)/lvmdump
ifeq ("@FSADM@", "yes")
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) fsadm.sh \
+ $(INSTALL) -D -m 555 $(STRIP) fsadm.sh \
$(sbindir)/fsadm
endif
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ tools/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -156,21 +156,21 @@
endif
install_cmdlib_dynamic: liblvm2cmd.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd.$(LIB_SUFFIX) \
+ $(INSTALL) -D -m 555 $(STRIP) liblvm2cmd.$(LIB_SUFFIX) \
$(libdir)/liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM)
$(LN_S) -f liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \
+ $(INSTALL) -D -m 444 lvm2cmd.h \
$(includedir)/lvm2cmd.h
install_cmdlib_static: liblvm2cmd-static.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd-static.a \
+ $(INSTALL) -D -m 555 $(STRIP) liblvm2cmd-static.a \
$(libdir)/liblvm2cmd.a.$(LIB_VERSION_LVM)
$(LN_S) -f liblvm2cmd.a.$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \
+ $(INSTALL) -D -m 444 lvm2cmd.h \
$(includedir)/lvm2cmd.h
install_tools_dynamic: lvm .commands
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm \
+ $(INSTALL) -D -m 555 $(STRIP) lvm \
$(sbindir)/lvm
@echo Creating symbolic links for individual commands in $(sbindir)
@( \
@@ -181,14 +181,14 @@
)
install_tools_static: lvm.static
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm.static \
+ $(INSTALL) -D -m 555 $(STRIP) lvm.static \
$(staticdir)/lvm.static
install_dmsetup_dynamic: dmsetup
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_dmsetup_static: dmsetup.static
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_device-mapper: $(INSTALL_DMSETUP_TARGETS)
Index: daemons/dmeventd/Makefile.in
===================================================================
--- daemons/dmeventd/Makefile.in.orig 2008-11-05 01:25:32.000000000 +0800
+++ daemons/dmeventd/Makefile.in 2009-04-27 16:57:01.000000000 +0800
@@ -64,24 +64,24 @@
install_device-mapper: install
install_include:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper-event.h \
+ $(INSTALL) -D -m 444 libdevmapper-event.h \
$(includedir)/libdevmapper-event.h
install_dynamic: libdevmapper-event.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper-event.$(LIB_SUFFIX).$(LIB_VERSION)
$(LN_S) -f libdevmapper-event.$(LIB_SUFFIX).$(LIB_VERSION) \
$(libdir)/libdevmapper-event.$(LIB_SUFFIX)
install_dmeventd: dmeventd
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_pkgconfig:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper-event.pc \
+ $(INSTALL) -D -m 444 libdevmapper-event.pc \
$(usrlibdir)/pkgconfig/devmapper-event.pc
install_static: libdevmapper-event.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper-event.a.$(LIB_VERSION)
$(LN_S) -f libdevmapper-event.a.$(LIB_VERSION) $(libdir)/libdevmapper-event.a
Index: daemons/dmeventd/plugins/mirror/Makefile.in
===================================================================
--- daemons/dmeventd/plugins/mirror/Makefile.in.orig 2008-11-04 06:14:26.000000000 +0800
+++ daemons/dmeventd/plugins/mirror/Makefile.in 2009-04-27 16:55:45.000000000 +0800
@@ -32,6 +32,6 @@
include $(top_srcdir)/make.tmpl
install: libdevmapper-event-lvm2mirror.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/$<.$(LIB_VERSION)
$(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
Index: daemons/dmeventd/plugins/snapshot/Makefile.in
===================================================================
--- daemons/dmeventd/plugins/snapshot/Makefile.in.orig 2008-11-04 06:14:27.000000000 +0800
+++ daemons/dmeventd/plugins/snapshot/Makefile.in 2009-04-27 16:56:00.000000000 +0800
@@ -32,6 +32,6 @@
include $(top_srcdir)/make.tmpl
install: libdevmapper-event-lvm2snapshot.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/$<.$(LIB_VERSION)
$(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
Index: libdm/Makefile.in
===================================================================
--- libdm/Makefile.in.orig 2008-11-15 04:59:56.000000000 +0800
+++ libdm/Makefile.in 2009-04-27 16:57:28.000000000 +0800
@@ -70,7 +70,7 @@
install_device-mapper: install
install_include:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper.h \
+ $(INSTALL) -D -m 444 libdevmapper.h \
$(includedir)/libdevmapper.h
install_dynamic: install_@interface@
@@ -81,15 +81,15 @@
$(LN_S) -f libdevmapper.a.$(LIB_VERSION_DM) $(libdir)/libdevmapper.a
install_ioctl: ioctl/libdevmapper.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper.$(LIB_SUFFIX).$(LIB_VERSION_DM)
install_pkgconfig:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper.pc \
+ $(INSTALL) -D -m 444 libdevmapper.pc \
$(usrlibdir)/pkgconfig/devmapper.pc
install_ioctl_static: ioctl/libdevmapper.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper.a.$(LIB_VERSION_DM)
$(VERSIONED_SHLIB): %.$(LIB_SUFFIX).$(LIB_VERSION_DM): $(interface)/%.$(LIB_SUFFIX)
++++++ lvm-pv-create-link.diff ++++++
Index: LVM2.2.02.45/tools/pvremove.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvremove.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvremove.c 2009-04-27 16:49:48.000000000 +0800
@@ -18,6 +18,30 @@
const char _really_wipe[] =
"Really WIPE LABELS from physical volume \"%s\" of volume group \"%s\" [y/n]? ";
+static const char* pv_remove_symlink(struct cmd_context* cmd, const char* name)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char pvuuid_link[70];
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+ unlink(pvuuid_link); //we really don't care if it successed or not.
+
+ free(pvuuid);
+ return pvuuid;
+}
+
/*
* Decide whether it is "safe" to wipe the labels on this device.
* 0 indicates we may not.
@@ -125,6 +149,8 @@
log_print("Labels on physical volume \"%s\" successfully wiped",
pv_name);
+ pv_remove_symlink(cmd, pv_name);
+
ret = ECMD_PROCESSED;
error:
Index: LVM2.2.02.45/tools/pvcreate.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvcreate.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvcreate.c 2009-04-27 16:45:34.000000000 +0800
@@ -36,6 +36,89 @@
const char _really_init[] =
"Really INITIALIZE physical volume \"%s\" of volume group \"%s\" [y/n]? ";
+static const char* pv_follow_if_link (const char* path)
+{
+ int r;
+ int len = 60;
+ char *fpath = NULL;
+ char *npath = NULL;
+ struct stat st;
+
+ r = lstat(path, &st);
+ if (r == -1) return NULL; //shouldn't happen
+
+ if (S_ISLNK(st.st_mode)) {
+ while (1) {
+ npath = realloc(fpath, sizeof(char)*len);
+ if (npath == NULL) {
+ if (fpath != NULL) free(fpath);
+ return NULL;
+ }
+ fpath = npath;
+
+ memset(fpath, 0, sizeof(char)*len);
+ r = readlink(path, fpath, len);
+ if (r != -1 && fpath[len-1] == 0) break;
+ if (r == -1) {
+ free(fpath);
+ return NULL;
+ } else {
+ len = len * 2;
+ }
+ }
+ }
+ else {
+ fpath = strdup(path);
+ }
+ return fpath;
+}
+
+
+static const char* pv_symlink_handle(struct cmd_context* cmd, const char* name, int create)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char *pvuuid_link;
+
+ pvuuid_link = malloc(70);
+ if (pvuuid_link == NULL) return NULL;
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+
+ //we really don't care if it successed or not.
+ if (create) {
+ const char* tname = NULL;
+ int r;
+ tname = pv_follow_if_link(name);
+ if (tname != NULL) {
+ r = symlink(tname, pvuuid_link);
+ free(tname);
+ }
+ else {
+ symlink(name, pvuuid_link);
+ }
+ } else {
+ //pvuuid_link is saved for future unlink
+ //unlink(pvuuid_link);
+ }
+
+ free(pvuuid);
+ return pvuuid_link;
+}
+
/*
* See if we may pvcreate on this device.
* 0 indicates we may not.
@@ -150,6 +233,8 @@
void *pv;
struct device *dev;
struct dm_list mdas;
+ const char *oldsymlink;
+
if (pp->idp) {
if ((dev = device_from_pvid(cmd, pp->idp)) &&
@@ -213,12 +298,22 @@
log_very_verbose("Writing physical volume data to disk \"%s\"",
pv_name);
+
+ oldsymlink = pv_symlink_handle(cmd, pv_name, 0);
+
if (!(pv_write(cmd, (struct physical_volume *)pv, &mdas,
pp->labelsector))) {
log_error("Failed to write physical volume \"%s\"", pv_name);
+ if (oldsymlink) free(oldsymlink);
goto error;
}
+ pv_symlink_handle(cmd, pv_name, 1);
+ if (oldsymlink) {
+ unlink(oldsymlink);
+ free(oldsymlink);
+ }
+
log_print("Physical volume \"%s\" successfully created", pv_name);
unlock_vg(cmd, VG_ORPHANS);
Index: LVM2.2.02.45/tools/pvchange.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvchange.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvchange.c 2009-04-27 16:45:18.000000000 +0800
@@ -15,6 +15,90 @@
#include "tools.h"
+static const char* pv_follow_if_link (const char* path)
+{
+ int r;
+ int len = 60;
+ char *fpath = NULL;
+ char *npath = NULL;
+ struct stat st;
+
+ r = lstat(path, &st);
+ if (r == -1) return NULL; //shouldn't happen
+
+ if (S_ISLNK(st.st_mode)) {
+ while (1) {
+ npath = realloc(fpath, sizeof(char)*len);
+ if (npath == NULL) {
+ if (fpath != NULL) free(fpath);
+ return NULL;
+ }
+ fpath = npath;
+
+ memset(fpath, 0, sizeof(char)*len);
+ r = readlink(path, fpath, len);
+ if (r != -1 && fpath[len-1] == 0) break;
+ if (r == -1) {
+ free(fpath);
+ return NULL;
+ } else {
+ len = len * 2;
+ }
+ }
+ }
+ else {
+ fpath = strdup(path);
+ }
+ return fpath;
+}
+
+static const char* pv_symlink_handle(struct cmd_context* cmd, const char* name, int create)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char *pvuuid_link;
+
+ pvuuid_link = malloc(70);
+ if (pvuuid_link == NULL) return NULL;
+
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+
+ //we really don't care if it successed or not.
+ if (create) {
+ const char* tname = NULL;
+ int r;
+ tname = pv_follow_if_link(name);
+ if (tname != NULL) {
+ r = symlink(tname, pvuuid_link);
+ free(tname);
+ }
+ else {
+ symlink(name, pvuuid_link);
+ }
+ } else {
+ //pvuuid_link is saved for future unlink
+ //unlink(pvuuid_link);
+ }
+
+ free(pvuuid);
+ return pvuuid_link;
+}
+
+
/* FIXME Locking. PVs in VG. */
static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
@@ -202,11 +286,23 @@
return 0;
}
backup(vg);
- } else if (!(pv_write(cmd, pv, NULL, INT64_C(-1)))) {
- unlock_vg(cmd, vg_name);
- log_error("Failed to store physical volume \"%s\"",
- pv_name);
- return 0;
+ } else {
+ const char* oldsymlink;
+ oldsymlink = pv_symlink_handle(cmd, pv_name, 0);
+
+ if (!(pv_write(cmd, pv, NULL, INT64_C(-1)))) {
+ unlock_vg(cmd, vg_name);
+ log_error("Failed to store physical volume \"%s\"",
+ pv_name);
+ if (oldsymlink) free(oldsymlink);
+ return 0;
+ }
+ pv_symlink_handle(cmd, pv_name, 1);
+ if (oldsymlink) {
+ unlink(oldsymlink);
+ free(oldsymlink);
+ }
+
}
unlock_vg(cmd, vg_name);
++++++ man_page_sectors.diff ++++++
Index: man/pvdisplay.8.in
===================================================================
--- man/pvdisplay.8.in.orig 2009-04-27 16:17:35.000000000 +0800
+++ man/pvdisplay.8.in 2009-04-27 16:17:50.000000000 +0800
@@ -25,7 +25,7 @@
* physical volume device name
* volume group name
-* physical volume size in kilobytes
+* physical volume size in sectors
* internal physical volume number (obsolete)
* physical volume status
* physical volume (not) allocatable
++++++ no_buildroot_shared.diff ++++++
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in.orig 2009-04-27 16:15:35.000000000 +0800
+++ tools/Makefile.in 2009-04-27 16:15:46.000000000 +0800
@@ -95,7 +95,7 @@
LVMLIBS += -ldevmapper
-DEFS += -DLVM_SHARED_PATH=\"$(exec_prefix)/sbin/lvm\"
+DEFS += -DLVM_SHARED_PATH=\"/sbin/lvm\"
include $(top_srcdir)/make.tmpl
++++++ no-inc-audit.diff ++++++
Index: lib/device/dev-io.c
===================================================================
--- lib/device/dev-io.c.orig 2009-04-27 16:15:36.000000000 +0800
+++ lib/device/dev-io.c 2009-04-27 16:15:42.000000000 +0800
@@ -31,6 +31,7 @@
# define u64 uint64_t /* Missing without __KERNEL__ */
# undef WNOHANG /* Avoid redefinition */
# undef WUNTRACED /* Avoid redefinition */
+# define _LINUX_AUDIT_H_ /* Avoid inclusion */
# include <linux/fs.h> /* For block ioctl definitions */
# define BLKSIZE_SHIFT SECTOR_SHIFT
# ifndef BLKGETSIZE64 /* fs.h out-of-date */
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:39.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:42.000000000 +0800
@@ -14,6 +14,7 @@
*/
#include <sys/ioctl.h>
+#define _LINUX_AUDIT_H_
#include <linux/fs.h>
#undef MAJOR
#undef MINOR
++++++ pipe_buff-definition.diff ++++++
--- daemons/clvmd/clvmd.c
+++ daemons/clvmd/clvmd.c
@@ -59,6 +59,8 @@
#define ISLOCAL_CSID(c) (memcmp(c, our_csid, max_csid_len) == 0)
+#include <linux/limits.h>
+
/* Head of the fd list. Also contains
the cluster_socket details */
static struct local_client local_client_head;
++++++ pvscan_2TB_limit.diff ++++++
Index: tools/pvscan.c
===================================================================
--- tools/pvscan.c.orig 2008-11-04 06:14:30.000000000 +0800
+++ tools/pvscan.c 2009-04-27 16:15:52.000000000 +0800
@@ -166,7 +166,7 @@
size_new += pv_size(pv);
size_total += pv_size(pv);
} else
- size_total += pv_pe_count(pv) * pv_pe_size(pv);
+ size_total += (uint64_t)pv_pe_count(pv) * pv_pe_size(pv);
}
/* find maximum pv name length */
++++++ sigterm_in_main_thread.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd.c 2009-03-24 19:29:14.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd.c 2009-03-24 19:34:01.000000000 +0800
@@ -348,9 +348,11 @@
signal(SIGHUP, sighup_handler);
signal(SIGPIPE, SIG_IGN);
- /* Block SIGUSR2 in the main process */
+ /* Block SIGUSR2/SIGINT/SIGTERM in process */
sigemptyset(&ss);
sigaddset(&ss, SIGUSR2);
+ sigaddset(&ss, SIGINT);
+ sigaddset(&ss, SIGTERM);
sigprocmask(SIG_BLOCK, &ss, NULL);
/* Initialise the LVM thread variables */
@@ -633,6 +635,11 @@
{
DEBUGLOG("Using timeout of %d seconds\n", cmd_timeout);
+ sigset_t ss;
+ sigemptyset(&ss);
+ sigaddset(&ss, SIGINT);
+ sigaddset(&ss, SIGTERM);
+ pthread_sigmask(SIG_UNBLOCK, &ss, NULL);
/* Main loop */
while (!quit) {
fd_set in;
@@ -771,6 +778,8 @@
}
closedown:
+
+ pthread_sigmask(SIG_BLOCK, &ss, NULL);
clops->cluster_closedown();
close(local_sock);
}
++++++ support-drbd-filter.diff ++++++
This is still very primitive support of drbd in lvm2.
Can we use some /sys information for this ?
Index: LVM2.2.02.39/lib/cache/lvmcache.c
===================================================================
--- LVM2.2.02.39.orig/lib/cache/lvmcache.c 2008-06-27 23:18:31.000000000 +0800
+++ LVM2.2.02.39/lib/cache/lvmcache.c 2009-03-31 12:08:29.000000000 +0800
@@ -1119,6 +1119,13 @@
pvid, dev_name(dev),
dev_name(existing->dev));
return NULL;
+ } else if (MAJOR(existing->dev->dev) == drbd_major() &&
+ MAJOR(dev->dev) != drbd_major()) {
+ log_very_verbose("Ignoring duplicate PV %s on "
+ "%s - using drbd %s",
+ pvid, dev_name(dev),
+ dev_name(existing->dev));
+ return NULL;
} else if (MAJOR(existing->dev->dev) != md_major() &&
MAJOR(dev->dev) == md_major())
log_very_verbose("Duplicate PV %s on %s - "
@@ -1131,6 +1138,12 @@
"using dm %s", pvid,
dev_name(existing->dev),
dev_name(dev));
+ else if (MAJOR(existing->dev->dev) != drbd_major() &&
+ MAJOR(dev->dev) == drbd_major())
+ log_very_verbose("Duplicate PV %s on %s - "
+ "using drbd %s", pvid,
+ dev_name(existing->dev),
+ dev_name(dev));
/* FIXME If both dm, check dependencies */
//else if (dm_is_dm_major(MAJOR(existing->dev->dev)) &&
//dm_is_dm_major(MAJOR(dev->dev)))
Index: LVM2.2.02.39/lib/filters/filter.c
===================================================================
--- LVM2.2.02.39.orig/lib/filters/filter.c 2009-03-31 11:48:52.000000000 +0800
+++ LVM2.2.02.39/lib/filters/filter.c 2009-03-31 11:57:38.000000000 +0800
@@ -46,12 +46,20 @@
static int _md_major = -1;
static int _device_mapper_major = -1;
+static int _drbd_major = -1;
int md_major(void)
{
return _md_major;
}
+/* FIXME: Should we consider filter out non-primary
+ drbd resource ?? */
+int drbd_major(void)
+{
+ return _drbd_major;
+}
+
/*
* Devices are only checked for partition tables if their minor number
* is a multiple of the number corresponding to their type below
@@ -208,6 +216,9 @@
if (!strncmp("md", line + i, 2) && isspace(*(line + i + 2)))
_md_major = line_maj;
+ if (!strncmp("drbd", line + i, 4) && isspace(*(line + i + 4)))
+ _drbd_major = line_maj;
+
/* Look for device-mapper device */
/* FIXME Cope with multiple majors */
if (!strncmp("device-mapper", line + i, 13) && isspace(*(line + i + 13)))
++++++ sysconfig.lvm ++++++
## Path: System/File systems/LVM
## Description: LVM configuration
## Type: string
## Default: ""
#
# This variable allows to only activate the LVM volume groups listed at
# bootup. If it is empty, all LVM volume groups are activated at bootup.
# This variable needs setting only under very special circumstances.
# For almost all standard LVM installations it can safely stay empty.
#
LVM_VGS_ACTIVATED_ON_BOOT=""
++++++ sys_mount_instead_linux_fs.diff ++++++
Index: lib/device/dev-io.c
===================================================================
--- lib/device/dev-io.c.orig 2009-04-27 16:15:42.000000000 +0800
+++ lib/device/dev-io.c 2009-04-27 16:15:49.000000000 +0800
@@ -32,7 +32,7 @@
# undef WNOHANG /* Avoid redefinition */
# undef WUNTRACED /* Avoid redefinition */
# define _LINUX_AUDIT_H_ /* Avoid inclusion */
-# include <linux/fs.h> /* For block ioctl definitions */
+# include <sys/mount.h> /* For block ioctl definitions */
# define BLKSIZE_SHIFT SECTOR_SHIFT
# ifndef BLKGETSIZE64 /* fs.h out-of-date */
# define BLKGETSIZE64 _IOR(0x12, 114, size_t)
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:42.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:49.000000000 +0800
@@ -15,7 +15,7 @@
#include <sys/ioctl.h>
#define _LINUX_AUDIT_H_
-#include <linux/fs.h>
+#include <sys/mount.h>
#undef MAJOR
#undef MINOR
#undef MKDEV
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa-tools for openSUSE:Factory
checked in at Wed May 6 18:34:26 CEST 2009.
--------
--- alsa-tools/alsa-tools.changes 2009-03-05 15:35:47.000000000 +0100
+++ /mounts/work_src_done/STABLE/alsa-tools/alsa-tools.changes 2009-05-06 18:17:58.000000000 +0200
@@ -1,0 +2,6 @@
+Wed May 6 18:13:12 CEST 2009 - tiwai(a)suse.de
+
+- updated to version 1.0.20:
+ * just a version bump
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
alsa-tools-1.0.19.tar.bz2
New:
----
alsa-tools-1.0.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-tools.spec ++++++
--- /var/tmp/diff_new_pack.Bu6023/_old 2009-05-06 18:32:45.000000000 +0200
+++ /var/tmp/diff_new_pack.Bu6023/_new 2009-05-06 18:32:45.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa-tools (Version 1.0.19)
+# spec file for package alsa-tools (Version 1.0.20)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,11 +20,11 @@
Name: alsa-tools
BuildRequires: alsa-devel fdupes fltk-devel gcc-c++ gtk2-devel update-desktop-files
-%define package_version 1.0.19
+%define package_version 1.0.20
Url: http://www.alsa-project.org/
Summary: Various ALSA Tools
-Version: 1.0.19
-Release: 3
+Version: 1.0.20
+Release: 1
License: GPL v2 or later
Group: Productivity/Multimedia/Sound/Utilities
AutoReqProv: on
@@ -212,6 +212,9 @@
%{_datadir}/aclocal/*.m4
%changelog
+* Wed May 06 2009 tiwai(a)suse.de
+- updated to version 1.0.20:
+ * just a version bump
* Thu Mar 05 2009 ro(a)suse.de
- fix build
* Thu Jan 22 2009 tiwai(a)suse.de
@@ -369,7 +372,7 @@
- updated to 0.9.0rc6.
- including the required header files from alsa-kernel.
- renamed a patch file to avoid the confliction of file names.
-* Mon Nov 11 2002 ro(a)suse.de
+* Tue Nov 12 2002 ro(a)suse.de
- changed neededforbuild <xshared> to <x-devel-packages>
- changed neededforbuild <xdevel> to <>
* Fri Sep 06 2002 tiwai(a)suse.de
++++++ alsa-tools-1.0.19.tar.bz2 -> alsa-tools-1.0.20.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-tools-1.0.19/echomixer/echomixer.c new/alsa-tools-1.0.20/echomixer/echomixer.c
--- old/alsa-tools-1.0.19/echomixer/echomixer.c 2009-01-19 12:17:21.000000000 +0100
+++ new/alsa-tools-1.0.20/echomixer/echomixer.c 2009-05-06 09:07:25.000000000 +0200
@@ -129,38 +129,8 @@
snd_ctl_t *ctlhandle;
-#if __GNUC__ == 3 // gcc 2.x doesn't like unnamed unions inside structures
-
-struct mixerControl_s {
- union { // Currently selected channels
- int vchannel;
- int input;
- };
- union { // Number of channels
- int vchannels;
- int inputs;
- };
- int output, outputs;
- int id;
- GtkWidget *window;
- GtkWidget *volume[ECHO_MAXAUDIOOUTPUTS];
- GtkWidget *label[ECHO_MAXAUDIOOUTPUTS];
- GtkObject *adj[ECHO_MAXAUDIOOUTPUTS];
- GtkWidget *outsel[ECHO_MAXAUDIOOUTPUTS];
- union {
- GtkWidget *inpsel[ECHO_MAXAUDIOINPUTS];
- GtkWidget *vchsel[ECHO_MAXAUDIOOUTPUTS];
- };
- struct mixel mixer[ECHO_MAXAUDIOOUTPUTS][ECHO_MAXAUDIOOUTPUTS];
-} mixerControl, vmixerControl;
-
-#else
-
struct mixerControl_s {
- int vchannel;
- int input;
- int vchannels;
- int inputs;
+ int input, inputs;
int output, outputs;
int id;
GtkWidget *window;
@@ -173,9 +143,6 @@
struct mixel mixer[ECHO_MAXAUDIOOUTPUTS][ECHO_MAXAUDIOOUTPUTS];
} mixerControl, vmixerControl;
-#endif
-
-
struct VolumeControl_s {
int input, output; // Currently selected channels
int inputs, outputs;
@@ -677,8 +644,8 @@
gdk_draw_rectangle(Mixpixmap, gc, TRUE, XCELLTOT*(mixerControl.output+1), YCELLTOT*mixerControl.input, XCELLTOT, Mixheight);
if (vmixerId) {
gdk_gc_set_foreground(gc, &Hilight2);
- gdk_draw_rectangle(Mixpixmap, gc, TRUE, 0, YCELLTOT*(GMixerSection.VmixerFirst+vmixerControl.vchannel), XCELLTOT*(vmixerControl.output+1), YCELLTOT);
- gdk_draw_rectangle(Mixpixmap, gc, TRUE, XCELLTOT*(vmixerControl.output+1), YCELLTOT*(GMixerSection.VmixerFirst+vmixerControl.vchannel), XCELLTOT, Mixheight);
+ gdk_draw_rectangle(Mixpixmap, gc, TRUE, 0, YCELLTOT*(GMixerSection.VmixerFirst+vmixerControl.input), XCELLTOT*(vmixerControl.output+1), YCELLTOT);
+ gdk_draw_rectangle(Mixpixmap, gc, TRUE, XCELLTOT*(vmixerControl.output+1), YCELLTOT*(GMixerSection.VmixerFirst+vmixerControl.input), XCELLTOT, Mixheight);
}
// Draw the grid
@@ -720,7 +687,7 @@
// Draw vchannels levels and peaks (Vmixer cards only)
if (vmixerId) {
- for (i=0; i<vmixerControl.vchannels; i++)
+ for (i=0; i<vmixerControl.inputs; i++)
DrawBar(0, i+GMixerSection.VmixerFirst, VirLevel[i], VirPeak[i], DONT_DRAW);
}
@@ -739,7 +706,7 @@
// Draw vmixer elements (Vmixer cards only)
if (vmixerId) {
for (o=0; o<GMixerSection.Outputs; o++)
- for (i=0; i<vmixerControl.vchannels; i++) {
+ for (i=0; i<vmixerControl.inputs; i++) {
dB=Add_dB(vmixerControl.mixer[o][i].Gain, VirLevel[i]);
DrawBar(o+1, i+GMixerSection.VmixerFirst, dB, DONT_DRAW, vmixerControl.mixer[o][i].Gain);
}
@@ -945,7 +912,7 @@
} else if (GMixerRow>=GMixerSection.VmixerFirst && GMixerRow<=GMixerSection.VmixerLast) {
if (GMixerColumn!=vmixerControl.output)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vmixerControl.outsel[GMixerColumn]), TRUE);
- if (GMixerRow!=vmixerControl.vchannel)
+ if (GMixerRow!=vmixerControl.input)
gtk_widget_grab_focus(GTK_WIDGET(vmixerControl.volume[GMixerRow-GMixerSection.VmixerFirst]));
}
@@ -967,13 +934,13 @@
return TRUE;
// See the note above
- if (GMixerRow<GMixerSection.Inputs) {
+ if (GMixerRow<GMixerSection.VmixerFirst) {
if (GMixerRow!=mixerControl.input)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mixerControl.inpsel[GMixerRow]), TRUE);
if (GMixerColumn!=mixerControl.output)
gtk_widget_grab_focus(GTK_WIDGET(mixerControl.volume[GMixerColumn]));
} else if (GMixerRow>=GMixerSection.VmixerFirst && GMixerRow<=GMixerSection.VmixerLast) {
- if (GMixerRow!=vmixerControl.vchannel)
+ if (GMixerRow!=vmixerControl.input+GMixerSection.VmixerFirst)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vmixerControl.vchsel[GMixerRow-GMixerSection.VmixerFirst]), TRUE);
if (GMixerColumn!=vmixerControl.output)
gtk_widget_grab_focus(GTK_WIDGET(vmixerControl.volume[GMixerColumn]));
@@ -1035,11 +1002,11 @@
gtk_adjustment_set_value(GTK_ADJUSTMENT(mixerControl.adj[mixerControl.output]), (gfloat)val);
#endif
} else if (GMixerRow>=GMixerSection.VmixerFirst && GMixerRow<=GMixerSection.VmixerLast) {
- val=INVERT(vmixerControl.mixer[vmixerControl.output][vmixerControl.vchannel].Gain);
+ val=INVERT(vmixerControl.mixer[vmixerControl.output][vmixerControl.input].Gain);
val+=y-mouseY;
mouseY=y;
#ifdef REVERSE
- gtk_adjustment_set_value(GTK_ADJUSTMENT(vmixerControl.adj[vmixerControl.vchannel]), (gfloat)val);
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(vmixerControl.adj[vmixerControl.input]), (gfloat)val);
#else
gtk_adjustment_set_value(GTK_ADJUSTMENT(vmixerControl.adj[vmixerControl.output]), (gfloat)val);
#endif
@@ -1211,6 +1178,29 @@
+// Changes the vmixer volume according to the current Line-out volume for vmixer cards.
+void UpdateVMixerVolume(int outchannel) {
+ snd_ctl_elem_id_t *id;
+ snd_ctl_elem_value_t *control;
+ int err, val, ch;
+
+ snd_ctl_elem_id_alloca(&id);
+ snd_ctl_elem_value_alloca(&control);
+ snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
+
+ for (ch=0; ch<nPOut; ch++) {
+ val=Add_dB(vmixerControl.mixer[outchannel][ch].Gain, lineoutControl.Gain[outchannel]);
+ ClampOutputVolume(&val);
+ snd_ctl_elem_id_set_numid(id, vmixerControl.mixer[outchannel][ch].id);
+ snd_ctl_elem_value_set_id(control, id);
+ snd_ctl_elem_value_set_integer(control, 0, val);
+ if ((err = snd_ctl_elem_write(ctlhandle, control)) < 0)
+ printf("Control %s element write error: %s\n", card, snd_strerror(err));
+ }
+}
+
+
+
void LineOut_volume_changed(GtkWidget *widget, gpointer ch) {
char str[16];
int err, channel, val;
@@ -1237,6 +1227,9 @@
snd_ctl_elem_value_set_integer(control, channel, val);
if ((err=snd_ctl_elem_write(ctlhandle, control))<0)
printf("Control %s element write error: %s\n", card, snd_strerror(err));
+ } else if (vmixerId) {
+ UpdateVMixerVolume(channel);
+ UpdateMixerVolume(channel);
} else { // Otherwise we have to emulate it.
UpdatePCMVolume(channel);
UpdateMixerVolume(channel);
@@ -1250,26 +1243,31 @@
void Vmixer_volume_changed(GtkWidget *widget, gpointer ch) {
char str[16];
- int val, channel;
+ int val, rval, channel;
int o, v;
channel=(int)(long)ch;
+ val=rval=INVERT((int)GTK_ADJUSTMENT(widget)->value);
#ifdef REVERSE
v=channel;
o=vmixerControl.output;
#else
- v=vmixerControl.vchannel;
+ v=vmixerControl.input;
o=channel;
#endif
- val=INVERT((int)GTK_ADJUSTMENT(widget)->value);
+ // Emulate the line-out volume if this card can't do it in hw.
+ if (!lineoutId) {
+ rval=Add_dB(val, lineoutControl.Gain[o]);
+ ClampOutputVolume(&rval);
+ }
- SetMixerGain(&vmixerControl.mixer[o][v], val);
+ SetMixerGain(&vmixerControl.mixer[o][v], rval);
vmixerControl.mixer[o][v].Gain=val;
if (Gang) {
- SetMixerGain(&vmixerControl.mixer[o^1][v^1], val);
+ SetMixerGain(&vmixerControl.mixer[o^1][v^1], rval);
vmixerControl.mixer[o^1][v^1].Gain=val;
}
@@ -1281,8 +1279,8 @@
void Vmixer_volume_clicked(GtkWidget *widget, gpointer ch) {
#ifdef REVERSE
- vmixerControl.vchannel=(int)(long)ch;
- UI_DEBUG(("Vmixer_volume_clicked vch=%d\n",vmixerControl.vchannel));
+ vmixerControl.input=(int)(long)ch;
+ UI_DEBUG(("Vmixer_volume_clicked vch=%d\n",vmixerControl.input));
#else
vmixerControl.output=(int)(long)ch;
UI_DEBUG(("Vmixer_volume_clicked out=%d\n",vmixerControl.output));
@@ -1306,7 +1304,7 @@
snd_ctl_elem_id_alloca(&id);
snd_ctl_elem_value_alloca(&control);
snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
- for (c=vmixerControl.vchannels-1; c>=0; c--) {
+ for (c=vmixerControl.inputs-1; c>=0; c--) {
val=INVERT(vmixerControl.mixer[vmixerControl.output][c].Gain);
gtk_adjustment_set_value(GTK_ADJUSTMENT(vmixerControl.adj[c]), (gfloat)val);
}
@@ -1319,16 +1317,16 @@
snd_ctl_elem_id_t *id;
snd_ctl_elem_value_t *control;
- if (vmixerControl.vchannel==(int)(long)ch)
+ if (vmixerControl.input==(int)(long)ch)
return;
- vmixerControl.vchannel=(int)(long)ch;
+ vmixerControl.input=(int)(long)ch;
- UI_DEBUG(("Vmixer_selector_clicked vch=%d\n",vmixerControl.vchannel));
+ UI_DEBUG(("Vmixer_selector_clicked vch=%d\n",vmixerControl.input));
snd_ctl_elem_id_alloca(&id);
snd_ctl_elem_value_alloca(&control);
snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
for (c=vmixerControl.outputs-1; c>=0; c--) {
- val=INVERT(vmixerControl.mixer[c][vmixerControl.vchannel].Gain);
+ val=INVERT(vmixerControl.mixer[c][vmixerControl.input].Gain);
gtk_adjustment_set_value(GTK_ADJUSTMENT(vmixerControl.adj[c]), (gfloat)val);
}
}
@@ -1722,7 +1720,7 @@
vmixerId=vmixerControl.id=numid;
CTLID_DEBUG(("First Vmixer id=%d\n", vmixerId));
vmixerControl.outputs=snd_ctl_elem_info_get_dimension(info, 0);
- vmixerControl.vchannels=snd_ctl_elem_info_get_dimension(info, 1);
+ vmixerControl.inputs=snd_ctl_elem_info_get_dimension(info, 1);
}
} else if (!strcmp("PCM Playback Volume", snd_ctl_elem_id_get_name(id))) {
pcmoutId=pcmoutControl.id=numid;
@@ -1808,7 +1806,7 @@
#ifndef REAL
vmixerId=1000;
-vmixerControl.vchannels=12;
+vmixerControl.inputs=12;
vmixerControl.outputs=mixerControl.outputs=nLOut=10;
metersStreams=3;
metersNumber=16;
@@ -1828,8 +1826,8 @@
printf("** Warning - Vmixer cards without LineOut volume control are not supported !\n");
if (vmixerId) {
- if (vmixerControl.vchannels!=nPOut || vmixerControl.outputs!=nLOut) {
- printf("** Error - vmixer/channels mismatch: vmp=%d npo=%d vmo=%d nlo=%d !!\n", vmixerControl.vchannels, nPOut, vmixerControl.outputs, nLOut);
+ if (vmixerControl.inputs!=nPOut || vmixerControl.outputs!=nLOut) {
+ printf("** Error - vmixer/channels mismatch: vmp=%d npo=%d vmo=%d nlo=%d !!\n", vmixerControl.inputs, nPOut, vmixerControl.outputs, nLOut);
return(1);
}
}
@@ -1850,7 +1848,7 @@
if (vmixerId)
for (o=0, numid=vmixerId; o<vmixerControl.outputs; o++) {
- for (i=0; i<vmixerControl.vchannels; i++) {
+ for (i=0; i<vmixerControl.inputs; i++) {
vmixerControl.mixer[o][i].id=numid++;
}
}
@@ -1931,10 +1929,10 @@
Mixerw_geom.st=NOPOS;
Vmixerw_geom.st=NOPOS;
VUwindow=GMwindow=0;
- GMixerSection.Inputs=fdIn+2; // The correct value is set by Digital_mode_activate()
- GMixerSection.Outputs=fdOut+2;
+ GMixerSection.Inputs=nIn; // The correct value is set by Digital_mode_activate()
+ GMixerSection.Outputs=nLOut;
GMixerSection.VmixerFirst=nIn;
- GMixerSection.VmixerLast=nIn+vmixerControl.vchannels-1;
+ GMixerSection.VmixerLast=nIn+vmixerControl.inputs-1;
GMixerSection.LineOut=GMixerSection.VmixerLast+1;
// Read current mixer setting.
@@ -2523,7 +2521,7 @@
gtk_widget_show(hbox);
gtk_container_add(GTK_CONTAINER(frame), hbox);
- for (i=0; i<vmixerControl.vchannels; i++) {
+ for (i=0; i<vmixerControl.inputs; i++) {
vbox=gtk_vbox_new(FALSE, 0);
gtk_widget_show(vbox);
gtk_container_add(GTK_CONTAINER(hbox), vbox);
@@ -2582,7 +2580,7 @@
gtk_container_add(GTK_CONTAINER(frame), vbsel);
bgroup=0;
- for (i=0; i<vmixerControl.vchannels; i++) {
+ for (i=0; i<vmixerControl.inputs; i++) {
sprintf(str, "V%d", i);
if (i)
bgroup=gtk_radio_button_group(GTK_RADIO_BUTTON(vmixerControl.vchsel[i-1]));
@@ -2626,7 +2624,7 @@
gtk_box_pack_start(GTK_BOX(vbox), vmixerControl.label[i], FALSE, FALSE, 0);
}
gtk_widget_set_usize(GTK_WIDGET(vmixerControl.volume[0]), 0, 170); // Set minimum y size
- vmixerControl.vchannel=-1;
+ vmixerControl.input=-1;
Vmixer_vchannel_selector_clicked(0, 0);
#endif
}
@@ -2693,13 +2691,15 @@
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
// Misc controls button
- button=gtk_toggle_button_new_with_label("Misc");
- gtk_widget_show(button);
- gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1);
- gtk_signal_connect(GTK_OBJECT(button), "toggled", ToggleWindow, (gpointer)Miscwindow);
- Miscw_geom.toggler=button;
- if (Miscw_geom.st==1)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+ if (p4InId || p4OutId || phantomId || (dmodeId && ndmodes>1) || (clocksrcId && nclocksrc>1) || (spdifmodeId && nspdifmodes>1)) {
+ button=gtk_toggle_button_new_with_label("Misc");
+ gtk_widget_show(button);
+ gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 1);
+ gtk_signal_connect(GTK_OBJECT(button), "toggled", ToggleWindow, (gpointer)Miscwindow);
+ Miscw_geom.toggler=button;
+ if (Miscw_geom.st==1)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+ }
if (mixerId) {
// Graphical mixer button
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-tools-1.0.19/Makefile new/alsa-tools-1.0.20/Makefile
--- old/alsa-tools-1.0.19/Makefile 2009-01-19 12:26:33.000000000 +0100
+++ new/alsa-tools-1.0.20/Makefile 2009-05-06 09:19:06.000000000 +0200
@@ -1,4 +1,4 @@
-VERSION = 1.0.19
+VERSION = 1.0.20
TOP = .
SUBDIRS = ac3dec as10k1 envy24control hdsploader hdspconf hdspmixer \
mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa-plugins for openSUSE:Factory
checked in at Wed May 6 18:32:34 CEST 2009.
--------
--- alsa-plugins/alsa-plugins.changes 2009-02-17 17:34:07.000000000 +0100
+++ /mounts/work_src_done/STABLE/alsa-plugins/alsa-plugins.changes 2009-05-06 18:15:07.000000000 +0200
@@ -1,0 +2,7 @@
+Wed May 6 18:09:13 CEST 2009 - tiwai(a)suse.de
+
+- updated to version 1.0.20:
+ * including previous patches
+ * arcam-av plugin updates
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
alsa-plugins-1.0.19.tar.bz2
alsa-plugins-git-fixes.diff
New:
----
alsa-plugins-1.0.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-plugins.spec ++++++
--- /var/tmp/diff_new_pack.cr2237/_old 2009-05-06 18:31:53.000000000 +0200
+++ /var/tmp/diff_new_pack.cr2237/_new 2009-05-06 18:31:53.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa-plugins (Version 1.0.19)
+# spec file for package alsa-plugins (Version 1.0.20)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -34,18 +34,18 @@
%if %build_speex
BuildRequires: speex-devel
%endif
-%define package_version 1.0.19
+%define package_version 1.0.20
Url: http://www.alsa-project.org/
Summary: Extra Plug-Ins for the ALSA Library
-Version: 1.0.19
-Release: 2
+Version: 1.0.20
+Release: 1
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later
Group: System/Libraries
AutoReqProv: on
Source: ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-%{package_version}.tar.…
Source1: asound-pulse.conf
Source2: alsa-pulse.conf
-Patch: alsa-plugins-git-fixes.diff
+# Patch: alsa-plugins-git-fixes.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -147,7 +147,7 @@
%prep
%setup -q -n %{name}-%{package_version}
-%patch -p1
+# %patch -p1
%build
autoreconf -fi
@@ -224,6 +224,10 @@
%endif
%changelog
+* Wed May 06 2009 tiwai(a)suse.de
+- updated to version 1.0.20:
+ * including previous patches
+ * arcam-av plugin updates
* Tue Feb 17 2009 tiwai(a)suse.de
- add the support of non-zero numid in external ctl plugins
(bnc#462032)
++++++ alsa-plugins-1.0.19.tar.bz2 -> alsa-plugins-1.0.20.tar.bz2 ++++++
++++ 4193 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package bluez for openSUSE:Factory
checked in at Wed May 6 18:32:25 CEST 2009.
--------
--- bluez/bluez.changes 2009-04-23 19:13:11.000000000 +0200
+++ /mounts/work_src_done/STABLE/bluez/bluez.changes 2009-05-04 21:11:57.000000000 +0200
@@ -1,0 +2,15 @@
+Mon May 4 20:57:33 CEST 2009 - seife(a)suse.de
+
+- update to bluez-4.38:
+ - Add support for builtin plugins.
+ - Add framework for adapter operations.
+ - Add constants for Enhanced Retransmission modes.
+ - Fix HCI socket leak in device_remove_bonding.
+ - Fix various format string issues.
+ - Fix crashes with various free functions.
+ - Fix issues with Headset and A2DP drivers to load again.
+ - Fix sending AVRCP button released passthrough messages
+ - Fix bug which prevent input devices to work after restart.
+ - Fix issue with interpretation of UUID-128 as channel.
+
+-------------------------------------------------------------------
bluez-gstreamer.changes: same change
calling whatdependson for head-i586
Old:
----
bluez-4.37.tar.bz2
New:
----
bluez-4.38.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bluez-gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.xm1697/_old 2009-05-06 18:31:49.000000000 +0200
+++ /var/tmp/diff_new_pack.xm1697/_new 2009-05-06 18:31:49.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package bluez-gstreamer (Version 4.37)
+# spec file for package bluez-gstreamer (Version 4.38)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -24,7 +24,7 @@
BuildRequires: alsa-devel libsndfile-devel
BuildRequires: gstreamer-0_10-devel gstreamer-0_10-plugins-base-devel
Url: http://www.bluez.org
-Version: 4.37
+Version: 4.38
Release: 1
Summary: Bluetooth Sound Support
Group: Productivity/Multimedia/Sound/Utilities
@@ -109,6 +109,18 @@
%{_libdir}/gstreamer-*/*.so
%changelog
+* Mon May 04 2009 seife(a)suse.de
+- update to bluez-4.38:
+ - Add support for builtin plugins.
+ - Add framework for adapter operations.
+ - Add constants for Enhanced Retransmission modes.
+ - Fix HCI socket leak in device_remove_bonding.
+ - Fix various format string issues.
+ - Fix crashes with various free functions.
+ - Fix issues with Headset and A2DP drivers to load again.
+ - Fix sending AVRCP button released passthrough messages
+ - Fix bug which prevent input devices to work after restart.
+ - Fix issue with interpretation of UUID-128 as channel.
* Thu Apr 23 2009 seife(a)suse.de
- update to bluez-4.37:
- Add version value for Bluetooth 3.0 devices.
++++++ bluez.spec ++++++
--- /var/tmp/diff_new_pack.xm1697/_old 2009-05-06 18:31:49.000000000 +0200
+++ /var/tmp/diff_new_pack.xm1697/_new 2009-05-06 18:31:49.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package bluez (Version 4.37)
+# spec file for package bluez (Version 4.38)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -23,7 +23,7 @@
BuildRequires: glib2-devel libnl-devel libusb-devel
BuildRequires: alsa-devel libsndfile-devel
Url: http://www.bluez.org
-Version: 4.37
+Version: 4.38
Release: 1
Summary: Bluetooth Stack for Linux
Group: Hardware/Mobile
@@ -271,11 +271,9 @@
%dir %{_libdir}/bluetooth/plugins
%{_libdir}/bluetooth/plugins/audio.so
%{_libdir}/bluetooth/plugins/input.so
-%{_libdir}/bluetooth/plugins/hal.so
%{_libdir}/bluetooth/plugins/netlink.so
%{_libdir}/bluetooth/plugins/network.so
%{_libdir}/bluetooth/plugins/serial.so
-%{_libdir}/bluetooth/plugins/service.so
%doc %{_mandir}/man8/hciattach.8.gz
%doc %{_mandir}/man8/hciconfig.8.gz
#%doc %{_mandir}/man5/hcid.conf.5.gz
@@ -356,6 +354,18 @@
%doc %{_mandir}/man1/dund.1.gz
%changelog
+* Mon May 04 2009 seife(a)suse.de
+- update to bluez-4.38:
+ - Add support for builtin plugins.
+ - Add framework for adapter operations.
+ - Add constants for Enhanced Retransmission modes.
+ - Fix HCI socket leak in device_remove_bonding.
+ - Fix various format string issues.
+ - Fix crashes with various free functions.
+ - Fix issues with Headset and A2DP drivers to load again.
+ - Fix sending AVRCP button released passthrough messages
+ - Fix bug which prevent input devices to work after restart.
+ - Fix issue with interpretation of UUID-128 as channel.
* Thu Apr 23 2009 seife(a)suse.de
- update to bluez-4.37:
- Add version value for Bluetooth 3.0 devices.
++++++ bluez-4.37.tar.bz2 -> bluez-4.38.tar.bz2 ++++++
++++ 2583 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa-firmware for openSUSE:Factory
checked in at Wed May 6 18:31:41 CEST 2009.
--------
--- alsa-firmware/alsa-firmware.changes 2009-03-05 15:34:47.000000000 +0100
+++ /mounts/work_src_done/STABLE/alsa-firmware/alsa-firmware.changes 2009-05-06 18:12:57.000000000 +0200
@@ -1,0 +2,12 @@
+Wed May 6 18:11:28 CEST 2009 - tiwai(a)suse.de
+
+- updated to version 1.0.20:
+ * just a version number bump
+
+-------------------------------------------------------------------
+Tue May 5 12:40:03 CEST 2009 - tiwai(a)suse.de
+
+- exclude some firmware files already contained in kernel-firmware
+ package
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
alsa-firmware-1.0.19.tar.bz2
New:
----
alsa-firmware-1.0.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-firmware.spec ++++++
--- /var/tmp/diff_new_pack.K32620/_old 2009-05-06 18:31:19.000000000 +0200
+++ /var/tmp/diff_new_pack.K32620/_new 2009-05-06 18:31:19.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa-firmware (Version 1.0.19)
+# spec file for package alsa-firmware (Version 1.0.20)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -19,11 +19,11 @@
Name: alsa-firmware
-%define package_version 1.0.19
+%define package_version 1.0.20
Url: http://www.alsa-project.org/
Summary: Firmware Data Files for ALSA
-Version: 1.0.19
-Release: 3
+Version: 1.0.20
+Release: 1
License: GPL v2 or later
Group: Hardware/Other
AutoReqProv: on
@@ -52,7 +52,12 @@
%install
make DESTDIR="$RPM_BUILD_ROOT" install
# remove unnecessary loader firmwares
-for d in vxloader mixartloader pcxhrloader; do
+to_remove="vxloader mixartloader pcxhrloader"
+%if %suse_version >= 1120
+# some files are included in the new "kernel-firmware" package
+to_remove="$to_remove ess korg sb16 yamaha"
+%endif
+for d in $to_remove; do
rm -rf $RPM_BUILD_ROOT%{_datadir}/alsa/firmware/$d
done
# change identical files to symlinks for hdsploader
@@ -100,6 +105,12 @@
/etc/udev
%changelog
+* Wed May 06 2009 tiwai(a)suse.de
+- updated to version 1.0.20:
+ * just a version number bump
+* Tue May 05 2009 tiwai(a)suse.de
+- exclude some firmware files already contained in kernel-firmware
+ package
* Thu Mar 05 2009 ro(a)suse.de
- fix build
* Thu Jan 22 2009 tiwai(a)suse.de
++++++ alsa-firmware-1.0.19.tar.bz2 -> alsa-firmware-1.0.20.tar.bz2 ++++++
++++ 2117 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package atk for openSUSE:Factory
checked in at Wed May 6 18:31:35 CEST 2009.
--------
--- GNOME/atk/atk.changes 2009-03-16 18:35:07.000000000 +0100
+++ /mounts/work_src_done/STABLE/atk/atk.changes 2009-04-30 02:16:27.000000000 +0200
@@ -1,0 +2,5 @@
+Thu Apr 30 02:16:02 CEST 2009 - vuntz(a)novell.com
+
+- Pass --disable-static to configure and remove .la files.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ atk.spec ++++++
--- /var/tmp/diff_new_pack.c31966/_old 2009-05-06 18:31:04.000000000 +0200
+++ /var/tmp/diff_new_pack.c31966/_new 2009-05-06 18:31:04.000000000 +0200
@@ -22,7 +22,7 @@
BuildRequires: fdupes gcc-c++ glib2-devel translation-update-upstream
Summary: An Accessibility ToolKit
Version: 1.26.0
-Release: 1
+Release: 2
Requires: %{name}-lang = %{version}
# bug437293
%ifarch ppc64
@@ -115,11 +115,12 @@
translation-update-upstream
%build
-%configure
+%configure --disable-static
make %{?jobs:-j%jobs}
%install
%makeinstall
+%{__rm} %{buildroot}/%{_libdir}/*.la
%find_lang atk10
%fdupes $RPM_BUILD_ROOT
@@ -148,7 +149,6 @@
%defattr(-, root, root)
%{_includedir}/atk-1.0
%{_libdir}/lib*.so
-%{_libdir}/lib*.*a
%{_libdir}/pkgconfig/*.pc
%files doc
@@ -158,6 +158,8 @@
%{_datadir}/gtk-doc/html/atk
%changelog
+* Thu Apr 30 2009 vuntz(a)novell.com
+- Pass --disable-static to configure and remove .la files.
* Mon Mar 16 2009 vuntz(a)novell.com
- Update to version 1.26.0:
+ Improve the documentation.
@@ -181,7 +183,7 @@
- Update to version 1.24.0:
+ Bug fixed: bgo#551474
+ Updated translations.
-* Thu Jul 31 2008 maw(a)suse.de
+* Fri Aug 01 2008 maw(a)suse.de
- Update to version 1.23.5:
+ Bugs fixed: bgo#535704 and bgo#526752.
* Tue Jun 17 2008 aj(a)suse.de
@@ -289,7 +291,7 @@
- Updated to version 1.6.0 (GNOME 2.6).
* Sat Jan 10 2004 adrian(a)suse.de
- add %%defattr and %%run_ldconfig
-* Tue Oct 14 2003 ro(a)suse.de
+* Wed Oct 15 2003 ro(a)suse.de
- added c++ to neededforbuild
* Fri Oct 10 2003 sbrabec(a)suse.cz
- Updated to version 1.4.1.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa for openSUSE:Factory
checked in at Wed May 6 18:31:06 CEST 2009.
--------
--- alsa/alsa.changes 2009-04-23 15:02:28.000000000 +0200
+++ /mounts/work_src_done/STABLE/alsa/alsa.changes 2009-05-06 18:05:53.000000000 +0200
@@ -1,0 +2,11 @@
+Wed May 6 18:03:45 CEST 2009 - tiwai(a)suse.de
+
+- updated alsa-lib to version 1.0.20:
+ * including previous fixes
+
+-------------------------------------------------------------------
+Tue May 5 14:15:57 CEST 2009 - tiwai(a)suse.de
+
+- send SIGTERM then SIGKILL at terminating processes (bnc#486131)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
alsa-lib-1.0.19.tar.bz2
alsa-lib-git-fixes.diff
New:
----
alsa-lib-1.0.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.B30807/_old 2009-05-06 18:30:50.000000000 +0200
+++ /var/tmp/diff_new_pack.B30807/_new 2009-05-06 18:30:50.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa (Version 1.0.19)
+# spec file for package alsa (Version 1.0.20)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,7 +20,7 @@
Name: alsa
BuildRequires: doxygen
-%define package_version 1.0.19
+%define package_version 1.0.20
License: GPL v2 or later
Group: System/Libraries
Requires: alsa-utils
@@ -33,8 +33,8 @@
%endif
#
Summary: Advanced Linux Sound Architecture
-Version: 1.0.19
-Release: 3
+Version: 1.0.20
+Release: 1
Source: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-%{package_version}.tar.bz2
Source8: 40-alsa.rules
Source11: alsasound
@@ -50,7 +50,7 @@
Source32: all_notes_off.mid
Source33: alsa-info.sh
Source34: alsa-init.sh
-Patch: alsa-lib-git-fixes.diff
+# Patch: alsa-lib-git-fixes.diff
Url: http://www.alsa-project.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -122,7 +122,14 @@
%prep
%setup -q -n alsa-lib-%{package_version}
-%patch -p1
+# %patch -p1
+# hack to fix build on older distros
+%if %suse_version < 1100
+%ifarch %ix86
+test -f $RPM_SOURCE_DIR/baselibs.conf && \
+sed -i -e'/recommends.*alsa-oss/d' $RPM_SOURCE_DIR/baselibs.conf
+%endif
+%endif
%build
# build alsa-lib
@@ -244,6 +251,11 @@
%{_datadir}/alsa
%changelog
+* Wed May 06 2009 tiwai(a)suse.de
+- updated alsa-lib to version 1.0.20:
+ * including previous fixes
+* Tue May 05 2009 tiwai(a)suse.de
+- send SIGTERM then SIGKILL at terminating processes (bnc#486131)
* Thu Apr 23 2009 tiwai(a)suse.de
- update alsa-lib as of 2009.04.23:
* pcm: more better documentation for snd_pcm_poll_descriptors
++++++ alsa-lib-1.0.19.tar.bz2 -> alsa-lib-1.0.20.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/configure new/alsa-lib-1.0.20/configure
--- old/alsa-lib-1.0.19/configure 2009-01-19 12:22:49.000000000 +0100
+++ new/alsa-lib-1.0.20/configure 2009-05-06 09:15:53.000000000 +0200
@@ -2449,7 +2449,7 @@
# Define the identity of the package.
PACKAGE=alsa-lib
- VERSION=1.0.19
+ VERSION=1.0.20
cat >>confdefs.h <<_ACEOF
@@ -21594,6 +21594,7 @@
build_alisp="yes"
fi
+test "$softfloat" = "yes" && build_alisp="no"
# Check whether --enable-old-symbols was given.
if test "${enable_old_symbols+set}" = set; then
enableval=$enable_old_symbols; keep_old_symbols="$enableval"
@@ -21811,6 +21812,7 @@
if test "$softfloat" = "yes"; then
build_pcm_lfloat="no"
+ build_pcm_ladspa="no"
fi
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/configure.in new/alsa-lib-1.0.20/configure.in
--- old/alsa-lib-1.0.19/configure.in 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/configure.in 2009-05-06 09:07:23.000000000 +0200
@@ -12,7 +12,7 @@
dnl remove API = c+1:0:0
dnl *************************************************
AC_CANONICAL_HOST
-AM_INIT_AUTOMAKE(alsa-lib, 1.0.19)
+AM_INIT_AUTOMAKE(alsa-lib, 1.0.20)
eval LIBTOOL_VERSION_INFO="2:0:0"
dnl *************************************************
AM_CONDITIONAL(INSTALL_M4, test -n "${ACLOCAL}")
@@ -367,6 +367,7 @@
AC_ARG_ENABLE(alisp,
AS_HELP_STRING([--disable-alisp], [disable the alisp component]),
[build_alisp="$enableval"], [build_alisp="yes"])
+test "$softfloat" = "yes" && build_alisp="no"
AC_ARG_ENABLE(old-symbols,
AS_HELP_STRING([--disable-old-symbols], [disable old obsoleted symbols]),
[keep_old_symbols="$enableval"], [keep_old_symbols="yes"])
@@ -474,6 +475,7 @@
if test "$softfloat" = "yes"; then
build_pcm_lfloat="no"
+ build_pcm_ladspa="no"
fi
AM_CONDITIONAL(BUILD_PCM_PLUGIN, test x$build_pcm_plugin = xyes)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/include/sound/asound.h new/alsa-lib-1.0.20/include/sound/asound.h
--- old/alsa-lib-1.0.19/include/sound/asound.h 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/include/sound/asound.h 2009-05-06 09:07:23.000000000 +0200
@@ -402,7 +402,7 @@
struct sndrv_pcm_channel_info {
unsigned int channel;
- off_t offset; /* mmap offset */
+ long offset; /* mmap offset */
unsigned int first; /* offset to first sample in bits */
unsigned int step; /* samples distance in bits */
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/include/version.h new/alsa-lib-1.0.20/include/version.h
--- old/alsa-lib-1.0.19/include/version.h 2009-01-19 12:23:02.000000000 +0100
+++ new/alsa-lib-1.0.20/include/version.h 2009-05-06 09:16:04.000000000 +0200
@@ -4,12 +4,12 @@
#define SND_LIB_MAJOR 1 /**< major number of library version */
#define SND_LIB_MINOR 0 /**< minor number of library version */
-#define SND_LIB_SUBMINOR 19 /**< subminor number of library version */
+#define SND_LIB_SUBMINOR 20 /**< subminor number of library version */
#define SND_LIB_EXTRAVER 1000000 /**< extra version number, used mainly for betas */
/** library version */
#define SND_LIB_VERSION ((SND_LIB_MAJOR<<16)|\
(SND_LIB_MINOR<<8)|\
SND_LIB_SUBMINOR)
/** library version (string) */
-#define SND_LIB_VERSION_STR "1.0.19"
+#define SND_LIB_VERSION_STR "1.0.20"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/libtool new/alsa-lib-1.0.20/libtool
--- old/alsa-lib-1.0.19/libtool 2009-01-19 12:22:58.000000000 +0100
+++ new/alsa-lib-1.0.20/libtool 2009-05-06 09:16:00.000000000 +0200
@@ -1,7 +1,7 @@
#! /bin/sh
# libtoolT - Provide generalized library-building support services.
-# Generated automatically by (GNU alsa-lib 1.0.19)
+# Generated automatically by (GNU alsa-lib 1.0.20)
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/modules/mixer/simple/Makefile.am new/alsa-lib-1.0.20/modules/mixer/simple/Makefile.am
--- old/alsa-lib-1.0.19/modules/mixer/simple/Makefile.am 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/modules/mixer/simple/Makefile.am 2009-05-06 09:07:23.000000000 +0200
@@ -21,11 +21,11 @@
smixer_ac97_la_SOURCES = ac97.c sbasedl.c
smixer_ac97_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_ac97_la_LIBADD = ../../../src/libasound.la
+smixer_ac97_la_LIBADD = ../../../src/libasound.la -ldl
smixer_hda_la_SOURCES = hda.c sbasedl.c
smixer_hda_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_hda_la_LIBADD = ../../../src/libasound.la
+smixer_hda_la_LIBADD = ../../../src/libasound.la -ldl
if BUILD_PYTHON
smixer_python_la_SOURCES = python.c
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/modules/mixer/simple/Makefile.in new/alsa-lib-1.0.20/modules/mixer/simple/Makefile.in
--- old/alsa-lib-1.0.19/modules/mixer/simple/Makefile.in 2009-01-19 12:22:47.000000000 +0100
+++ new/alsa-lib-1.0.20/modules/mixer/simple/Makefile.in 2009-05-06 09:15:51.000000000 +0200
@@ -308,10 +308,10 @@
smixer_sbase_la_LIBADD = ../../../src/libasound.la
smixer_ac97_la_SOURCES = ac97.c sbasedl.c
smixer_ac97_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_ac97_la_LIBADD = ../../../src/libasound.la
+smixer_ac97_la_LIBADD = ../../../src/libasound.la -ldl
smixer_hda_la_SOURCES = hda.c sbasedl.c
smixer_hda_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
-smixer_hda_la_LIBADD = ../../../src/libasound.la
+smixer_hda_la_LIBADD = ../../../src/libasound.la -ldl
@BUILD_PYTHON_TRUE@smixer_python_la_SOURCES = python.c
@BUILD_PYTHON_TRUE@smixer_python_la_LDFLAGS = -module -avoid-version $(LDFLAGS_NOUNDEFINED)
@BUILD_PYTHON_TRUE@smixer_python_la_CFLAGS = $(PYTHON_INCLUDES)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/conf/cards/CMI8788.conf new/alsa-lib-1.0.20/src/conf/cards/CMI8788.conf
--- old/alsa-lib-1.0.19/src/conf/cards/CMI8788.conf 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/conf/cards/CMI8788.conf 2009-05-06 09:07:23.000000000 +0200
@@ -13,7 +13,7 @@
card $CARD
}
-# default with dmix+softvol & dsnoop
+# default with dmix & dsnoop
CMI8788.pcm.default {
@args [ CARD ]
@args.CARD {
@@ -23,15 +23,8 @@
playback.pcm {
type plug
slave.pcm {
- type softvol
- slave.pcm {
- @func concat
- strings [ "dmix:" $CARD ",FORMAT=S32_LE" ]
- }
- control {
- name "PCM Playback Volume"
- card $CARD
- }
+ @func concat
+ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ]
}
}
capture.pcm {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/conf/cards/GUS.conf new/alsa-lib-1.0.20/src/conf/cards/GUS.conf
--- old/alsa-lib-1.0.19/src/conf/cards/GUS.conf 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/conf/cards/GUS.conf 2009-05-06 09:07:23.000000000 +0200
@@ -17,50 +17,3 @@
card $CARD
}
}
-
-#
-# It's a temporary solution.
-#
-
-!pcm.hw {
- @args [ CARD DEV SUBDEV ]
- @args.CARD {
- type string
- default {
- @func getenv
- vars [
- ALSA_PCM_CARD
- ALSA_CARD
- ]
- default {
- @func refer
- name defaults.pcm.card
- }
- }
- }
- @args.DEV {
- type integer
- default {
- @func igetenv
- vars [
- ALSA_PCM_DEVICE
- ]
- default {
- @func refer
- name defaults.pcm.device
- }
- }
- }
- @args.SUBDEV {
- type integer
- default {
- @func refer
- name defaults.pcm.subdevice
- }
- }
- type hw
- card $CARD
- device $DEV
- subdevice $SUBDEV
- mmap_emulation on
-}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/conf/cards/HDA-Intel.conf new/alsa-lib-1.0.20/src/conf/cards/HDA-Intel.conf
--- old/alsa-lib-1.0.19/src/conf/cards/HDA-Intel.conf 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/conf/cards/HDA-Intel.conf 2009-05-06 09:07:23.000000000 +0200
@@ -57,7 +57,10 @@
max_dB 30.0
resolution 121
}
+ # to avoid possible phase inversions with digital mics
+ route_policy copy
}
+ hint.device 0
}
<confdir:pcm/surround40.conf>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/control/control_ext.c new/alsa-lib-1.0.20/src/control/control_ext.c
--- old/alsa-lib-1.0.19/src/control/control_ext.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/control/control_ext.c 2009-05-06 09:07:23.000000000 +0200
@@ -107,6 +107,7 @@
ret = ext->callback->elem_list(ext, offset, ids);
if (ret < 0)
return ret;
+ ids->numid = offset + 1; /* fake number */
list->used++;
offset++;
ids++;
@@ -114,13 +115,24 @@
return 0;
}
+static snd_ctl_ext_key_t get_elem(snd_ctl_ext_t *ext, snd_ctl_elem_id_t *id)
+{
+ int numid = id->numid;
+ if (numid > 0) {
+ ext->callback->elem_list(ext, numid - 1, id);
+ id->numid = numid;
+ } else
+ id->numid = 0;
+ return ext->callback->find_elem(ext, id);
+}
+
static int snd_ctl_ext_elem_info(snd_ctl_t *handle, snd_ctl_elem_info_t *info)
{
snd_ctl_ext_t *ext = handle->private_data;
snd_ctl_ext_key_t key;
int type, ret;
- key = ext->callback->find_elem(ext, &info->id);
+ key = get_elem(ext, &info->id);
if (key == SND_CTL_EXT_KEY_NOT_FOUND)
return -ENOENT;
ret = ext->callback->get_attribute(ext, key, &type, &info->access, &info->count);
@@ -200,7 +212,7 @@
int type, ret;
unsigned int access, count;
- key = ext->callback->find_elem(ext, &control->id);
+ key = get_elem(ext, &control->id);
if (key == SND_CTL_EXT_KEY_NOT_FOUND)
return -ENOENT;
ret = ext->callback->get_attribute(ext, key, &type, &access, &count);
@@ -254,7 +266,7 @@
int type, ret;
unsigned int access, count;
- key = ext->callback->find_elem(ext, &control->id);
+ key = get_elem(ext, &control->id);
if (key == SND_CTL_EXT_KEY_NOT_FOUND)
return -ENOENT;
ret = ext->callback->get_attribute(ext, key, &type, &access, &count);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/mixer/simple_none.c new/alsa-lib-1.0.20/src/mixer/simple_none.c
--- old/alsa-lib-1.0.19/src/mixer/simple_none.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/mixer/simple_none.c 2009-05-06 09:07:23.000000000 +0200
@@ -1450,7 +1450,14 @@
}
if (ctype != SND_CTL_ELEM_TYPE_BOOLEAN)
return 0;
+#ifdef HAVE_SOFT_FLOAT
+ /* up to 256 channels */
+ for (n = 1; n < 256; n++)
+ if (n * n == values)
+ break;
+#else
n = sqrt((double)values);
+#endif
if (n * n != values)
return 0;
values = n;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/pcm/pcm.c new/alsa-lib-1.0.20/src/pcm/pcm.c
--- old/alsa-lib-1.0.19/src/pcm/pcm.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/pcm/pcm.c 2009-05-06 09:07:23.000000000 +0200
@@ -104,9 +104,13 @@
The poll or select functions (see 'man 2 poll' or 'man 2 select' for further
details) allows to receive requests/events from the device while
an application is waiting on events from other sources (like keyboard, screen,
-network etc.), too. \ref snd_pcm_poll_descriptors can be used to get a file
-descriptor to poll or select on. The implemented
-transfer routines can be found in the \ref alsa_transfers section.
+network etc.), too. \ref snd_pcm_poll_descriptors can be used to get file
+descriptors to poll or select on (note that wait direction might be diferent
+than expected - do not use only returned file descriptors, but handle
+events member as well - see \ref snd_pcm_poll_descriptors function
+description for more details and \ref snd_pcm_poll_descriptors_revents for
+events demangling). The implemented transfer routines can be found in
+the \ref alsa_transfers section.
\subsection pcm_transfer_async Asynchronous notification
@@ -1405,7 +1409,9 @@
* does the right "demangling".
*
* You can use output from this function as arguments for the select()
- * syscall, too.
+ * syscall, too. Do not forget to translate POLLIN and POLLOUT events to
+ * corresponding FD_SET arrays and demangle events using
+ * \link ::snd_pcm_poll_descriptors_revents() \endlink .
*/
int snd_pcm_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space)
{
@@ -1430,7 +1436,7 @@
* \param pcm PCM handle
* \param pfds array of poll descriptors
* \param nfds count of poll descriptors
- * \param revents returned events
+ * \param revents pointer to the returned (single) event
* \return zero if success, otherwise a negative error code
*
* This function does "demangling" of the revents mask returned from
@@ -1440,6 +1446,9 @@
* syscall returned that some events are waiting, this function might
* return empty set of events. In this case, application should
* do next event waiting using poll() or select().
+ *
+ * Note: Even if multiple poll descriptors are used (i.e. pfds > 1),
+ * this function returns only a single event.
*/
int snd_pcm_poll_descriptors_revents(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)
{
@@ -2338,8 +2347,8 @@
int snd_pcm_wait_nocheck(snd_pcm_t *pcm, int timeout)
{
struct pollfd *pfd;
- unsigned short *revents;
- int i, npfds, pollio, err, err_poll;
+ unsigned short revents = 0;
+ int npfds, err, err_poll;
npfds = snd_pcm_poll_descriptors_count(pcm);
if (npfds <= 0 || npfds >= 16) {
@@ -2347,7 +2356,6 @@
return -EIO;
}
pfd = alloca(sizeof(*pfd) * npfds);
- revents = alloca(sizeof(*revents) * npfds);
err = snd_pcm_poll_descriptors(pcm, pfd, npfds);
if (err < 0)
return err;
@@ -2356,7 +2364,6 @@
return -EIO;
}
do {
- pollio = 0;
err_poll = poll(pfd, npfds, timeout);
if (err_poll < 0) {
if (errno == EINTR)
@@ -2365,28 +2372,23 @@
}
if (! err_poll)
break;
- err = snd_pcm_poll_descriptors_revents(pcm, pfd, npfds, revents);
+ err = snd_pcm_poll_descriptors_revents(pcm, pfd, npfds, &revents);
if (err < 0)
return err;
- for (i = 0; i < npfds; i++) {
- if (revents[i] & (POLLERR | POLLNVAL)) {
- /* check more precisely */
- switch (snd_pcm_state(pcm)) {
- case SND_PCM_STATE_XRUN:
- return -EPIPE;
- case SND_PCM_STATE_SUSPENDED:
- return -ESTRPIPE;
- case SND_PCM_STATE_DISCONNECTED:
- return -ENODEV;
- default:
- return -EIO;
- }
+ if (revents & (POLLERR | POLLNVAL)) {
+ /* check more precisely */
+ switch (snd_pcm_state(pcm)) {
+ case SND_PCM_STATE_XRUN:
+ return -EPIPE;
+ case SND_PCM_STATE_SUSPENDED:
+ return -ESTRPIPE;
+ case SND_PCM_STATE_DISCONNECTED:
+ return -ENODEV;
+ default:
+ return -EIO;
}
- if ((revents[i] & (POLLIN | POLLOUT)) == 0)
- continue;
- pollio++;
}
- } while (! pollio);
+ } while (!(revents & (POLLIN | POLLOUT)));
#if 0 /* very useful code to test poll related problems */
{
snd_pcm_sframes_t avail_update;
@@ -7261,7 +7263,7 @@
* \param channels required PCM channels
* \param rate required sample rate in Hz
* \param soft_resample 0 = disallow alsa-lib resample stream, 1 = allow resampling
- * \param latency required overall latency in us (0 = optimum latency for players)
+ * \param latency required overall latency in us
* \return 0 on success otherwise a negative error code
*/
int snd_pcm_set_params(snd_pcm_t *pcm,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/pcm/pcm_file.c new/alsa-lib-1.0.20/src/pcm/pcm_file.c
--- old/alsa-lib-1.0.19/src/pcm/pcm_file.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/pcm/pcm_file.c 2009-05-06 09:07:23.000000000 +0200
@@ -29,6 +29,7 @@
#include <endian.h>
#include <byteswap.h>
#include <ctype.h>
+#include <string.h>
#include "pcm_local.h"
#include "pcm_plugin.h"
@@ -39,6 +40,16 @@
#ifndef DOC_HIDDEN
+/* keys to be replaced by real values in the filename */
+#define LEADING_KEY '%' /* i.e. %r, %c, %b ... */
+#define RATE_KEY 'r'
+#define CHANNELS_KEY 'c'
+#define BWIDTH_KEY 'b'
+#define FORMAT_KEY 'f'
+
+/* maximum length of a value */
+#define VALUE_MAXLEN 64
+
typedef enum _snd_pcm_file_format {
SND_PCM_FILE_FORMAT_RAW,
SND_PCM_FILE_FORMAT_WAV
@@ -57,6 +68,9 @@
typedef struct {
snd_pcm_generic_t gen;
char *fname;
+ char *final_fname;
+ int trunc;
+ int perm;
int fd;
char *ifname;
int ifd;
@@ -84,6 +98,175 @@
#define TO_LE16(x) bswap_16(x)
#endif
+static int snd_pcm_file_append_value(char **string_p, char **index_ch_p,
+ int *len_p, const char *value)
+{
+ char *string, *index_ch;
+ int index, len, value_len;
+ /* input pointer values */
+ len = *(len_p);
+ string = *(string_p);
+ index_ch = *(index_ch_p);
+
+ value_len = strlen(value);
+ /* reallocation to accommodate the value */
+ index = index_ch - string;
+ len += value_len;
+ string = realloc(string, len + 1);
+ if (!string)
+ return -ENOMEM;
+ index_ch = string + index;
+ /* concatenating the new value */
+ strcpy(index_ch, value);
+ index_ch += value_len;
+ /* return values */
+ *(len_p) = len;
+ *(string_p) = string;
+ *(index_ch_p) = index_ch;
+ return 0;
+}
+
+static int snd_pcm_file_replace_fname(snd_pcm_file_t *file, char **new_fname_p)
+{
+ char value[VALUE_MAXLEN];
+ char *fname = file->fname;
+ char *new_fname = NULL;
+ char *old_last_ch, *old_index_ch, *new_index_ch;
+ int old_len, new_len, err;
+
+ snd_pcm_t *pcm = file->gen.slave;
+
+ /* we want to keep fname, const */
+ old_len = new_len = strlen(fname);
+ old_last_ch = fname + old_len - 1;
+ new_fname = malloc(new_len + 1);
+ if (!new_fname)
+ return -ENOMEM;
+
+ old_index_ch = fname; /* first character of the old name */
+ new_index_ch = new_fname; /* first char of the new name */
+
+ while (old_index_ch <= old_last_ch) {
+ if (*(old_index_ch) == LEADING_KEY &&
+ old_index_ch != old_last_ch) {
+ /* is %, not last char, skipping and checking
+ next char */
+ switch (*(++old_index_ch)) {
+ case RATE_KEY:
+ snprintf(value, sizeof(value), "%d",
+ pcm->rate);
+ err = snd_pcm_file_append_value(&new_fname,
+ &new_index_ch, &new_len, value);
+ if (err < 0)
+ return err;
+ break;
+
+ case CHANNELS_KEY:
+ snprintf(value, sizeof(value), "%d",
+ pcm->channels);
+ err = snd_pcm_file_append_value(&new_fname,
+ &new_index_ch, &new_len, value);
+ if (err < 0)
+ return err;
+ break;
+
+ case BWIDTH_KEY:
+ snprintf(value, sizeof(value), "%d",
+ pcm->frame_bits/pcm->channels);
+ err = snd_pcm_file_append_value(&new_fname,
+ &new_index_ch, &new_len, value);
+ if (err < 0)
+ return err;
+ break;
+
+ case FORMAT_KEY:
+ err = snd_pcm_file_append_value(&new_fname,
+ &new_index_ch, &new_len,
+ snd_pcm_format_name(pcm->format));
+ if (err < 0)
+ return err;
+ break;
+
+ default:
+ /* non-key char, just copying */
+ *(new_index_ch++) = *(old_index_ch);
+ }
+ /* next old char */
+ old_index_ch++;
+ } else {
+ /* plain copying, shifting both strings to next chars */
+ *(new_index_ch++) = *(old_index_ch++);
+ }
+ }
+ /* closing the new string */
+ *(new_index_ch) = '\0';
+ *(new_fname_p) = new_fname;
+ return 0;
+
+}
+
+static int snd_pcm_file_open_output_file(snd_pcm_file_t *file)
+{
+ int err, fd;
+
+ /* fname can contain keys, generating final_fname */
+ err = snd_pcm_file_replace_fname(file, &(file->final_fname));
+ if (err < 0)
+ return err;
+ /*printf("DEBUG - original fname: %s, final fname: %s\n",
+ file->fname, file->final_fname);*/
+
+ if (file->final_fname[0] == '|') {
+ /* pipe mode */
+ FILE *pipe;
+ /* clearing */
+ pipe = popen(file->final_fname + 1, "w");
+ if (!pipe) {
+ SYSERR("running %s for writing failed",
+ file->final_fname);
+ return -errno;
+ }
+ fd = fileno(pipe);
+ } else {
+ if (file->trunc)
+ fd = open(file->final_fname, O_WRONLY|O_CREAT|O_TRUNC,
+ file->perm);
+ else {
+ fd = open(file->final_fname, O_WRONLY|O_CREAT|O_EXCL,
+ file->perm);
+ if (fd < 0) {
+ char *tmpfname = NULL;
+ int idx, len;
+ len = strlen(file->final_fname) + 6;
+ tmpfname = malloc(len);
+ if (!tmpfname)
+ return -ENOMEM;
+ for (idx = 1; idx < 10000; idx++) {
+ snprintf(tmpfname, len,
+ "%s.%04d", file->final_fname,
+ idx);
+ fd = open(tmpfname,
+ O_WRONLY|O_CREAT|O_EXCL,
+ file->perm);
+ if (fd >= 0) {
+ free(file->final_fname);
+ file->final_fname = tmpfname;
+ break;
+ }
+ }
+ if (fd < 0) {
+ SYSERR("open %s for writing failed",
+ file->final_fname);
+ free(tmpfname);
+ return -errno;
+ }
+ }
+ }
+ }
+ file->fd = fd;
+ return 0;
+}
+
static void setup_wav_header(snd_pcm_t *pcm, struct wav_fmt *fmt)
{
fmt->fmt = TO_LE16(0x01);
@@ -152,6 +335,8 @@
}
#endif /* DOC_HIDDEN */
+
+
static void snd_pcm_file_write_bytes(snd_pcm_t *pcm, size_t bytes)
{
snd_pcm_file_t *file = pcm->private_data;
@@ -442,6 +627,13 @@
a->first = slave->sample_bits * channel;
a->step = slave->frame_bits;
}
+ if (file->fd < 0) {
+ err = snd_pcm_file_open_output_file(file);
+ if (err < 0) {
+ SYSERR("failed opening output file %s", file->fname);
+ return err;
+ }
+ }
return 0;
}
@@ -452,6 +644,10 @@
snd_output_printf(out, "File PCM (file=%s)\n", file->fname);
else
snd_output_printf(out, "File PCM (fd=%d)\n", file->fd);
+ if (file->final_fname)
+ snd_output_printf(out, "Final file PCM (file=%s)\n",
+ file->final_fname);
+
if (pcm->setup) {
snd_output_printf(out, "Its setup is:\n");
snd_pcm_dump_setup(pcm, out);
@@ -533,7 +729,6 @@
snd_pcm_file_t *file;
snd_pcm_file_format_t format;
struct timespec timespec;
- char *tmpname = NULL;
int err;
assert(pcmp);
@@ -546,58 +741,27 @@
SNDERR("file format %s is unknown", fmt);
return -EINVAL;
}
- if (fname) {
- if (trunc)
- fd = open(fname, O_WRONLY|O_CREAT|O_TRUNC, perm);
- else {
- fd = open(fname, O_WRONLY|O_CREAT|O_EXCL, perm);
- if (fd < 0) {
- int idx, len;
- len = strlen(fname) + 6;
- tmpname = malloc(len);
- if (!tmpname)
- return -ENOMEM;
- for (idx = 1; idx < 10000; idx++) {
- snprintf(tmpname, len,
- "%s.%04d", fname, idx);
- fd = open(tmpname, O_WRONLY|O_CREAT|O_EXCL, perm);
- if (fd >= 0) {
- fname = tmpname;
- break;
- }
- }
- }
- }
- if (fd < 0) {
- SYSERR("open %s for writing failed", fname);
- free(tmpname);
- return -errno;
- }
- }
file = calloc(1, sizeof(snd_pcm_file_t));
if (!file) {
- if (fname)
- close(fd);
- free(tmpname);
return -ENOMEM;
}
+ /* opening output fname is delayed until writing,
+ when PCM params are known */
+ if (fname)
+ file->fname = strdup(fname);
+ file->trunc = trunc;
+ file->perm = perm;
+
if (ifname) {
ifd = open(ifname, O_RDONLY); /* TODO: mind blocking mode */
if (ifd < 0) {
SYSERR("open %s for reading failed", ifname);
- if (fname)
- close(fd);
free(file);
- free(tmpname);
return -errno;
}
- }
-
- if (fname)
- file->fname = strdup(fname);
- if (ifname)
file->ifname = strdup(ifname);
+ }
file->fd = fd;
file->ifd = ifd;
file->format = format;
@@ -608,7 +772,6 @@
if (err < 0) {
free(file->fname);
free(file);
- free(tmpname);
return err;
}
pcm->ops = &snd_pcm_file_ops;
@@ -625,8 +788,6 @@
snd_pcm_link_hw_ptr(pcm, slave);
snd_pcm_link_appl_ptr(pcm, slave);
*pcmp = pcm;
-
- free(tmpname);
return 0;
}
@@ -634,8 +795,9 @@
\section pcm_plugins_file Plugin: File
-This plugin stores contents of a PCM stream to file, and optionally
-uses an existing file as an input data source (i.e., "virtual mic")
+This plugin stores contents of a PCM stream to file or pipes the stream
+to a command, and optionally uses an existing file as an input data source
+(i.e., "virtual mic")
\code
pcm.name {
@@ -647,7 +809,17 @@
# or
pcm { } # Slave PCM definition
}
- file STR # Output filename
+ file STR # Output filename (or shell command the stream
+ # will be piped to if STR starts with the pipe
+ # char).
+ # STR can contain format keys, replaced by
+ # real values corresponding to the stream:
+ # %r rate (replaced with: 48000)
+ # %c channels (replaced with: 2)
+ # %b bits per sample (replaced with: 16)
+ # %f sample format string
+ # (replaced with: S16_LE)
+ # %% replaced with %
or
file INT # Output file descriptor number
infile STR # Input filename - only raw format
@@ -773,7 +945,7 @@
err = snd_pcm_slave_conf(root, slave, &sconf, 0);
if (err < 0)
return err;
- if (!fname && fd < 0 && !ifname) {
+ if ((!fname || strlen(fname) == 0) && fd < 0 && !ifname) {
snd_config_delete(sconf);
SNDERR("file is not defined");
return -EINVAL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/pcm/pcm_hw.c new/alsa-lib-1.0.20/src/pcm/pcm_hw.c
--- old/alsa-lib-1.0.19/src/pcm/pcm_hw.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/pcm/pcm_hw.c 2009-05-06 09:07:23.000000000 +0200
@@ -326,6 +326,8 @@
SYSMSG("SNDRV_PCM_IOCTL_HW_PARAMS failed");
return err;
}
+ params->info &= ~0xf0000000;
+ params->info |= (pcm->monotonic ? SND_PCM_INFO_MONOTONIC : 0);
err = sync_ptr(hw, 0);
if (err < 0)
return err;
@@ -1037,6 +1039,8 @@
if (pcm->setup) {
snd_output_printf(out, "Its setup is:\n");
snd_pcm_dump_setup(pcm, out);
+ snd_output_printf(out, " appl_ptr : %li\n", hw->mmap_control->appl_ptr);
+ snd_output_printf(out, " hw_ptr : %li\n", hw->mmap_status->hw_ptr);
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/pcm/pcm_plug.c new/alsa-lib-1.0.20/src/pcm/pcm_plug.c
--- old/alsa-lib-1.0.19/src/pcm/pcm_plug.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/pcm/pcm_plug.c 2009-05-06 09:07:23.000000000 +0200
@@ -605,7 +605,16 @@
plug->gen.slave != plug->req_slave);
if (err < 0)
return err;
- slv->access = clt->access;
+ switch (slv->access) {
+ case SND_PCM_ACCESS_RW_INTERLEAVED:
+ slv->access = SND_PCM_ACCESS_MMAP_INTERLEAVED;
+ break;
+ case SND_PCM_ACCESS_RW_NONINTERLEAVED:
+ slv->access = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
+ break;
+ default:
+ break;
+ }
return 1;
}
#endif
@@ -743,19 +752,29 @@
return 0; /* OK, we have mmap support */
#ifdef BUILD_PCM_PLUGIN_MMAP_EMUL
/* no mmap support - we need mmap emulation */
+
+ if (!snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_INTERLEAVED) &&
+ !snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_NONINTERLEAVED))
+ return -EINVAL; /* even no RW access? no way! */
+
cmask = (const snd_pcm_access_mask_t *)
snd_pcm_hw_param_get_mask(cparams,
SND_PCM_HW_PARAM_ACCESS);
snd_mask_none(&mask);
if (snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_RW_INTERLEAVED) ||
- snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_INTERLEAVED))
- snd_pcm_access_mask_set(&mask,
- SND_PCM_ACCESS_RW_INTERLEAVED);
+ snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_INTERLEAVED)) {
+ if (snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_INTERLEAVED))
+ snd_pcm_access_mask_set(&mask,
+ SND_PCM_ACCESS_RW_INTERLEAVED);
+ }
if (snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_RW_NONINTERLEAVED) ||
- snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED))
- snd_pcm_access_mask_set(&mask,
- SND_PCM_ACCESS_RW_NONINTERLEAVED);
- *smask = mask;
+ snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED)) {
+ if (snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_NONINTERLEAVED))
+ snd_pcm_access_mask_set(&mask,
+ SND_PCM_ACCESS_RW_NONINTERLEAVED);
+ }
+ if (!snd_mask_empty(&mask))
+ *smask = mask; /* prefer the straight conversion */
return 0;
#else
return -EINVAL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/seq/seq.c new/alsa-lib-1.0.20/src/seq/seq.c
--- old/alsa-lib-1.0.19/src/seq/seq.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/seq/seq.c 2009-05-06 09:07:23.000000000 +0200
@@ -30,7 +30,7 @@
/*! \page seq Sequencer interface
-\section seq_general Genral
+\section seq_general General
The ALSA sequencer interface is designed to deliver the MIDI-like
events between clients/ports.
@@ -76,10 +76,10 @@
clients. A port is corresponding to the MIDI port in the case of MIDI device,
but in general it is nothing but the access point between other clients.
Each port may have capability flags, which specify the read/write
-accessbility and subscription permissions of the port.
+accessibility and subscription permissions of the port.
For creation of a port, call #snd_seq_create_port()
-with the appropirate port attribute specified in #snd_seq_port_info_t
-reocrd.
+with the appropriate port attribute specified in #snd_seq_port_info_t
+record.
For creating a port for the normal use, there is a helper function
#snd_seq_create_simple_port(). An example with this function is like below.
@@ -102,7 +102,7 @@
input (read) from other clients and output (write) to others, respectively.
Since memory pool of each client is independent from others,
it avoids such a situation that a client eats the whole events pool
-and interfere other clients' responce.
+and interfere other clients' response.
The all scheduled output events or input events from dispatcher are stored
on these pools until delivered to other clients or extracted to user space.
@@ -171,7 +171,7 @@
This application can accept arbitrary MIDI input
and send to arbitrary port, just like a Unix pipe application using
stdin and stdout files.
-We can even connect several filter applictions which work individually
+We can even connect several filter applications which work individually
in order to process the MIDI events.
Subscription can be used for this purpose.
The connection between ports can be done also by the "third" client.
@@ -199,7 +199,7 @@
#snd_seq_event_t type.
Application can send and receive these event records to/from other
clients via sequencer.
-An event has several stroage types according to its usage.
+An event has several storage types according to its usage.
For example, a SYSEX message is stored on the variable length event,
and a large synth sample data is delivered using a user-space data pointer.
@@ -227,7 +227,7 @@
(1 byte).
The flags field consists of bit flags which
describe several conditions of the event (1 byte).
-It includes the time-stamp mode, data storage type, and scheduling prority.
+It includes the time-stamp mode, data storage type, and scheduling priority.
The tag field is an arbitrary tag.
This tag can used for removing a distinct event from the event queue
via #snd_seq_remove_events().
@@ -240,7 +240,7 @@
An event can be delivered either on scheduled or direct dispatch mode.
On the scheduling mode, an event is once stored on the priority queue
and delivered later (or even immediately) to the destination,
-whereas on the direct disatch mode, an event is passed to the destination
+whereas on the direct dispatch mode, an event is passed to the destination
without any queue.
For a scheduled delivery, a queue to process the event must exist.
@@ -284,7 +284,7 @@
time values.
Note that the time format used for real time events is very similar to
-timeval struct used for unix system time.
+timeval struct used for Unix system time.
The absurd resolution of the timestamps allows us to perform very accurate
conversions between songposition and real time. Round-off errors can be
neglected.
@@ -299,7 +299,7 @@
An client that relies on these relative timestamps is the MIDI input port.
As each sequencer queue has it's own clock the only way to deliver events at
the right time is by using the relative timestamp format. When the event
-arrives at the queue it is normalised to absolute format.
+arrives at the queue it is normalized to absolute format.
The timestamp format is specified in the flag bitfield masked by
#SND_SEQ_TIME_STAMP_MASK.
@@ -320,7 +320,7 @@
both client and port of dest field.
If an existing address is set to the destination,
-the event is simplly delivered to it.
+the event is simply delivered to it.
When #SND_SEQ_ADDRESS_SUBSCRIBERS is set to the destination client id,
the event is delivered to all the clients connected to the source port.
@@ -346,7 +346,7 @@
Some events like SYSEX message, however, need larger data space
than the standard data.
-For such events, ALSA sequencer provides seveal different data storage types.
+For such events, ALSA sequencer provides several different data storage types.
The data type is specified in the flag bits masked by #SND_SEQ_EVENT_LENGTH_MASK.
The following data types are available:
@@ -359,7 +359,7 @@
\par Variable length data
SYSEX or a returned error use this type.
The actual data is stored on an extra allocated space.
-On sequecer kernel, the whole extra-data is duplicated, so that the event
+On sequencer kernel, the whole extra-data is duplicated, so that the event
can be scheduled on queue.
The data contains only the length and the
pointer of extra-data.
@@ -430,7 +430,7 @@
It must be set before the queue is started.
On the other hand, in the case of <i>realtime</i> queue, the
-time resolution is fixed to nanosecononds. There is, however,
+time resolution is fixed to nanoseconds. There is, however,
a parameter to change the speed of this queue, called <i>skew</i>.
You can make the queue faster or slower by setting the skew value
bigger or smaller. In the API, the skew is defined by two values,
@@ -488,7 +488,7 @@
In the above example, the tempo is changed immediately after
the buffer is flushed by #snd_seq_drain_output() call.
You can schedule the event in a certain queue so that the tempo
-change happes at the scheduled time, too.
+change happens at the scheduled time, too.
\subsection seq_ev_start Starting and stopping a queue
@@ -515,7 +515,7 @@
The most basic capability flags are
#SND_SEQ_PORT_CAP_READ and #SND_SEQ_PORT_CAP_WRITE.
The former means that the port allows to send events to other ports,
-whereas the latter capability menas
+whereas the latter capability means
that the port allows to receive events from other ports.
You may have noticed that meanings of \c READ and \c WRITE
are permissions of the port from the viewpoint of other ports.
@@ -536,7 +536,7 @@
if \c READ or \c WRITE> capability is not set.
Note that these flags are not necessary if the client subscribes itself
-to the spcified port.
+to the specified port.
For example, when a port makes READ subscription
to MIDI input port, this port must have #SND_SEQ_PORT_CAP_WRITE capability,
but no #SND_SEQ_PORT_CAP_SUBS_WRITE capability is required.
@@ -610,7 +610,7 @@
Assume MIDI input port = 64:0, application port = 128:0, and
queue for timestamp = 1 with real-time stamp.
-The application port must have capabilty #SND_SEQ_PORT_CAP_WRITE.
+The application port must have capability #SND_SEQ_PORT_CAP_WRITE.
\code
void capture_keyboard(snd_seq_t *seq)
{
@@ -633,7 +633,7 @@
\subsection seq_subs_ex_out Output to MIDI device
Assume MIDI output port = 65:1 and application port = 128:0.
-The application port must have capabilty #SND_SEQ_PORT_CAP_READ.
+The application port must have capability #SND_SEQ_PORT_CAP_READ.
\code
void subscribe_output(snd_seq_t *seq)
{
@@ -790,7 +790,7 @@
/**
* \brief get identifier of sequencer handle
* \param seq sequencer handle
- * \return ascii identifier of sequencer handle
+ * \return ASCII identifier of sequencer handle
*
* Returns the ASCII identifier of the given sequencer handle. It's the same
* identifier specified in snd_seq_open().
@@ -1610,7 +1610,7 @@
* \param event_type event type to be checked
* \return 1 if the event type is present, 0 otherwise
*
- * Test if the event type is in the filter bitamp of this client_info container.
+ * Test if the event type is in the filter bitmap of this client_info container.
*
* \sa snd_seq_get_client_info(),
* snd_seq_set_client_info(),
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/src/seq/seqmid.c new/alsa-lib-1.0.20/src/seq/seqmid.c
--- old/alsa-lib-1.0.19/src/seq/seqmid.c 2009-01-19 12:17:18.000000000 +0100
+++ new/alsa-lib-1.0.20/src/seq/seqmid.c 2009-05-06 09:07:23.000000000 +0200
@@ -317,7 +317,7 @@
* \param seq sequencer handle
* \return 0 on success or negative error code
*
- * So far, this works ideically like #snd_seq_drop_output().
+ * So far, this works identically like #snd_seq_drop_output().
*/
int snd_seq_reset_pool_output(snd_seq_t *seq)
{
@@ -329,7 +329,7 @@
* \param seq sequencer handle
* \return 0 on success or negative error code
*
- * So far, this works ideically like #snd_seq_drop_input().
+ * So far, this works identically like #snd_seq_drop_input().
*/
int snd_seq_reset_pool_input(snd_seq_t *seq)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/alsa-lib-1.0.19/version new/alsa-lib-1.0.20/version
--- old/alsa-lib-1.0.19/version 2009-01-19 12:22:58.000000000 +0100
+++ new/alsa-lib-1.0.20/version 2009-05-06 09:16:01.000000000 +0200
@@ -1 +1 @@
-1.0.19
+1.0.20
++++++ alsasound ++++++
--- /var/tmp/diff_new_pack.B30807/_old 2009-05-06 18:30:51.000000000 +0200
+++ /var/tmp/diff_new_pack.B30807/_new 2009-05-06 18:30:51.000000000 +0200
@@ -131,16 +131,23 @@
rc_status
}
-terminate() {
- #
- # Kill processes holding open sound devices
- #
- fuser -k /dev/admmidi* /dev/adsp* /dev/amidi* /dev/audio* /dev/dmfm* \
+do_kill() {
+ fuser $1 /dev/admmidi* /dev/adsp* /dev/amidi* /dev/audio* /dev/dmfm* \
/dev/dmmidi* /dev/dsp* /dev/dspW* /dev/midi* /dev/mixer* /dev/music \
/dev/patmgr* /dev/sequencer* /dev/sndstat >/dev/null 2>&1
if [ -d /dev/snd ]; then
- fuser -k /dev/snd/* >/dev/null 2>&1
+ fuser $1 /dev/snd/* >/dev/null 2>&1
fi
+}
+
+terminate() {
+ #
+ # Kill processes holding open sound devices
+ #
+ do_kill -TERM
+ sleep 1
+ do_kill -k
+
#
# remove all sequencer connections if any
#
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package akonadi-runtime for openSUSE:Factory
checked in at Wed May 6 18:30:51 CEST 2009.
--------
--- KDE/akonadi-runtime/akonadi-runtime.changes 2009-01-22 02:04:48.000000000 +0100
+++ /mounts/work_src_done/STABLE/akonadi-runtime/akonadi-runtime.changes 2009-04-30 23:26:20.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Apr 30 23:25:50 CEST 2009 - dmueller(a)suse.de
+
+- update to 1.1.2:
+ * fix dbus loop lockups
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
akonadi-1.1.1.tar.bz2
New:
----
akonadi-1.1.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ akonadi-runtime.spec ++++++
--- /var/tmp/diff_new_pack.z26751/_old 2009-05-06 18:29:13.000000000 +0200
+++ /var/tmp/diff_new_pack.z26751/_new 2009-05-06 18:29:13.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package akonadi-runtime (Version 1.1.1)
+# spec file for package akonadi-runtime (Version 1.1.2)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -23,7 +23,7 @@
%if %suse_version > 1020
BuildRequires: fdupes
%endif
-Version: 1.1.1
+Version: 1.1.2
Release: 1
License: LGPL v2.1 or later
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -147,6 +147,9 @@
%_libdir/libakonadiprotocolinternals.so.1*
%changelog
+* Thu Apr 30 2009 dmueller(a)suse.de
+- update to 1.1.2:
+ * fix dbus loop lockups
* Thu Jan 22 2009 dmueller(a)suse.de
- update to 1.1.1:
- Fix code that was not executed in a release build.
++++++ akonadi-1.1.1.tar.bz2 -> akonadi-1.1.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/akonadi-1.1.1/ChangeLog new/akonadi-1.1.2/ChangeLog
--- old/akonadi-1.1.1/ChangeLog 2009-01-21 19:29:04.000000000 +0100
+++ new/akonadi-1.1.2/ChangeLog 2009-04-30 21:33:28.000000000 +0200
@@ -1,17 +1,41 @@
+2009-03-31 15:17 +0000 [r947472] Volker Krause vkrause(a)kde.org
+
+ * branches/akonadi/1.1/server/control/agentinstance.cpp: Backport
+ SVN commit 947310 by amantia from trunk: Avoid DBUS lockups BUG:
+ 182198
+
+2009-02-25 10:55 +0000 [r931467] Volker Krause vkrause(a)kde.org
+
+ * branches/akonadi/1.1/server/src/akonadi.cpp: Backport SVN commit
+ 931461 by vkrause: Fix startup when the MySQL config files didn't
+ change.
+
+2009-02-24 18:33 +0000 [r931066] Rex Dieter rdieter(a)math.unl.edu
+
+ * branches/akonadi/1.1/server/src/akonadi.cpp: backport from trunk:
+ update user mysql.conf only if global/local one's are newer, and
+ in doing so, clear mysql ib_logfile's
+
+2009-01-21 18:16 +0000 [r914764] Tom Albers toma(a)kde.org
+
+ * branches/akonadi/1.1/ChangeLog, branches/akonadi/1.1/NEWS,
+ branches/akonadi/1.1/CMakeLists.txt,
+ branches/akonadi/1.1/makechangelog: Prep for 1.1.1
+
2009-01-16 09:46 +0000 [r911844] Volker Krause vkrause(a)kde.org
* branches/akonadi/1.1/server/shared/akdebug.cpp: Backport SVN
commit 908591 by vkrause from trunk: Don't put essential code
into assert(), doesn't seem to be executed in release builds.
-2009-01-09 21:34 +0000 [r908531] Tom Albers tomalbers(a)kde.nl
+2009-01-09 21:34 +0000 [r908531] Tom Albers toma(a)kde.org
* branches/akonadi/1.1/CMakeLists.txt,
branches/akonadi/1.1/cmake/modules/FindBoost.cmake (removed):
Backport: SVN commit 906112 by dfaure: Require cmake-2.6.0 and
its much nicer FindBoost.cmake
-2009-01-04 22:14 +0000 [r905716] Tom Albers tomalbers(a)kde.nl
+2009-01-04 22:14 +0000 [r905716] Tom Albers toma(a)kde.org
* branches/akonadi/1.1/cmake/modules/FindBoost.cmake: Backport SVN
commit 905714 by sengels: add 1.37 release
@@ -22,11 +46,11 @@
SVN commit 905553 by vkrause from trunk: Don't try to restart an
agent that has been deleted.
-2009-01-03 16:17 +0000 [r905029] Tom Albers tomalbers(a)kde.nl
+2009-01-03 16:17 +0000 [r905029] Tom Albers toma(a)kde.org
* branches/akonadi/1.1 (added): Branch off Akonadi 1.1
-2009-01-03 16:10 +0000 [r905016] Tom Albers tomalbers(a)kde.nl
+2009-01-03 16:10 +0000 [r905016] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/ChangeLog,
trunk/kdesupport/akonadi/NEWS,
@@ -141,7 +165,7 @@
* trunk/kdesupport/akonadi/server/src/storage/dbconfig.cpp: add
FreeBSD mysqld default path
-2008-12-16 19:06 +0000 [r897748] Tom Albers tomalbers(a)kde.nl
+2008-12-16 19:06 +0000 [r897748] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/ChangeLog,
trunk/kdesupport/akonadi/NEWS,
@@ -234,7 +258,7 @@
trunk/kdesupport/akonadi/server/src/storage/dbconfig.cpp: Try
harder to find the mysqld executable during runtime.
-2008-11-19 19:31 +0000 [r886652] Tom Albers tomalbers(a)kde.nl
+2008-11-19 19:31 +0000 [r886652] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/ChangeLog,
trunk/kdesupport/akonadi/NEWS: Prep for release.
@@ -270,7 +294,7 @@
also removes the restriction that agents were not allowed to
access the agent manager themselves to avoid deadlocks.
-2008-11-04 21:16 +0000 [r880161] Tom Albers tomalbers(a)kde.nl
+2008-11-04 21:16 +0000 [r880161] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/server/src/handler/akappend.cpp,
trunk/kdesupport/akonadi/server/src/handler/append.cpp: Fix the
@@ -281,7 +305,7 @@
* trunk/kdesupport/akonadi/server/src/storage/mysql-global.conf:
Increase the limit to something more realistical.
-2008-11-01 10:09 +0000 [r878448] Tom Albers tomalbers(a)kde.nl
+2008-11-01 10:09 +0000 [r878448] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/server/src/handler/akappend.cpp,
trunk/kdesupport/akonadi/server/src/handler/append.cpp: Don't
@@ -291,7 +315,7 @@
messages are marked as recent, although they also contain the
\Seen flag.
-2008-11-01 09:26 +0000 [r878427] Tom Albers tomalbers(a)kde.nl
+2008-11-01 09:26 +0000 [r878427] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/server/src/handler/append.h,
trunk/kdesupport/akonadi/server/src/handler/store.cpp,
@@ -310,7 +334,7 @@
* trunk/kdesupport/akonadi/server/src/storage/notificationcollector.h:
build fix CCMAIL vkrause(a)kde.org
-2008-10-04 23:05 +0000 [r867919] Tom Albers tomalbers(a)kde.nl
+2008-10-04 23:05 +0000 [r867919] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/server/src/storage/mysql-global.conf: 1M
is to restrictive, messages can and will be bigger.
@@ -590,7 +614,7 @@
trunk/kdesupport/akonadi/server/src/handler/fetch.cpp: Return the
modification time when an item is appended/stored/fetcehd.
-2008-07-22 20:52 +0000 [r836720] Tom Albers tomalbers(a)kde.nl
+2008-07-22 20:52 +0000 [r836720] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/CMakeLists.txt: Move version from 0.82.0
to 1.0.80. This is now akonadi unstable branch. Akonadi stable is
@@ -641,7 +665,7 @@
CMAKE_INSTALL_PREFIX, since this is already part of PATH_SUFFIXES
Alex
-2008-06-18 16:00 +0000 [r821830] Tom Albers tomalbers(a)kde.nl
+2008-06-18 16:00 +0000 [r821830] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/ChangeLog,
trunk/kdesupport/akonadi/NEWS,
@@ -719,12 +743,12 @@
trunk/kdesupport/akonadi/CMakeLists.txt: fix install_name RPATH
stuff on OSX
-2008-05-19 10:26 +0000 [r809711] Jaroslaw Staniek js(a)iidea.pl
+2008-05-19 10:26 +0000 [r809711] Jarosław Staniek staniek(a)kde.org
* trunk/kdesupport/akonadi/CMakeLists.txt: make libs install to bin
on Windows, so far this fixes akonadiprivate.dll destination
-2008-05-18 22:03 +0000 [r809435] Tom Albers tomalbers(a)kde.nl
+2008-05-18 22:03 +0000 [r809435] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/ChangeLog (added),
trunk/kdesupport/akonadi/NEWS (added),
@@ -880,7 +904,7 @@
Extend requestItemDelivery() by mimeType to provide a sane API on
ResourceBase side.
-2008-04-29 23:04 +0000 [r802602] Tom Albers tomalbers(a)kde.nl
+2008-04-29 23:04 +0000 [r802602] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/cmake/modules/COPYING-CMAKE-SCRIPTS
(added): Referenced by some of the files in here.
@@ -1138,7 +1162,7 @@
not available on msvc, do not use it - rather check with cmake
for availability - msvc compiles now
-2008-04-23 21:20 +0000 [r800304] Tom Albers tomalbers(a)kde.nl
+2008-04-23 21:20 +0000 [r800304] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/lgpl-license (added),
trunk/kdesupport/akonadi/server/CMakeLists.txt,
@@ -1152,7 +1176,7 @@
* trunk/kdesupport/akonadi/cmake/automoc/CMakeLists.txt: Don't
install our borrowed automoc.
-2008-04-23 20:39 +0000 [r800285] Tom Albers tomalbers(a)kde.nl
+2008-04-23 20:39 +0000 [r800285] Tom Albers toma(a)kde.org
* trunk/kdesupport/akonadi/server/CMakeLists.txt,
trunk/kdesupport/akonadi/libs/CMakeLists.txt: We can no longer
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/akonadi-1.1.1/CMakeLists.txt new/akonadi-1.1.2/CMakeLists.txt
--- old/akonadi-1.1.1/CMakeLists.txt 2009-01-21 19:29:04.000000000 +0100
+++ new/akonadi-1.1.2/CMakeLists.txt 2009-04-30 21:33:28.000000000 +0200
@@ -52,7 +52,7 @@
set(AKONADI_LIB_MAJOR_VERSION "1")
set(AKONADI_LIB_MINOR_VERSION "1")
-set(AKONADI_LIB_PATCH_VERSION "1")
+set(AKONADI_LIB_PATCH_VERSION "2")
set(AKONADI_LIB_VERSION_STRING "${AKONADI_LIB_MAJOR_VERSION}.${AKONADI_LIB_MINOR_VERSION}.${AKONADI_LIB_PATCH_VERSION}")
set( AKONADI_VERSION_STRING "${AKONADI_LIB_VERSION_STRING}" )
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/akonadi-1.1.1/NEWS new/akonadi-1.1.2/NEWS
--- old/akonadi-1.1.1/NEWS 2009-01-21 19:29:04.000000000 +0100
+++ new/akonadi-1.1.2/NEWS 2009-04-30 21:33:28.000000000 +0200
@@ -1,3 +1,8 @@
+1.1.2 30-Apr-2009
+---------------------------------------------
+- Avoid DBUS lockups, reported at: https://bugs.kde.org/182198
+- Update user mysql.conf only if global/local one's are newer
+
1.1.1 21-Jan-2009
---------------------------------------------
- Fix code that was not executed in a release build.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/akonadi-1.1.1/server/control/agentinstance.cpp new/akonadi-1.1.2/server/control/agentinstance.cpp
--- old/akonadi-1.1.1/server/control/agentinstance.cpp 2009-01-21 19:29:03.000000000 +0100
+++ new/akonadi-1.1.2/server/control/agentinstance.cpp 2009-04-30 21:33:22.000000000 +0200
@@ -218,10 +218,8 @@
void AgentInstance::errorHandler(const QDBusError & error)
{
- mManager->tracer()->error( QLatin1String( "AgentInstance::errorHandler" ),
- QString( "D-Bus communication error '%1': '%2'" )
- .arg( error.name(), error.message() ) );
-
+ //avoid using the server tracer, can result in D-BUS lockups
+ qDebug() << QString( "D-Bus communication error '%1': '%2'" ).arg( error.name(), error.message() ) ;
// TODO try again after some time, esp. on timeout errors
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/akonadi-1.1.1/server/src/akonadi.cpp new/akonadi-1.1.2/server/src/akonadi.cpp
--- old/akonadi-1.1.1/server/src/akonadi.cpp 2009-01-21 19:29:03.000000000 +0100
+++ new/akonadi-1.1.2/server/src/akonadi.cpp 2009-04-30 21:33:28.000000000 +0200
@@ -225,23 +225,30 @@
const QString actualConfig = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi" ) ) + QLatin1String("/mysql.conf");
if ( globalConfig.isEmpty() )
akFatal() << "Did not find MySQL server default configuration (mysql-global.conf)";
- QFile globalFile( globalConfig );
- QFile actualFile( actualConfig );
- if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) {
- actualFile.write( globalFile.readAll() );
- if ( !localConfig.isEmpty() ) {
- QFile localFile( localConfig );
- if ( localFile.open( QFile::ReadOnly ) ) {
- actualFile.write( localFile.readAll() );
- localFile.close();
+ bool confUpdate = false;
+ QFile actualFile ( actualConfig );
+ // update conf only if either global (or local) is newer than actual
+ if ( (QFileInfo( globalConfig ).lastModified() > QFileInfo( actualFile ).lastModified()) ||
+ (QFileInfo( localConfig ).lastModified() > QFileInfo( actualFile ).lastModified()) )
+ {
+ QFile globalFile( globalConfig );
+ QFile localFile ( localConfig );
+ if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) {
+ actualFile.write( globalFile.readAll() );
+ if ( !localConfig.isEmpty() ) {
+ if ( localFile.open( QFile::ReadOnly ) ) {
+ actualFile.write( localFile.readAll() );
+ localFile.close();
+ }
}
+ globalFile.close();
+ actualFile.close();
+ confUpdate = true;
+ } else {
+ akError() << "Unable to create MySQL server configuration file.";
+ akError() << "This means that either the default configuration file (mysql-global.conf) was not readable";
+ akFatal() << "or the target file (mysql.conf) could not be written.";
}
- actualFile.close();
- globalFile.close();
- } else {
- akError() << "Unable to create MySQL server configuration file.";
- akError() << "This means that either the default configuration file (mysql-global.conf) was not readable";
- akFatal() << "or the target file (mysql.conf) could not be written.";
}
// MySQL doesn't like world writeable config files (which makes sense), but
@@ -276,6 +283,12 @@
}
}
+ // clear mysql ib_logfile's in case innodb_log_file_size option changed in last confUpdate
+ if ( confUpdate ) {
+ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile0" )).remove();
+ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile1" )).remove();
+ }
+
// synthesize the mysqld command
QStringList arguments;
arguments << QString::fromLatin1( "--defaults-file=%1/mysql.conf" ).arg( akDir );
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0