Hello community,
here is the log from the commit of package yast2-network
checked in at Fri Dec 7 20:23:44 CET 2007.
--------
--- yast2-network/yast2-network.changes 2007-12-03 18:55:48.000000000 +0100
+++ /mounts/work_src_done/STABLE/yast2-network/yast2-network.changes 2007-12-07 15:56:11.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Dec 7 15:48:19 CET 2007 - mzugec@suse.cz
+
+- support for VLAN - FaTE (#142127)
+- 2.16.14
+
+-------------------------------------------------------------------
Old:
----
yast2-network-2.16.13.tar.bz2
New:
----
yast2-network-2.16.14.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-network.spec ++++++
--- /var/tmp/diff_new_pack.J29202/_old 2007-12-07 20:23:25.000000000 +0100
+++ /var/tmp/diff_new_pack.J29202/_new 2007-12-07 20:23:25.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-network (Version 2.16.13)
+# spec file for package yast2-network (Version 2.16.14)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-network
-Version: 2.16.13
+Version: 2.16.14
Release: 1
License: GPL v2 or later
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-network-2.16.13.tar.bz2
+Source0: yast2-network-2.16.14.tar.bz2
Prefix: /usr
# should be required by devtools
BuildRequires: perl-XML-Writer pkgconfig rpm
@@ -45,12 +45,12 @@
Summary: YaST2 - Network Configuration
%package devel-doc
-Version: 2.16.13
+Version: 2.16.14
Release: 1
License: GPL v2 or later
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-network-2.16.13.tar.bz2
+Source0: yast2-network-2.16.14.tar.bz2
Prefix: /usr
Requires: yast2-network >= 2.15.53
Summary: YaST2 - Developer documentation for yast2-network
@@ -74,7 +74,7 @@
Michal Svec
%prep
-%setup -n yast2-network-2.16.13
+%setup -n yast2-network-2.16.14
%build
%{prefix}/bin/y2tool y2autoconf
@@ -138,6 +138,9 @@
%exclude %{prefix}/share/doc/packages/yast2-network/COPYING
%exclude %{prefix}/share/doc/packages/yast2-network/README
%changelog
+* Fri Dec 07 2007 - mzugec@suse.cz
+- support for VLAN - FaTE (#142127)
+- 2.16.14
* Mon Dec 03 2007 - mzugec@suse.cz
- modprobe ndiswrapper before hwinfo when needed (#343893)
- 2.16.13
++++++ yast2-network-2.16.13.tar.bz2 -> yast2-network-2.16.14.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/configure new/yast2-network-2.16.14/configure
--- old/yast2-network-2.16.13/configure 2007-12-03 18:52:39.000000000 +0100
+++ new/yast2-network-2.16.14/configure 2007-12-07 15:45:46.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for yast2-network 2.16.12.
+# Generated by GNU Autoconf 2.61 for yast2-network 2.16.13.
#
# Report bugs to http://bugs.opensuse.org/.
#
@@ -574,8 +574,8 @@
# Identity of this package.
PACKAGE_NAME='yast2-network'
PACKAGE_TARNAME='yast2-network'
-PACKAGE_VERSION='2.16.12'
-PACKAGE_STRING='yast2-network 2.16.12'
+PACKAGE_VERSION='2.16.13'
+PACKAGE_STRING='yast2-network 2.16.13'
PACKAGE_BUGREPORT='http://bugs.opensuse.org/'
ac_unique_file="RPMNAME"
@@ -1197,7 +1197,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 yast2-network 2.16.12 to adapt to many kinds of systems.
+\`configure' configures yast2-network 2.16.13 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1268,7 +1268,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of yast2-network 2.16.12:";;
+ short | recursive ) echo "Configuration of yast2-network 2.16.13:";;
esac
cat <<\_ACEOF
@@ -1346,7 +1346,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-yast2-network configure 2.16.12
+yast2-network configure 2.16.13
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1360,7 +1360,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by yast2-network $as_me 2.16.12, which was
+It was created by yast2-network $as_me 2.16.13, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2181,7 +2181,7 @@
# Define the identity of the package.
PACKAGE='yast2-network'
- VERSION='2.16.12'
+ VERSION='2.16.13'
cat >>confdefs.h <<_ACEOF
@@ -2408,7 +2408,7 @@
-VERSION="2.16.12"
+VERSION="2.16.13"
RPMNAME="yast2-network"
MAINTAINER="Michal Zugec "
@@ -3303,7 +3303,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by yast2-network $as_me 2.16.12, which was
+This file was extended by yast2-network $as_me 2.16.13, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -3346,7 +3346,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-yast2-network config.status 2.16.12
+yast2-network config.status 2.16.13
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/configure.in new/yast2-network-2.16.14/configure.in
--- old/yast2-network-2.16.13/configure.in 2007-12-03 18:52:33.000000000 +0100
+++ new/yast2-network-2.16.14/configure.in 2007-12-07 15:45:35.000000000 +0100
@@ -3,7 +3,7 @@
dnl -- This file is generated by y2autoconf 2.15.9 - DO NOT EDIT! --
dnl (edit configure.in.in instead)
-AC_INIT(yast2-network, 2.16.12, http://bugs.opensuse.org/, yast2-network)
+AC_INIT(yast2-network, 2.16.13, http://bugs.opensuse.org/, yast2-network)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])
@@ -17,7 +17,7 @@
AM_INIT_AUTOMAKE(tar-ustar) dnl searches for some needed programs
dnl Important YaST2 variables
-VERSION="2.16.12"
+VERSION="2.16.13"
RPMNAME="yast2-network"
MAINTAINER="Michal Zugec "
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/lan/address.ycp new/yast2-network-2.16.14/src/lan/address.ycp
--- old/yast2-network-2.16.13/src/lan/address.ycp 2007-11-29 15:41:18.000000000 +0100
+++ new/yast2-network-2.16.14/src/lan/address.ycp 2007-12-07 15:50:39.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Network card adresss configuration dialogs
* Authors: Michal Svec
*
- * $Id: address.ycp 42510 2007-11-29 14:41:18Z mzugec $
+ * $Id: address.ycp 42814 2007-12-07 14:50:39Z mzugec $
*/
{
@@ -101,6 +101,38 @@
settings[key] = value;
}
+
+/**
+ * Default function to init the value of slave ETHERDEVICE box.
+ * @param key id of the widget
+ */
+void InitVLANSlave(string key)
+{
+ list items = [];
+ settings["ETHERDEVICE"] = NetworkDevices::Current["ETHERDEVICE"]:"";
+ foreach(integer row, any value, LanItems::Items,{
+ LanItems::current = row;
+ if (!LanItems::IsItemConfigured()){
+ string dev_name = LanItems::getCurrentItem()["hwinfo", "dev_name"]:"";
+ if (hasAnyValue(dev_name)) items = add(items, `item(`id(dev_name), dev_name, (dev_name==settings["ETHERDEVICE"]:"")?true:false));
+//wd["ETHERDEVICE", "items"] = add( wd["ETHERDEVICE", "items"]:[], [ dev_name ] );
+ }
+ });
+ UI::ChangeWidget(`id(key), `Items, items);
+}
+
+/**
+ * Default function to store the value of ETHERDEVICE devices box.
+ * @param key id of the widget
+ * @param key id of the widget
+ */
+void StoreVLANSlave(string key, map event)
+{
+ settings["ETHERDEVICE"] = (string)UI::QueryWidget (`id(key), `Value);
+}
+
+
+
/**
* Default function to init the value of slave devices box.
* @param key id of the widget
@@ -133,6 +165,7 @@
* @param key id of the widget
*/
void initBootProto (string key) {
+ if (LanItems::type=="vlan") UI::ReplaceWidget(`rp, `Empty());
switch(settings["BOOTPROTO"]:""){
case "static": UI::ChangeWidget(`id(`bootproto), `CurrentButton, `static);
UI::ChangeWidget(`id(`ipaddr), `Value, settings["IPADDR"]:"");
@@ -468,6 +501,15 @@
// "handle": HandleIfcfg,
],
+ "ETHERDEVICE": $[
+ "widget": `combobox,
+ "label": _("Real Interface for &VLAN"),
+// "opt": [`shrinkable],
+ "items" : [ ],
+ "init": InitVLANSlave,
+ "store": StoreVLANSlave,
+ "help": help["etherdevice"]:"",
+ ],
"BONDSLAVE": $[
"widget": `multi_selection_box,
"label": _("Bond &Slaves"),
@@ -481,7 +523,7 @@
"BONDOPTION": $[
"widget": `combobox,
/* ComboBox label */
- "label": _("Bond &Driver Options"),
+ "label": _("&Bond Driver Options"),
"opt": [`hstretch, `editable],
"help": _("<p>Select the bond driver options, and edit it if you need. </p>"),
"items": [["mode=balance-rr"], ["mode=active-backup"], ["mode=balance-xor"],
@@ -493,7 +535,7 @@
"custom_widget":
`RadioButtonGroup(`id(`bootproto),
`VBox(
- `Left(`RadioButton(`id(`none),`opt(`notify), _("No IP Address (for Bonding Devices)"))),
+ `ReplacePoint(`id(`rp), `Left(`RadioButton(`id(`none),`opt(`notify), _("No IP Address (for Bonding Devices)")))),
`Left(`HBox(
`RadioButton(`id(`dynamic), `opt(`notify), _("Dynamic Address")),
`ComboBox(`id(`dyn), "", [
@@ -633,10 +675,10 @@
}
// FIXME duplicated in hardware.ycp
- list<string> device_types = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond" ];
+ list<string> device_types = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond", "vlan" ];
if(Arch::s390 ())
- device_types = [ "eth", "tr", "hsi", "ctc", "escon", "iucv", "qeth", "lcs" ];
+ device_types = [ "eth", "tr", "hsi", "ctc", "escon", "iucv", "qeth", "lcs", "vlan" ];
if(Arch::ia64 ())
device_types = add(device_types, "xp");
@@ -733,7 +775,11 @@
is_ptp? address_p2p_contents:
(no_dhcp? address_static_contents: address_dhcp_contents);
- term bond = `MarginBox(1, 0, `Frame( "", `VBox("BONDSLAVE", "BONDOPTION")));
+ term address_contents = `VBox(
+ `Left(label),
+ just_address_contents,
+ frame2
+ );
if (LanItems::type == "bond")
{
@@ -758,27 +804,19 @@
return v[0]:"" != LanItems::bond_option;
});
wd["BONDOPTION", "items"] = prepend(wd["BONDOPTION", "items"]:[], [LanItems::bond_option]);
- }
-
-
- term address_contents = `VBox(
- `Left(label),
- just_address_contents,
- frame2
- );
- if (LanItems::type == "bond")
- {
address_contents = `VBox(
`Left(label),
just_address_contents,
- bond,
+ `MarginBox(1, 0, `Frame( "", `VBox("BONDSLAVE", "BONDOPTION"))),
frame2
);
}
- else
+ else if (LanItems::type == "vlan")
{
- address_contents = `VBox(
- `Left(label),
+ settings["STARTMODE"] = "onboot";
+ address_contents = `VBox(
+ `Left(label),
+ `Left( `VBox("ETHERDEVICE")),
just_address_contents,
"AD_ADDRESSES",
frame2
@@ -830,11 +868,11 @@
// Address tab help
"help": _("<p>Configure your IP address.</p>"),
],
- "hardware" : $[
+ "hardware" : $[
"header" : _("&Hardware"),
"contents" : `VBox( "HWDIALOG" )
],
- "t3" : $[
+ "t3" : $[
"header" : _("&Wireless"),
"contents" : `Empty (),
"widget_names" : [],
@@ -845,6 +883,8 @@
"tab_help" : "",
"fallback_functions" : functions,
];
+ if (LanItems::type=="vlan") wd_content["tab_order"]= ["t_general", "t_addr"];
+
hw_standalone=false;
wd = (map >) union (wd, $[
@@ -934,7 +974,10 @@
{
LanItems::bond_option = settings["BONDOPTION"]:"";
LanItems::bond_slaves = (list<string>)settings["SLAVES"]:[];
- }
+ } else if (LanItems::type == "vlan"){
+ LanItems::vlan_etherdevice = settings["ETHERDEVICE"]:"";
+ }
+
// proceed with WLAN settings if appropriate, #42420
if (ret == `next && LanItems::type == "wlan" && LanItems::alias == "")
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/lan/hardware.ycp new/yast2-network-2.16.14/src/lan/hardware.ycp
--- old/yast2-network-2.16.13/src/lan/hardware.ycp 2007-10-29 10:03:49.000000000 +0100
+++ new/yast2-network-2.16.14/src/lan/hardware.ycp 2007-12-07 08:46:14.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Hardware dialogs
* Authors: Michal Svec
*
- * $Id: hardware.ycp 41024 2007-09-21 13:54:28Z kmachalkova $
+ * $Id: hardware.ycp 42771 2007-12-06 16:44:18Z mzugec $
*/
{
@@ -99,10 +99,10 @@
if (!hasAnyValue(LanItems::nm_name) && hasAnyValue(LanItems::nm_name_old)) hardware["hwcfg"]=LanItems::nm_name_old;
*/
// FIXME duplicated in address.ycp
- hardware["device_types"] = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond" ];
+ hardware["device_types"] = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond", "vlan" ];
if(Arch::s390 ())
- hardware["device_types"] = [ "eth", "tr", "hsi", "ctc", "escon", "ficon", "iucv", "qeth", "lcs" ];
+ hardware["device_types"] = [ "eth", "tr", "hsi", "ctc", "escon", "ficon", "iucv", "qeth", "lcs", "vlan" ];
if(Arch::ia64 ())
hardware["device_types"] = add(hardware["device_types"]:[], "xp");
@@ -425,7 +425,7 @@
UI::ChangeWidget(`id(`modul), `Value, hardware["modul"]:"");
UI::ChangeWidget(`id(`options), `Value, hardware["options"]:"");
}
- else if (hardware["type"]:"" == "bond")
+ else if (contains(["bond", "vlan"], hardware["type"]:""))
{
UI::ChangeWidget(`id(`hwcfg), `Enabled, false);
UI::ChangeWidget(`id(`modul), `Enabled, false);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/modules/LanItems.ycp new/yast2-network-2.16.14/src/modules/LanItems.ycp
--- old/yast2-network-2.16.13/src/modules/LanItems.ycp 2007-12-03 18:52:24.000000000 +0100
+++ new/yast2-network-2.16.14/src/modules/LanItems.ycp 2007-12-07 11:05:43.000000000 +0100
@@ -77,6 +77,10 @@
//bond options
global list<string> bond_slaves = [];
global string bond_option="";
+
+// VLAN option
+global string vlan_etherdevice="";
+
/**
* wl_wpa_eap aggregates the settings in a map for easier CWM access.
* @struct wpa_eap
@@ -307,6 +311,8 @@
map startmode_descrs = $[
// summary description of STARTMODE=auto
"auto": _("Started automatically at boot"),
+ // summary description of STARTMODE=auto
+ "onboot": _("Started automatically at boot"),
// summary description of STARTMODE=hotplug
"hotplug": _("Started automatically at boot"),
// summary description of STARTMODE=ifplugd
@@ -330,7 +336,7 @@
NetworkDevices::Select(Items[key, "ifcfg"]:"");
if (!hasAnyValue(type)) type = NetworkDevices::device_type(Items[key, "ifcfg"]:"");
descr = BuildDescription(type, NetworkDevices::device_type(Items[key, "ifcfg"]:""), NetworkDevices::Current, [Items[key, "hwinfo"]:$[]]);
- string dev = NetworkDevices::device_name(type, NetworkDevices::Name);
+ string dev = NetworkDevices::Name; //NetworkDevices::device_name(type, NetworkDevices::Name);
ip = DeviceProtocol(NetworkDevices::Current);
string status = DeviceStatus(type, NetworkDevices::device_num(NetworkDevices::Name), NetworkDevices::Current);
@@ -392,7 +398,8 @@
} else
overview = add(overview, Summary::Device(descr, Summary::NotConfigured()));
- string conn = HTML::Bold ( (Items[key, "hwinfo", "link"]:false == true)?"":_("(not connected)") );
+ string conn = HTML::Bold ( (Items[key, "hwinfo", "link"]:false == true)?"":sformat("(%1)", _("not connected") ));
+ if (size(Items[key, "hwinfo"]:$[])==0) conn = HTML::Bold(sformat("(%1)", _("no hwinfo")));
string mac_dev="";
if (hasAnyValue(Items[key, "hwinfo", "mac"]:"")) mac_dev= HTML::Bold ("MAC : ") + Items[key, "hwinfo", "mac"]:"" + "<br>";
else if (hasAnyValue(Items[key, "hwinfo", "busid"]:"")) mac_dev= HTML::Bold ("BusID : ") + Items[key, "hwinfo", "busid"]:"" + "<br>";
@@ -1018,6 +1025,10 @@
newdev["BONDING_MASTER"] = "yes";
}
+ if (type=="vlan"){
+ newdev["ETHERDEVICE"]=vlan_etherdevice;
+ }
+
if(type == "wlan") {
newdev["WIRELESS_MODE"] = wl_mode;
newdev["WIRELESS_ESSID"] = wl_essid;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/modules/Lan.ycp new/yast2-network-2.16.14/src/modules/Lan.ycp
--- old/yast2-network-2.16.13/src/modules/Lan.ycp 2007-12-03 18:54:29.000000000 +0100
+++ new/yast2-network-2.16.14/src/modules/Lan.ycp 2007-12-07 15:50:39.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Network card data
* Authors: Michal Svec
*
- * $Id: Lan.ycp 42633 2007-12-03 17:54:28Z mzugec $
+ * $Id: Lan.ycp 42814 2007-12-07 14:50:39Z mzugec $
*
* Representation of the configuration of network cards.
* Input and output routines.
@@ -1114,6 +1114,10 @@
{
if (!PackageSystem::Installed("wireless-tools")) pkgs = add (pkgs, "wireless-tools");
}
+ if (NetworkDevices::List ("vlan") != [])
+ {
+ if (!PackageSystem::Installed("vlan")) pkgs = add (pkgs, "vlan");
+ }
// #47809
if (NetworkDevices::Locate ("WIRELESS_AUTH_MODE", "psk") != [] ||
NetworkDevices::Locate ("WIRELESS_AUTH_MODE", "eap") != [])
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/routines/complex.ycp new/yast2-network-2.16.14/src/routines/complex.ycp
--- old/yast2-network-2.16.13/src/routines/complex.ycp 2007-10-29 10:03:48.000000000 +0100
+++ new/yast2-network-2.16.14/src/routines/complex.ycp 2007-12-07 08:46:14.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Summary and overview functions
* Authors: Michal Svec
*
- * $Id: complex.ycp 40709 2007-09-03 12:41:27Z mzugec $
+ * $Id: complex.ycp 42771 2007-12-06 16:44:18Z mzugec $
*
*/
@@ -302,6 +302,8 @@
"xp" : _("XP Network"),
/* Device type label */
"bond" : _("Bond Network"),
+ /* Device type label */
+ "vlan" : _("Virtual LAN"),
];
if(haskey(device_names, devtype))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/src/routines/summary.ycp new/yast2-network-2.16.14/src/routines/summary.ycp
--- old/yast2-network-2.16.13/src/routines/summary.ycp 2007-10-29 10:03:48.000000000 +0100
+++ new/yast2-network-2.16.14/src/routines/summary.ycp 2007-12-07 08:46:14.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Summary and overview functions
* Authors: Michal Svec
*
- * $Id: summary.ycp 37643 2007-04-22 10:40:07Z mzugec $
+ * $Id: summary.ycp 42771 2007-12-06 16:44:18Z mzugec $
*
* All config settings are stored in a global variable Devices.
* All hardware settings are stored in a global variable Hardware.
@@ -105,6 +105,8 @@
"wlan" : _("Wireless"),
/* Device type label */
"xp" : _("XPNET"),
+ /* Device type label */
+ "vlan" : _("Virtual LAN"),
];
if(haskey(device_types, type))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-network-2.16.13/VERSION new/yast2-network-2.16.14/VERSION
--- old/yast2-network-2.16.13/VERSION 2007-12-03 18:53:51.000000000 +0100
+++ new/yast2-network-2.16.14/VERSION 2007-12-07 15:48:18.000000000 +0100
@@ -1 +1 @@
-2.16.13
+2.16.14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org