openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
November 2012
- 1 participants
- 1324 discussions
Hello community,
here is the log from the commit of package poppler for openSUSE:Factory checked in at 2012-11-12 07:04:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/poppler (Old)
and /work/SRC/openSUSE:Factory/.poppler.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poppler", Maintainer is "BiLi(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/poppler/poppler-qt.changes 2012-10-16 15:24:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.poppler.new/poppler-qt.changes 2012-11-12 07:04:47.000000000 +0100
@@ -1,0 +2,16 @@
+Fri Nov 9 20:49:06 UTC 2012 - hrvoje.senjan(a)gmail.com
+
+- Update to version 0.21.1:
+ core:
+ * Annotation improvements
+ * Form improvements
+ * CairoImageOutputDev: Support parameterized Gouraud shading (Bug #56463)
+ * UTF validation fixes
+ * Do not call drawing routines if we don't need non text (Bug #54617)
+ * Fix Memory leak in CharCodeToUnicode (Bug #54702)
+ qt4:
+ * Make LinkRendition properties available (Bug #55378)
+ * Accessors for FormWidgetChoice::editChoice
+ * Implement overprint
+
+-------------------------------------------------------------------
poppler.changes: same change
Old:
----
poppler-0.21.0.tar.gz
New:
----
poppler-0.21.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ poppler-qt.spec ++++++
--- /var/tmp/diff_new_pack.EfZp4E/_old 2012-11-12 07:04:49.000000000 +0100
+++ /var/tmp/diff_new_pack.EfZp4E/_new 2012-11-12 07:04:49.000000000 +0100
@@ -20,11 +20,11 @@
Name: poppler-qt
%define _name poppler
-Version: 0.21.0
+Version: 0.21.1
Release: 0
# Actual version of poppler-data:
%define poppler_data_version 0.2.1
-%define poppler_soname 29
+%define poppler_soname 30
%define poppler_cpp_soname 0
%define poppler_glib_soname 8
%define poppler_qt4_soname 4
++++++ poppler.spec ++++++
--- /var/tmp/diff_new_pack.EfZp4E/_old 2012-11-12 07:04:49.000000000 +0100
+++ /var/tmp/diff_new_pack.EfZp4E/_new 2012-11-12 07:04:49.000000000 +0100
@@ -20,11 +20,11 @@
Name: poppler
%define _name poppler
-Version: 0.21.0
+Version: 0.21.1
Release: 0
# Actual version of poppler-data:
%define poppler_data_version 0.2.1
-%define poppler_soname 29
+%define poppler_soname 30
%define poppler_cpp_soname 0
%define poppler_glib_soname 8
%define poppler_qt4_soname 4
++++++ poppler-0.21.0.tar.gz -> poppler-0.21.1.tar.gz ++++++
++++ 5538 lines of diff (skipped)
--
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 opencc for openSUSE:Factory checked in at 2012-11-12 07:04:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opencc (Old)
and /work/SRC/openSUSE:Factory/.opencc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opencc", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/opencc/opencc.changes 2012-06-26 17:09:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.opencc.new/opencc.changes 2012-11-12 07:04:36.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Nov 5 01:09:40 UTC 2012 - i(a)marguerite.su
+
+- split a data package to be required by library.
+ fix a conversion crash bug in fcitx.
+
+-------------------------------------------------------------------
Old:
----
opencc-0.3.0git.1324715872.tar.bz2
New:
----
opencc-0.3.0.git20121105.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opencc.spec ++++++
--- /var/tmp/diff_new_pack.LUqCFD/_old 2012-11-12 07:04:37.000000000 +0100
+++ /var/tmp/diff_new_pack.LUqCFD/_new 2012-11-12 07:04:37.000000000 +0100
@@ -17,11 +17,11 @@
Name: opencc
-Version: 0.3.0git.1324715872
+Version: 0.3.0.git20121105
Release: 0
Summary: Open Chinese Convert
License: Apache-2.0
-Group: System/Libraries
+Group: System/I18n/Chinese
Url: http://code.google.com/p/opencc
Source: %{name}-%{version}.tar.bz2
BuildRequires: cmake
@@ -30,14 +30,33 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
-An opensource project for conversion between Traditional Chinese and Simplified Chinese, which supports phrase-level conversion and regional idioms among Mainland China, Taiwan and Hong kong.
+OpenCC is an opensource project for conversion between Traditional
+Chinese and Simplified Chinese, which supports phrase-level conversion
+and regional idioms among Mainland China, Taiwan and Hong kong.
%package -n libopencc1
Summary: Open Chinese Convert
Group: System/Libraries
+Requires: %{name}-data
%description -n libopencc1
-An opensource project for conversion between Traditional Chinese and Simplified Chinese, which supports phrase-level conversion and regional idioms among Mainland China, Taiwan and Hong kong.
+OpenCC is an opensource project for conversion between Traditional
+Chinese and Simplified Chinese, which supports phrase-level conversion
+and regional idioms among Mainland China, Taiwan and Hong kong.
+
+This package provides shared libraries of OpenCC.
+
+%package data
+Summary: Dictionaries for Open Chinese Convert
+Group: System/I18n/Chinese
+
+%description data
+OpenCC is an opensource project for conversion between Traditional
+Chinese and Simplified Chinese, which supports phrase-level conversion
+and regional idioms among Mainland China, Taiwan and Hong kong.
+
+This package provides dictionaries and patterns used by libraries/
+binaries of OpenCC.
%package devel
Summary: Open Chinese Convert
@@ -45,7 +64,11 @@
Requires: %{name} = %{version}
%description devel
-An opensource project for conversion between Traditional Chinese and Simplified Chinese, which supports phrase-level conversion and regional idioms among Mainland China, Taiwan and Hong kong.
+OpenCC is an opensource project for conversion between Traditional
+Chinese and Simplified Chinese, which supports phrase-level conversion
+and regional idioms among Mainland China, Taiwan and Hong kong.
+
+This package provides development headers for OpenCC.
%prep
%setup -q
@@ -84,6 +107,11 @@
%doc AUTHORS NEWS
%{_bindir}/%{name}
%{_bindir}/%{name}_dict
+%{_mandir}/man1/%{name}.1.gz
+%{_mandir}/man1/%{name}_dict.1.gz
+
+%files data
+%defattr(-,root,root)
%{_datadir}/%{name}/
%files -n libopencc1
@@ -96,7 +124,5 @@
%{_includedir}/%{name}/
%{_libdir}/libopencc.so
%{_libdir}/pkgconfig/opencc.pc
-%{_mandir}/man1/%{name}.1.gz
-%{_mandir}/man1/%{name}_dict.1.gz
%changelog
++++++ _service ++++++
--- /var/tmp/diff_new_pack.LUqCFD/_old 2012-11-12 07:04:37.000000000 +0100
+++ /var/tmp/diff_new_pack.LUqCFD/_new 2012-11-12 07:04:37.000000000 +0100
@@ -1,13 +1,13 @@
<services>
- <service name="tar_scm" mode="localonly">
+ <service name="tar_scm" mode="disabled">
<param name="versionprefix">0.3.0git</param>
<param name="url">git://github.com/BYVoid/OpenCC.git</param>
<param name="filename">opencc</param>
<param name="scm">git</param>
</service>
- <service name="recompress" mode="localonly">
+ <service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">bz2</param>
</service>
- <service name="set_version" mode="localonly"/>
+ <service name="set_version" mode="disabled"/>
</services>
++++++ opencc-0.3.0git.1324715872.tar.bz2 -> opencc-0.3.0.git20121105.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opencc-0.3.0git.1324715872/src/tools/opencc.c new/opencc-0.3.0.git20121105/src/tools/opencc.c
--- old/opencc-0.3.0git.1324715872/src/tools/opencc.c 2012-02-16 16:37:50.000000000 +0100
+++ new/opencc-0.3.0.git20121105/src/tools/opencc.c 2012-11-05 01:59:50.000000000 +0100
@@ -154,7 +154,7 @@
static int oc;
static char *input_file, *output_file, *config_file;
- while((oc = getopt_long(argc, argv, "vh:i:o:c:", longopts, NULL)) != -1)
+ while((oc = getopt_long(argc, argv, "vh?i:o:c:", longopts, NULL)) != -1)
{
switch (oc)
{
@@ -162,11 +162,9 @@
show_version();
return 0;
case 'h':
+ case '?':
show_usage();
return 0;
- case '?':
- printf(_("Please use %s --help.\n"), argv[0]);
- return 1;
case 'i':
input_file = mstrcpy(optarg);
break;
--
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 mercurial for openSUSE:Factory checked in at 2012-11-12 07:04:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mercurial (Old)
and /work/SRC/openSUSE:Factory/.mercurial.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mercurial", Maintainer is "tiwai(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mercurial/mercurial.changes 2012-10-08 07:15:20.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2012-11-12 07:04:28.000000000 +0100
@@ -1,0 +2,49 @@
+Sat Nov 10 21:14:48 UTC 2012 - wr(a)rosenauer.org
+
+- update to version 2.4
+ * Core features
+ amend: support for ChangesetEvolution if enabled
+ bookmarks: deactivate current bookmark if no name is given
+ bookmarks: teach the -r option to use revsets
+ bookmarks: disallow bookmarks named 'tip', '.', or 'null'
+ clone: substantial speedup to clone on repo with a lots of
+ heads (issue3378)
+ clone: activate bookmark specified with --updaterev
+ clone: update to @ bookmark if it exists
+ log: substantial speedup for untracked files (issue1340)
+ revsets: add branchpoint() function
+ resolve: commit the changes after each item resolve (issue3638)
+ subrepo, hghave: use "svn --version --quiet" to determine version number
+ subrepo: setting LC_MESSAGES only works if LC_ALL is empty or unset
+ templatefilters: add parameterized date method
+ templatefilters: add parameterized fill function
+ templatefilters: avoid traceback caused by bogus date input (issue3344)
+ templatekw: add p1rev, p1node, p2rev, p2node keywords
+ templatekw: add parent1, parent1node, parent2, parent2node keywords
+ templater: abort when a template filter raises an exception (issue2987)
+ templater: add if/ifeq conditionals
+ templater: add sub() function
+ templating: make new-style templating features work with command line lists
+ bookmarks: take ChangesetEvolution into account when updating (issue3561)
+ speedup various operation related to ChangesetEvolution
+ add detection of changeset bumped by ChangesetEvolution
+ * Extension features
+ color: add additional changeset.phase label to log.changeset and log.parent
+ color: enabled color support for export command (issue1507)
+ color: support for all grep fields
+ contrib: add a commit synthesizer for reproducing scaling problems
+ histedit: refuse to edit public changeset
+ histedit: replaces patching logic by merges
+ histedit: support for ChangesetEvolution if enabled
+ largefiles: always create the cache and standin directories when cloning
+ largefiles: distinguish "no remote repo" from "no files to upload" (issue3651)
+ largefiles: fix a traceback in lfconvert if a largefile is missing (issue3519)
+ mq: improve qqueue message with patches applied (issue3036)
+ mq: update bookmarks during qrefresh
+ notify: support revset selection for subscriptions
+ rebase: support for ChangesetEvolution if enabled
+ record: checks for valid username before starting recording process (issue3456)
+ record: fix display of non-ASCII names in chunk selection
+ * Bugfixes
+
+-------------------------------------------------------------------
@@ -4 +53 @@
-- update to version 2.3.1
+- update to version 2.3.2
Old:
----
mercurial-2.3.2.tar.gz
New:
----
mercurial-2.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.Wjih1Z/_old 2012-11-12 07:04:29.000000000 +0100
+++ /var/tmp/diff_new_pack.Wjih1Z/_new 2012-11-12 07:04:29.000000000 +0100
@@ -17,7 +17,7 @@
Name: mercurial
-Version: 2.3.2
+Version: 2.4
Release: 0
Summary: Scalable Distributed SCM
License: GPL-2.0+
++++++ mercurial-2.3.2.tar.gz -> mercurial-2.4.tar.gz ++++++
++++ 20895 lines of diff (skipped)
--
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 memcached for openSUSE:Factory checked in at 2012-11-12 07:04:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/memcached (Old)
and /work/SRC/openSUSE:Factory/.memcached.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "memcached", Maintainer is "MRueckert(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/memcached/memcached.changes 2012-08-15 11:20:02.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.memcached.new/memcached.changes 2012-11-12 07:04:18.000000000 +0100
@@ -1,0 +2,24 @@
+Wed Nov 7 20:47:22 UTC 2012 - chris(a)computersalat.de
+
+- update to version 1.4.15
+ * Add some mild thread documentation
+ * README.md was missing from dist tarball
+ * Issue 286 : --disable-coverage drops "-pthread" option
+ * Reduce odds of getting OOM errors in some odd cases
+- rebase use-endian_h, autofoo patch and 1.4.5.dif
+- fix build <= 1140
+ * export LIBEVENT_CFLAGS and LIBEVENT_LIBS so we dont need
+ pkgconfig check for libevent on <= 1140
+
+-------------------------------------------------------------------
+Wed Nov 7 19:58:59 UTC 2012 - mrueckert(a)suse.de
+
+- fix build on older distros
+ - memcached-autofoo.patch: removed no-dist-gzip dist-xz
+ - added new conditional to guard all the systemd stuff and
+ guarded the general bcond_without with an suse_version > 12.2
+ - export LIBEVENT_CFLAGS and LIBEVENT_LIBS so we dont need
+ pkgconfig check for libevent on sles11
+ - use makeinstall instead of make_install
+
+-------------------------------------------------------------------
Old:
----
memcached-1.4.14.tar.gz
New:
----
memcached-1.4.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ memcached.spec ++++++
--- /var/tmp/diff_new_pack.Eg19fT/_old 2012-11-12 07:04:20.000000000 +0100
+++ /var/tmp/diff_new_pack.Eg19fT/_new 2012-11-12 07:04:20.000000000 +0100
@@ -16,8 +16,12 @@
#
+%if 0%{?suse_version} > 1210
+%bcond_without systemd
+%endif
+
Name: memcached
-Version: 1.4.14
+Version: 1.4.15
Release: 0
%define pkg_name memcached
%define pkg_version %{version}
@@ -32,7 +36,9 @@
BuildRequires: automake
BuildRequires: cyrus-sasl-devel
BuildRequires: pkgconfig
+%if %{with systemd}
BuildRequires: systemd
+%endif
PreReq: %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/sbin/useradd
Conflicts: memcached-unstable
%define home_dir /var/lib/%{pkg_name}
@@ -50,8 +56,9 @@
Summary: A high-performance, distributed memory object caching system
License: BSD-3-Clause
Group: Productivity/Networking/Other
+%if %{with systemd}
%{?systemd_requires}
-
+%endif
%description
Memcached is a high-performance, distributed memory object caching
system, generic in nature, but intended for use in speeding up dynamic
@@ -73,6 +80,10 @@
%build
autoreconf -fiv
+%if 0%{?suse_version} <= 1140
+export LIBEVENT_CFLAGS="-I%{_includedir}"
+export LIBEVENT_LIBS="-levent"
+%endif
%configure --enable-sasl --disable-coverage --bindir=%{_sbindir}
make %{?_smp_mflags}
@@ -81,32 +92,44 @@
%{__make} test
%install
-%make_install
+%makeinstall
%{__install} -D -m 0755 scripts/memcached-tool %{buildroot}%{_sbindir}/memcached-tool
%{__install} -Dd -m 0755 %{buildroot}%{home_dir}
%{__install} -D -m 0755 %{S:1} %{buildroot}%{_sysconfdir}/init.d/%{pkg_name}
%{__ln_s} -f ../..%{_sysconfdir}/init.d/%{pkg_name} %{buildroot}%{_sbindir}/rc%{pkg_name}
%{__install} -D -m 0644 %{S:2} %{buildroot}/var/adm/fillup-templates/sysconfig.%{pkg_name}
+%if %{with systemd}
%{__install} -D -m 0644 %{S:4} %{buildroot}%{_unitdir}/%{pkg_name}.service
+%endif
+
%clean
%{__rm} -rf %{buildroot};
%pre
/usr/sbin/groupadd -r %{pkg_name} &>/dev/null || :
/usr/sbin/useradd -o -g %{pkg_name} -s /bin/false -r -c "user for %{pkg_name}" -d %{home_dir} %{pkg_name} &>/dev/null || :
+%if %{with systemd}
%service_add_pre %{pkg_name}.service
+%endif
%post
%fillup_and_insserv %{pkg_name}
+%if %{with systemd}
%service_add_post %{pkg_name}.service
+%endif
+
%preun
%stop_on_removal %{pkg_name}
+%if %{with systemd}
%service_del_preun %{pkg_name}.service
+%endif
%postun
%restart_on_update %{pkg_name}
%{insserv_cleanup}
+%if %{with systemd}
%service_del_postun %{pkg_name}.service
+%endif
%files
%defattr(-,root,root)
@@ -120,6 +143,8 @@
%{_includedir}/%{pkg_name}
/var/adm/fillup-templates/sysconfig.%{pkg_name}
%dir %attr(755,root,root) %{home_dir}
+%if %{with systemd}
%{_unitdir}/%{pkg_name}.service
+%endif
%changelog
++++++ memcached-1.4.14.tar.gz -> memcached-1.4.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/Makefile.am new/memcached-1.4.15/Makefile.am
--- old/memcached-1.4.14/Makefile.am 2012-01-06 19:19:50.000000000 +0100
+++ new/memcached-1.4.15/Makefile.am 2012-09-03 20:23:23.000000000 +0200
@@ -69,7 +69,7 @@
SUBDIRS = doc
DIST_DIRS = scripts
-EXTRA_DIST = doc scripts t memcached.spec memcached_dtrace.d version.m4
+EXTRA_DIST = doc scripts t memcached.spec memcached_dtrace.d version.m4 README.md
MOSTLYCLEANFILES = *.gcov *.gcno *.gcda *.tcov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/Makefile.in new/memcached-1.4.15/Makefile.in
--- old/memcached-1.4.14/Makefile.in 2012-07-30 22:56:58.000000000 +0200
+++ new/memcached-1.4.15/Makefile.in 2012-09-04 02:13:01.000000000 +0200
@@ -324,7 +324,7 @@
CLEANFILES = $(am__append_6) $(am__append_11)
SUBDIRS = doc
DIST_DIRS = scripts
-EXTRA_DIST = doc scripts t memcached.spec memcached_dtrace.d version.m4
+EXTRA_DIST = doc scripts t memcached.spec memcached_dtrace.d version.m4 README.md
MOSTLYCLEANFILES = *.gcov *.gcno *.gcda *.tcov
all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/README.md new/memcached-1.4.15/README.md
--- old/memcached-1.4.14/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/memcached-1.4.15/README.md 2012-07-30 03:05:16.000000000 +0200
@@ -0,0 +1,38 @@
+# Memcached
+
+## Dependencies
+
+* libevent, http://www.monkey.org/~provos/libevent/ (libevent-dev)
+
+## Environment
+
+### Linux
+
+If using Linux, you need a kernel with epoll. Sure, libevent will
+work with normal select, but it sucks.
+
+epoll isn't in Linux 2.4, but there's a backport at:
+
+ http://www.xmailserver.org/linux-patches/nio-improve.html
+
+You want the epoll-lt patch (level-triggered).
+
+### Mac OS X
+
+If you're using MacOS, you'll want libevent 1.1 or higher to deal with
+a kqueue bug.
+
+Also, be warned that the -k (mlockall) option to memcached might be
+dangerous when using a large cache. Just make sure the memcached machines
+don't swap. memcached does non-blocking network I/O, but not disk. (it
+should never go to disk, or you've lost the whole point of it)
+
+## Website
+
+* http://www.memcached.org
+
+## Contributing
+
+Want to contribute? Up-to-date pointers should be at:
+
+* http://contributing.appspot.com/memcached
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/assoc.c new/memcached-1.4.15/assoc.c
--- old/memcached-1.4.14/assoc.c 2012-07-30 22:21:59.000000000 +0200
+++ new/memcached-1.4.15/assoc.c 2012-09-03 20:23:23.000000000 +0200
@@ -32,7 +32,7 @@
typedef unsigned char ub1; /* unsigned 1-byte quantities */
/* how many powers of 2's worth of buckets we use */
-static unsigned int hashpower = HASHPOWER_DEFAULT;
+unsigned int hashpower = HASHPOWER_DEFAULT;
#define hashsize(n) ((ub4)1<<(n))
#define hashmask(n) (hashsize(n)-1)
@@ -51,6 +51,7 @@
/* Flag: Are we in the middle of expanding now? */
static bool expanding = false;
+static bool started_expanding = false;
/*
* During expansion we migrate values with bucket granularity; this is how
@@ -136,13 +137,19 @@
stats.hash_bytes += hashsize(hashpower) * sizeof(void *);
stats.hash_is_expanding = 1;
STATS_UNLOCK();
- pthread_cond_signal(&maintenance_cond);
} else {
primary_hashtable = old_hashtable;
/* Bad news, but we can keep running. */
}
}
+static void assoc_start_expand(void) {
+ if (started_expanding)
+ return;
+ started_expanding = true;
+ pthread_cond_signal(&maintenance_cond);
+}
+
/* Note: this isn't an assoc_update. The key must not already exist to call this */
int assoc_insert(item *it, const uint32_t hv) {
unsigned int oldbucket;
@@ -161,7 +168,7 @@
hash_items++;
if (! expanding && hash_items > (hashsize(hashpower) * 3) / 2) {
- assoc_expand();
+ assoc_start_expand();
}
MEMCACHED_ASSOC_INSERT(ITEM_key(it), it->nkey, hash_items);
@@ -201,6 +208,7 @@
/* Lock the cache, and bulk move multiple buckets to the new
* hash table. */
+ item_lock_global();
mutex_lock(&cache_lock);
for (ii = 0; ii < hash_bulk_move && expanding; ++ii) {
@@ -230,12 +238,25 @@
}
}
+ mutex_unlock(&cache_lock);
+ item_unlock_global();
+
if (!expanding) {
+ /* finished expanding. tell all threads to use fine-grained locks */
+ switch_item_lock_type(ITEM_LOCK_GRANULAR);
+ slabs_rebalancer_resume();
/* We are done expanding.. just wait for next invocation */
+ mutex_lock(&cache_lock);
+ started_expanding = false;
pthread_cond_wait(&maintenance_cond, &cache_lock);
+ /* Before doing anything, tell threads to use a global lock */
+ mutex_unlock(&cache_lock);
+ slabs_rebalancer_pause();
+ switch_item_lock_type(ITEM_LOCK_GLOBAL);
+ mutex_lock(&cache_lock);
+ assoc_expand();
+ mutex_unlock(&cache_lock);
}
-
- mutex_unlock(&cache_lock);
}
return NULL;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/assoc.h new/memcached-1.4.15/assoc.h
--- old/memcached-1.4.14/assoc.h 2012-01-06 19:19:50.000000000 +0100
+++ new/memcached-1.4.15/assoc.h 2012-09-03 20:23:23.000000000 +0200
@@ -6,4 +6,4 @@
void do_assoc_move_next_bucket(void);
int start_assoc_maintenance_thread(void);
void stop_assoc_maintenance_thread(void);
-
+extern unsigned int hashpower;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/configure new/memcached-1.4.15/configure
--- old/memcached-1.4.14/configure 2012-07-30 22:56:58.000000000 +0200
+++ new/memcached-1.4.15/configure 2012-09-04 02:13:01.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for memcached 1.4.14.
+# Generated by GNU Autoconf 2.65 for memcached 1.4.15.
#
# Report bugs to <memcached(a)googlegroups.com>.
#
@@ -552,8 +552,8 @@
# Identity of this package.
PACKAGE_NAME='memcached'
PACKAGE_TARNAME='memcached'
-PACKAGE_VERSION='1.4.14'
-PACKAGE_STRING='memcached 1.4.14'
+PACKAGE_VERSION='1.4.15'
+PACKAGE_STRING='memcached 1.4.15'
PACKAGE_BUGREPORT='memcached(a)googlegroups.com'
PACKAGE_URL=''
@@ -1272,7 +1272,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures memcached 1.4.14 to adapt to many kinds of systems.
+\`configure' configures memcached 1.4.15 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1343,7 +1343,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of memcached 1.4.14:";;
+ short | recursive ) echo "Configuration of memcached 1.4.15:";;
esac
cat <<\_ACEOF
@@ -1441,7 +1441,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-memcached configure 1.4.14
+memcached configure 1.4.15
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -1905,7 +1905,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by memcached $as_me 1.4.14, which was
+It was created by memcached $as_me 1.4.15, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@@ -2825,7 +2825,7 @@
# Define the identity of the package.
PACKAGE=memcached
- VERSION=1.4.14
+ VERSION=1.4.15
cat >>confdefs.h <<_ACEOF
@@ -4294,6 +4294,9 @@
fi
+if test "$ICC" = "yes" -o "$GCC" = "yes"; then :
+ CFLAGS="$CFLAGS -pthread"
+fi
if test "$ICC" = "no"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
@@ -4848,10 +4851,7 @@
if test "x$enable_coverage" != "xno"; then
- if test "$ICC" = "yes"
- then
- CFLAGS="$CFLAGS -pthread"
- elif test "$GCC" = "yes"
+ if test "$GCC" = "yes" -a "$ICC" != "yes"
then
CFLAGS="$CFLAGS -pthread"
# Extract the first word of "gcov", so it can be a program name with args.
@@ -6822,7 +6822,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by memcached $as_me 1.4.14, which was
+This file was extended by memcached $as_me 1.4.15, which was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6888,7 +6888,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-memcached config.status 1.4.14
+memcached config.status 1.4.15
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/configure.ac new/memcached-1.4.15/configure.ac
--- old/memcached-1.4.14/configure.ac 2012-02-02 07:01:29.000000000 +0100
+++ new/memcached-1.4.15/configure.ac 2012-09-03 09:35:54.000000000 +0200
@@ -49,6 +49,8 @@
])
DETECT_SUNCC([CFLAGS="-mt $CFLAGS"], [])
+AS_IF([test "$ICC" = "yes" -o "$GCC" = "yes"],
+ [CFLAGS="$CFLAGS -pthread"])
if test "$ICC" = "no"; then
AC_PROG_CC_C99
@@ -140,11 +142,7 @@
[AS_HELP_STRING([--disable-coverage],[Disable code coverage])])
if test "x$enable_coverage" != "xno"; then
- if test "$ICC" = "yes"
- then
- dnl ICC trying to be gcc, but not well
- CFLAGS="$CFLAGS -pthread"
- elif test "$GCC" = "yes"
+ if test "$GCC" = "yes" -a "$ICC" != "yes"
then
CFLAGS="$CFLAGS -pthread"
AC_PATH_PROG([PROFILER], [gcov], "no", [$PATH])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/doc/Makefile new/memcached-1.4.15/doc/Makefile
--- old/memcached-1.4.14/doc/Makefile 2012-07-30 22:57:03.000000000 +0200
+++ new/memcached-1.4.15/doc/Makefile 2012-09-04 02:13:06.000000000 +0200
@@ -82,7 +82,7 @@
AWK = gawk
CC = gcc -std=gnu99
CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2 -pthread -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -fno-strict-aliasing
+CFLAGS = -g -O2 -pthread -pthread -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -fno-strict-aliasing
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
@@ -112,10 +112,10 @@
PACKAGE = memcached
PACKAGE_BUGREPORT = memcached(a)googlegroups.com
PACKAGE_NAME = memcached
-PACKAGE_STRING = memcached 1.4.14
+PACKAGE_STRING = memcached 1.4.15
PACKAGE_TARNAME = memcached
PACKAGE_URL =
-PACKAGE_VERSION = 1.4.14
+PACKAGE_VERSION = 1.4.15
PATH_SEPARATOR = :
PROFILER = /usr/bin/gcov
PROFILER_FLAGS = -fprofile-arcs -ftest-coverage
@@ -123,7 +123,7 @@
SET_MAKE =
SHELL = /bin/bash
STRIP =
-VERSION = 1.4.14
+VERSION = 1.4.15
XML2RFC = no
XSLTPROC = /usr/bin/xsltproc
abs_builddir = /home/dormando/p/danga/git/memcached/doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/doc/threads.txt new/memcached-1.4.15/doc/threads.txt
--- old/memcached-1.4.14/doc/threads.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/memcached-1.4.15/doc/threads.txt 2012-09-04 00:17:10.000000000 +0200
@@ -0,0 +1,46 @@
+WARNING: This document is currently a stub. It is incomplete, but provided to
+give a vague overview of how threads are implemented.
+
+Multithreading in memcached *was* originally simple:
+
+- One listener thread
+- N "event worker" threads
+- Some misc background threads
+
+Each worker thread is assigned connections, and runs its own epoll loop. The
+central hash table, LRU lists, and some statistics counters are covered by
+global locks. Protocol parsing, data transfer happens in threads. Data lookups
+and modifications happen under central locks.
+
+THIS HAS CHANGED!
+
+I do need to flesh this out more, and it'll need a lot more tuning, but it has
+changed in the following ways:
+
+- A secondary small hash table of locks is used to lock an item by its hash
+ value. This prevents multiple threads from acting on the same item at the
+ same time.
+- This secondary hash table is mapped to the central hash tables buckets. This
+ allows multiple threads to access the hash table in parallel. Only one
+ thread may read or write against a particular hash table bucket.
+- atomic refcounts per item are used to manage garbage collection and
+ mutability.
+- A central lock is still held around any "item modifications" - any change to
+ any item flags on any item, the LRU state, or refcount incrementing are
+ still centrally locked.
+
+- When pulling an item off of the LRU tail for eviction or re-allocation, the
+ system must attempt to lock the item's bucket, which is done with a trylock
+ to avoid deadlocks. If a bucket is in use (and not by that thread) it will
+ walk up the LRU a little in an attempt to fetch a non-busy item.
+
+Since I'm sick of hearing it:
+
+- If you remove the per-thread stats lock, CPU usage goes down by less than a
+ point of a percent, and it does not improve scalability.
+- In my testing, the remaining global STATS_LOCK calls never seem to collide.
+
+Yes, more stats can be moved to threads, and those locks can actually be
+removed entirely on x86-64 systems. However my tests haven't shown that as
+beneficial so far, so I've prioritized other work. Apologies for the rant but
+it's a common question.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/items.c new/memcached-1.4.15/items.c
--- old/memcached-1.4.14/items.c 2012-07-30 22:23:37.000000000 +0200
+++ new/memcached-1.4.15/items.c 2012-09-03 20:23:23.000000000 +0200
@@ -85,7 +85,9 @@
}
/*@null@*/
-item *do_item_alloc(char *key, const size_t nkey, const int flags, const rel_time_t exptime, const int nbytes) {
+item *do_item_alloc(char *key, const size_t nkey, const int flags,
+ const rel_time_t exptime, const int nbytes,
+ const uint32_t cur_hv) {
uint8_t nsuffix;
item *it = NULL;
char suffix[40];
@@ -100,87 +102,93 @@
mutex_lock(&cache_lock);
/* do a quick check if we have any expired items in the tail.. */
+ int tries = 5;
+ int tried_alloc = 0;
item *search;
+ void *hold_lock = NULL;
rel_time_t oldest_live = settings.oldest_live;
search = tails[id];
- if (search != NULL && (refcount_incr(&search->refcount) == 2)) {
+ /* We walk up *only* for locked items. Never searching for expired.
+ * Waste of CPU for almost all deployments */
+ for (; tries > 0 && search != NULL; tries--, search=search->prev) {
+ uint32_t hv = hash(ITEM_key(search), search->nkey, 0);
+ /* Attempt to hash item lock the "search" item. If locked, no
+ * other callers can incr the refcount
+ */
+ /* FIXME: I think we need to mask the hv here for comparison? */
+ if (hv != cur_hv && (hold_lock = item_trylock(hv)) == NULL)
+ continue;
+ /* Now see if the item is refcount locked */
+ if (refcount_incr(&search->refcount) != 2) {
+ refcount_decr(&search->refcount);
+ /* Old rare bug could cause a refcount leak. We haven't seen
+ * it in years, but we leave this code in to prevent failures
+ * just in case */
+ if (search->time + TAIL_REPAIR_TIME < current_time) {
+ itemstats[id].tailrepairs++;
+ search->refcount = 1;
+ do_item_unlink_nolock(search, hv);
+ }
+ if (hold_lock)
+ item_trylock_unlock(hold_lock);
+ continue;
+ }
+
+ /* Expired or flushed */
if ((search->exptime != 0 && search->exptime < current_time)
- || (search->time <= oldest_live && oldest_live <= current_time)) { // dead by flush
- STATS_LOCK();
- stats.reclaimed++;
- STATS_UNLOCK();
+ || (search->time <= oldest_live && oldest_live <= current_time)) {
itemstats[id].reclaimed++;
if ((search->it_flags & ITEM_FETCHED) == 0) {
- STATS_LOCK();
- stats.expired_unfetched++;
- STATS_UNLOCK();
itemstats[id].expired_unfetched++;
}
it = search;
slabs_adjust_mem_requested(it->slabs_clsid, ITEM_ntotal(it), ntotal);
- do_item_unlink_nolock(it, hash(ITEM_key(it), it->nkey, 0));
+ do_item_unlink_nolock(it, hv);
/* Initialize the item block: */
it->slabs_clsid = 0;
} else if ((it = slabs_alloc(ntotal, id)) == NULL) {
+ tried_alloc = 1;
if (settings.evict_to_free == 0) {
itemstats[id].outofmemory++;
- mutex_unlock(&cache_lock);
- return NULL;
- }
- itemstats[id].evicted++;
- itemstats[id].evicted_time = current_time - search->time;
- if (search->exptime != 0)
- itemstats[id].evicted_nonzero++;
- if ((search->it_flags & ITEM_FETCHED) == 0) {
- STATS_LOCK();
- stats.evicted_unfetched++;
- STATS_UNLOCK();
- itemstats[id].evicted_unfetched++;
+ } else {
+ itemstats[id].evicted++;
+ itemstats[id].evicted_time = current_time - search->time;
+ if (search->exptime != 0)
+ itemstats[id].evicted_nonzero++;
+ if ((search->it_flags & ITEM_FETCHED) == 0) {
+ itemstats[id].evicted_unfetched++;
+ }
+ it = search;
+ slabs_adjust_mem_requested(it->slabs_clsid, ITEM_ntotal(it), ntotal);
+ do_item_unlink_nolock(it, hv);
+ /* Initialize the item block: */
+ it->slabs_clsid = 0;
+
+ /* If we've just evicted an item, and the automover is set to
+ * angry bird mode, attempt to rip memory into this slab class.
+ * TODO: Move valid object detection into a function, and on a
+ * "successful" memory pull, look behind and see if the next alloc
+ * would be an eviction. Then kick off the slab mover before the
+ * eviction happens.
+ */
+ if (settings.slab_automove == 2)
+ slabs_reassign(-1, id);
}
- STATS_LOCK();
- stats.evictions++;
- STATS_UNLOCK();
- it = search;
- slabs_adjust_mem_requested(it->slabs_clsid, ITEM_ntotal(it), ntotal);
- do_item_unlink_nolock(it, hash(ITEM_key(it), it->nkey, 0));
- /* Initialize the item block: */
- it->slabs_clsid = 0;
-
- /* If we've just evicted an item, and the automover is set to
- * angry bird mode, attempt to rip memory into this slab class.
- * TODO: Move valid object detection into a function, and on a
- * "successful" memory pull, look behind and see if the next alloc
- * would be an eviction. Then kick off the slab mover before the
- * eviction happens.
- */
- if (settings.slab_automove == 2)
- slabs_reassign(-1, id);
- } else {
- refcount_decr(&search->refcount);
}
- } else {
- /* If the LRU is empty or locked, attempt to allocate memory */
- it = slabs_alloc(ntotal, id);
- if (search != NULL)
- refcount_decr(&search->refcount);
+
+ refcount_decr(&search->refcount);
+ /* If hash values were equal, we don't grab a second lock */
+ if (hold_lock)
+ item_trylock_unlock(hold_lock);
+ break;
}
+ if (!tried_alloc && (tries == 0 || search == NULL))
+ it = slabs_alloc(ntotal, id);
+
if (it == NULL) {
itemstats[id].outofmemory++;
- /* Last ditch effort. There was a very rare bug which caused
- * refcount leaks. We leave this just in case they ever happen again.
- * We can reasonably assume no item can stay locked for more than
- * three hours, so if we find one in the tail which is that old,
- * free it anyway.
- */
- if (search != NULL &&
- search->refcount != 2 &&
- search->time + TAIL_REPAIR_TIME < current_time) {
- itemstats[id].tailrepairs++;
- search->refcount = 1;
- do_item_unlink_nolock(search, hash(ITEM_key(search), search->nkey, 0));
- }
mutex_unlock(&cache_lock);
return NULL;
}
@@ -416,6 +424,26 @@
mutex_unlock(&cache_lock);
}
+void do_item_stats_totals(ADD_STAT add_stats, void *c) {
+ itemstats_t totals;
+ memset(&totals, 0, sizeof(itemstats_t));
+ int i;
+ for (i = 0; i < LARGEST_ID; i++) {
+ totals.expired_unfetched += itemstats[i].expired_unfetched;
+ totals.evicted_unfetched += itemstats[i].evicted_unfetched;
+ totals.evicted += itemstats[i].evicted;
+ totals.reclaimed += itemstats[i].reclaimed;
+ }
+ APPEND_STAT("expired_unfetched", "%llu",
+ (unsigned long long)totals.expired_unfetched);
+ APPEND_STAT("evicted_unfetched", "%llu",
+ (unsigned long long)totals.evicted_unfetched);
+ APPEND_STAT("evictions", "%llu",
+ (unsigned long long)totals.evicted);
+ APPEND_STAT("reclaimed", "%llu",
+ (unsigned long long)totals.reclaimed);
+}
+
void do_item_stats(ADD_STAT add_stats, void *c) {
int i;
for (i = 0; i < LARGEST_ID; i++) {
@@ -491,7 +519,7 @@
/** wrapper around assoc_find which does the lazy expiration logic */
item *do_item_get(const char *key, const size_t nkey, const uint32_t hv) {
- mutex_lock(&cache_lock);
+ //mutex_lock(&cache_lock);
item *it = assoc_find(key, nkey, hv);
if (it != NULL) {
refcount_incr(&it->refcount);
@@ -505,7 +533,7 @@
it = NULL;
}
}
- mutex_unlock(&cache_lock);
+ //mutex_unlock(&cache_lock);
int was_found = 0;
if (settings.verbose > 2) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/items.h new/memcached-1.4.15/items.h
--- old/memcached-1.4.14/items.h 2012-01-09 05:36:49.000000000 +0100
+++ new/memcached-1.4.15/items.h 2012-09-03 20:23:23.000000000 +0200
@@ -2,7 +2,7 @@
uint64_t get_cas_id(void);
/*@null@*/
-item *do_item_alloc(char *key, const size_t nkey, const int flags, const rel_time_t exptime, const int nbytes);
+item *do_item_alloc(char *key, const size_t nkey, const int flags, const rel_time_t exptime, const int nbytes, const uint32_t cur_hv);
void item_free(item *it);
bool item_size_ok(const size_t nkey, const int flags, const int nbytes);
@@ -16,6 +16,7 @@
/*@null@*/
char *do_item_cachedump(const unsigned int slabs_clsid, const unsigned int limit, unsigned int *bytes);
void do_item_stats(ADD_STAT add_stats, void *c);
+void do_item_stats_totals(ADD_STAT add_stats, void *c);
/*@null@*/
void do_item_stats_sizes(ADD_STAT add_stats, void *c);
void do_item_flush_expired(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/memcached.c new/memcached-1.4.15/memcached.c
--- old/memcached-1.4.14/memcached.c 2012-07-30 22:26:47.000000000 +0200
+++ new/memcached-1.4.15/memcached.c 2012-09-03 20:23:23.000000000 +0200
@@ -2325,7 +2325,7 @@
flags = (int) strtol(ITEM_suffix(old_it), (char **) NULL, 10);
- new_it = item_alloc(key, it->nkey, flags, old_it->exptime, it->nbytes + old_it->nbytes - 2 /* CRLF */);
+ new_it = do_item_alloc(key, it->nkey, flags, old_it->exptime, it->nbytes + old_it->nbytes - 2 /* CRLF */, hv);
if (new_it == NULL) {
/* SERVER_ERROR out of memory */
@@ -2585,8 +2585,6 @@
APPEND_STAT("hash_power_level", "%u", stats.hash_power_level);
APPEND_STAT("hash_bytes", "%llu", (unsigned long long)stats.hash_bytes);
APPEND_STAT("hash_is_expanding", "%u", stats.hash_is_expanding);
- APPEND_STAT("expired_unfetched", "%llu", stats.expired_unfetched);
- APPEND_STAT("evicted_unfetched", "%llu", stats.evicted_unfetched);
if (settings.slab_reassign) {
APPEND_STAT("slab_reassign_running", "%u", stats.slab_reassign_running);
APPEND_STAT("slabs_moved", "%llu", stats.slabs_moved);
@@ -3101,7 +3099,7 @@
res = strlen(buf);
if (res + 2 > it->nbytes || it->refcount != 1) { /* need to realloc */
item *new_it;
- new_it = item_alloc(ITEM_key(it), it->nkey, atoi(ITEM_suffix(it) + 1), it->exptime, res + 2 );
+ new_it = do_item_alloc(ITEM_key(it), it->nkey, atoi(ITEM_suffix(it) + 1), it->exptime, res + 2, hv);
if (new_it == 0) {
do_item_remove(it);
return EOM;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/memcached.h new/memcached-1.4.15/memcached.h
--- old/memcached-1.4.14/memcached.h 2012-07-30 00:40:49.000000000 +0200
+++ new/memcached-1.4.15/memcached.h 2012-09-03 20:23:23.000000000 +0200
@@ -180,6 +180,11 @@
udp_transport
};
+enum item_lock_types {
+ ITEM_LOCK_GRANULAR = 0,
+ ITEM_LOCK_GLOBAL
+};
+
#define IS_UDP(x) (x == udp_transport)
#define NREAD_ADD 1
@@ -352,6 +357,7 @@
struct thread_stats stats; /* Stats generated by this thread */
struct conn_queue *new_conn_queue; /* queue of new connections to handle */
cache_t *suffix_cache; /* suffix cache */
+ uint8_t item_lock_type; /* use fine-grained or global item lock */
} LIBEVENT_THREAD;
typedef struct {
@@ -527,12 +533,18 @@
void item_remove(item *it);
int item_replace(item *it, item *new_it, const uint32_t hv);
void item_stats(ADD_STAT add_stats, void *c);
+void item_stats_totals(ADD_STAT add_stats, void *c);
void item_stats_sizes(ADD_STAT add_stats, void *c);
void item_unlink(item *it);
void item_update(item *it);
+void item_lock_global(void);
+void item_unlock_global(void);
void item_lock(uint32_t hv);
+void *item_trylock(uint32_t hv);
+void item_trylock_unlock(void *arg);
void item_unlock(uint32_t hv);
+void switch_item_lock_type(enum item_lock_types type);
unsigned short refcount_incr(unsigned short *refcount);
unsigned short refcount_decr(unsigned short *refcount);
void STATS_LOCK(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/memcached.spec new/memcached-1.4.15/memcached.spec
--- old/memcached-1.4.14/memcached.spec 2012-07-30 22:56:56.000000000 +0200
+++ new/memcached-1.4.15/memcached.spec 2012-09-04 02:12:59.000000000 +0200
@@ -1,12 +1,12 @@
Name: memcached
-Version: 1.4.14
+Version: 1.4.15
Release: 1%{?dist}
Summary: High Performance, Distributed Memory Object Cache
Group: System Environment/Daemons
License: BSD
URL: http://www.danga.com/memcached/
-Source0: http://memcached.googlecode.com/files/%{name}-1.4.14.tar.gz
+Source0: http://memcached.googlecode.com/files/%{name}-1.4.15.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libevent-devel
@@ -23,7 +23,7 @@
web applications by alleviating database load.
%prep
-%setup -q -n %{name}-1.4.14
+%setup -q -n %{name}-1.4.15
%build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/slabs.c new/memcached-1.4.15/slabs.c
--- old/memcached-1.4.14/slabs.c 2012-07-30 06:09:13.000000000 +0200
+++ new/memcached-1.4.15/slabs.c 2012-09-03 20:23:23.000000000 +0200
@@ -293,11 +293,8 @@
APPEND_STAT("bytes", "%llu", (unsigned long long)stats.curr_bytes);
APPEND_STAT("curr_items", "%u", stats.curr_items);
APPEND_STAT("total_items", "%u", stats.total_items);
- APPEND_STAT("evictions", "%llu",
- (unsigned long long)stats.evictions);
- APPEND_STAT("reclaimed", "%llu",
- (unsigned long long)stats.reclaimed);
STATS_UNLOCK();
+ item_stats_totals(add_stats, c);
} else if (nz_strcmp(nkey, stat_type, "items") == 0) {
item_stats(add_stats, c);
} else if (nz_strcmp(nkey, stat_type, "slabs") == 0) {
@@ -498,7 +495,7 @@
}
enum move_status {
- MOVE_PASS=0, MOVE_DONE, MOVE_BUSY
+ MOVE_PASS=0, MOVE_DONE, MOVE_BUSY, MOVE_LOCKED
};
/* refcount == 0 is safe since nobody can incr while cache_lock is held.
@@ -522,36 +519,43 @@
item *it = slab_rebal.slab_pos;
status = MOVE_PASS;
if (it->slabs_clsid != 255) {
- refcount = refcount_incr(&it->refcount);
- if (refcount == 1) { /* item is unlinked, unused */
- if (it->it_flags & ITEM_SLABBED) {
- /* remove from slab freelist */
- if (s_cls->slots == it) {
- s_cls->slots = it->next;
+ void *hold_lock = NULL;
+ uint32_t hv = hash(ITEM_key(it), it->nkey, 0);
+ if ((hold_lock = item_trylock(hv)) == NULL) {
+ status = MOVE_LOCKED;
+ } else {
+ refcount = refcount_incr(&it->refcount);
+ if (refcount == 1) { /* item is unlinked, unused */
+ if (it->it_flags & ITEM_SLABBED) {
+ /* remove from slab freelist */
+ if (s_cls->slots == it) {
+ s_cls->slots = it->next;
+ }
+ if (it->next) it->next->prev = it->prev;
+ if (it->prev) it->prev->next = it->next;
+ s_cls->sl_curr--;
+ status = MOVE_DONE;
+ } else {
+ status = MOVE_BUSY;
+ }
+ } else if (refcount == 2) { /* item is linked but not busy */
+ if ((it->it_flags & ITEM_LINKED) != 0) {
+ do_item_unlink_nolock(it, hash(ITEM_key(it), it->nkey, 0));
+ status = MOVE_DONE;
+ } else {
+ /* refcount == 1 + !ITEM_LINKED means the item is being
+ * uploaded to, or was just unlinked but hasn't been freed
+ * yet. Let it bleed off on its own and try again later */
+ status = MOVE_BUSY;
}
- if (it->next) it->next->prev = it->prev;
- if (it->prev) it->prev->next = it->next;
- s_cls->sl_curr--;
- status = MOVE_DONE;
- } else {
- status = MOVE_BUSY;
- }
- } else if (refcount == 2) { /* item is linked but not busy */
- if ((it->it_flags & ITEM_LINKED) != 0) {
- do_item_unlink_nolock(it, hash(ITEM_key(it), it->nkey, 0));
- status = MOVE_DONE;
} else {
- /* refcount == 1 + !ITEM_LINKED means the item is being
- * uploaded to, or was just unlinked but hasn't been freed
- * yet. Let it bleed off on its own and try again later */
+ if (settings.verbose > 2) {
+ fprintf(stderr, "Slab reassign hit a busy item: refcount: %d (%d -> %d)\n",
+ it->refcount, slab_rebal.s_clsid, slab_rebal.d_clsid);
+ }
status = MOVE_BUSY;
}
- } else {
- if (settings.verbose > 2) {
- fprintf(stderr, "Slab reassign hit a busy item: refcount: %d (%d -> %d)\n",
- it->refcount, slab_rebal.s_clsid, slab_rebal.d_clsid);
- }
- status = MOVE_BUSY;
+ item_trylock_unlock(hold_lock);
}
}
@@ -562,9 +566,10 @@
it->slabs_clsid = 255;
break;
case MOVE_BUSY:
+ refcount_decr(&it->refcount);
+ case MOVE_LOCKED:
slab_rebal.busy_items++;
was_busy++;
- refcount_decr(&it->refcount);
break;
case MOVE_PASS:
break;
@@ -731,6 +736,8 @@
*/
static void *slab_rebalance_thread(void *arg) {
int was_busy = 0;
+ /* So we first pass into cond_wait with the mutex held */
+ mutex_lock(&slabs_rebalance_lock);
while (do_run_slab_rebalance_thread) {
if (slab_rebalance_signal == 1) {
@@ -819,6 +826,15 @@
return ret;
}
+/* If we hold this lock, rebalancer can't wake up or move */
+void slabs_rebalancer_pause(void) {
+ pthread_mutex_lock(&slabs_rebalance_lock);
+}
+
+void slabs_rebalancer_resume(void) {
+ pthread_mutex_unlock(&slabs_rebalance_lock);
+}
+
static pthread_t maintenance_tid;
static pthread_t rebalance_tid;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/slabs.h new/memcached-1.4.15/slabs.h
--- old/memcached-1.4.14/slabs.h 2012-07-29 10:30:59.000000000 +0200
+++ new/memcached-1.4.15/slabs.h 2012-09-03 20:23:23.000000000 +0200
@@ -43,4 +43,7 @@
enum reassign_result_type slabs_reassign(int src, int dst);
+void slabs_rebalancer_pause(void);
+void slabs_rebalancer_resume(void);
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/thread.c new/memcached-1.4.15/thread.c
--- old/memcached-1.4.14/thread.c 2012-07-30 22:28:21.000000000 +0200
+++ new/memcached-1.4.15/thread.c 2012-09-03 20:23:23.000000000 +0200
@@ -57,8 +57,12 @@
static pthread_mutex_t *item_locks;
/* size of the item lock hash table */
static uint32_t item_lock_count;
-/* size - 1 for lookup masking */
-static uint32_t item_lock_mask;
+#define hashsize(n) ((unsigned long int)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+/* this lock is temporarily engaged during a hash table expansion */
+static pthread_mutex_t item_global_lock;
+/* thread-specific variable for deeply finding the item lock type */
+static pthread_key_t item_lock_type_key;
static LIBEVENT_DISPATCHER_THREAD dispatcher_thread;
@@ -108,12 +112,92 @@
#endif
}
+/* Convenience functions for calling *only* when in ITEM_LOCK_GLOBAL mode */
+void item_lock_global(void) {
+ mutex_lock(&item_global_lock);
+}
+
+void item_unlock_global(void) {
+ mutex_unlock(&item_global_lock);
+}
+
void item_lock(uint32_t hv) {
- mutex_lock(&item_locks[hv & item_lock_mask]);
+ uint8_t *lock_type = pthread_getspecific(item_lock_type_key);
+ if (likely(*lock_type == ITEM_LOCK_GRANULAR)) {
+ mutex_lock(&item_locks[(hv & hashmask(hashpower)) % item_lock_count]);
+ } else {
+ mutex_lock(&item_global_lock);
+ }
+}
+
+/* Special case. When ITEM_LOCK_GLOBAL mode is enabled, this should become a
+ * no-op, as it's only called from within the item lock if necessary.
+ * However, we can't mix a no-op and threads which are still synchronizing to
+ * GLOBAL. So instead we just always try to lock. When in GLOBAL mode this
+ * turns into an effective no-op. Threads re-synchronize after the power level
+ * switch so it should stay safe.
+ */
+void *item_trylock(uint32_t hv) {
+ pthread_mutex_t *lock = &item_locks[(hv & hashmask(hashpower)) % item_lock_count];
+ if (pthread_mutex_trylock(lock) == 0) {
+ return lock;
+ }
+ return NULL;
+}
+
+void item_trylock_unlock(void *lock) {
+ mutex_unlock((pthread_mutex_t *) lock);
}
void item_unlock(uint32_t hv) {
- mutex_unlock(&item_locks[hv & item_lock_mask]);
+ uint8_t *lock_type = pthread_getspecific(item_lock_type_key);
+ if (likely(*lock_type == ITEM_LOCK_GRANULAR)) {
+ mutex_unlock(&item_locks[(hv & hashmask(hashpower)) % item_lock_count]);
+ } else {
+ mutex_unlock(&item_global_lock);
+ }
+}
+
+static void wait_for_thread_registration(int nthreads) {
+ while (init_count < nthreads) {
+ pthread_cond_wait(&init_cond, &init_lock);
+ }
+}
+
+static void register_thread_initialized(void) {
+ pthread_mutex_lock(&init_lock);
+ init_count++;
+ pthread_cond_signal(&init_cond);
+ pthread_mutex_unlock(&init_lock);
+}
+
+void switch_item_lock_type(enum item_lock_types type) {
+ char buf[1];
+ int i;
+
+ switch (type) {
+ case ITEM_LOCK_GRANULAR:
+ buf[0] = 'l';
+ break;
+ case ITEM_LOCK_GLOBAL:
+ buf[0] = 'g';
+ break;
+ default:
+ fprintf(stderr, "Unknown lock type: %d\n", type);
+ assert(1 == 0);
+ break;
+ }
+
+ pthread_mutex_lock(&init_lock);
+ init_count = 0;
+ for (i = 0; i < settings.num_threads; i++) {
+ if (write(threads[i].notify_send_fd, buf, 1) != 1) {
+ perror("Failed writing to notify pipe");
+ /* TODO: This is a fatal problem. Can it ever happen temporarily? */
+ }
+ }
+ wait_for_thread_registration(settings.num_threads);
+ pthread_mutex_unlock(&init_lock);
}
/*
@@ -278,7 +362,6 @@
}
}
-
/*
* Worker thread: main event loop
*/
@@ -289,10 +372,14 @@
* all threads have finished initializing.
*/
- pthread_mutex_lock(&init_lock);
- init_count++;
- pthread_cond_signal(&init_cond);
- pthread_mutex_unlock(&init_lock);
+ /* set an indexable thread-specific memory item for the lock type.
+ * this could be unnecessary if we pass the conn *c struct through
+ * all item_lock calls...
+ */
+ me->item_lock_type = ITEM_LOCK_GRANULAR;
+ pthread_setspecific(item_lock_type_key, &me->item_lock_type);
+
+ register_thread_initialized();
event_base_loop(me->base, 0);
return NULL;
@@ -312,6 +399,8 @@
if (settings.verbose > 0)
fprintf(stderr, "Can't read from libevent pipe\n");
+ switch (buf[0]) {
+ case 'c':
item = cq_pop(me->new_conn_queue);
if (NULL != item) {
@@ -333,6 +422,17 @@
}
cqi_free(item);
}
+ break;
+ /* we were told to flip the lock type and report in */
+ case 'l':
+ me->item_lock_type = ITEM_LOCK_GRANULAR;
+ register_thread_initialized();
+ break;
+ case 'g':
+ me->item_lock_type = ITEM_LOCK_GLOBAL;
+ register_thread_initialized();
+ break;
+ }
}
/* Which thread we assigned a connection to most recently. */
@@ -346,6 +446,7 @@
void dispatch_conn_new(int sfd, enum conn_states init_state, int event_flags,
int read_buffer_size, enum network_transport transport) {
CQ_ITEM *item = cqi_new();
+ char buf[1];
int tid = (last_thread + 1) % settings.num_threads;
LIBEVENT_THREAD *thread = threads + tid;
@@ -361,7 +462,8 @@
cq_push(thread->new_conn_queue, item);
MEMCACHED_CONN_DISPATCH(sfd, thread->thread_id);
- if (write(thread->notify_send_fd, "", 1) != 1) {
+ buf[0] = 'c';
+ if (write(thread->notify_send_fd, buf, 1) != 1) {
perror("Writing to thread notify pipe");
}
}
@@ -381,7 +483,7 @@
item *item_alloc(char *key, size_t nkey, int flags, rel_time_t exptime, int nbytes) {
item *it;
/* do_item_alloc handles its own locks */
- it = do_item_alloc(key, nkey, flags, exptime, nbytes);
+ it = do_item_alloc(key, nkey, flags, exptime, nbytes, 0);
return it;
}
@@ -529,6 +631,12 @@
mutex_unlock(&cache_lock);
}
+void item_stats_totals(ADD_STAT add_stats, void *c) {
+ mutex_lock(&cache_lock);
+ do_item_stats_totals(add_stats, c);
+ mutex_unlock(&cache_lock);
+}
+
/*
* Dumps a list of objects of each size in 32-byte increments
*/
@@ -686,8 +794,7 @@
power = 13;
}
- item_lock_count = ((unsigned long int)1 << (power));
- item_lock_mask = item_lock_count - 1;
+ item_lock_count = hashsize(power);
item_locks = calloc(item_lock_count, sizeof(pthread_mutex_t));
if (! item_locks) {
@@ -697,6 +804,8 @@
for (i = 0; i < item_lock_count; i++) {
pthread_mutex_init(&item_locks[i], NULL);
}
+ pthread_key_create(&item_lock_type_key, NULL);
+ pthread_mutex_init(&item_global_lock, NULL);
threads = calloc(nthreads, sizeof(LIBEVENT_THREAD));
if (! threads) {
@@ -729,9 +838,7 @@
/* Wait for all the threads to set themselves up before returning. */
pthread_mutex_lock(&init_lock);
- while (init_count < nthreads) {
- pthread_cond_wait(&init_cond, &init_lock);
- }
+ wait_for_thread_registration(nthreads);
pthread_mutex_unlock(&init_lock);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memcached-1.4.14/version.m4 new/memcached-1.4.15/version.m4
--- old/memcached-1.4.14/version.m4 2012-07-30 22:56:56.000000000 +0200
+++ new/memcached-1.4.15/version.m4 2012-09-04 02:12:59.000000000 +0200
@@ -1 +1 @@
-m4_define([VERSION_NUMBER], [1.4.14])
+m4_define([VERSION_NUMBER], [1.4.15])
++++++ memcached-1.4.5.dif ++++++
--- /var/tmp/diff_new_pack.Eg19fT/_old 2012-11-12 07:04:20.000000000 +0100
+++ /var/tmp/diff_new_pack.Eg19fT/_new 2012-11-12 07:04:20.000000000 +0100
@@ -1,6 +1,8 @@
---- memcached.c.orig 2012-04-02 20:24:27.715193171 -0400
-+++ memcached.c 2012-04-02 20:27:08.442183805 -0400
-@@ -2498,15 +2498,19 @@
+Index: memcached.c
+===================================================================
+--- memcached.c.orig
++++ memcached.c
+@@ -2498,15 +2498,19 @@ void append_stat(const char *name, ADD_S
inline static void process_stats_detail(conn *c, const char *command) {
assert(c != NULL);
++++++ memcached-autofoo.patch ++++++
--- /var/tmp/diff_new_pack.Eg19fT/_old 2012-11-12 07:04:20.000000000 +0100
+++ /var/tmp/diff_new_pack.Eg19fT/_new 2012-11-12 07:04:20.000000000 +0100
@@ -1,6 +1,8 @@
+Index: configure.ac
+===================================================================
--- configure.ac.orig
+++ configure.ac
-@@ -1,59 +1,15 @@
+@@ -1,61 +1,15 @@
-AC_PREREQ(2.52)
+AC_PREREQ([2.60])
m4_include([version.m4])
@@ -55,11 +57,13 @@
-])
-
-DETECT_SUNCC([CFLAGS="-mt $CFLAGS"], [])
+-AS_IF([test "$ICC" = "yes" -o "$GCC" = "yes"],
+- [CFLAGS="$CFLAGS -pthread"])
-
-if test "$ICC" = "no"; then
- AC_PROG_CC_C99
-fi
-+AM_INIT_AUTOMAKE([foreign -Wall -Wno-portability tar-pax no-dist-gzip dist-xz subdir-objects])
++AM_INIT_AUTOMAKE([foreign -Wall -Wno-portability tar-pax subdir-objects])
+AC_CONFIG_HEADERS([config.h])
+AC_PROG_CC_STDC
@@ -68,7 +72,7 @@
AM_PROG_CC_C_O
AC_PROG_INSTALL
-@@ -76,14 +32,11 @@ AC_DEFUN([AC_C_DETECT_SASL_CB_GETCONF],
+@@ -78,14 +32,11 @@ AC_DEFUN([AC_C_DETECT_SASL_CB_GETCONF],
[
AC_CACHE_CHECK([for SASL_CB_GETCONF],
[ac_cv_c_sasl_cb_getconf],
@@ -86,7 +90,7 @@
])
AS_IF([test "$ac_cv_c_sasl_cb_getconf" = "yes"],
[AC_DEFINE([HAVE_SASL_CB_GETCONF], 1,
-@@ -170,23 +123,6 @@ fi
+@@ -168,23 +119,6 @@ fi
AC_SUBST(PROFILER_FLAGS)
@@ -110,7 +114,7 @@
# Issue 213: Search for clock_gettime to help people linking
# with a static version of libevent
AC_SEARCH_LIBS(clock_gettime, rt)
-@@ -195,91 +131,7 @@ AC_SEARCH_LIBS(clock_gettime, rt)
+@@ -193,91 +127,7 @@ AC_SEARCH_LIBS(clock_gettime, rt)
AC_SEARCH_LIBS(socket, socket)
AC_SEARCH_LIBS(gethostbyname, nsl)
@@ -203,7 +207,7 @@
dnl ----------------------------------------------------------------------------
-@@ -308,14 +160,14 @@ dnl ************************************
+@@ -306,14 +156,14 @@ dnl ************************************
AC_DEFUN([AC_HAVE_SASL_CALLBACK_FT],
[AC_CACHE_CHECK(for sasl_callback_ft, ac_cv_has_sasl_callback_ft,
[
@@ -221,7 +225,7 @@
ac_cv_has_sasl_callback_ft=yes
],[
ac_cv_has_sasl_callback_ft=no
-@@ -337,18 +189,15 @@ AC_DEFUN([AC_C_DETECT_UINT64_SUPPORT],
+@@ -335,18 +185,15 @@ AC_DEFUN([AC_C_DETECT_UINT64_SUPPORT],
[
AC_CACHE_CHECK([for print macros for integers (C99 section 7.8.1)],
[ac_cv_c_uint64_support],
@@ -243,7 +247,7 @@
])
])
-@@ -367,12 +216,12 @@ dnl Check if the type socklen_t is defin
+@@ -365,12 +212,12 @@ dnl Check if the type socklen_t is defin
AC_DEFUN([AC_C_SOCKLEN_T],
[AC_CACHE_CHECK(for socklen_t, ac_cv_c_socklen_t,
[
@@ -259,7 +263,7 @@
ac_cv_c_socklen_t=yes
],[
ac_cv_c_socklen_t=no
-@@ -411,35 +260,6 @@ fi
+@@ -409,35 +256,6 @@ fi
AC_C_ENDIAN
@@ -295,7 +299,7 @@
AC_CHECK_FUNCS(mlockall)
AC_CHECK_FUNCS(getpagesizes)
-@@ -486,13 +306,13 @@ dnl These were added in 4.1.2, but 32bit
+@@ -484,13 +302,13 @@ dnl These were added in 4.1.2, but 32bit
dnl lacks testable defines.
have_gcc_atomics=no
AC_MSG_CHECKING(for GCC atomics)
@@ -312,7 +316,7 @@
AC_MSG_RESULT($have_gcc_atomics)
dnl Check for the requirements for running memcached with less privileges
-@@ -529,29 +349,5 @@ AM_CONDITIONAL([BUILD_SPECIFICATIONS],
+@@ -527,29 +345,5 @@ AM_CONDITIONAL([BUILD_SPECIFICATIONS],
[test "x$enable_docs" != "xno" -a "x$XML2RFC" != "xno" -a "x$XSLTPROC" != "xno"])
@@ -342,6 +346,8 @@
-
AC_CONFIG_FILES(Makefile doc/Makefile)
AC_OUTPUT
+Index: Makefile.am
+===================================================================
--- Makefile.am.orig
+++ Makefile.am
@@ -1,3 +1,6 @@
++++++ memcached-use-endian_h.patch ++++++
--- /var/tmp/diff_new_pack.Eg19fT/_old 2012-11-12 07:04:20.000000000 +0100
+++ /var/tmp/diff_new_pack.Eg19fT/_new 2012-11-12 07:04:20.000000000 +0100
@@ -1,3 +1,5 @@
+Index: util.c
+===================================================================
--- util.c.orig
+++ util.c
@@ -115,30 +115,3 @@ void vperror(const char *fmt, ...) {
@@ -31,6 +33,8 @@
-}
-#endif
-
+Index: util.h
+===================================================================
--- util.h.orig
+++ util.h
@@ -7,15 +7,16 @@
--
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 mariadb for openSUSE:Factory checked in at 2012-11-12 07:04:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mariadb (Old)
and /work/SRC/openSUSE:Factory/.mariadb.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mariadb", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/mariadb/mariadb.changes 2012-10-06 18:39:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mariadb.new/mariadb.changes 2012-11-12 07:04:08.000000000 +0100
@@ -1,0 +2,11 @@
+Wed Oct 31 22:31:34 CET 2012 - mhrusecky(a)suse.cz
+
+- updated to MariaDB 5.5.28
+ * Release notes:
+ http://kb.askmonty.org/v/mariadb-5527-release-notes
+ http://kb.askmonty.org/v/mariadb-5528-release-notes
+ * Changelog:
+ http://kb.askmonty.org/v/mariadb-5527-changelog
+ http://kb.askmonty.org/v/mariadb-5528-changelog
+
+-------------------------------------------------------------------
Old:
----
mariadb-5.5.25.tar.bz2
New:
----
mariadb-5.5.28.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mariadb.spec ++++++
--- /var/tmp/diff_new_pack.iGX3DF/_old 2012-11-12 07:04:10.000000000 +0100
+++ /var/tmp/diff_new_pack.iGX3DF/_new 2012-11-12 07:04:10.000000000 +0100
@@ -35,9 +35,9 @@
Summary: Server part of MariaDB
License: SUSE-GPL-2.0-with-FLOSS-exception
Group: Productivity/Databases/Servers
-Version: 5.5.25
-Release: 0
-%define srv_vers 5.5.25
+Version: 5.5.28
+Release: 1
+%define srv_vers 5.5.28
Url: http://www.mariab.org
Source: mariadb-%{version}.tar.bz2
Source2: baselibs.conf
@@ -83,11 +83,10 @@
Requires: logrotate
%endif
# required by rcmysql
-Requires: %{name}-client
+Requires: %{name}-client perl-base
Requires: %{name}-errormessages = %version
-Requires: perl-base
-Provides: mysql = %{srv_vers}
Provides: mysql-Max = %{srv_vers}
+Provides: mysql = %{srv_vers}
%if 0%{?use_extra_provides} > 0
Provides: %{extra_provides} = %{version}
Obsoletes: %{extra_provides} < %{version}
@@ -111,12 +110,13 @@
# mysql-devel was last used in openSUSE 10.2
Provides: mysql-devel = %srv_vers-%release
Obsoletes: mysql-devel < %srv_vers
-Requires: glibc-devel
Requires: libmysqlclient18 = %version
Requires: libmysqlclient_r18 = %version
+Requires: glibc-devel
Requires: openssl-devel
Requires: zlib-devel
Summary: MariaDB development header files and libraries
+License: SUSE-GPL-2.0-with-FLOSS-exception
Group: Development/Libraries/C and C++
%description -n libmysqlclient-devel
@@ -124,6 +124,7 @@
necessary to develop client applications for MariaDB.
%package -n libmysqld18
+License: SUSE-GPL-2.0-with-FLOSS-exception
Summary: MariaDB embedded server development files
Group: Development/Libraries/C and C++
@@ -132,12 +133,13 @@
for developing applications that embed the MariaDB.
%package -n libmysqld-devel
+License: SUSE-GPL-2.0-with-FLOSS-exception
Summary: MariaDB embedded server development files
-Group: Development/Libraries/C and C++
# the headers files are the shared
Requires: libmysqlclient-devel = %version
-Requires: libmysqld18 = %version
Requires: tcpd-devel
+Requires: libmysqld18 = %version
+Group: Development/Libraries/C and C++
%description -n libmysqld-devel
This package contains the development header files and libraries
@@ -146,6 +148,7 @@
%package -n libmariadbclient18
Summary: Shared Libraries for MariaDB
+License: SUSE-GPL-2.0-with-FLOSS-exception
Group: Development/Libraries/Other
%description -n libmariadbclient18
@@ -154,6 +157,7 @@
%package -n libmariadbclient_r18
Summary: Shared Libraries for MariaDB
+License: SUSE-GPL-2.0-with-FLOSS-exception
Group: Development/Libraries/Other
%description -n libmariadbclient_r18
@@ -186,8 +190,7 @@
server daemon as well as the embedded server
%package bench
-Requires: %{name}-client
-Requires: perl-DBD-mysql
+Requires: %{name}-client perl-DBD-mysql
Summary: Benchmarks for MariaDB
Group: Productivity/Databases/Tools
Provides: mysql-bench = %{srv_vers}
@@ -211,8 +214,8 @@
Summary: MariaDB with debug options turned on
Group: Productivity/Databases/Servers
Requires: %{name} = %{version}
-Provides: %{name}-debug = %{srv_vers}
Provides: mysql-debug = %{srv_vers}
+Provides: %{name}-debug = %{srv_vers}
%if 0%{?use_extra_provides} > 0
Provides: %{extra_provides}-debug-verion = %{version}
Obsoletes: %{extra_provides}-debug-version < %{version}
@@ -233,10 +236,10 @@
Summary: Testsuite for MariaDB
Group: Productivity/Databases/Servers
Requires: %{name} = %{version}
-Requires: %{name}-bench = %{version}
Requires: %{name}-client = %{version}
-Requires: %{name}-tools = %{version}
Requires: perl-DBD-mysql
+Requires: %{name}-tools = %{version}
+Requires: %{name}-bench = %{version}
Provides: mysql-test = %{srv_vers}
%if 0%{?use_extra_provides} > 0
Provides: %{extra_provides}-test = %{version}
++++++ configuration-tweaks.tar.bz2 ++++++
++++++ mariadb-5.5.25.tar.bz2 -> mariadb-5.5.28.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/mariadb/mariadb-5.5.25.tar.bz2 /work/SRC/openSUSE:Factory/.mariadb.new/mariadb-5.5.28.tar.bz2 differ: char 11, line 1
++++++ mysql-patches.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mariadb-5.2.6-install_db-quiet.patch new/mysql-patches/mysql-patches/mariadb-5.2.6-install_db-quiet.patch
--- old/mysql-patches/mysql-patches/mariadb-5.2.6-install_db-quiet.patch 2012-06-02 20:28:21.000000000 +0200
+++ new/mysql-patches/mysql-patches/mariadb-5.2.6-install_db-quiet.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-PATCH-P0-FEATURE-SUSE: Use better comments in install_db
-
-We ship init script so we don't need to warn user to install one and we also
-have a testsuite in separate packege.
-
-Maintainer: Michal Hrusecky <Michal.Hrusecky(a)opensuse.org>
-
-Index: scripts/mysql_install_db.sh
-===================================================================
---- scripts/mysql_install_db.sh.orig
-+++ scripts/mysql_install_db.sh
-@@ -466,9 +466,10 @@ fi
- # the screen.
- if test "$cross_bootstrap" -eq 0 && test -z "$srcdir"
- then
-- s_echo
-- s_echo "To start mysqld at boot time you have to copy"
-- s_echo "support-files/mysql.server to the right place for your system"
-+# Output disabled, since the SUSE RPM comes with an init script installed
-+# s_echo
-+# s_echo "To start mysqld at boot time you have to copy"
-+# s_echo "support-files/mysql.server to the right place for your system"
-
- echo
- echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !"
-@@ -490,10 +491,9 @@ then
- then
- echo
- echo "You can start the MariaDB daemon with:"
-- echo "cd $basedir ; $bindir/mysqld_safe --datadir=$ldata"
-+ echo "rcmysql start"
- echo
-- echo "You can test the MariaDB daemon with mysql-test-run.pl"
-- echo "cd $basedir/mysql-test ; perl mysql-test-run.pl"
-+ echo "You can test the MariaDB daemon with mariadb-test package"
- fi
-
- echo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mariadb-5.5.20-group.patch new/mysql-patches/mysql-patches/mariadb-5.5.20-group.patch
--- old/mysql-patches/mysql-patches/mariadb-5.5.20-group.patch 2012-06-02 20:28:21.000000000 +0200
+++ new/mysql-patches/mysql-patches/mariadb-5.5.20-group.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,148 +0,0 @@
-PATCH-P0-FEATURE-UPSTREAM: Adds group option
-
-This patch let's you specify not only user to use but also group that MySQL
-should use.
-
-Maintainer: Michal Hrusecky <mhrusecky(a)suse.cz>
-
-Index: scripts/mysqld_safe.sh
-===================================================================
---- scripts/mysqld_safe.sh.orig
-+++ scripts/mysqld_safe.sh
-@@ -23,6 +23,7 @@ logging=init
- want_syslog=0
- syslog_tag=
- user='@MYSQLD_USER@'
-+group='@MYSQLD_GROUP@'
- pid_file=
- err_log=
-
-@@ -176,6 +177,7 @@ parse_arguments() {
- --pid-file=*) pid_file="$val" ;;
- --plugin-dir=*) PLUGIN_DIR="$val" ;;
- --user=*) user="$val"; SET_USER=1 ;;
-+ --group=*) group="$val"; SET_USER=1 ;;
- --log-basename=*|--hostname=*|--loose-log-basename=*)
- pid_file="$val.pid";
- err_log="$val.err";
-@@ -567,11 +569,17 @@ then
- if test "$user" != "root" -o $SET_USER = 1
- then
- USER_OPTION="--user=$user"
-+ GROUP_OPTION="--group=$group"
- fi
- # Change the err log to the right user, if it is in use
- if [ $want_syslog -eq 0 ]; then
- touch "$err_log"
-- chown $user "$err_log"
-+ if [ "$user" -a "$group" ]; then
-+ chown $user:$group $err_log
-+ else
-+ [ "$user" ] && chown $user $err_log
-+ [ "$group" ] && chgrp $group $err_log
-+ fi
- fi
- if test -n "$open_files"
- then
-@@ -594,7 +602,12 @@ then
- echo "Fatal error Can't create database directory '$mysql_unix_port'"
- exit 1
- fi
-- chown $user $mysql_unix_port_dir
-+ if [ "$user" -a "$group" ]; then
-+ chown $user:$group $mysql_unix_port_dir
-+ else
-+ [ "$user" ] && chown $user $mysql_unix_port_dir
-+ [ "$group" ] && chgrp $group $mysql_unix_port_dir
-+ fi
- chmod 755 $mysql_unix_port_dir
- fi
-
-Index: scripts/mysql_install_db.sh
-===================================================================
---- scripts/mysql_install_db.sh.orig
-+++ scripts/mysql_install_db.sh
-@@ -30,6 +30,7 @@ args=""
- defaults=""
- mysqld_opt=""
- user=""
-+group=""
-
- force=0
- in_rpm=0
-@@ -72,6 +73,11 @@ Usage: $0 [OPTIONS]
- user. You must be root to use this option. By default
- mysqld runs using your current login name and files and
- directories that it creates will be owned by you.
-+ --group=group_name The login group to use for running mysqld. Files and
-+ directories created by mysqld will be owned by this
-+ group. You must be root to use this option. By default
-+ mysqld runs using your current group and files and
-+ directories that it creates will be owned by you.
-
- All other options are passed to the mysqld program
-
-@@ -119,11 +125,11 @@ parse_arguments()
- --builddir=*) builddir=`parse_arg "$arg"` ;;
- --srcdir=*) srcdir=`parse_arg "$arg"` ;;
- --ldata=*|--datadir=*|--data=*) ldata=`parse_arg "$arg"` ;;
-- --user=*)
- # Note that the user will be passed to mysqld so that it runs
- # as 'user' (crucial e.g. if log-bin=/some_other_path/
- # where a chown of datadir won't help)
-- user=`parse_arg "$arg"` ;;
-+ --user=*) user=`parse_arg "$arg"` ;;
-+ --group=*) group=`parse_arg "$arg"` ;;
- --skip-name-resolve) ip_only=1 ;;
- --verbose) verbose=1 ;; # Obsolete
- --rpm) in_rpm=1 ;;
-@@ -383,7 +389,12 @@ do
- fi
- if test -n "$user"
- then
-- chown $user $dir
-+ if test -z "$group"
-+ then
-+ chown $user $dir
-+ else
-+ chown $user:$group $dir
-+ fi
- if test $? -ne 0
- then
- echo "Cannot change ownership of the database directories to the '$user'"
-@@ -398,6 +409,11 @@ then
- args="$args --user=$user"
- fi
-
-+if test -n "$group"
-+then
-+ args="$args --group=$group"
-+fi
-+
- # When doing a "cross bootstrap" install, no reference to the current
- # host should be added to the system tables. So we filter out any
- # lines which contain the current host name.
-Index: scripts/CMakeLists.txt
-===================================================================
---- scripts/CMakeLists.txt.orig
-+++ scripts/CMakeLists.txt
-@@ -137,6 +137,7 @@ ENDIF()
-
- SET(HOSTNAME "hostname")
- SET(MYSQLD_USER "mysql")
-+SET(MYSQLD_GROUP "mysql")
-
- # Required for mysqlbug until autotools are deprecated, once done remove these
- # and expand default cmake variables
-Index: support-files/CMakeLists.txt
-===================================================================
---- support-files/CMakeLists.txt.orig
-+++ support-files/CMakeLists.txt
-@@ -28,6 +28,7 @@ ELSE()
- SET(CFLAGS ${CMAKE_C_FLAGS})
- SET(CXXFLAGS ${CMAKE_CXX_FLAGS})
- SET(MYSQLD_USER "mysql")
-+ SET(MYSQLD_GROUP "mysql")
- SET(ini_file_extension "cnf")
- SET(HOSTNAME "hostname")
- ENDIF()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mariadb-5.5.28-group.patch new/mysql-patches/mysql-patches/mariadb-5.5.28-group.patch
--- old/mysql-patches/mysql-patches/mariadb-5.5.28-group.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/mysql-patches/mysql-patches/mariadb-5.5.28-group.patch 2012-10-31 09:16:07.000000000 +0100
@@ -0,0 +1,148 @@
+PATCH-P0-FEATURE-UPSTREAM: Adds group option
+
+This patch let's you specify not only user to use but also group that MySQL
+should use.
+
+Maintainer: Michal Hrusecky <mhrusecky(a)suse.cz>
+
+Index: scripts/mysqld_safe.sh
+===================================================================
+--- scripts/mysqld_safe.sh.orig
++++ scripts/mysqld_safe.sh
+@@ -24,6 +24,7 @@ logging=init
+ want_syslog=0
+ syslog_tag=
+ user='@MYSQLD_USER@'
++group='@MYSQLD_GROUP@'
+ pid_file=
+ err_log=
+
+@@ -187,6 +188,7 @@ parse_arguments() {
+ --pid-file=*) pid_file="$val" ;;
+ --plugin-dir=*) PLUGIN_DIR="$val" ;;
+ --user=*) user="$val"; SET_USER=1 ;;
++ --group=*) group="$val"; SET_USER=1 ;;
+ --log-basename=*|--hostname=*|--loose-log-basename=*)
+ pid_file="$val.pid";
+ err_log="$val.err";
+@@ -579,11 +581,17 @@ then
+ if test "$user" != "root" -o $SET_USER = 1
+ then
+ USER_OPTION="--user=$user"
++ GROUP_OPTION="--group=$group"
+ fi
+ # Change the err log to the right user, if it is in use
+ if [ $want_syslog -eq 0 ]; then
+ touch "$err_log"
+- chown $user "$err_log"
++ if [ "$user" -a "$group" ]; then
++ chown $user:$group $err_log
++ else
++ [ "$user" ] && chown $user $err_log
++ [ "$group" ] && chgrp $group $err_log
++ fi
+ fi
+ if test -n "$open_files"
+ then
+@@ -606,7 +614,12 @@ then
+ echo "Fatal error Can't create database directory '$mysql_unix_port'"
+ exit 1
+ fi
+- chown $user $mysql_unix_port_dir
++ if [ "$user" -a "$group" ]; then
++ chown $user:$group $mysql_unix_port_dir
++ else
++ [ "$user" ] && chown $user $mysql_unix_port_dir
++ [ "$group" ] && chgrp $group $mysql_unix_port_dir
++ fi
+ chmod 755 $mysql_unix_port_dir
+ fi
+
+Index: scripts/mysql_install_db.sh
+===================================================================
+--- scripts/mysql_install_db.sh.orig
++++ scripts/mysql_install_db.sh
+@@ -29,6 +29,7 @@ args=""
+ defaults=""
+ mysqld_opt=""
+ user=""
++group=""
+
+ force=0
+ in_rpm=0
+@@ -71,6 +72,11 @@ Usage: $0 [OPTIONS]
+ user. You must be root to use this option. By default
+ mysqld runs using your current login name and files and
+ directories that it creates will be owned by you.
++ --group=group_name The login group to use for running mysqld. Files and
++ directories created by mysqld will be owned by this
++ group. You must be root to use this option. By default
++ mysqld runs using your current group and files and
++ directories that it creates will be owned by you.
+
+ All other options are passed to the mysqld program
+
+@@ -118,11 +124,11 @@ parse_arguments()
+ --builddir=*) builddir=`parse_arg "$arg"` ;;
+ --srcdir=*) srcdir=`parse_arg "$arg"` ;;
+ --ldata=*|--datadir=*|--data=*) ldata=`parse_arg "$arg"` ;;
+- --user=*)
+ # Note that the user will be passed to mysqld so that it runs
+ # as 'user' (crucial e.g. if log-bin=/some_other_path/
+ # where a chown of datadir won't help)
+- user=`parse_arg "$arg"` ;;
++ --user=*) user=`parse_arg "$arg"` ;;
++ --group=*) group=`parse_arg "$arg"` ;;
+ --skip-name-resolve) ip_only=1 ;;
+ --verbose) verbose=1 ;; # Obsolete
+ --rpm) in_rpm=1 ;;
+@@ -385,7 +391,12 @@ do
+ fi
+ if test -n "$user"
+ then
+- chown $user "$dir"
++ if test -z "$group"
++ then
++ chown $user $dir
++ else
++ chown $user:$group $dir
++ fi
+ if test $? -ne 0
+ then
+ echo "Cannot change ownership of the database directories to the '$user'"
+@@ -400,6 +411,11 @@ then
+ args="$args --user=$user"
+ fi
+
++if test -n "$group"
++then
++ args="$args --group=$group"
++fi
++
+ # When doing a "cross bootstrap" install, no reference to the current
+ # host should be added to the system tables. So we filter out any
+ # lines which contain the current host name.
+Index: scripts/CMakeLists.txt
+===================================================================
+--- scripts/CMakeLists.txt.orig
++++ scripts/CMakeLists.txt
+@@ -137,6 +137,7 @@ ENDIF()
+
+ SET(HOSTNAME "hostname")
+ SET(MYSQLD_USER "mysql")
++SET(MYSQLD_GROUP "mysql")
+
+ # Required for mysqlbug until autotools are deprecated, once done remove these
+ # and expand default cmake variables
+Index: support-files/CMakeLists.txt
+===================================================================
+--- support-files/CMakeLists.txt.orig
++++ support-files/CMakeLists.txt
+@@ -29,6 +29,7 @@ ELSE()
+ SET(CFLAGS ${CMAKE_C_FLAGS})
+ SET(CXXFLAGS ${CMAKE_CXX_FLAGS})
+ SET(MYSQLD_USER "mysql")
++ SET(MYSQLD_GROUP "mysql")
+ SET(ini_file_extension "cnf")
+ SET(HOSTNAME "hostname")
+ ENDIF()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mariadb-5.5.28-hotcopy.patch new/mysql-patches/mysql-patches/mariadb-5.5.28-hotcopy.patch
--- old/mysql-patches/mysql-patches/mariadb-5.5.28-hotcopy.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/mysql-patches/mysql-patches/mariadb-5.5.28-hotcopy.patch 2012-10-31 08:30:45.000000000 +0100
@@ -0,0 +1,38 @@
+PATCH-P0-FIX-UPSTREAM: Makes hotcopy to ignores log tables
+BUGS: upstream#43594, bnc#525325
+
+If you are running hotcopy, you probably want to ignore all
+log tables.
+
+Maintainer: Michal Hrusecky <Michal.Hrusecky(a)opensuse.org>
+
+Index: scripts/mysqlhotcopy.sh
+===================================================================
+--- scripts/mysqlhotcopy.sh.orig
++++ scripts/mysqlhotcopy.sh
+@@ -843,7 +843,24 @@ sub get_list_of_tables {
+ } || [];
+ warn "Unable to retrieve list of tables in $db: $@" if $@;
+
+- return (map { $_->[0] } @$tables);
++ my @ignore_tables = ();
++
++ # Ignore tables for the mysql database
++ if ($db eq 'mysql') {
++ @ignore_tables = qw(general_log slow_log schema apply_status);
++ }
++
++ my @res = ();
++ if ($#ignore_tables > 1) {
++ my @tmp = (map { $_->[0] } @$tables);
++ for my $t (@tmp) {
++ push(@res, $t) if not exists { map { $_=>1 } @ignore_tables }->{$t};
++ }
++ } else {
++ @res = (map { $_->[0] } @$tables);
++ }
++
++ return @res;
+ }
+
+ sub get_list_of_views {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mariadb-5.5.28-install_db-quiet.patch new/mysql-patches/mysql-patches/mariadb-5.5.28-install_db-quiet.patch
--- old/mysql-patches/mysql-patches/mariadb-5.5.28-install_db-quiet.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/mysql-patches/mysql-patches/mariadb-5.5.28-install_db-quiet.patch 2012-10-31 08:51:14.000000000 +0100
@@ -0,0 +1,38 @@
+PATCH-P0-FEATURE-SUSE: Use better comments in install_db
+
+We ship init script so we don't need to warn user to install one and we also
+have a testsuite in separate packege.
+
+Maintainer: Michal Hrusecky <Michal.Hrusecky(a)opensuse.org>
+
+Index: scripts/mysql_install_db.sh
+===================================================================
+--- scripts/mysql_install_db.sh.orig
++++ scripts/mysql_install_db.sh
+@@ -473,9 +473,10 @@ fi
+ # the screen.
+ if test "$cross_bootstrap" -eq 0 && test -z "$srcdir"
+ then
+- s_echo
+- s_echo "To start mysqld at boot time you have to copy"
+- s_echo "support-files/mysql.server to the right place for your system"
++# Output disabled, since the SUSE RPM comes with an init script installed
++# s_echo
++# s_echo "To start mysqld at boot time you have to copy"
++# s_echo "support-files/mysql.server to the right place for your system"
+
+ echo
+ echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !"
+@@ -498,10 +499,9 @@ then
+ then
+ echo
+ echo "You can start the MariaDB daemon with:"
+- echo "cd '$basedir' ; $bindir/mysqld_safe --datadir='$ldata'"
++ echo "rcmysql start"
+ echo
+- echo "You can test the MariaDB daemon with mysql-test-run.pl"
+- echo "cd '$basedir/mysql-test' ; perl mysql-test-run.pl"
++ echo "You can test the MariaDB daemon with mariadb-test package"
+ fi
+
+ echo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysql-patches/mysql-patches/mysql-community-server-5.1.36-hotcopy.patch new/mysql-patches/mysql-patches/mysql-community-server-5.1.36-hotcopy.patch
--- old/mysql-patches/mysql-patches/mysql-community-server-5.1.36-hotcopy.patch 2012-06-02 20:28:21.000000000 +0200
+++ new/mysql-patches/mysql-patches/mysql-community-server-5.1.36-hotcopy.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-PATCH-P0-FIX-UPSTREAM: Makes hotcopy to ignores log tables
-BUGS: upstream#43594, bnc#525325
-
-If you are running hotcopy, you probably want to ignore all
-log tables.
-
-Maintainer: Michal Hrusecky <Michal.Hrusecky(a)opensuse.org>
-
-=== modified file 'scripts/mysqlhotcopy.sh'
---- scripts/mysqlhotcopy.sh 2008-03-07 20:45:40 +0000
-+++ scripts/mysqlhotcopy.sh 2009-03-12 13:06:42 +0000
-@@ -777,7 +777,24 @@ sub get_list_of_tables {
- } || [];
- warn "Unable to retrieve list of tables in $db: $@" if $@;
-
-- return (map { $_->[0] } @$tables);
-+ my @ignore_tables = ();
-+
-+ # Ignore tables for the mysql database
-+ if ($db eq 'mysql') {
-+ @ignore_tables = qw(general_log slow_log schema apply_status);
-+ }
-+
-+ my @res = ();
-+ if ($#ignore_tables > 1) {
-+ my @tmp = (map { $_->[0] } @$tables);
-+ for my $t (@tmp) {
-+ push(@res, $t) if not exists { map { $_=>1 } @ignore_tables }->{$t};
-+ }
-+ } else {
-+ @res = (map { $_->[0] } @$tables);
-+ }
-+
-+ return @res;
- }
-
- sub quote_names {
-
++++++ series ++++++
--- /var/tmp/diff_new_pack.iGX3DF/_old 2012-11-12 07:04:10.000000000 +0100
+++ /var/tmp/diff_new_pack.iGX3DF/_new 2012-11-12 07:04:10.000000000 +0100
@@ -1,12 +1,12 @@
-mysql-community-server-5.1.36-hotcopy.patch
+mariadb-5.5.28-hotcopy.patch
mysql-community-server-5.1.45-multi-configuration.patch
mysql-community-server-5.1.46-logrotate.patch
mariadb-5.1.50-strncat-overflow.patch
-mariadb-5.2.6-install_db-quiet.patch
+mariadb-5.5.28-install_db-quiet.patch
mysql-community-server-5.1.51-mysql_config.patch
mariadb-5.5.25-mysqld_multi-features.patch
mariadb-5.1.50-upgrade-exit-status.patch
mariadb-5.2.3-cnf.patch
mysql-community-server-5.5.6-safe-process-in-bin.patch
-mariadb-5.5.20-group.patch
+mariadb-5.5.28-group.patch
mariadb-5.5.24-ppc64-libdir.patch
--
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 lapack for openSUSE:Factory checked in at 2012-11-12 07:03:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lapack (Old)
and /work/SRC/openSUSE:Factory/.lapack.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lapack", Maintainer is "RGuenther(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/lapack/lapack.changes 2012-07-30 20:33:35.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.lapack.new/lapack.changes 2012-11-12 07:03:51.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Nov 6 10:10:53 UTC 2012 - burnus(a)net-b.de
+
+- Update to 3.4.2
+ * Bug fixes
+
+-------------------------------------------------------------------
Old:
----
lapack-3.4.1.tgz
New:
----
lapack-3.4.2.tgz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lapack.spec ++++++
--- /var/tmp/diff_new_pack.iqFia1/_old 2012-11-12 07:03:53.000000000 +0100
+++ /var/tmp/diff_new_pack.iqFia1/_new 2012-11-12 07:03:53.000000000 +0100
@@ -17,7 +17,7 @@
Name: lapack
-Version: 3.4.1
+Version: 3.4.2
Release: 0
Summary: Linear Algebra Package
License: BSD-3-Clause
++++++ lapack-3.4.1.tgz -> lapack-3.4.2.tgz ++++++
++++ 35958 lines of diff (skipped)
--
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 kiwi for openSUSE:Factory checked in at 2012-11-12 07:03:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kiwi (Old)
and /work/SRC/openSUSE:Factory/.kiwi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kiwi", Maintainer is "ms(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kiwi/kiwi.changes 2012-11-02 17:37:26.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kiwi.new/kiwi.changes 2012-11-12 07:03:45.000000000 +0100
@@ -1,0 +2,170 @@
+Fri Nov 9 15:57:34 CET 2012 - ms(a)suse.de
+
+- v5.04.23 released
+
+-------------------------------------------------------------------
+Fri Nov 9 14:49:28 CET 2012 - ms(a)suse.de
+
+- fixed device name setup in recovery/restore mode. kiwi assumes
+ an overlay setup when a second partition exists but this is not
+ true if the second partition is the swap space. For the initial
+ boot of an appliance the device setup always works but when
+ oemboot has created new partitions e.g swap space and the kiwi
+ initrd runs again in recovery/restore mode the device setup
+ might be broken because of another partition layout compared
+ to the initial state
+
+-------------------------------------------------------------------
+Fri Nov 9 11:22:17 CET 2012 - ms(a)suse.de
+
+- added tar to 12.2 JeOS
+
+-------------------------------------------------------------------
+Thu Nov 8 17:52:37 CET 2012 - ms(a)suse.de
+
+- add support for grub2 based recovery system
+
+-------------------------------------------------------------------
+Thu Nov 8 17:05:20 CET 2012 - ms(a)suse.de
+
+- fixed indention of linux command in grub.cfg
+
+-------------------------------------------------------------------
+Thu Nov 8 14:41:06 CET 2012 - rjschwei(a)suse.de
+
+- fix the automatic alias generation to remove '$' from the
+ name, this allows users to use SMT repos without having to
+ specify an alias in the config.xml file
+
+-------------------------------------------------------------------
+Thu Nov 8 12:46:58 CET 2012 - ms(a)suse.de
+
+- use contents of $bootPartitionFSType to check symlink capabilities
+
+-------------------------------------------------------------------
+Thu Nov 8 12:22:46 CET 2012 - ms(a)suse.de
+
+- fixed cleanup code in KIWILinuxRC after mkinitrd was called
+ in case of arm images not all obsolete data was removed
+- pass boot filesystem type as first argument to the pre
+ bootloader install script and handle it in the arm JeOS
+ template in uboot-image-setup
+- export bootPartitionFSType in KIWILinuxRC and handle it
+ in the hook script kiwi-hooks/setupUBoot.sh
+
+-------------------------------------------------------------------
+Thu Nov 8 10:27:12 CET 2012 - ms(a)suse.de
+
+- DB: rebuild schema documentation
+
+-------------------------------------------------------------------
+Thu Nov 8 09:31:45 CET 2012 - ms(a)suse.de
+
+- fixed nic interface runtime check, the value '0' is valid
+ for the index of a VMware interface definition, thus it's
+ wrong to do a true/false check here.
+
+-------------------------------------------------------------------
+Thu Nov 8 09:18:58 CET 2012 - ms(a)suse.de
+
+- fixed use of uninitialized values in the code now reported
+ due to the use of warnings at runtime
+
+-------------------------------------------------------------------
+Wed Nov 7 16:12:29 CET 2012 - ms(a)suse.de
+
+- make sure var/log/ConsoleKit exists when booting the first time
+
+-------------------------------------------------------------------
+Wed Nov 7 15:57:14 CET 2012 - ms(a)suse.de
+
+- fixed cleanKernelFSMount() to use the correct root path
+
+-------------------------------------------------------------------
+Wed Nov 7 14:37:30 CET 2012 - ms(a)suse.de
+
+- added support for reading /etc/kiwi/repoalias file in
+ KIWIURL.pm. The repoalias definition can be used to
+ mirror a repo path to another location (bnc #788536)
+
+-------------------------------------------------------------------
+Wed Nov 7 14:13:06 CET 2012 - ms(a)suse.de
+
+- SuSEconfig is gone, call it only if it exists
+
+-------------------------------------------------------------------
+Tue Nov 6 17:25:15 CET 2012 - ms(a)suse.de
+
+- fixed schema for bootfilesystem attribute, attribute was not
+ set into the attribute list in the RelaxNG schema
+
+-------------------------------------------------------------------
+Tue Nov 6 16:36:38 CET 2012 - ms(a)suse.de
+
+- added support for optional type attribute 'bootfilesystem'
+ which can be one of ext2,ext3,fat16 or fat32 (bnc #788374)
+- added unit test for new attribute
+
+-------------------------------------------------------------------
+Tue Nov 6 16:30:48 CET 2012 - ms(a)suse.de
+
+- update pre-commit hook
+
+-------------------------------------------------------------------
+Tue Nov 6 16:30:01 CET 2012 - ms(a)suse.de
+
+- fixed use of uninitialized values in the code now reported
+ due to the use of warnings at runtime
+
+-------------------------------------------------------------------
+Tue Nov 6 15:29:27 CET 2012 - ms(a)suse.de
+
+- removed obsolete and unmaintained dotty graph file
+
+-------------------------------------------------------------------
+Tue Nov 6 12:34:46 CET 2012 - rjschwei(a)suse.de
+
+- remove the statistics colector and the generated data
+ we never got around to finish the integration of the data collector
+ and it is not used. At this point it appears that the code will just
+ not be used in the long run, thus it is getting removed
+
+-------------------------------------------------------------------
+Tue Nov 6 12:24:08 CET 2012 - ms(a)suse.de
+
+- fixed use of uninitialized values in the code now reported
+ due to the use of warnings at runtime
+
+-------------------------------------------------------------------
+Tue Nov 6 11:40:25 CET 2012 - ms(a)suse.de
+
+- fixed openSUSE product building
+
+-------------------------------------------------------------------
+Mon Nov 5 17:25:21 CET 2012 - ms(a)suse.de
+
+- fixed handling of special characters in grub2 menuentry setup
+ single quotes are required for custom names (bnc #786262)
+
+-------------------------------------------------------------------
+Mon Nov 5 16:29:38 CET 2012 - ms(a)suse.de
+
+- fixed spec file require for kiwi-tools. kiwi should require
+ the same or newer kiwi-tools version compared to the base
+ kiwi package
+
+-------------------------------------------------------------------
+Mon Nov 5 11:59:16 CET 2012 - ms(a)suse.de
+
+- put tests/unit/*.t to perl critic level 4
+- put tests/qa/stats/collector.pl to perl critic level 4
+- update pre-commit hook
+
+-------------------------------------------------------------------
+Sat Nov 3 07:11:32 CET 2012 - rjschwei(a)suse.de
+
+- clean most test unit driver files to perlcritic level 2
+ The remainaing driver files must be cleaned after we have
+ migrated the code to use the new internal data structure
+
+-------------------------------------------------------------------
Old:
----
fix-products.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kiwi.spec ++++++
--- /var/tmp/diff_new_pack.e9hzk8/_old 2012-11-12 07:03:49.000000000 +0100
+++ /var/tmp/diff_new_pack.e9hzk8/_new 2012-11-12 07:03:49.000000000 +0100
@@ -21,7 +21,7 @@
Summary: openSUSE - KIWI Image System
License: GPL-2.0
Group: System/Management
-Version: 5.04.22
+Version: 5.04.23
Release: 0
# requirements to build packages
BuildRequires: gcc-c++
@@ -55,7 +55,7 @@
# requirements to run kiwi
Requires: checkmedia
Requires: coreutils
-Requires: kiwi-tools
+Requires: kiwi-tools >= %{version}
Requires: libxslt
Requires: perl = %{perl_version}
Requires: perl-Config-IniFiles
@@ -99,7 +99,6 @@
Source2: %{name}-docu.tar.bz2
Source3: %{name}-repo.tar.bz2
Source4: %{name}-find-boot-requires.sh
-Patch0: fix-products.diff
# build root path
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -434,7 +433,6 @@
%prep
%setup -n %name -a2 -a3
-%patch0 -p1
%build
# empty because of rpmlint warning rpm-buildroot-usage
++++++ kiwi-docu.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/kiwi/kiwi-docu.tar.bz2 /work/SRC/openSUSE:Factory/.kiwi.new/kiwi-docu.tar.bz2 differ: char 11, line 1
++++++ kiwi-repo.tar.bz2 ++++++
++++++ kiwi.tar.bz2 ++++++
++++ 4057 lines of diff (skipped)
--
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 kdbg for openSUSE:Factory checked in at 2012-11-12 07:03:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdbg (Old)
and /work/SRC/openSUSE:Factory/.kdbg.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdbg", Maintainer is "kde-maintainers(a)suse.de"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kdbg/kdbg.changes 2012-04-12 09:29:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kdbg.new/kdbg.changes 2012-11-12 07:03:24.000000000 +0100
@@ -1,0 +2,10 @@
+Wed Nov 7 13:01:48 UTC 2012 - wbauer(a)tmo.at
+
+- Update to 2.5.2
+ - Support for GDB 7.5.
+ - More of GDB's output is recognized in some corner cases
+ - The thread list parser introduced in 2.5.1 sometimes stripped two letters
+ from the function name.
+- patched to ignore messages about debuginfo-packages from openSUSE's gdb
+
+-------------------------------------------------------------------
Old:
----
kdbg-2.5.1.tar.gz
New:
----
kdbg-2.5.2.tar.gz
opensuse-gdb.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdbg.spec ++++++
--- /var/tmp/diff_new_pack.OWalXs/_old 2012-11-12 07:03:25.000000000 +0100
+++ /var/tmp/diff_new_pack.OWalXs/_new 2012-11-12 07:03:25.000000000 +0100
@@ -17,7 +17,7 @@
Name: kdbg
-Version: 2.5.1
+Version: 2.5.2
Release: 0
Summary: Graphical User Interface for GDB
License: GPL-2.0+
@@ -25,6 +25,7 @@
Url: http://www.kdbg.org/
Source0: %{name}-%{version}.tar.gz
Patch1: susepatches.diff
+Patch2: opensuse-gdb.diff
BuildRequires: fdupes
BuildRequires: libkde4-devel
Requires: gdb
@@ -50,6 +51,7 @@
%prep
%setup -q
%patch1 -p1
+%patch2 -p1
%build
%cmake_kde4 -d build
@@ -77,7 +79,7 @@
%files
%defattr(-,root,root)
-%doc COPYING BUGS ChangeLog-pre-2.2.0 TODO README ReleaseNotes-2.2.0 ReleaseNotes-2.2.1 ReleaseNotes-2.2.2 ReleaseNotes-2.5.0
+%doc COPYING BUGS ChangeLog-pre-2.2.0 TODO README ReleaseNotes-*
%{_kde4_applicationsdir}/kdbg.desktop
%{_kde4_appsdir}/kdbg
%{_kde4_bindir}/kdbg
++++++ kdbg-2.5.1.tar.gz -> kdbg-2.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/CMakeLists.txt new/kdbg-2.5.2/CMakeLists.txt
--- old/kdbg-2.5.1/CMakeLists.txt 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/CMakeLists.txt 2012-08-22 22:00:02.000000000 +0200
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 2.6)
-set(KDBG_VERSION 2.5.1)
+set(KDBG_VERSION 2.5.2)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kdbg/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdbg/version.h)
find_package(KDE4 REQUIRED)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/ReleaseNotes-2.5.2 new/kdbg-2.5.2/ReleaseNotes-2.5.2
--- old/kdbg-2.5.1/ReleaseNotes-2.5.2 1970-01-01 01:00:00.000000000 +0100
+++ new/kdbg-2.5.2/ReleaseNotes-2.5.2 2012-08-22 22:00:02.000000000 +0200
@@ -0,0 +1,14 @@
+KDbg Release Notes for version 2.5.2
+====================================
+
+Changes since 2.5.1
+-------------------
+
+Bug fixes
+
+- Support for GDB 7.5.
+
+- More of GDB's output is recognized in some corner cases
+
+- The thread list parser introduced in 2.5.1 sometimes stripped two letters
+ from the function name.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/gdbdriver.cpp new/kdbg-2.5.2/kdbg/gdbdriver.cpp
--- old/kdbg-2.5.1/kdbg/gdbdriver.cpp 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/gdbdriver.cpp 2012-08-22 22:00:02.000000000 +0200
@@ -688,6 +688,9 @@
static bool parseErrorMessage(const char*& output,
ExprValue*& variable, bool wantErrorValue)
{
+ while (isspace(*output))
+ output++;
+
// skip warnings
while (strncmp(output, "warning:", 8) == 0)
{
@@ -696,6 +699,8 @@
output += strlen(output);
else
output = end+1;
+ while (isspace(*output))
+ output++;
}
if (isErrorExpr(output))
@@ -1099,6 +1104,23 @@
}
}
}
+ /*
+ * There's a bug in gdb where it prints the beginning of the string
+ * continuation and the comma-blank in the wrong order if the new string
+ * begins with an incomplete multi-byte character. For now, let's check
+ * for this in a very narrow condition, particularly, where the next
+ * character is given in octal notation. Example:
+ * 'a' <repeats 20 times>"\240, b"
+ */
+ if (*p == '"' && p[1] == '\\' && isdigit(p[2])) {
+ int i = 3;
+ while (isdigit(p[i]))
+ ++i;
+ if (p[i] == ',' && p[i+1] == ' ') {
+ // just treat everything beginning at the dquote as string
+ goto moreStrings;
+ }
+ }
/* very long strings are followed by `...' */
if (*p == '.' && p[1] == '.' && p[2] == '.') {
p += 3;
@@ -1951,6 +1973,7 @@
// syntax error; bail out
return threads;
}
+ end += 2;
} else {
// In the new format lies crazyness: there is no definitive
// end marker. At best we can guess when the SYSTAG ends.
@@ -1984,8 +2007,8 @@
++end;
}
}
- thr.threadName = QString::fromLatin1(p, end-p);
- p = end+2;
+ thr.threadName = QString::fromLatin1(p, end-p).trimmed();
+ p = end;
/*
* Now follows a standard stack frame. Sometimes, however, gdb
@@ -2165,8 +2188,10 @@
* Lines starting with the following do not indicate errors:
* Using host libthread_db
* (no debugging symbols found)
+ * Reading symbols from
*/
- while (strncmp(output, "Using host libthread_db", 23) == 0 ||
+ while (strncmp(output, "Reading symbols from", 20) == 0 ||
+ strncmp(output, "Using host libthread_db", 23) == 0 ||
strncmp(output, "(no debugging symbols found)", 28) == 0)
{
// this line is good, go to the next one
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/main.cpp new/kdbg-2.5.2/kdbg/main.cpp
--- old/kdbg-2.5.1/kdbg/main.cpp 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/main.cpp 2012-08-22 22:00:02.000000000 +0200
@@ -24,7 +24,7 @@
KDBG_VERSION,
ki18n("A Debugger"),
KAboutData::License_GPL,
- ki18n("(c) 1998-2011 Johannes Sixt"),
+ ki18n("(c) 1998-2012 Johannes Sixt"),
KLocalizedString(), /* any text */
"http://www.kdbg.org/",
"j6t(a)kdbg.org");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/sourcewnd.cpp new/kdbg-2.5.2/kdbg/sourcewnd.cpp
--- old/kdbg-2.5.1/kdbg/sourcewnd.cpp 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/sourcewnd.cpp 2012-08-22 22:00:02.000000000 +0200
@@ -164,8 +164,10 @@
continue;
QRect r = blockBoundingGeometry(block).translated(contentOffset()).toRect();
- if (r.top() > event->rect().bottom() || r.bottom() < event->rect().top())
- continue;
+ if (r.bottom() < event->rect().top())
+ continue; // skip blocks that are higher than the region being updated
+ else if (r.top() > event->rect().bottom())
+ break; // all the following blocks are lower then the region being updated
int row = block.blockNumber();
uchar item = m_lineItems[row];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/testprogs/.gitignore new/kdbg-2.5.2/kdbg/testprogs/.gitignore
--- old/kdbg-2.5.1/kdbg/testprogs/.gitignore 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/testprogs/.gitignore 2012-08-22 22:00:02.000000000 +0200
@@ -1,4 +1,5 @@
anonstruct
+lambda
locals
longdouble
maths
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/testprogs/Makefile new/kdbg-2.5.2/kdbg/testprogs/Makefile
--- old/kdbg-2.5.1/kdbg/testprogs/Makefile 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/testprogs/Makefile 2012-08-22 22:00:02.000000000 +0200
@@ -6,6 +6,7 @@
PROGS = \
anonstruct \
+ lambda \
locals \
longdouble \
maths \
@@ -22,6 +23,9 @@
anonstruct: anonstruct.cpp
g++ -o $@ $(CXXFLAGS) $^
+lambda: lambda.cpp
+ g++ --std=c++0x -o $@ $(CXXFLAGS) $^
+
locals: locals.cpp
g++ -o $@ $(CXXFLAGS) $^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/testprogs/lambda.cpp new/kdbg-2.5.2/kdbg/testprogs/lambda.cpp
--- old/kdbg-2.5.1/kdbg/testprogs/lambda.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/kdbg-2.5.2/kdbg/testprogs/lambda.cpp 2012-08-22 22:00:02.000000000 +0200
@@ -0,0 +1,33 @@
+// test C++11 lambdas
+
+#include <algorithm>
+#include <initializer_list>
+#include <iostream>
+#include <vector>
+
+template<typename T>
+struct X
+{
+ X() = default;
+ X(std::initializer_list<T> l) : m_v(l)
+ {
+ for (auto i = l.begin(); i != l.end(); ++i)
+ {
+ std::cout << *i << std::endl;
+ }
+ }
+ void outmult(int factor)
+ {
+ auto f = [&factor](const T& a) {
+ std::cout << (a*factor) << std::endl;
+ };
+ for_each(m_v.begin(), m_v.end(), f);
+ }
+ std::vector<T> m_v;
+};
+
+int main()
+{
+ X<unsigned> x{ 1, 1, 2, 3, 5, 8 };
+ x.outmult(3);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdbg-2.5.1/kdbg/testprogs/repeats.cpp new/kdbg-2.5.2/kdbg/testprogs/repeats.cpp
--- old/kdbg-2.5.1/kdbg/testprogs/repeats.cpp 2011-10-23 21:34:52.000000000 +0200
+++ new/kdbg-2.5.2/kdbg/testprogs/repeats.cpp 2012-08-22 22:00:02.000000000 +0200
@@ -1,5 +1,6 @@
// test <repeats 30 times> in arrays
+#include <iostream>
#include <qstring.h>
struct Big {
@@ -14,6 +15,16 @@
}
+static void IncompleteCharTest()
+{
+ // this string triggers a bug in gdb's string dumping routine
+ char s1[] = "abbbbbbbbbbbbbbbbbbbb\240ccc";
+ char s2[] = "abbbbbbbbbbbbbbbbbbbb\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240ccc";
+ // this variable should be visible in the Local Variables window
+ int n = 2;
+ std::cout << s1 << s2 << n << std::endl;
+}
+
int main()
{
struct Big big = {{{ 2,}}};
@@ -37,5 +48,6 @@
for (int i = 0; i < 300; i++)
many[i] = i;
+ IncompleteCharTest();
return 0;
}
++++++ opensuse-gdb.diff ++++++
--- a/kdbg/gdbdriver.cpp
+++ b/kdbg/gdbdriver.cpp
@@ -2191,6 +2191,8 @@
* Reading symbols from
*/
while (strncmp(output, "Reading symbols from", 20) == 0 ||
+ strncmp(output, "done.", 5) == 0 ||
+ strncmp(output, "Missing separate debuginfos", 27) == 0 ||
strncmp(output, "Using host libthread_db", 23) == 0 ||
strncmp(output, "(no debugging symbols found)", 28) == 0)
{
--
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 hp-drive-guard for openSUSE:Factory checked in at 2012-11-12 07:03:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hp-drive-guard (Old)
and /work/SRC/openSUSE:Factory/.hp-drive-guard.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hp-drive-guard", Maintainer is "hpj(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/hp-drive-guard/hp-drive-guard.changes 2011-09-23 02:02:55.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.hp-drive-guard.new/hp-drive-guard.changes 2012-11-12 07:03:17.000000000 +0100
@@ -1,0 +2,5 @@
+Fri Nov 9 15:53:46 CET 2012 - tiwai(a)suse.de
+
+- Add systemd unit file
+
+-------------------------------------------------------------------
New:
----
hp-drive-guard.service
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hp-drive-guard.spec ++++++
--- /var/tmp/diff_new_pack.ZdXA9U/_old 2012-11-12 07:03:19.000000000 +0100
+++ /var/tmp/diff_new_pack.ZdXA9U/_new 2012-11-12 07:03:19.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package hp-drive-guard
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 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
@@ -15,11 +15,11 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-# norootforbuild
%define new_polkit (%suse_version >= 1140)
%define use_upower (%suse_version > 1120)
%define use_gtk3 (%suse_version > 1140)
+%define with_systemd (%suse_version > 1140)
%if %{new_polkit}
%define polkitdir %{_datadir}/polkit-1/actions
@@ -28,14 +28,16 @@
%endif
Name: hp-drive-guard
-BuildRequires: fdupes gnome-common intltool
+BuildRequires: fdupes
+BuildRequires: gnome-common
+BuildRequires: intltool
%if %{use_gtk3}
BuildRequires: gtk3-devel
%else
BuildRequires: gtk2-devel
%endif
-BuildRequires: libnotify-devel
BuildRequires: dbus-1-glib-devel
+BuildRequires: libnotify-devel
BuildRequires: libxslt
%if %{new_polkit}
BuildRequires: polkit-devel
@@ -49,12 +51,17 @@
%endif
# BuildRequires: scrollkeeper
BuildRequires: update-desktop-files
-License: GPL-2.0+
-Group: Hardware/Mobile
+%if %{with_systemd}
+BuildRequires: pkgconfig(systemd)
+%{?systemd_requires}
+%endif
Version: 0.3.12
-Release: 8
+Release: 0
Summary: HP DriveGuard for SuSE
+License: GPL-2.0+
+Group: Hardware/Mobile
Source: hp-drive-guard-%{version}.tar.bz2
+Source1: hp-drive-guard.service
Patch1: 0001-Fix-misc-compile-warnings.patch
Patch2: 0002-Fix-build-with-the-new-libnotify.patch
Patch3: use-new-polkit.diff
@@ -106,18 +113,43 @@
%install
%makeinstall
+%if %with_systemd
+mkdir -p $RPM_BUILD_ROOT%{_unitdir}
+install -c -m 0644 %{S:1} $RPM_BUILD_ROOT%{_unitdir}/hp-drive-guard.spec
+%endif
%find_lang %{name}
%fdupes $RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
+%pre
+%if %{with_systemd}
+%service_add_pre hp-drive-guard.service
+%endif
+exit 0
+
+%post
+%{fillup_and_insserv -n hp-drive-guard}
+%if %{with_systemd}
+%service_add_post hp-drive-guard.service
+%endif
+exit 0
+
%preun
%{stop_on_removal hp-drive-guard}
+%if %{with_systemd}
+%service_del_preun hp-drive-guard.service
+%endif
+exit 0
%postun
%{restart_on_update hp-drive-guard}
%insserv_cleanup
+%if %{with_systemd}
+%service_del_postun hp-drive-guard.service
+%endif
+exit 0
%files -f %{name}.lang
%defattr(-,root,root)
@@ -130,5 +162,8 @@
%{_sysconfdir}/dbus-1/system.d/hp-drive-guard-dbus.conf
%{_sysconfdir}/init.d/hp-drive-guard
%{polkitdir}/*
+%if %{with_systemd}
+%{_unitdir}/hp-drive-guard.spec
+%endif
%changelog
++++++ hp-drive-guard.service ++++++
[Unit]
Description=HP DriveGuard Daemon
[Service]
Type=dbus
BusName=com.hp.DriveGuard
ExecStart=/usr/sbin/hp-drive-guard-daemon
--
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 duplicity for openSUSE:Factory checked in at 2012-11-12 07:02:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/duplicity (Old)
and /work/SRC/openSUSE:Factory/.duplicity.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "duplicity", Maintainer is "CThiel(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/duplicity/duplicity.changes 2012-06-25 12:25:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.duplicity.new/duplicity.changes 2012-11-12 07:02:52.000000000 +0100
@@ -1,0 +2,7 @@
+Sat Nov 10 21:07:51 UTC 2012 - wr(a)rosenauer.org
+
+- Update to version 0.6.20:
+ * several improvements and bugfixes
+ http://duplicity.nongnu.org/CHANGELOG
+
+-------------------------------------------------------------------
Old:
----
duplicity-0.6.19.tar.gz
New:
----
duplicity-0.6.20.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ duplicity.spec ++++++
--- /var/tmp/diff_new_pack.MKLbt9/_old 2012-11-12 07:02:54.000000000 +0100
+++ /var/tmp/diff_new_pack.MKLbt9/_new 2012-11-12 07:02:54.000000000 +0100
@@ -29,7 +29,7 @@
Summary: Encrypted bandwidth-efficient backup using the rsync algorithm
License: GPL-3.0+
Group: Productivity/Archiving/Backup
-Version: 0.6.19
+Version: 0.6.20
Release: 0
Url: http://duplicity.nongnu.org/
Source: http://code.launchpad.net/%{name}/0.6-series/%{version}/+download/%{name}-%…
++++++ duplicity-0.6.19.tar.gz -> duplicity-0.6.20.tar.gz ++++++
++++ 12820 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0