commit yast2-printer for openSUSE:Factory
Hello community, here is the log from the commit of package yast2-printer for openSUSE:Factory checked in at Wed Mar 31 20:04:14 CEST 2010. -------- --- yast2-printer/yast2-printer.changes 2010-03-18 16:36:04.000000000 +0100 +++ /mounts/work_src_done/STABLE/yast2-printer/yast2-printer.changes 2010-03-30 15:17:43.000000000 +0200 @@ -1,0 +2,12 @@ +Tue Mar 30 14:59:45 CEST 2010 - jsmeix@suse.de + +- Further cleanup and enhancement of printer_auto.ycp: + Added CreateBackupFile to backup /etc/cups/cupsd.conf + and /etc/cups/client.conf before "Reset" and "Write". + Added restart of local cupsd in "Change" if its config + was reset to system defaults by "Reset" before. + Made ReadFileContent safe against possible end of CDATA + section strings "]]>" inside file contets. +- 2.19.7 + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- yast2-printer-2.19.6.tar.bz2 New: ---- yast2-printer-2.19.7.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-printer.spec ++++++ --- /var/tmp/diff_new_pack.PU7Rs6/_old 2010-03-31 20:03:55.000000000 +0200 +++ /var/tmp/diff_new_pack.PU7Rs6/_new 2010-03-31 20:03:55.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package yast2-printer (Version 2.19.6) +# spec file for package yast2-printer (Version 2.19.7) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -19,12 +19,12 @@ Name: yast2-printer -Version: 2.19.6 +Version: 2.19.7 Release: 1 License: GPL Group: System/YaST BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: yast2-printer-2.19.6.tar.bz2 +Source0: yast2-printer-2.19.7.tar.bz2 Prefix: /usr @@ -54,7 +54,7 @@ Developer documentation for yast2-printer. %prep -%setup -n yast2-printer-2.19.6 +%setup -n yast2-printer-2.19.7 %build %{prefix}/bin/y2tool y2autoconf @@ -66,9 +66,7 @@ %{?suse_update_config:%{suse_update_config -f}} ./configure --libdir=%{_libdir} --prefix=%{prefix} --mandir=%{_mandir} -# V=1: verbose build in case we used AM_SILENT_RULES(yes) -# so that RPM_OPT_FLAGS check works -make %{?jobs:-j%jobs} V=1 +make %{?jobs:-j%jobs} %install make install DESTDIR="$RPM_BUILD_ROOT" ++++++ yast2-printer-2.19.6.tar.bz2 -> yast2-printer-2.19.7.tar.bz2 ++++++ ++++ 4504 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/Makefile.am new/yast2-printer-2.19.7/Makefile.am --- old/yast2-printer-2.19.6/Makefile.am 2010-03-20 09:26:41.000000000 +0100 +++ new/yast2-printer-2.19.7/Makefile.am 2010-03-30 14:58:01.000000000 +0200 @@ -32,10 +32,10 @@ # less strict; prefer bzip2 AUTOMAKE_OPTIONS = foreign dist-bzip2 no-dist-gzip -# where devtools install m4 snippets +# where devtools instal m4 snippets # argh, executed literally #ACLOCAL_AMFLAGS = -I $(Y2DEVTOOLS_PREFIX)/share/aclocal -ACLOCAL_AMFLAGS = -I . -I `if test -d ./devtools/admin; then echo ./devtools/admin; else pkg-config --print-errors --variable=datadir yast2-devtools; fi`/aclocal +ACLOCAL_AMFLAGS = -I `if test -d ./devtools/admin; then echo ./devtools/admin; else pkg-config --print-errors --variable=datadir yast2-devtools; fi`/aclocal Makefile.am.common: $(DEVTOOLS_DIR)/admin/Makefile.am.common cmp -s $< $@ || cp -f $< $@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/VERSION new/yast2-printer-2.19.7/VERSION --- old/yast2-printer-2.19.6/VERSION 2010-03-11 18:00:36.000000000 +0100 +++ new/yast2-printer-2.19.7/VERSION 2010-03-30 14:57:54.000000000 +0200 @@ -1 +1 @@ -2.19.6 +2.19.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/autodocs-ycp.ami new/yast2-printer-2.19.7/autodocs-ycp.ami --- old/yast2-printer-2.19.6/autodocs-ycp.ami 2010-03-20 09:26:41.000000000 +0100 +++ new/yast2-printer-2.19.7/autodocs-ycp.ami 2010-03-30 14:58:01.000000000 +0200 @@ -1,5 +1,5 @@ # -*- makefile -*- Automake include file -# $Id: autodocs-ycp.ami 57644 2009-06-19 08:38:11Z mvidner $ +# $Id: autodocs-ycp.ami 33394 2006-10-13 11:51:40Z mvidner $ # Builds source documentation for YCP sources # Uses ycpdoc @@ -8,25 +8,20 @@ # Optional - the default is $(srcdir)/../../src/*.ycp # AUTODOCS_PM: Files that the perl autodocs is built from # Optional - the default is $(srcdir)/../../src/*.pm -# AUTODOCS_SUBDIR: To install the result to $(docdir)/SUBDIR/autodocs -# Optional - the default is no subdir, $(docdir)/autodocs -# AUTODOCS_STRIP: Strip it from filenames. The remaining / are replaced by __ -# Optional - the default is $(srcdir)/../../src -htmldir = $(docdir)/$(AUTODOCS_SUBDIR)/autodocs +htmldir = $(docdir)/autodocs -html_DATA = index.html $(filter-out index.html, $(wildcard *.html)) +html_DATA = index.html $(wildcard *.html) CLEANFILES = $(html_DATA) pod2htm*.tmp AUTODOCS_YCP ?= $(wildcard $(srcdir)/../../src/*.ycp) AUTODOCS_PM ?= $(wildcard $(srcdir)/../../src/*.pm) -AUTODOCS_STRIP ?= $(srcdir)/../../src index.html: $(AUTODOCS_YCP) $(AUTODOCS_PM) #including *.pm, for the index - ${YCPDOC} -d. -s$(AUTODOCS_STRIP) $(AUTODOCS_YCP) + ${YCPDOC} -d. $^ for i in $(AUTODOCS_PM); do \ - b=$${i##$(AUTODOCS_STRIP)}; b=$${b#/}; b=$${b//\//__}; b=$${b%.pm}; \ + b=`basename $$i`; b=$${b%.pm}; \ pod2html --title=$$b --infile=$$i --outfile=$$b.html; \ - echo "<a href='$$b.html'>$${b/__/::}</a>" > $$b.mod.html; \ + echo "<a href='$$b.html'>$$b</a>" > $$b.mod.html; \ done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/configure.in new/yast2-printer-2.19.7/configure.in --- old/yast2-printer-2.19.6/configure.in 2010-03-20 09:26:41.000000000 +0100 +++ new/yast2-printer-2.19.7/configure.in 2010-03-30 14:58:01.000000000 +0200 @@ -1,9 +1,9 @@ dnl configure.in for yast2-printer dnl -dnl -- This file is generated by y2autoconf 2.18.11 - DO NOT EDIT! -- +dnl -- This file is generated by y2autoconf 2.17.6 - DO NOT EDIT! -- dnl (edit configure.in.in instead) -AC_INIT(yast2-printer, 2.19.6, http://bugs.opensuse.org/, yast2-printer) +AC_INIT(yast2-printer, 2.19.7, http://bugs.opensuse.org/, yast2-printer) dnl Check for presence of file 'RPMNAME' AC_CONFIG_SRCDIR([RPMNAME]) @@ -18,7 +18,7 @@ AM_INIT_AUTOMAKE(tar-ustar -Wno-portability) dnl Important YaST2 variables -VERSION="2.19.6" +VERSION="2.19.7" RPMNAME="yast2-printer" MAINTAINER="Michal Zugec <mzugec@novell.com>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/missing new/yast2-printer-2.19.7/missing --- old/yast2-printer-2.19.6/missing 2010-03-20 09:26:46.000000000 +0100 +++ new/yast2-printer-2.19.7/missing 2010-03-30 14:58:07.000000000 +0200 @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2009-04-28.21; # UTC +scriptversion=2006-05-10.23 -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify @@ -18,7 +18,9 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -87,9 +89,6 @@ tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - Send bug reports to <bug-automake@gnu.org>." exit $? ;; @@ -107,22 +106,15 @@ esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. +# the program). case $1 in - lex*|yacc*) + lex|yacc) # Not GNU programs, they don't have --version. ;; - tar*) + tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 @@ -146,7 +138,7 @@ # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. -case $program in +case $1 in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if @@ -156,7 +148,7 @@ touch aclocal.m4 ;; - autoconf*) + autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the @@ -165,7 +157,7 @@ touch configure ;; - autoheader*) + autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want @@ -195,7 +187,7 @@ while read f; do touch "$f"; done ;; - autom4te*) + autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the @@ -218,7 +210,7 @@ fi ;; - bison*|yacc*) + bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package @@ -248,7 +240,7 @@ fi ;; - lex*|flex*) + lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package @@ -271,7 +263,7 @@ fi ;; - help2man*) + help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the @@ -285,11 +277,11 @@ else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit $? + exit 1 fi ;; - makeinfo*) + makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file @@ -318,7 +310,7 @@ touch $file ;; - tar*) + tar) shift # We have already tried tar in the generic part. @@ -371,6 +363,5 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" +# time-stamp-end: "$" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/src/Printer.ycp new/yast2-printer-2.19.7/src/Printer.ycp --- old/yast2-printer-2.19.6/src/Printer.ycp 2010-03-18 15:40:13.000000000 +0100 +++ new/yast2-printer-2.19.7/src/Printer.ycp 2010-03-24 11:35:20.000000000 +0100 @@ -103,7 +103,7 @@ /** * Filled in by AutoYaST by calling in printer_auto.ycp the "Import" function. * Reset to the empty map by AutoYaST by calling in printer_auto.ycp the "Reset" function. - * Preset to the empty map which is the right default for AutoYast. + * Preset to the empty map. */ global map autoyast_printer_settings = $[]; @@ -118,6 +118,14 @@ global boolean printer_auto_dialogs = false; /** + * Set to 'true' by AutoYaST when in printer_auto.ycp the "Reset" function + * resets /etc/cups/cupsd.conf and /etc/cups/client.conf to system defaults. + * When it is 'true', the "Change" function in printer_auto.ycp does a cupsd restart. + * Preset to false. + */ +global boolean printer_auto_requires_cupsd_restart = false; + +/** * Explicite listing of all alphanumeric ASCII characters. * The reason is that in certain special locales for example [a-z] is not equivalent * to "abcdefghijklmnopqrstuvwxyz" because in certain special languages the 'z' is diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-printer-2.19.6/src/printer_auto.ycp new/yast2-printer-2.19.7/src/printer_auto.ycp --- old/yast2-printer-2.19.6/src/printer_auto.ycp 2010-03-18 15:40:13.000000000 +0100 +++ new/yast2-printer-2.19.7/src/printer_auto.ycp 2010-03-24 12:26:39.000000000 +0100 @@ -101,6 +101,19 @@ + "</p>"; return ""; } + // The file content will appear as CDATA section in the AutoYaST XML control file. + // The content in a XML CDATA section cannot contain the string "]]>" because + // this exact string (without spaces in between) marks the end of the CDATA section. + // Therefore "]]>" in the file content is changed to "] ]>" to be on the safe side. + // This change is not reverted in the "Write" function below + // (which writes the CDATA section content back to a file) + // because "] ]>" should also work (hoping that the particular file format + // is not sensitive regarding a space between subsequent closing brackets). + // In particular in /etc/cups/cupsd.conf and /etc/cups/client.conf + // there is no string "]]>" (except perhaps in a comment). + // It is o.k. to ignore when the sed command fails because then + // the file content was (hopefully) not changed at all which is the right fallback: + Printerlib::ExecuteBashCommand( "sed -i -e 's/]]>/] ]>/g' " + file_name ); string content = (string)SCR::Read( .target.string, file_name ); if( "" == filterchars( content, Printer::alnum_chars ) ) { // No user information popup because this would block autoinstallation. @@ -121,6 +134,48 @@ return content; } +boolean CreateBackupFile( string file_name ) +{ // Do nothing if no file specified or if file does not exist: + if( "" == file_name || ! Printerlib::ExecuteBashCommand( "test -f " + file_name ) ) + { return true; + } + // See "Make a backup" in tools/modify_cupsd_conf how to create a backup file: + if( Printerlib::ExecuteBashCommand( "rpm -V -f " + file_name + " | grep -q '^..5.*" + file_name + "$'" ) ) + { // The file was already changed (RPM tells that the MD5 sum differs): + if( Printerlib::ExecuteBashCommand( "cp -p " + file_name + " " + file_name + ".yast2save" ) ) + { return true; + } + // No user information popup because this would block autoinstallation. + y2milestone( "Warning: Failed to backup %1 as %1.yast2save", file_name ); + Printer::printer_auto_summary = Printer::printer_auto_summary + + "<p>" + + sformat( // Warning message in the AutoYaST printer client + // which is added to its "Summary" text for AutoYaST + // where %1 is replaced by the file name. + _("Warning: Failed to backup %1 as %1.yast2save"), + file_name + ) + + "</p>"; + return false; + } + // The file is the original from the RPM package or the file is not owned by any package: + if( Printerlib::ExecuteBashCommand( "cp -p " + file_name + " " + file_name + ".yast2orig" ) ) + { return true; + } + // No user information popup because this would block autoinstallation. + y2milestone( "Warning: Failed to backup %1 as %1.yast2orig", file_name ); + Printer::printer_auto_summary = Printer::printer_auto_summary + + "<p>" + + sformat( // Warning message in the AutoYaST printer client + // which is added to its "Summary" text for AutoYaST + // where %1 is replaced by the file name. + _("Warning: Failed to backup %1 as %1.yast2orig"), + file_name + ) + + "</p>"; + return false; +} + /* Create a summary string */ if (func == "Summary") { ret = Printer::printer_auto_summary; @@ -146,13 +201,29 @@ * function by AutoYaST would provide the correct system default values. */ else if (func == "Reset") -{ // It is o.k. to ignore when the next two commands fail +{ // It is o.k. to ignore when the next commands fail // because then /etc/cups/cupsd.conf and/or /etc/cups/client.conf // were (hopefully) not changed at all which is the right fallback // so that there is no change of system config files in case of errors. + CreateBackupFile( "/etc/cups/cupsd.conf" ); Printerlib::ExecuteBashCommand( "cp /etc/cups/cupsd.conf.default /etc/cups/cupsd.conf" ); + CreateBackupFile( "/etc/cups/client.conf" ); Printerlib::ExecuteBashCommand( "sed -i -e '/^[^#]/s/^/#/' /etc/cups/client.conf" ); - // Ignore read failures and reset to even empty content because to what else could it be reset instead: + // After /etc/cups/cupsd.conf and/or /etc/cups/client.conf were changed + // a restart of the local cupsd is needed if it is currently accessible + // so that a possible subsequent AutoYaST call of the "Change" function + // uses a local cupsd with the changed system default config which results + // the right system default settings in the "Printing via Network" dialog. + // To avoid that the user confirmation yes/no-popup in + // Printerlib::GetAndSetCupsdStatus("restart") could block autoinstallation + // only Printer::printer_auto_requires_cupsd_restart is set to true here + // which postpones and triggers the actual cupsd restart to be done later + // in the "Change" function which is meant to run interactive dialogs. + if( Printerlib::GetAndSetCupsdStatus( "" ) ) + { Printer::printer_auto_requires_cupsd_restart = true; + } + // Ignore read failures and reset to even empty content because + // to what else could it be reset instead in case of errors: Printer::autoyast_printer_settings = $[ "cupsd_conf_content" : $[ "file_contents" : ReadFileContent( "/etc/cups/cupsd.conf" ) ], "client_conf_content" : @@ -172,22 +243,27 @@ /* Change configuration (run the wizards AutoSequence dialogs) */ else if (func == "Change") { // Call Printer::Read() here (compare the 'func == "Read"' case below) - // to make sure that when the full printer module dialogs are launched + // to make sure that when the printer module dialogs are launched // it asks the user to install the packages cups-client and cups: boolean progress_orig = Progress::set( false ); Printer::Read(); Progress::set( progress_orig ); + if( Printer::printer_auto_requires_cupsd_restart ) + { if( Printerlib::GetAndSetCupsdStatus("restart") ) + { // Only if the restart was successful, a restart is no longer required: + Printer::printer_auto_requires_cupsd_restart = false; + } + } // Let the Overview dialog disable the checkbox to show local queues // which disables as a consequence in particular the [Delete] button. - // Lets the Printing via Network dialog disable the button to - // run the Connection Wizard (to set up a local queue for a network printer). + // Let the "Printing via Network" dialog disable the button to + // run the "Connection Wizard" (to set up a local queue for a network printer). Printer::printer_auto_dialogs = true; // Let the Overview dialog only show remote queues: Printer::queue_filter_show_remote = true; Printer::queue_filter_show_local = false; // PrinterAutoSequence in wizards.ycp runs only the AutoSequence - // which is only the "Printing via Network" and the "Overview" dialog - // (starting with the "Printing via Network" dialog) + // which is only the "Printing via Network" and the "Overview" dialogs // but without running before ReadDialog (which calls only Printer::Read) // and running afterwards WriteDialog (which calls only Printer::Write) // which is the reason that Printer::Read is called explicitely above. @@ -208,7 +284,8 @@ * calls the above Import function. */ else if (func == "Export") -{ // Ignore read failures and export even empty content because what else could be exported instead: +{ // Ignore read failures and export even empty content because + // what else could be exported instead in case of errors: ret = $[ "cupsd_conf_content" : $[ "file_contents" : ReadFileContent( "/etc/cups/cupsd.conf" ) ], "client_conf_content" : $[ "file_contents" : ReadFileContent( "/etc/cups/client.conf" ) ] ]; @@ -247,6 +324,7 @@ */ else if (func == "Write") { y2milestone("Writing to system '%1'", Printer::autoyast_printer_settings); + CreateBackupFile( "/etc/cups/cupsd.conf" ); if( ! SCR::Write( .target.string, "/etc/cups/cupsd.conf", Printer::autoyast_printer_settings["cupsd_conf_content","file_contents"]:"" @@ -259,6 +337,7 @@ + _("Error: Failed to write /etc/cups/cupsd.conf") + "</p>"; } + CreateBackupFile( "/etc/cups/client.conf" ); if( ! SCR::Write( .target.string, "/etc/cups/client.conf", Printer::autoyast_printer_settings["client_conf_content","file_contents"]:"" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de