From 6600ff537e5efccaa9dde8d470bc50d43edc77f6 Mon Sep 17 00:00:00 2001 From: Omar Vega Ramos Date: Fri, 10 Mar 2017 23:30:23 -0500 Subject: virt-manager-1.4.1-1.parabola1: updating version --- libre/virt-manager/PKGBUILD | 8 +- libre/virt-manager/libre.patch | 210 +++++++++++++++++++---------------------- 2 files changed, 102 insertions(+), 116 deletions(-) (limited to 'libre/virt-manager') diff --git a/libre/virt-manager/PKGBUILD b/libre/virt-manager/PKGBUILD index 01d084abc..4f7649fd8 100644 --- a/libre/virt-manager/PKGBUILD +++ b/libre/virt-manager/PKGBUILD @@ -6,8 +6,8 @@ pkgbase=virt-manager pkgname=virt-install -pkgver=1.4.0 -pkgrel=3.parabola1 +pkgver=1.4.1 +pkgrel=1.parabola1 pkgdesc="Console user interface for managing virtual machines, without non-FSDG compliant distros and operating systems support" arch=('any') url="http://virt-manager.org/" @@ -23,8 +23,8 @@ makedepends=('intltool>=0.35.0' 'libvirt-glib' 'vte3') source=("https://virt-manager.org/download/sources/virt-manager/virt-manager-$pkgver.tar.gz" 'libre.patch') -sha256sums=('bf31a40cc48500cbf87a0e93a5838fc3f6ce4e2fa03f8bce6aa2615625e6caca' - 'a8475425176762a48f0be96e96840181e8a28176482da6986df11ad4c041a7c4') +sha256sums=('e6c549999f14fbda210c07821910bfa35c086542e166f8b00d7c83717e9f3944' + 'b7842786933f2bbe9ee612f4db7fc5456da8bd6a849fb46044a148d57e1a95b0') prepare() { cd "$srcdir/$pkgbase-$pkgver" diff --git a/libre/virt-manager/libre.patch b/libre/virt-manager/libre.patch index fdb788101..3c94c5bdd 100644 --- a/libre/virt-manager/libre.patch +++ b/libre/virt-manager/libre.patch @@ -1,8 +1,6 @@ -diff --git a/man/virt-install.pod b/man/virt-install.pod -index a1229c8..4c7b0e3 100644 ---- a/man/virt-install.pod -+++ b/man/virt-install.pod -@@ -357,36 +357,6 @@ Mount the ISO and probe the directory. This requires running virt-install as roo +--- virt-manager-1.4.1.orig/man/virt-install.pod 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/man/virt-install.pod 2017-03-10 22:24:30.887115383 -0500 +@@ -375,36 +375,6 @@ =back @@ -39,7 +37,7 @@ index a1229c8..4c7b0e3 100644 =item B<--pxe> Use the PXE boot protocol to load the initial ramdisk and kernel for starting -@@ -421,21 +391,6 @@ file: +@@ -439,21 +409,6 @@ --initrd-inject=/path/to/my.ks --extra-args "ks=file:/my.ks" @@ -61,7 +59,7 @@ index a1229c8..4c7b0e3 100644 =item B<--boot> BOOTOPTS Optionally specify the post-install VM boot configuration. This option allows -@@ -592,7 +547,7 @@ bus types. +@@ -610,7 +565,7 @@ =item B @@ -70,16 +68,16 @@ index a1229c8..4c7b0e3 100644 used with QEMU and bus=usb. Value can be 'on' or 'off'. =item B -@@ -672,7 +627,7 @@ How guest should react if a write error is encountered. Can be one of +@@ -690,7 +645,7 @@ =item B -Serial number of the emulated disk device. This is used in linux guests -+Serial number of the emulated disk device. This is used in GNU/Linux guests ++Serial number of the emulated disk device. This is used in GNU/Llinux guests to set /dev/disk/by-id symlinks. An example serial number might be: WD-WMAP9A966149 -@@ -695,7 +650,7 @@ invocation is: +@@ -713,7 +668,7 @@ --filesystem /source/on/host,/target/point/in/guest @@ -88,7 +86,7 @@ index a1229c8..4c7b0e3 100644 QEMU, the target point is just a mounting hint in sysfs, so will not be automatically mounted. -@@ -1635,45 +1590,6 @@ C<~/.cache/virt-manager/virt-install.log> even if this parameter is omitted. +@@ -1657,45 +1612,6 @@ =head1 EXAMPLES @@ -116,7 +114,7 @@ index a1229c8..4c7b0e3 100644 - --disk path=/dev/HostVG/DemoVM,bus=scsi \ - --controller virtio-scsi \ - --network network=default \ -- --virt-type qemu +- --virt-type qemu \ - --graphics vnc \ - --os-variant fedora9 - @@ -134,7 +132,7 @@ index a1229c8..4c7b0e3 100644 Run /usr/bin/httpd in a linux container guest (LXC). Resource usage is capped at 512 MiB of ram and 2 host cpus: -@@ -1699,7 +1615,7 @@ The host dir "/home/test" will be mounted at +@@ -1721,7 +1637,7 @@ --init /bin/sh Install a paravirtualized Xen guest, 500 MiB of RAM, a 5 GiB of disk, and @@ -143,7 +141,7 @@ index a1229c8..4c7b0e3 100644 options: # virt-install \ -@@ -1708,7 +1624,7 @@ options: +@@ -1730,7 +1646,7 @@ --memory 500 \ --disk /var/lib/xen/images/demo.img,size=6 \ --graphics none \ @@ -152,11 +150,9 @@ index a1229c8..4c7b0e3 100644 Create a guest from an existing disk image 'mydisk.img' using defaults for the rest of the options. -diff --git a/man/virt-xml.pod b/man/virt-xml.pod -index 3a684f4..aef814f 100644 ---- a/man/virt-xml.pod -+++ b/man/virt-xml.pod -@@ -286,53 +286,10 @@ Clear the previous definition of domain 'winxp', change it to 'host-model' +--- virt-manager-1.4.1.orig/man/virt-xml.pod 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/man/virt-xml.pod 2017-03-10 22:27:50.854885532 -0500 +@@ -286,53 +286,10 @@ # virt-xml winxp --edit --cpu host-model,clearxml=yes --confirm @@ -210,11 +206,9 @@ index 3a684f4..aef814f 100644 Generate XML for a virtio console device and print it to stdout: # virt-xml --build-xml --console pty,target_type=virtio -diff --git a/setup.py b/setup.py -index 89916b5..cff1031 100755 ---- a/setup.py -+++ b/setup.py -@@ -338,7 +338,6 @@ class configure(distutils.core.Command): +--- virt-manager-1.4.1.orig/setup.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/setup.py 2017-03-10 22:31:35.894873558 -0500 +@@ -338,7 +338,6 @@ self.libvirt_package_names = None self.kvm_package_names = None self.askpass_package_names = None @@ -222,7 +216,7 @@ index 89916b5..cff1031 100755 self.stable_defaults = None self.default_graphics = None self.default_hvs = None -@@ -356,8 +355,6 @@ class configure(distutils.core.Command): +@@ -356,8 +355,6 @@ template += "hv_packages = %s\n" % self.kvm_package_names if self.askpass_package_names is not None: template += "askpass_packages = %s\n" % self.askpass_package_names @@ -231,10 +225,8 @@ index 89916b5..cff1031 100755 if self.stable_defaults is not None: template += ("stable_defaults = %s\n" % self.stable_defaults) -diff --git a/virt-manager.spec b/virt-manager.spec -index 2dfe413..2bb07e4 100644 ---- a/virt-manager.spec -+++ b/virt-manager.spec +--- virt-manager-1.4.1.orig/virt-manager.spec 2017-03-08 18:48:59.000000000 -0500 ++++ virt-manager-1.4.1/virt-manager.spec 2017-03-10 22:40:49.113594324 -0500 @@ -7,14 +7,8 @@ %global qemu_user "qemu" %global libvirt_packages "libvirt-daemon-kvm,libvirt-daemon-config-network" @@ -250,7 +242,7 @@ index 2dfe413..2bb07e4 100644 # End local config -@@ -49,9 +43,6 @@ Requires: vte291 +@@ -48,9 +42,6 @@ Requires: gtk-vnc2 Requires: spice-gtk3 @@ -259,8 +251,8 @@ index 2dfe413..2bb07e4 100644 -%endif - BuildRequires: python -@@ -116,10 +107,6 @@ machine). + BuildRequires: intltool +@@ -118,10 +109,6 @@ %global _kvm_packages --kvm-package-names=%{kvm_packages} %endif @@ -271,7 +263,7 @@ index 2dfe413..2bb07e4 100644 %if %{libvirt_packages} %global _libvirt_packages --libvirt-package-names=%{libvirt_packages} %endif -@@ -141,7 +128,6 @@ python setup.py configure \ +@@ -143,7 +130,6 @@ %{?_kvm_packages} \ %{?_libvirt_packages} \ %{?_askpass_package} \ @@ -279,10 +271,8 @@ index 2dfe413..2bb07e4 100644 %{?_stable_defaults} \ %{?_default_hvs} -diff --git a/virt-manager.spec.in b/virt-manager.spec.in -index 8c4a811..6497f52 100644 ---- a/virt-manager.spec.in -+++ b/virt-manager.spec.in +--- virt-manager-1.4.1.orig/virt-manager.spec.in 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virt-manager.spec.in 2017-03-10 22:48:15.390406243 -0500 @@ -7,14 +7,8 @@ %global qemu_user "qemu" %global libvirt_packages "libvirt-daemon-kvm,libvirt-daemon-config-network" @@ -298,18 +288,17 @@ index 8c4a811..6497f52 100644 # End local config -@@ -49,10 +43,6 @@ Requires: vte291 +@@ -48,9 +42,6 @@ Requires: gtk-vnc2 Requires: spice-gtk3 -%if 0%{?rhel} == 7 -Requires: gnome-icon-theme -%endif -- - BuildRequires: python + BuildRequires: intltool -@@ -116,10 +106,6 @@ machine). +@@ -118,10 +109,6 @@ %global _kvm_packages --kvm-package-names=%{kvm_packages} %endif @@ -320,7 +309,7 @@ index 8c4a811..6497f52 100644 %if %{libvirt_packages} %global _libvirt_packages --libvirt-package-names=%{libvirt_packages} %endif -@@ -141,7 +127,6 @@ python setup.py configure \ +@@ -143,7 +130,6 @@ %{?_kvm_packages} \ %{?_libvirt_packages} \ %{?_askpass_package} \ @@ -328,11 +317,9 @@ index 8c4a811..6497f52 100644 %{?_stable_defaults} \ %{?_default_hvs} -diff --git a/virtManager/config.py b/virtManager/config.py -index 5b04013..b52f121 100644 ---- a/virtManager/config.py -+++ b/virtManager/config.py -@@ -170,7 +170,6 @@ class vmmConfig(object): +--- virt-manager-1.4.1.orig/virtManager/config.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virtManager/config.py 2017-03-10 22:50:33.864245576 -0500 +@@ -170,7 +170,6 @@ self.keyring = None self.default_qemu_user = CLIConfig.default_qemu_user @@ -340,11 +327,9 @@ index 5b04013..b52f121 100644 self.hv_packages = CLIConfig.hv_packages self.libvirt_packages = CLIConfig.libvirt_packages self.askpass_package = CLIConfig.askpass_package -diff --git a/virtManager/connection.py b/virtManager/connection.py -index 6cb9cc0..21de8cf 100644 ---- a/virtManager/connection.py -+++ b/virtManager/connection.py -@@ -642,8 +642,8 @@ class vmmConnection(vmmGObject): +--- virt-manager-1.4.1.orig/virtManager/connection.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virtManager/connection.py 2017-03-10 22:52:51.661448345 -0500 +@@ -640,8 +640,8 @@ continue if (devtype == "usb_device" and @@ -355,11 +340,9 @@ index 6cb9cc0..21de8cf 100644 xmlobj.vendor_id == "0x1d6b")) and ("root hub" in str(xmlobj.product_name) or ("host controller" in str(xmlobj.product_name).lower() and -diff --git a/virtManager/create.py b/virtManager/create.py -index 737c1fa..4c34585 100644 ---- a/virtManager/create.py -+++ b/virtManager/create.py -@@ -931,9 +931,7 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-1.4.1.orig/virtManager/create.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virtManager/create.py 2017-03-10 22:57:03.156926039 -0500 +@@ -931,9 +931,7 @@ model = widget.get_model() model.clear() @@ -370,7 +353,7 @@ index 737c1fa..4c34585 100644 # Move 'generic' to the front of the list types = virtinst.OSDB.list_types() -@@ -959,17 +957,12 @@ class vmmCreate(vmmGObjectUI): +@@ -959,17 +957,12 @@ model = widget.get_model() model.clear() @@ -390,7 +373,7 @@ index 737c1fa..4c34585 100644 widget.set_active(0) -@@ -1075,17 +1068,7 @@ class vmmCreate(vmmGObjectUI): +@@ -1075,17 +1068,7 @@ install = _("Operating system container") osstr = "" @@ -409,11 +392,9 @@ index 737c1fa..4c34585 100644 self.widget("finish-warn-os").set_visible(not have_os) self.widget("summary-os").set_text(osstr) -diff --git a/virtcli/cliconfig.py b/virtcli/cliconfig.py -index ef66ba4..da077df 100644 ---- a/virtcli/cliconfig.py -+++ b/virtcli/cliconfig.py -@@ -79,8 +79,6 @@ class _CLIConfig(object): +--- virt-manager-1.4.1.orig/virtcli/cliconfig.py 2017-03-08 18:44:06.000000000 -0500 ++++ virt-manager-1.4.1/virtcli/cliconfig.py 2017-03-10 22:58:00.624369326 -0500 +@@ -79,8 +79,6 @@ self.default_qemu_user = _get_param("default_qemu_user", "root") self.stable_defaults = bool(int(_get_param("stable_defaults", "0"))) @@ -422,11 +403,9 @@ index ef66ba4..da077df 100644 self.hv_packages = _split_list(_get_param("hv_packages", "")) self.askpass_package = _split_list(_get_param("askpass_packages", "")) self.libvirt_packages = _split_list(_get_param("libvirt_packages", "")) -diff --git a/virtinst/guest.py b/virtinst/guest.py -index 6a42536..a444ab9 100644 ---- a/virtinst/guest.py -+++ b/virtinst/guest.py -@@ -608,7 +608,6 @@ class Guest(XMLBuilder): +--- virt-manager-1.4.1.orig/virtinst/guest.py 2017-03-08 17:26:39.000000000 -0500 ++++ virt-manager-1.4.1/virtinst/guest.py 2017-03-10 23:12:35.175460760 -0500 +@@ -624,7 +624,6 @@ return if (self.conn.is_qemu() and @@ -434,7 +413,7 @@ index 6a42536..a444ab9 100644 self.conn.check_support(self.conn.SUPPORT_CONN_AUTOSOCKET)): dev = VirtualChannelDevice(self.conn) dev.type = "unix" -@@ -653,8 +652,7 @@ class Guest(XMLBuilder): +@@ -689,8 +688,7 @@ # But only if we are installing windows which has a multi stage # install. if (dev.is_cdrom() and @@ -444,7 +423,7 @@ index 6a42536..a444ab9 100644 dev.path = None def _set_defaults(self): -@@ -741,10 +739,8 @@ class Guest(XMLBuilder): +@@ -777,10 +775,8 @@ hpet.present = False hv_clock = self.conn.check_support(self.conn.SUPPORT_CONN_HYPERV_CLOCK) @@ -456,7 +435,7 @@ index 6a42536..a444ab9 100644 hyperv = self.clock.add_timer() hyperv.name = "hypervclock" hyperv.present = True -@@ -785,8 +781,6 @@ class Guest(XMLBuilder): +@@ -821,8 +817,6 @@ return self.cpu.set_special_mode(self.x86_cpu_default) @@ -465,7 +444,7 @@ index 6a42536..a444ab9 100644 def _hv_supported(self): -@@ -822,8 +816,7 @@ class Guest(XMLBuilder): +@@ -858,8 +852,7 @@ return default = True @@ -475,7 +454,7 @@ index 6a42536..a444ab9 100644 default = False if self.features.acpi == "default": -@@ -847,8 +840,7 @@ class Guest(XMLBuilder): +@@ -883,8 +876,7 @@ self.conn.check_support(self.conn.SUPPORT_CONN_VMPORT)): self.features.vmport = False @@ -485,7 +464,7 @@ index 6a42536..a444ab9 100644 self.conn.check_support(self.conn.SUPPORT_CONN_HYPERV_VAPIC)): if self.features.hyperv_relaxed is None: self.features.hyperv_relaxed = True -@@ -948,9 +940,7 @@ class Guest(XMLBuilder): +@@ -984,9 +976,7 @@ return True if (self.os.is_arm_vexpress() and @@ -496,7 +475,7 @@ index 6a42536..a444ab9 100644 return True return False -@@ -1142,7 +1132,7 @@ class Guest(XMLBuilder): +@@ -1183,7 +1173,7 @@ self._add_spice_usbredir() video_model = self._os_object.default_videomodel(self) @@ -505,11 +484,9 @@ index 6a42536..a444ab9 100644 video_model = 'vga' for video in self.get_devices("video"): -diff --git a/virtinst/initrdinject.py b/virtinst/initrdinject.py -index eb5f419..726264a 100644 ---- a/virtinst/initrdinject.py -+++ b/virtinst/initrdinject.py -@@ -24,61 +24,6 @@ import subprocess +--- virt-manager-1.4.1.orig/virtinst/initrdinject.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virtinst/initrdinject.py 2017-03-10 23:14:40.003240535 -0500 +@@ -24,61 +24,6 @@ import tempfile @@ -571,7 +548,7 @@ index eb5f419..726264a 100644 def perform_initrd_injections(initrd, injections, scratchdir): """ Insert files into the root directory of the initial ram disk -@@ -86,9 +31,6 @@ def perform_initrd_injections(initrd, injections, scratchdir): +@@ -86,9 +31,6 @@ if not injections: return @@ -581,11 +558,9 @@ index eb5f419..726264a 100644 tempdir = tempfile.mkdtemp(dir=scratchdir) os.chmod(tempdir, 0775) -diff --git a/virtinst/osdict.py b/virtinst/osdict.py -index e8c1487..2b2ba31 100644 ---- a/virtinst/osdict.py -+++ b/virtinst/osdict.py -@@ -39,10 +39,6 @@ def _remove_older_point_releases(distro_list): +--- virt-manager-1.4.1.orig/virtinst/osdict.py 2017-03-08 17:26:39.000000000 -0500 ++++ virt-manager-1.4.1/virtinst/osdict.py 2017-03-10 23:23:08.003973039 -0500 +@@ -39,10 +39,6 @@ return int(osobj.name.rsplit(".", 1)[-1]) def _find_latest(prefix): @@ -596,7 +571,7 @@ index e8c1487..2b2ba31 100644 latest_os = None first_id = None for osobj in ret[:]: -@@ -61,12 +57,6 @@ def _remove_older_point_releases(distro_list): +@@ -61,12 +57,6 @@ if latest_os: ret.insert(first_id, latest_os) @@ -609,7 +584,7 @@ index e8c1487..2b2ba31 100644 return ret -@@ -134,49 +124,7 @@ class _OSDB(object): +@@ -134,49 +124,7 @@ # This is only for back compatibility with pre-libosinfo support. # This should never change. _aliases = { @@ -659,7 +634,7 @@ index e8c1487..2b2ba31 100644 "other": "generic", } -@@ -232,17 +180,11 @@ class _OSDB(object): +@@ -232,17 +180,11 @@ return None osname = ret[0].get_short_id() @@ -678,7 +653,7 @@ index e8c1487..2b2ba31 100644 return approved_types def list_os(self, typename=None, only_supported=False, sortpref=None): -@@ -265,13 +207,6 @@ class _OSDB(object): +@@ -265,13 +207,6 @@ return _sort(sortmap, sortpref=sortpref, limit_point_releases=only_supported) @@ -692,7 +667,7 @@ index e8c1487..2b2ba31 100644 ##################### # OsVariant classes # -@@ -287,7 +222,6 @@ class _OsVariant(object): +@@ -287,7 +222,6 @@ self.codename = self._os and self._os.get_codename() or "" self.sortby = self._get_sortby() @@ -700,7 +675,7 @@ index e8c1487..2b2ba31 100644 self._supported = None -@@ -363,34 +297,6 @@ class _OsVariant(object): +@@ -363,34 +297,6 @@ return (datetime.datetime.strptime(eol_date, "%Y-%m-%d") > datetime.datetime.now()) @@ -735,7 +710,7 @@ index e8c1487..2b2ba31 100644 ############### # Public APIs # -@@ -408,39 +314,12 @@ class _OsVariant(object): +@@ -408,39 +314,11 @@ if not self._os: return "generic" @@ -768,7 +743,6 @@ index e8c1487..2b2ba31 100644 def get_clock(self): - if self.is_windows() or self._family in ['solaris']: - return "localtime" -+ return "localtime" return "utc" - def supports_virtiommio(self): @@ -777,12 +751,12 @@ index e8c1487..2b2ba31 100644 def default_netmodel(self): """ Default non-virtio net-model, since we check for that separately -@@ -499,37 +378,16 @@ class _OsVariant(object): +@@ -506,37 +384,16 @@ return False - def supports_qemu_ga(self): -- return self._is_related_to(["fedora18", "rhel6.0", "sles11sp4"]) +- return self._is_related_to(["debian8", "fedora18", "rhel6.0", "sles11sp4"]) - def default_videomodel(self, guest): if guest.os.is_pseries(): @@ -815,11 +789,9 @@ index e8c1487..2b2ba31 100644 return None def get_recommended_resources(self, guest): -diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py -index 692a297..58c1724 100644 ---- a/virtinst/urlfetcher.py -+++ b/virtinst/urlfetcher.py -@@ -382,96 +382,6 @@ def _grabTreeinfo(fetcher): +--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py 2017-03-08 16:55:43.000000000 -0500 ++++ virt-manager-1.4.1/virtinst/urlfetcher.py 2017-03-10 23:26:47.220886798 -0500 +@@ -382,96 +382,6 @@ return treeinfo @@ -916,7 +888,7 @@ index 692a297..58c1724 100644 def getDistroStore(guest, fetcher): stores = [] logging.debug("Finding distro store for location=%s", fetcher.location) -@@ -755,513 +665,6 @@ class GenericDistro(Distro): +@@ -757,527 +667,6 @@ return self.fetcher.acquireFile(self._valid_iso_path) @@ -1248,19 +1220,33 @@ index 692a297..58c1724 100644 - def __init__(self, *args, **kwargs): - Distro.__init__(self, *args, **kwargs) - -- # Pull the tree's arch out of the URL text -- self._treeArch = "i386" -- for pattern in ["^.*/installer-(\w+)/?$", -- "^.*/daily-images/(\w+)/?$"]: -- arch = re.findall(pattern, self.uri) -- if arch: -- self._treeArch = arch[0] -- break -- +- self._treeArch = self._find_treearch() - self._url_prefix = 'current/images' - self._installer_dirname = self.name.lower() + "-installer" - self._set_media_paths() - +- def _find_treearch(self): +- for pattern in ["^.*/installer-(\w+)/?$", +- "^.*/daily-images/(\w+)/?$"]: +- arch = re.findall(pattern, self.uri) +- if not arch: +- continue +- logging.debug("Found pattern=%s treearch=%s in uri", +- pattern, arch[0]) +- return arch[0] +- +- # Check for standard 'i386' and 'amd64' which will be +- # in the URI name for --location $ISO mounts +- for arch in ["i386", "amd64"]: +- if arch in self.uri: +- logging.debug("Found treearch=%s in uri", arch) +- return arch +- +- # Otherwise default to i386 +- arch = "i386" +- logging.debug("No treearch found in uri, defaulting to arch=%s", arch) +- return arch +- - def _set_media_paths(self): - self._boot_iso_paths = ["%s/netboot/mini.iso" % self._url_prefix] - -- cgit v1.2.3