import virt-top-1.0.8-37.el8

c8 imports/c8/virt-top-1.0.8-37.el8
CentOS Sources 2 years ago committed by MSVSphere Packaging Team
commit a9b04b4436

1
.gitignore vendored

@ -0,0 +1 @@
SOURCES/virt-top-1.0.8.tar.gz

@ -0,0 +1 @@
97d524405e9ac7fa86ff4410c1f7e10811a70bd1 SOURCES/virt-top-1.0.8.tar.gz

@ -0,0 +1,39 @@
From c3b7c8d964ec0306e5ef7996ee606494e0349d62 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 29 Nov 2022 08:13:30 +0000
Subject: [PATCH 01/23] virt-top-1.0.4-processcsv-documentation
---
virt-top/virt-top.pod | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/virt-top/virt-top.pod b/virt-top/virt-top.pod
index 4d81608..7b5e0e4 100755
--- a/virt-top/virt-top.pod
+++ b/virt-top/virt-top.pod
@@ -129,6 +129,22 @@ I<output.csv.00>, I<output.csv.01> etc.
virt-top --csv >(split -d -l 1000 - output.csv.)
+RHEL provides a short Python script called C<processcsv.py> which
+can be used to post-process the CSV output. Run it like this:
+
+ virt-top --csv data.csv
+ processcsv.py < data.csv
+
+This creates or I<overwrites> the following files in the current
+directory:
+
+ global.csv
+ domain<NNN>.csv
+
+C<global.csv> will contain the global data. One
+C<domainE<lt>NNNE<gt>.csv> file will also be created for each domain
+with ID C<NNN>, containing the per-domain data.
+
=item B<--no-csv-cpu>
Disable domain CPU stats in CSV output.
--
2.31.1

@ -0,0 +1,50 @@
From 5790c2e4033fd81ef66331fe0f768989c10df6b2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 2 Aug 2014 17:37:21 +0100
Subject: [PATCH 02/23] Disable warning about immutable strings (for OCaml
4.02).
---
Makefile.in | 2 +-
virt-top/Makefile.in | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 32e0b66..b310e58 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,5 +1,5 @@
# virt-top
-# Copyright (C) 2007-2009 Red Hat Inc., Richard W.M. Jones
+# Copyright (C) 2007-2014 Red Hat Inc., Richard W.M. Jones
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
diff --git a/virt-top/Makefile.in b/virt-top/Makefile.in
index 5aa0c35..98e6647 100755
--- a/virt-top/Makefile.in
+++ b/virt-top/Makefile.in
@@ -1,5 +1,5 @@
# virt-top
-# Copyright (C) 2007-2009 Red Hat Inc., Richard W.M. Jones
+# Copyright (C) 2007-2014 Red Hat Inc., Richard W.M. Jones
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -64,11 +64,11 @@ OBJS += virt_top_main.cmo
XOBJS := $(OBJS:.cmo=.cmx)
-OCAMLCFLAGS := -g -warn-error A
+OCAMLCFLAGS := -g -warn-error A-3
OCAMLCLIBS := -linkpkg
OCAMLOPTPACKAGES := $(OCAMLCPACKAGES)
-OCAMLOPTFLAGS := -warn-error A
+OCAMLOPTFLAGS := -warn-error A-3
OCAMLOPTLIBS := $(OCAMLCLIBS)
BYTE_TARGETS := virt-top
--
2.31.1

@ -0,0 +1,167 @@
From e2160973526c817bac050f3d7207d5c291b16177 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 21 Feb 2015 17:27:59 +0000
Subject: [PATCH 03/23] Move upstream translations from Tranifex to Zanata.
This is at the request of the Fedora localization team.
For further information see:
https://www.redhat.com/archives/libguestfs/2015-February/msg00168.html
---
po/zanata-pull.sh | 30 +++++++++++++
po/zanata.xml | 106 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 136 insertions(+)
create mode 100755 po/zanata-pull.sh
create mode 100644 po/zanata.xml
diff --git a/po/zanata-pull.sh b/po/zanata-pull.sh
new file mode 100755
index 0000000..d051b7a
--- /dev/null
+++ b/po/zanata-pull.sh
@@ -0,0 +1,30 @@
+#!/bin/bash -
+# Pull translations from Zanata.
+# Copyright (C) 2011-2015 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+echo zanata po pull
+zanata po pull
+
+# Remove PO files that have no translations in them.
+for f in *.po; do
+ if ! grep -q '^msgstr "[^"]' $f; then
+ echo rm $f
+ rm $f
+ fi
+done
diff --git a/po/zanata.xml b/po/zanata.xml
new file mode 100644
index 0000000..64810f9
--- /dev/null
+++ b/po/zanata.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<config xmlns="http://zanata.org/namespace/config/">
+ <url>https://fedora.zanata.org</url>
+ <project>virt-top</project>
+ <project-version>master</project-version>
+ <project-type>gettext</project-type>
+
+ <locales>
+ <locale>sq</locale>
+ <locale>ar</locale>
+ <locale>as</locale>
+ <locale>ast</locale>
+ <locale>bal</locale>
+ <locale>eu</locale>
+ <locale>bn</locale>
+ <locale>bn-IN</locale>
+ <locale>brx</locale>
+ <locale>bs</locale>
+ <locale>br</locale>
+ <locale>bg</locale>
+ <locale>ca</locale>
+ <locale>zh-CN</locale>
+ <locale>zh-HK</locale>
+ <locale>zh-TW</locale>
+ <locale>kw</locale>
+ <locale>kw-GB</locale>
+ <locale>cs</locale>
+ <locale>da</locale>
+ <locale>nl</locale>
+ <locale>en-GB</locale>
+ <locale>eo</locale>
+ <locale>et</locale>
+ <locale>fi</locale>
+ <locale>fr</locale>
+ <locale>gl</locale>
+ <locale>ka</locale>
+ <locale>de</locale>
+ <locale>el</locale>
+ <locale>gu</locale>
+ <locale>he</locale>
+ <locale>hi</locale>
+ <locale>hu</locale>
+ <locale>is</locale>
+ <locale>id</locale>
+ <locale>ia</locale>
+ <locale>it</locale>
+ <locale>ja</locale>
+ <locale>kn</locale>
+ <locale>kk</locale>
+ <locale>km</locale>
+ <locale>ky</locale>
+ <locale>ko</locale>
+ <locale>lt</locale>
+ <locale>nds</locale>
+ <locale>mk</locale>
+ <locale>mai</locale>
+ <locale>ms</locale>
+ <locale>ml</locale>
+ <locale>mr</locale>
+ <locale>mn</locale>
+ <locale>ne</locale>
+ <locale>nb</locale>
+ <locale>nn</locale>
+ <locale>or</locale>
+ <locale>pa</locale>
+ <locale>fa</locale>
+ <locale>pl</locale>
+ <locale>pt</locale>
+ <locale>pt-BR</locale>
+ <locale>ro</locale>
+ <locale>ru</locale>
+ <locale>sr</locale>
+ <locale>sr@latin</locale>
+ <locale>si</locale>
+ <locale>sk</locale>
+ <locale>sl</locale>
+ <locale>es</locale>
+ <locale>sv</locale>
+ <locale>tg</locale>
+ <locale>ta</locale>
+ <locale>te</locale>
+ <locale>bo</locale>
+ <locale>tr</locale>
+ <locale>uk</locale>
+ <locale>ur</locale>
+ <locale>wba</locale>
+ <locale>cy</locale>
+ <locale>lv</locale>
+ <locale>kw@uccor</locale>
+ <locale>kw@kkcor</locale>
+ <locale>af</locale>
+ <locale>am</locale>
+ <locale>be</locale>
+ <locale>hr</locale>
+ <locale>de-CH</locale>
+ <locale>th</locale>
+ <locale>vi</locale>
+ <locale>zu</locale>
+ <locale>ilo</locale>
+ <locale>nso</locale>
+ <locale>tw</locale>
+ <locale>yo</locale>
+ <locale>anp</locale>
+ </locales>
+
+</config>
--
2.31.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,26 @@
From da33ffc24105a414fba9c3e1b95d33efae7af9ad Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 4 Jan 2016 11:48:40 -0500
Subject: [PATCH 05/23] build: Add -g flag to ocamlopt.
Modern ocamlopt supports the -g flag fine (very old versions did not).
---
virt-top/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt-top/Makefile.in b/virt-top/Makefile.in
index 98e6647..e149b26 100755
--- a/virt-top/Makefile.in
+++ b/virt-top/Makefile.in
@@ -68,7 +68,7 @@ OCAMLCFLAGS := -g -warn-error A-3
OCAMLCLIBS := -linkpkg
OCAMLOPTPACKAGES := $(OCAMLCPACKAGES)
-OCAMLOPTFLAGS := -warn-error A-3
+OCAMLOPTFLAGS := $(OCAMLCFLAGS)
OCAMLOPTLIBS := $(OCAMLCLIBS)
BYTE_TARGETS := virt-top
--
2.31.1

@ -0,0 +1,719 @@
From 649fc52c6728bb8b1788a5ae74d4002781a88fce Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 31 Oct 2016 12:01:40 +0000
Subject: [PATCH 06/23] Rename source directory and files.
This renames the source directory from virt-top to src/ and removes
the unnecessary virt_top_* prefix from many source files.
This is entirely refactoring and makes no functional change.
Also this fixes the MANIFEST file and removes old Transifex
configuration, fixing commit defe5bdd4a32e0206a786d279e0f9cfc238e5e17.
---
.gitignore | 72 ++++++++-----------
.tx/config | 8 ---
ChangeLog | 30 ++++++++
MANIFEST | 41 +++++++----
Makefile.in | 15 ++--
README | 2 +-
configure.ac | 29 ++++----
src/.depend | 20 ++++++
{virt-top => src}/Makefile.in | 18 ++---
{virt-top => src}/README | 22 +++---
virt-top/virt_top_main.ml => src/main.ml | 4 +-
.../opt_calendar1.ml | 4 +-
.../opt_calendar2.ml | 4 +-
virt-top/virt_top_csv.ml => src/opt_csv.ml | 6 +-
virt-top/virt_top_xml.ml => src/opt_xml.ml | 4 +-
virt-top/virt_top.ml => src/top.ml | 8 +--
virt-top/virt_top.mli => src/top.mli | 0
virt-top/virt_top_utils.ml => src/utils.ml | 2 +-
virt-top/virt_top_utils.mli => src/utils.mli | 0
.../version.ml.in | 0
{virt-top => src}/virt-top.pod | 0
virt-top/.depend | 20 ------
22 files changed, 163 insertions(+), 146 deletions(-)
delete mode 100644 .tx/config
create mode 100644 src/.depend
rename {virt-top => src}/Makefile.in (91%)
rename {virt-top => src}/README (77%)
rename virt-top/virt_top_main.ml => src/main.ml (98%)
rename virt-top/virt_top_calendar1.ml => src/opt_calendar1.ml (97%)
rename virt-top/virt_top_calendar2.ml => src/opt_calendar2.ml (97%)
rename virt-top/virt_top_csv.ml => src/opt_csv.ml (94%)
rename virt-top/virt_top_xml.ml => src/opt_xml.ml (97%)
rename virt-top/virt_top.ml => src/top.ml (99%)
rename virt-top/virt_top.mli => src/top.mli (100%)
rename virt-top/virt_top_utils.ml => src/utils.ml (99%)
rename virt-top/virt_top_utils.mli => src/utils.mli (100%)
rename virt-top/virt_top_version.ml.in => src/version.ml.in (100%)
rename {virt-top => src}/virt-top.pod (100%)
delete mode 100644 virt-top/.depend
diff --git a/.gitignore b/.gitignore
index d08e9e2..e3f77e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,50 +1,36 @@
-aclocal.m4
-META
-ocaml-libvirt-*.tar.gz
-ocaml-libvirt-*.exe
-html
-configure
-config.log
-config.status
-config.h
-config.cache
-Makefile
-Make.rules
-*/Makefile
-autom4te.cache
-core
-core.*
+*.a
+*.cma
*.cmi
*.cmo
*.cmx
-*.cma
*.cmxa
-*.o
-*.so
-*.a
-*.opt
*.dll
*.exe
-*~
-libvirt/libvirt_version.ml
-examples/list_domains
-examples/node_info
-mlvirsh/mlvirsh
-virt-ctrl/virt-ctrl
-virt-top/virt-top
-virt-df/virt-df
-wininstaller.nsis
+*.o
+*.opt
*.orig
-mlvirsh/mlvirsh_gettext.ml
-virt-ctrl/virt_ctrl_gettext.ml
-virt-df/virt_df_gettext.ml
-virt-top/virt_top_gettext.ml
-virt-top/virt_top_version.ml
-po/*.mo
-po/*.po.bak
-virt-df/virt_df_lvm2_lexer.ml
-virt-df/virt_df_lvm2_parser.ml
-virt-df/virt_df_lvm2_parser.mli
-virt-top-*.tar.gz
-virt-top/virt-top.1
-virt-top/virt-top.txt
\ No newline at end of file
+*.so
+*~
+
+META
+Makefile
+aclocal.m4
+config.cache
+config.h
+config.log
+config.status
+configure
+core
+core.*
+html
+
+/Make.rules
+/autom4te.cache
+/po/*.mo
+/po/*.po.bak
+/src/opt_gettext.ml
+/src/version.ml
+/src/virt-top
+/src/virt-top.1
+/src/virt-top.txt
+/virt-top-*.tar.gz
diff --git a/.tx/config b/.tx/config
deleted file mode 100644
index 3e17770..0000000
--- a/.tx/config
+++ /dev/null
@@ -1,8 +0,0 @@
-[main]
-host = https://www.transifex.net
-
-[virttop.virttoppot]
-file_filter = po/<lang>.po
-source_file = po/virt-top.pot
-source_lang = en
-
diff --git a/ChangeLog b/ChangeLog
index 8daca45..1b3999a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2016-10-31 Richard W.M. Jones <rjones@redhat.com>
+
+ Rename source directory and files.
+ This renames the source directory from virt-top to src/ and removes
+ the unnecessary virt_top_* prefix from many source files.
+
+ This is entirely refactoring and makes no functional change.
+
+ Also this fixes the MANIFEST file and removes old Transifex
+ configuration, fixing commit defe5bdd4a32e0206a786d279e0f9cfc238e5e17.
+
+2016-01-04 Richard W.M. Jones <rjones@redhat.com>
+
+ build: Add -g flag to ocamlopt.
+ Modern ocamlopt supports the -g flag fine (very old versions did not).
+
+2015-02-21 Richard W.M. Jones <rjones@redhat.com>
+
+ Update translations from Zanata.
+
+ Move upstream translations from Tranifex to Zanata.
+ This is at the request of the Fedora localization team.
+ For further information see:
+
+ https://www.redhat.com/archives/libguestfs/2015-February/msg00168.html
+
+2014-08-02 Richard W.M. Jones <rjones@redhat.com>
+
+ Disable warning about immutable strings (for OCaml 4.02).
+
2012-10-12 Richard W.M. Jones <rjones@redhat.com>
Version 1.0.8.
diff --git a/MANIFEST b/MANIFEST
index c5958d7..2cf377f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -14,12 +14,17 @@ Make.rules.in
MANIFEST
m4/ocaml.m4
po/as.po
+po/ca.po
po/de.po
po/es.po
+po/eu.po
po/fr.po
po/gu.po
+po/hu.po
+po/id.po
po/it.po
po/ja.po
+po/ka.po
po/kn.po
po/LINGUAS
po/Makefile.in
@@ -27,30 +32,36 @@ po/ml.po
po/mr.po
po/nl.po
po/or.po
+po/pa.po
po/pl.po
po/pt_BR.po
po/pt.po
po/POTFILES
po/ru.po
+po/sr.po
+po/sv.po
po/te.po
+po/tg.po
+po/tr.po
po/uk.po
po/virt-top.pot
+po/zanata-pull.sh
+po/zanata.xml
po/zh_CN.po
po/zh_TW.po
README
TODO
-.tx/config
-virt-top/.depend
-virt-top/Makefile.in
-virt-top/README
-virt-top/virt-top.pod
-virt-top/virt_top.ml
-virt-top/virt_top.mli
-virt-top/virt_top_calendar1.ml
-virt-top/virt_top_calendar2.ml
-virt-top/virt_top_csv.ml
-virt-top/virt_top_main.ml
-virt-top/virt_top_utils.ml
-virt-top/virt_top_utils.mli
-virt-top/virt_top_version.ml.in
-virt-top/virt_top_xml.ml
+src/.depend
+src/Makefile.in
+src/README
+src/main.ml
+src/opt_calendar1.ml
+src/opt_calendar2.ml
+src/opt_csv.ml
+src/opt_xml.ml
+src/top.ml
+src/top.mli
+src/utils.ml
+src/utils.mli
+src/version.ml.in
+src/virt-top.pod
diff --git a/Makefile.in b/Makefile.in
index b310e58..d0aec17 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -22,25 +22,22 @@ INSTALL = @INSTALL@
MAKENSIS = @MAKENSIS@
-SUBDIRS = virt-top
+SUBDIRS = src
all opt depend install:
- for d in $(SUBDIRS); do \
- $(MAKE) -C $$d $@; \
- if [ $$? -ne 0 ]; then exit 1; fi; \
- done
+ $(MAKE) -C src $@
clean:
for d in . $(SUBDIRS); do \
(cd $$d; rm -f *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *.so *.opt *~ *.dll *.exe core); \
done
- rm -f virt-top/virt-top
+ rm -f src/virt-top
distclean: clean
rm -f config.h config.log config.status configure
rm -rf autom4te.cache
rm -f Makefile
- rm -f virt-top/Makefile
+ rm -f src/Makefile
# Distribution.
@@ -51,8 +48,8 @@ dist: ChangeLog
tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
$(INSTALL) -m 0755 configure $(PACKAGE)-$(VERSION)/
$(INSTALL) -m 0644 aclocal.m4 $(PACKAGE)-$(VERSION)/
- $(INSTALL) -m 0644 virt-top/virt-top.1 $(PACKAGE)-$(VERSION)/virt-top/
- $(INSTALL) -m 0644 virt-top/virt-top.txt $(PACKAGE)-$(VERSION)/virt-top/
+ $(INSTALL) -m 0644 src/virt-top.1 $(PACKAGE)-$(VERSION)/src/
+ $(INSTALL) -m 0644 src/virt-top.txt $(PACKAGE)-$(VERSION)/src/
tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
rm -rf $(PACKAGE)-$(VERSION)
ls -l $(PACKAGE)-$(VERSION).tar.gz
diff --git a/README b/README
index 5a8bc87..d97fa62 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
virt-top
----------------------------------------------------------------------
-Copyright (C) 2007-2012 Richard W.M. Jones, Red Hat Inc.
+Copyright (C) 2007-2016 Richard W.M. Jones, Red Hat Inc.
http://et.redhat.com/~rjones/virt-top/
http://libvirt.org/ocaml/
http://libvirt.org/
diff --git a/configure.ac b/configure.ac
index 0d41cda..ad65465 100644
--- a/configure.ac
+++ b/configure.ac
@@ -84,26 +84,24 @@ AC_CHECK_PROG(MSGFMT,msgfmt,msgfmt)
dnl Write gettext modules for the programs.
dnl http://www.le-gall.net/sylvain+violaine/documentation/ocaml-gettext/html/reference-manual/ch03s04.html
-for d in virt-top; do
- f=`echo $d | tr - _`_gettext.ml
- AC_MSG_NOTICE([creating $d/$f])
- rm -f $d/$f
- echo "(* This file is generated automatically by ./configure. *)" > $d/$f
- if test "x$OCAML_PKG_gettext" != "xno"; then
- # Gettext module is available, so use it.
- cat <<EOT >>$d/$f
+AC_MSG_NOTICE([creating src/opt_gettext.ml])
+rm -f src/opt_gettext.ml
+echo "(* This file is generated automatically by ./configure. *)" > src/opt_gettext.ml
+if test "x$OCAML_PKG_gettext" != "xno"; then
+ # Gettext module is available, so use it.
+ cat <<EOT >>src/opt_gettext.ml
module Gettext = Gettext.Program (
struct
- let textdomain = "$d"
+ let textdomain = "virt-top"
let codeset = None
let dir = None
let dependencies = [[]]
end
) (GettextStub.Native)
EOT
- else
- # No gettext module is available, so fake the translation functions.
- cat <<EOT >>$d/$f
+else
+ # No gettext module is available, so fake the translation functions.
+ cat <<EOT >>src/opt_gettext.ml
module Gettext = struct
external s_ : string -> string = "%identity"
external f_ : ('a -> 'b, 'c, 'd) format -> ('a -> 'b, 'c, 'd) format
@@ -115,8 +113,7 @@ module Gettext = struct
= fun s p n -> if n = 1 then s else p
end
EOT
- fi
-done
+fi
dnl Summary.
echo "------------------------------------------------------------"
@@ -128,7 +125,7 @@ AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile
Make.rules
po/Makefile
- virt-top/Makefile
- virt-top/virt_top_version.ml
+ src/Makefile
+ src/version.ml
])
AC_OUTPUT
diff --git a/src/.depend b/src/.depend
new file mode 100644
index 0000000..5325c54
--- /dev/null
+++ b/src/.depend
@@ -0,0 +1,20 @@
+main.cmo: top.cmi opt_gettext.cmo
+main.cmx: top.cmx opt_gettext.cmx
+opt_calendar1.cmo: top.cmi opt_gettext.cmo
+opt_calendar1.cmx: top.cmx opt_gettext.cmx
+opt_calendar2.cmo: top.cmi opt_gettext.cmo
+opt_calendar2.cmx: top.cmx opt_gettext.cmx
+opt_csv.cmo: top.cmi opt_gettext.cmo
+opt_csv.cmx: top.cmx opt_gettext.cmx
+opt_gettext.cmo:
+opt_gettext.cmx:
+opt_xml.cmo: top.cmi opt_gettext.cmo
+opt_xml.cmx: top.cmx opt_gettext.cmx
+top.cmi:
+top.cmo: version.cmo utils.cmi opt_gettext.cmo top.cmi
+top.cmx: version.cmx utils.cmx opt_gettext.cmx top.cmi
+utils.cmi:
+utils.cmo: opt_gettext.cmo utils.cmi
+utils.cmx: opt_gettext.cmx utils.cmi
+version.cmo:
+version.cmx:
diff --git a/virt-top/Makefile.in b/src/Makefile.in
similarity index 91%
rename from virt-top/Makefile.in
rename to src/Makefile.in
index e149b26..d29f2e8 100755
--- a/virt-top/Makefile.in
+++ b/src/Makefile.in
@@ -39,28 +39,28 @@ OCAMLCPACKAGES += -package gettext-stub
endif
OBJS := \
- virt_top_version.cmo \
- virt_top_gettext.cmo \
- virt_top_utils.cmo \
- virt_top.cmo
+ version.cmo \
+ opt_gettext.cmo \
+ utils.cmo \
+ top.cmo
ifneq ($(OCAML_PKG_xml_light),no)
-OBJS += virt_top_xml.cmo
+OBJS += opt_xml.cmo
OCAMLCPACKAGES += -package xml-light
endif
ifneq ($(OCAML_PKG_csv),no)
-OBJS += virt_top_csv.cmo
+OBJS += opt_csv.cmo
OCAMLCPACKAGES += -package csv
endif
ifneq ($(OCAML_PKG_calendar),no)
ifeq ($(is_calendar2),no)
-OBJS += virt_top_calendar1.cmo
+OBJS += opt_calendar1.cmo
OCAMLCPACKAGES += -package calendar
else
-OBJS += virt_top_calendar2.cmo
+OBJS += opt_calendar2.cmo
OCAMLCPACKAGES += -package calendar
endif
endif
-OBJS += virt_top_main.cmo
+OBJS += main.cmo
XOBJS := $(OBJS:.cmo=.cmx)
diff --git a/virt-top/README b/src/README
similarity index 77%
rename from virt-top/README
rename to src/README
index b594f95..47382a5 100755
--- a/virt-top/README
+++ b/src/README
@@ -1,11 +1,11 @@
The code is structured into these files:
- virt_top_utils.mli / virt_top_utils.ml
+ utils.mli, utils.ml
String functions and other small utility functions. This is
included directly into virt_top.ml.
- virt_top.mli / virt_top.ml
+ top.mli, top.ml
This is the virt-top program.
@@ -22,7 +22,11 @@ The code is structured into these files:
The function 'main_loop' runs the main loop and has sub-functions
to deal with keypresses, help screens and so on.
- virt_top_xml.ml
+ opt_gettext.ml
+ A generated file which adds gettext support if ocaml-gettext
+ was found at configure time, or else stubs it out.
+
+ opt_xml.ml
Any code which needs the optional xml-light library goes
in here. Mainly for parsing domain XML descriptions to get
@@ -31,21 +35,21 @@ The code is structured into these files:
The reason for having it in a separate file is so that we
don't depend on xml-light.
- virt_top_csv.ml
+ opt_csv.ml
Any code which needs the optional ocaml-csv library goes
in here. This implements the --csv command line option.
- virt_top_calendar.ml
+ opt_calendar1.ml, opt_calendar2.ml
Any code which needs the optional ocaml-calendar library
- goes in here. This implements the --end-time command line
- option.
+ (v1 or v2) goes in here. This implements the --end-time
+ command line option.
- virt_top_main.ml
+ main.ml
This is just a small bit of code to glue the modules together
- Virt_top + Virt_top_xml? + Virt_top_csv? + Virt_top_calendar?
+ Top + Opt_xml? + Opt_csv? + Opt_calendar{1,2}?
The man-page is generated from the single file:
diff --git a/virt-top/virt_top_main.ml b/src/main.ml
similarity index 98%
rename from virt-top/virt_top_main.ml
rename to src/main.ml
index e8c4425..34d13c8 100644
--- a/virt-top/virt_top_main.ml
+++ b/src/main.ml
@@ -21,8 +21,8 @@
open Curses
-open Virt_top_gettext.Gettext
-open Virt_top
+open Opt_gettext.Gettext
+open Top
(* Note: make sure we catch any exceptions and clean up the display.
*
diff --git a/virt-top/virt_top_calendar1.ml b/src/opt_calendar1.ml
similarity index 97%
rename from virt-top/virt_top_calendar1.ml
rename to src/opt_calendar1.ml
index 534465c..2c459fe 100755
--- a/virt-top/virt_top_calendar1.ml
+++ b/src/opt_calendar1.ml
@@ -22,9 +22,9 @@
open Printf
open ExtString
-open Virt_top_gettext.Gettext ;;
+open Opt_gettext.Gettext ;;
-Virt_top.parse_date_time :=
+Top.parse_date_time :=
fun time ->
let cal : Calendar.t =
if String.starts_with time "+" then ( (* +something *)
diff --git a/virt-top/virt_top_calendar2.ml b/src/opt_calendar2.ml
similarity index 97%
rename from virt-top/virt_top_calendar2.ml
rename to src/opt_calendar2.ml
index cc82eec..fd93704 100755
--- a/virt-top/virt_top_calendar2.ml
+++ b/src/opt_calendar2.ml
@@ -24,9 +24,9 @@ open CalendarLib
open Printf
open ExtString
-open Virt_top_gettext.Gettext ;;
+open Opt_gettext.Gettext ;;
-Virt_top.parse_date_time :=
+Top.parse_date_time :=
fun time ->
let cal : Calendar.t =
if String.starts_with time "+" then ( (* +something *)
diff --git a/virt-top/virt_top_csv.ml b/src/opt_csv.ml
similarity index 94%
rename from virt-top/virt_top_csv.ml
rename to src/opt_csv.ml
index e048856..6c3b2be 100644
--- a/virt-top/virt_top_csv.ml
+++ b/src/opt_csv.ml
@@ -19,16 +19,16 @@
This file contains all code which requires CSV support.
*)
-open Virt_top_gettext.Gettext
+open Opt_gettext.Gettext
(* Output channel, or None if CSV output not enabled. *)
let chan = ref None ;;
-Virt_top.csv_start :=
+Top.csv_start :=
fun filename ->
chan := Some (open_out filename) ;;
-Virt_top.csv_write :=
+Top.csv_write :=
fun row ->
match !chan with
| None -> () (* CSV output not enabled. *)
diff --git a/virt-top/virt_top_xml.ml b/src/opt_xml.ml
similarity index 97%
rename from virt-top/virt_top_xml.ml
rename to src/opt_xml.ml
index ab291d3..bb83780 100644
--- a/virt-top/virt_top_xml.ml
+++ b/src/opt_xml.ml
@@ -21,13 +21,13 @@
open ExtList
-open Virt_top_gettext.Gettext
+open Opt_gettext.Gettext
module C = Libvirt.Connect
module D = Libvirt.Domain
module N = Libvirt.Network ;;
-Virt_top.parse_device_xml :=
+Top.parse_device_xml :=
fun id dom ->
try
let xml = D.get_xml_desc dom in
diff --git a/virt-top/virt_top.ml b/src/top.ml
similarity index 99%
rename from virt-top/virt_top.ml
rename to src/top.ml
index 0aae24e..38658c6 100644
--- a/virt-top/virt_top.ml
+++ b/src/top.ml
@@ -21,8 +21,8 @@ open Printf
open ExtList
open Curses
-open Virt_top_gettext.Gettext
-open Virt_top_utils
+open Opt_gettext.Gettext
+open Utils
module C = Libvirt.Connect
module D = Libvirt.Domain
@@ -159,7 +159,7 @@ let start_up () =
and set_end_time time = end_time := Some ((!parse_date_time) time)
and display_version () =
printf "virt-top %s ocaml-libvirt %s\n"
- Virt_top_version.version Libvirt_version.version;
+ Version.version Libvirt_version.version;
exit 0
in
let argspec = Arg.align [
@@ -1723,7 +1723,7 @@ and show_help (_, _, _, _, _, _, hostname,
(* Banner at the top of the screen. *)
let banner =
sprintf (f_"virt-top %s ocaml-libvirt %s libvirt %d.%d.%d by Red Hat")
- Virt_top_version.version
+ Version.version
Libvirt_version.version
libvirt_major libvirt_minor libvirt_release in
let banner = pad cols banner in
diff --git a/virt-top/virt_top.mli b/src/top.mli
similarity index 100%
rename from virt-top/virt_top.mli
rename to src/top.mli
diff --git a/virt-top/virt_top_utils.ml b/src/utils.ml
similarity index 99%
rename from virt-top/virt_top_utils.ml
rename to src/utils.ml
index c5dc97d..3dc637d 100644
--- a/virt-top/virt_top_utils.ml
+++ b/src/utils.ml
@@ -21,7 +21,7 @@
open Printf
-open Virt_top_gettext.Gettext
+open Opt_gettext.Gettext
module C = Libvirt.Connect
module D = Libvirt.Domain
diff --git a/virt-top/virt_top_utils.mli b/src/utils.mli
similarity index 100%
rename from virt-top/virt_top_utils.mli
rename to src/utils.mli
diff --git a/virt-top/virt_top_version.ml.in b/src/version.ml.in
similarity index 100%
rename from virt-top/virt_top_version.ml.in
rename to src/version.ml.in
diff --git a/virt-top/virt-top.pod b/src/virt-top.pod
similarity index 100%
rename from virt-top/virt-top.pod
rename to src/virt-top.pod
diff --git a/virt-top/.depend b/virt-top/.depend
deleted file mode 100644
index 46099b7..0000000
--- a/virt-top/.depend
+++ /dev/null
@@ -1,20 +0,0 @@
-virt_top_calendar1.cmo: virt_top_gettext.cmo virt_top.cmi
-virt_top_calendar1.cmx: virt_top_gettext.cmx virt_top.cmx
-virt_top_calendar2.cmo: virt_top_gettext.cmo virt_top.cmi
-virt_top_calendar2.cmx: virt_top_gettext.cmx virt_top.cmx
-virt_top.cmi:
-virt_top.cmo: virt_top_version.cmo virt_top_utils.cmi virt_top_gettext.cmo virt_top.cmi
-virt_top.cmx: virt_top_version.cmx virt_top_utils.cmx virt_top_gettext.cmx virt_top.cmi
-virt_top_csv.cmo: virt_top_gettext.cmo virt_top.cmi
-virt_top_csv.cmx: virt_top_gettext.cmx virt_top.cmx
-virt_top_gettext.cmo:
-virt_top_gettext.cmx:
-virt_top_main.cmo: virt_top_gettext.cmo virt_top.cmi
-virt_top_main.cmx: virt_top_gettext.cmx virt_top.cmx
-virt_top_utils.cmi:
-virt_top_utils.cmo: virt_top_gettext.cmo virt_top_utils.cmi
-virt_top_utils.cmx: virt_top_gettext.cmx virt_top_utils.cmi
-virt_top_version.cmo:
-virt_top_version.cmx:
-virt_top_xml.cmo: virt_top_gettext.cmo virt_top.cmi
-virt_top_xml.cmx: virt_top_gettext.cmx virt_top.cmx
--
2.31.1

@ -0,0 +1,34 @@
From be5e812ea7ea266e0d0ce1c126606c7bd04523c8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 12:21:48 +0100
Subject: [PATCH 07/23] Enable same warnings as libguestfs.
In particular 'warning 3' was still enabled before, meaning that the
code would fail with newer OCaml compilers:
File "top.ml", line 377, characters 12-25:
Warning 3: deprecated: String.create
Use Bytes.create instead.
Since we want to continue using old OCaml for now, don't enable
this warning.
---
src/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Makefile.in b/src/Makefile.in
index d29f2e8..d744fd7 100755
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -64,7 +64,7 @@ OBJS += main.cmo
XOBJS := $(OBJS:.cmo=.cmx)
-OCAMLCFLAGS := -g -warn-error A-3
+OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
OCAMLCLIBS := -linkpkg
OCAMLOPTPACKAGES := $(OCAMLCPACKAGES)
--
2.31.1

@ -0,0 +1,48 @@
From 0d06cf9912262a28088377fb7b17682709752c6c Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 12:25:19 +0100
Subject: [PATCH 08/23] Remove +x (executable) permission on several source
files.
Not sure why it was there, but it was incorrect.
---
src/Makefile.in | 0
src/README | 0
src/opt_calendar1.ml | 0
src/opt_calendar2.ml | 0
src/top.mli | 0
src/utils.mli | 0
src/virt-top.pod | 0
7 files changed, 0 insertions(+), 0 deletions(-)
mode change 100755 => 100644 src/Makefile.in
mode change 100755 => 100644 src/README
mode change 100755 => 100644 src/opt_calendar1.ml
mode change 100755 => 100644 src/opt_calendar2.ml
mode change 100755 => 100644 src/top.mli
mode change 100755 => 100644 src/utils.mli
mode change 100755 => 100644 src/virt-top.pod
diff --git a/src/Makefile.in b/src/Makefile.in
old mode 100755
new mode 100644
diff --git a/src/README b/src/README
old mode 100755
new mode 100644
diff --git a/src/opt_calendar1.ml b/src/opt_calendar1.ml
old mode 100755
new mode 100644
diff --git a/src/opt_calendar2.ml b/src/opt_calendar2.ml
old mode 100755
new mode 100644
diff --git a/src/top.mli b/src/top.mli
old mode 100755
new mode 100644
diff --git a/src/utils.mli b/src/utils.mli
old mode 100755
new mode 100644
diff --git a/src/virt-top.pod b/src/virt-top.pod
old mode 100755
new mode 100644
--
2.31.1

@ -0,0 +1,95 @@
From 2df154c93069ab97f38fbb8e290527f74ace5e62 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 12:30:01 +0100
Subject: [PATCH 09/23] Refresh HACKING file.
Fixes commit b7c3ef13cbd9c9cd49005a32ffb70faf6f5bbe8c.
---
HACKING | 72 ++-------------------------------------------------------
1 file changed, 2 insertions(+), 70 deletions(-)
diff --git a/HACKING b/HACKING
index bce40a9..3cd266b 100644
--- a/HACKING
+++ b/HACKING
@@ -7,75 +7,7 @@ General OCaml advice:
(2) Emacs users: use tuareg-mode for editing OCaml.
-(3) http://www.ocaml-tutorial.org/
+(3) https://realworldocaml.org/ is the definitive book which is also
+ available online in full.
(4) http://camltastic.blogspot.com/2008/08/3-things-that-will-confuse-you-when.html
-
-The code is structured into these files:
-
- virt_top_utils.mli / virt_top_utils.ml
-
- String functions and other small utility functions. This is
- included directly into virt_top.ml.
-
- virt_top_version.ml
-
- The version number (automatically generated by configure).
-
- virt_top.mli / virt_top.ml
-
- This is the virt-top program.
-
- The two interesting functions are called 'collect' and 'redraw'.
-
- 'collect' collects all the information about domains, etc.
-
- 'redraw' updates the display on each frame.
-
- Another interesting function is 'start_up' which handles all
- start-up stuff, eg. command line arguments, connecting to the
- hypervisor, enabling curses.
-
- The function 'main_loop' runs the main loop and has sub-functions
- to deal with keypresses, help screens and so on.
-
- virt_top_xml.ml
-
- Any code which needs the optional xml-light library goes
- in here. Mainly for parsing domain XML descriptions to get
- the list of block devices and network interfaces.
-
- The reason for having it in a separate file is so that we
- don't depend on xml-light.
-
- virt_top_csv.ml
-
- Any code which needs the optional ocaml-csv library goes
- in here. This implements the --csv command line option.
-
- virt_top_calendar1.ml
- virt_top_calendar2.ml
-
- Any code which needs the optional ocaml-calendar library
- goes in here. This implements the --end-time command line
- option. Note there are two incompatible versions of the
- ocaml-calendar library, which is why we have two
- implementations. The Makefile works out which one to use.
-
- virt_top_gettext.ml
-
- Gettext interaction (this is generated by ./configure).
-
- virt_top_main.ml
-
- This is just a small bit of code to glue the modules above
- together.
-
-The man-page is generated from the single file:
-
- virt-top.pod
-
-which generates (using perldoc) the following:
-
- virt-top.1
- virt-top.txt
--
2.31.1

@ -0,0 +1,34 @@
From 26f12ab7c3a984c6a80d88de32394aaabfde1094 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 12:33:22 +0100
Subject: [PATCH 10/23] Fix po/POTFILES for new location of source files.
Fixes commit b7c3ef13cbd9c9cd49005a32ffb70faf6f5bbe8c.
---
po/POTFILES | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/po/POTFILES b/po/POTFILES
index 55bb82d..70d62d5 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -1,7 +1,9 @@
-../virt-top/virt_top_calendar1.ml
-../virt-top/virt_top_calendar2.ml
-../virt-top/virt_top_csv.ml
-../virt-top/virt_top_main.ml
-../virt-top/virt_top.ml
-../virt-top/virt_top_utils.ml
-../virt-top/virt_top_xml.ml
+../src/main.ml
+../src/opt_calendar1.ml
+../src/opt_calendar2.ml
+../src/opt_csv.ml
+../src/opt_gettext.ml
+../src/opt_xml.ml
+../src/top.ml
+../src/utils.ml
+../src/version.ml
--
2.31.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,203 @@
From 61ded220af5511b6c164123e612e5650af8e49be Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 12:41:21 +0100
Subject: [PATCH 12/23] Remove support for OCaml Calendar v1.
Calendar v2 was released in 2008 (9 years ago!), thus remove support
for v1.
This was already broken by commit dc0e217390132f7e76a4d9c0a8a81a9556d19081
so it likely didn't work anyway.
---
MANIFEST | 3 +-
configure.ac | 6 ---
po/POTFILES | 3 +-
src/.depend | 6 +--
src/Makefile.in | 7 +--
src/README | 8 ++--
src/{opt_calendar2.ml => opt_calendar.ml} | 0
src/opt_calendar1.ml | 56 -----------------------
8 files changed, 9 insertions(+), 80 deletions(-)
rename src/{opt_calendar2.ml => opt_calendar.ml} (100%)
delete mode 100644 src/opt_calendar1.ml
diff --git a/MANIFEST b/MANIFEST
index 2cf377f..26e87b2 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -55,8 +55,7 @@ src/.depend
src/Makefile.in
src/README
src/main.ml
-src/opt_calendar1.ml
-src/opt_calendar2.ml
+src/opt_calendar.ml
src/opt_csv.ml
src/opt_xml.ml
src/top.ml
diff --git a/configure.ac b/configure.ac
index ad65465..c9c7e34 100644
--- a/configure.ac
+++ b/configure.ac
@@ -57,12 +57,7 @@ dnl Check for optional OCaml packages.
AC_CHECK_OCAML_PKG(gettext)
AC_CHECK_OCAML_PKG(xml-light)
AC_CHECK_OCAML_PKG(csv)
-
-dnl Need to check which version of calendar is installed.
AC_CHECK_OCAML_PKG(calendar)
-if test "x$OCAML_PKG_calendar" != "xno"; then
- AC_CHECK_OCAML_MODULE(is_calendar2,calendar,[CalendarLib.Date],[+$OCAML_PKG_calendar])
-fi
AC_SUBST(OCAML_PKG_unix)
AC_SUBST(OCAML_PKG_extlib)
@@ -71,7 +66,6 @@ AC_SUBST(OCAML_PKG_gettext)
AC_SUBST(OCAML_PKG_xml_light)
AC_SUBST(OCAML_PKG_csv)
AC_SUBST(OCAML_PKG_calendar)
-AC_SUBST(is_calendar2)
dnl Check for optional perldoc (for building manual pages).
AC_CHECK_PROG(HAVE_PERLDOC,perldoc,perldoc)
diff --git a/po/POTFILES b/po/POTFILES
index 70d62d5..b826a2a 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -1,6 +1,5 @@
../src/main.ml
-../src/opt_calendar1.ml
-../src/opt_calendar2.ml
+../src/opt_calendar.ml
../src/opt_csv.ml
../src/opt_gettext.ml
../src/opt_xml.ml
diff --git a/src/.depend b/src/.depend
index 5325c54..f487c18 100644
--- a/src/.depend
+++ b/src/.depend
@@ -1,9 +1,7 @@
main.cmo: top.cmi opt_gettext.cmo
main.cmx: top.cmx opt_gettext.cmx
-opt_calendar1.cmo: top.cmi opt_gettext.cmo
-opt_calendar1.cmx: top.cmx opt_gettext.cmx
-opt_calendar2.cmo: top.cmi opt_gettext.cmo
-opt_calendar2.cmx: top.cmx opt_gettext.cmx
+opt_calendar.cmo: top.cmi opt_gettext.cmo
+opt_calendar.cmx: top.cmx opt_gettext.cmx
opt_csv.cmo: top.cmi opt_gettext.cmo
opt_csv.cmx: top.cmx opt_gettext.cmx
opt_gettext.cmo:
diff --git a/src/Makefile.in b/src/Makefile.in
index d744fd7..ae896cb 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -52,13 +52,8 @@ OBJS += opt_csv.cmo
OCAMLCPACKAGES += -package csv
endif
ifneq ($(OCAML_PKG_calendar),no)
-ifeq ($(is_calendar2),no)
-OBJS += opt_calendar1.cmo
+OBJS += opt_calendar.cmo
OCAMLCPACKAGES += -package calendar
-else
-OBJS += opt_calendar2.cmo
-OCAMLCPACKAGES += -package calendar
-endif
endif
OBJS += main.cmo
diff --git a/src/README b/src/README
index 47382a5..8aa2348 100644
--- a/src/README
+++ b/src/README
@@ -40,16 +40,16 @@ The code is structured into these files:
Any code which needs the optional ocaml-csv library goes
in here. This implements the --csv command line option.
- opt_calendar1.ml, opt_calendar2.ml
+ opt_calendar.ml
Any code which needs the optional ocaml-calendar library
- (v1 or v2) goes in here. This implements the --end-time
- command line option.
+ (v2) goes in here. This implements the --end-time command
+ line option.
main.ml
This is just a small bit of code to glue the modules together
- Top + Opt_xml? + Opt_csv? + Opt_calendar{1,2}?
+ Top + Opt_xml? + Opt_csv? + Opt_calendar?
The man-page is generated from the single file:
diff --git a/src/opt_calendar2.ml b/src/opt_calendar.ml
similarity index 100%
rename from src/opt_calendar2.ml
rename to src/opt_calendar.ml
diff --git a/src/opt_calendar1.ml b/src/opt_calendar1.ml
deleted file mode 100644
index 2c459fe..0000000
--- a/src/opt_calendar1.ml
+++ /dev/null
@@ -1,56 +0,0 @@
-(* 'top'-like tool for libvirt domains.
- (C) Copyright 2007-2009 Richard W.M. Jones, Red Hat Inc.
- http://libvirt.org/
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- This file contains all code which requires ocaml-calendar < 2.0
-*)
-
-open Printf
-open ExtString
-
-open Opt_gettext.Gettext ;;
-
-Top.parse_date_time :=
-fun time ->
- let cal : Calendar.t =
- if String.starts_with time "+" then ( (* +something *)
- let period = String.sub time 1 (String.length time - 1) in
- let period =
- if String.contains period ':' then ( (* +HH:MM:SS *)
- let t = Printer.TimePrinter.from_string period in
- let hh = Time.hour t and mm = Time.minute t and ss = Time.second t in
- Calendar.Period.make 0 0 0 hh mm ss
- ) else (* +seconds *)
- Calendar.Period.second (int_of_string period) in
- (* Add it as an offset from the current time. *)
- Calendar.add (Calendar.now ()) period
- ) else (
- if String.contains time '-' then (* YYYY-MM-DD HH:MM:SS *)
- Printer.CalendarPrinter.from_string time
- else ( (* HH:MM:SS *)
- let time = Printer.TimePrinter.from_string time in
- Calendar.create (Date.today ()) time
- )
- ) in
-
- eprintf "end time: %s\n" (Printer.CalendarPrinter.to_string cal);
-
- (* Convert to a time_t. Note that we compare this against
- * Unix.gettimeofday in the main module, so this must be returned as
- * plain seconds from 1970 with no timezone adjustment. (RHBZ#637964)
- *)
- Calendar.to_unixfloat cal
--
2.31.1

@ -0,0 +1,76 @@
From b7a80d457904a3d677a14b7641b957c9760c03f9 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 13:06:18 +0100
Subject: [PATCH 13/23] src: Fix some comments which referred to the old
filenames.
Fixes commit b7c3ef13cbd9c9cd49005a32ffb70faf6f5bbe8c.
---
src/top.ml | 8 ++++----
src/top.mli | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/top.ml b/src/top.ml
index 38658c6..f50e6a8 100644
--- a/src/top.ml
+++ b/src/top.ml
@@ -30,13 +30,13 @@ module N = Libvirt.Network
let rcfile = ".virt-toprc"
-(* Hook for XML support (see virt_top_xml.ml). *)
+(* Hook for XML support (see [opt_xml.ml]). *)
let parse_device_xml : (int -> [>`R] D.t -> string list * string list) ref =
ref (
fun _ _ -> [], []
)
-(* Hooks for CSV support (see virt_top_csv.ml). *)
+(* Hooks for CSV support (see [opt_csv.ml]). *)
let csv_start : (string -> unit) ref =
ref (
fun _ -> failwith (s_"virt-top was compiled without support for CSV files")
@@ -46,7 +46,7 @@ let csv_write : (string list -> unit) ref =
fun _ -> ()
)
-(* Hook for calendar support (see virt_top_calendar.ml). *)
+(* Hook for calendar support (see [opt_calendar.ml]). *)
let parse_date_time : (string -> float) ref =
ref (
fun _ ->
@@ -345,7 +345,7 @@ OPTIONS" in
(* This tuple of static information is called 'setup' in other parts
* of this program, and is passed to other functions such as redraw and
- * main_loop. See virt_top_main.ml.
+ * main_loop. See [main.ml].
*)
(conn,
!batch_mode, !script_mode, !csv_enabled, !stream_mode, (* immutable modes *)
diff --git a/src/top.mli b/src/top.mli
index 3ad0718..b0953dd 100644
--- a/src/top.mli
+++ b/src/top.mli
@@ -17,15 +17,15 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*)
-(* Hook for virt_top_xml to override (if present). *)
+(* Hook for [Opt_xml] to override (if present). *)
val parse_device_xml :
(int -> [ `R ] Libvirt.Domain.t -> string list * string list) ref
-(* Hooks for virt_top_csv to override (if present). *)
+(* Hooks for [Opt_csv] to override (if present). *)
val csv_start : (string -> unit) ref
val csv_write : (string list -> unit) ref
-(* Hook for virt_top_calendar to override (if present). *)
+(* Hook for [Opt_calendar] to override (if present). *)
val parse_date_time : (string -> float) ref
type setup =
--
2.31.1

@ -0,0 +1,211 @@
From 10660e29ea19a0e290e28afe0425f63afd0abd58 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 27 Mar 2017 21:22:52 +0100
Subject: [PATCH 15/23] Move block_in_bytes entirely to the presentation layer.
Simplifies and updates commit dbef8dd3bf00417e75a12c851b053e49c9e1a79e.
---
src/collect.ml | 19 +++----------------
src/collect.mli | 6 +-----
src/csv_output.ml | 14 ++++++++++----
src/csv_output.mli | 2 +-
src/redraw.ml | 10 +++++++---
src/stream_output.ml | 14 ++++++++++----
src/top.ml | 4 ++--
7 files changed, 34 insertions(+), 35 deletions(-)
diff --git a/src/collect.ml b/src/collect.ml
index f856067..448ce8c 100644
--- a/src/collect.ml
+++ b/src/collect.ml
@@ -57,12 +57,8 @@ and rd_active = {
(* The following are since the last slice, or None if cannot be calc'd: *)
rd_block_rd_reqs : int64 option; (* Number of block device read rqs. *)
rd_block_wr_reqs : int64 option; (* Number of block device write rqs. *)
- rd_block_rd_bytes : int64 option; (* Number of bytes block device read *)
- rd_block_wr_bytes : int64 option; (* Number of bytes block device write *)
- (* _info fields includes the number considering --block_in_bytes option *)
- rd_block_rd_info : int64 option; (* Block device read info for user *)
- rd_block_wr_info : int64 option; (* Block device read info for user *)
-
+ rd_block_rd_bytes : int64 option; (* Number of bytes block device read *)
+ rd_block_wr_bytes : int64 option; (* Number of bytes block device write *)
rd_net_rx_bytes : int64 option; (* Number of bytes received. *)
rd_net_tx_bytes : int64 option; (* Number of bytes transmitted. *)
}
@@ -114,7 +110,7 @@ let last_pcpu_usages = Hashtbl.create 13
let clear_pcpu_display_data () =
Hashtbl.clear last_pcpu_usages
-let collect (conn, _, _, _, _, node_info, _, _) block_in_bytes =
+let collect (conn, _, _, _, _, node_info, _, _) =
(* Number of physical CPUs (some may be disabled). *)
let nr_pcpus = C.maxcpus_of_node_info node_info in
@@ -178,7 +174,6 @@ let collect (conn, _, _, _, _, node_info, _, _) block_in_bytes =
rd_mem_bytes = 0L; rd_mem_percent = 0L;
rd_block_rd_reqs = None; rd_block_wr_reqs = None;
rd_block_rd_bytes = None; rd_block_wr_bytes = None;
- rd_block_rd_info = None; rd_block_wr_info = None;
rd_net_rx_bytes = None; rd_net_tx_bytes = None;
})
with
@@ -256,14 +251,6 @@ let collect (conn, _, _, _, _, node_info, _, _) block_in_bytes =
rd_block_rd_bytes = Some read_bytes;
rd_block_wr_bytes = Some write_bytes;
} in
- let rd = { rd with
- rd_block_rd_info =
- if block_in_bytes then
- rd.rd_block_rd_bytes else rd.rd_block_rd_reqs;
- rd_block_wr_info =
- if block_in_bytes then
- rd.rd_block_wr_bytes else rd.rd_block_wr_reqs;
- } in
name, Active rd
(* For all other domains we can't calculate it, so leave as None. *)
| rd -> rd
diff --git a/src/collect.mli b/src/collect.mli
index 440859b..9ad3dcb 100644
--- a/src/collect.mli
+++ b/src/collect.mli
@@ -48,10 +48,6 @@ and rd_active = {
rd_block_wr_reqs : int64 option; (* Number of block device write rqs. *)
rd_block_rd_bytes : int64 option; (* Number of bytes block device read *)
rd_block_wr_bytes : int64 option; (* Number of bytes block device write *)
- (* _info fields includes the number considering --block_in_bytes option *)
- rd_block_rd_info : int64 option; (* Block device read info for user *)
- rd_block_wr_info : int64 option; (* Block device read info for user *)
-
rd_net_rx_bytes : int64 option; (* Number of bytes received. *)
rd_net_tx_bytes : int64 option; (* Number of bytes transmitted. *)
}
@@ -75,7 +71,7 @@ type pcpu_stats = {
rd_pcpu_pcpus_cpu_time : float array
}
-val collect : Types.setup -> bool -> stats
+val collect : Types.setup -> stats
(** Collect statistics. *)
val collect_pcpu : stats -> pcpu_stats
diff --git a/src/csv_output.ml b/src/csv_output.ml
index 9496ca8..f23d673 100644
--- a/src/csv_output.ml
+++ b/src/csv_output.ml
@@ -56,6 +56,7 @@ let write_csv_header (csv_cpu, csv_mem, csv_block, csv_net) block_in_bytes =
(* Write summary data to CSV file. *)
let append_csv (_, _, _, _, _, node_info, hostname, _) (* setup *)
(csv_cpu, csv_mem, csv_block, csv_net)
+ block_in_bytes
{ rd_doms = doms;
rd_printable_time = printable_time;
rd_nr_pcpus = nr_pcpus; rd_total_cpu = total_cpu;
@@ -104,10 +105,15 @@ let append_csv (_, _, _, _, _, node_info, hostname, _) (* setup *)
(if csv_mem then [
Int64.to_string rd.rd_mem_bytes; Int64.to_string rd.rd_mem_percent
] else []) @
- (if csv_block then [
- string_of_int64_option rd.rd_block_rd_info;
- string_of_int64_option rd.rd_block_wr_info;
- ] else []) @
+ (if csv_block then
+ if block_in_bytes then [
+ string_of_int64_option rd.rd_block_rd_bytes;
+ string_of_int64_option rd.rd_block_wr_bytes;
+ ] else [
+ string_of_int64_option rd.rd_block_rd_reqs;
+ string_of_int64_option rd.rd_block_wr_reqs;
+ ]
+ else []) @
(if csv_net then [
string_of_int64_option rd.rd_net_rx_bytes;
string_of_int64_option rd.rd_net_tx_bytes;
diff --git a/src/csv_output.mli b/src/csv_output.mli
index d5eab0f..4064be5 100644
--- a/src/csv_output.mli
+++ b/src/csv_output.mli
@@ -24,4 +24,4 @@ val csv_write : (string list -> unit) ref
val write_csv_header : bool * bool * bool * bool -> bool -> unit
-val append_csv : Types.setup -> bool * bool * bool * bool -> Collect.stats -> unit
+val append_csv : Types.setup -> bool * bool * bool * bool -> bool -> Collect.stats -> unit
diff --git a/src/redraw.ml b/src/redraw.ml
index 9ce889b..0403158 100644
--- a/src/redraw.ml
+++ b/src/redraw.ml
@@ -155,8 +155,12 @@ let redraw display_mode sort_order
| (name, Active rd) :: doms ->
if lineno < lines then (
let state = show_state rd.rd_info.D.state in
- let rd_req = Show.int64_option rd.rd_block_rd_info in
- let wr_req = Show.int64_option rd.rd_block_wr_info in
+ let rd_info =
+ if block_in_bytes then Show.int64_option rd.rd_block_rd_bytes
+ else Show.int64_option rd.rd_block_rd_reqs in
+ let wr_info =
+ if block_in_bytes then Show.int64_option rd.rd_block_wr_bytes
+ else Show.int64_option rd.rd_block_wr_reqs in
let rx_bytes = Show.int64_option rd.rd_net_rx_bytes in
let tx_bytes = Show.int64_option rd.rd_net_tx_bytes in
let percent_cpu = Show.percent rd.rd_percent_cpu in
@@ -166,7 +170,7 @@ let redraw display_mode sort_order
let line =
sprintf "%5d %c %s %s %s %s %s %s %s %s"
- rd.rd_domid state rd_req wr_req rx_bytes tx_bytes
+ rd.rd_domid state rd_info wr_info rx_bytes tx_bytes
percent_cpu percent_mem time name in
let line = pad cols line in
mvaddstr lineno 0 line;
diff --git a/src/stream_output.ml b/src/stream_output.ml
index bf7b114..c3af99b 100644
--- a/src/stream_output.ml
+++ b/src/stream_output.ml
@@ -59,10 +59,16 @@ let append_stream (_, _, _, _, _, node_info, hostname, _) (* setup *)
let dump_domain = fun name rd
-> begin
let state = Screen.show_state rd.rd_info.D.state in
- let rd_req = if rd.rd_block_rd_info = None then " 0"
- else Show.int64_option rd.rd_block_rd_info in
- let wr_req = if rd.rd_block_wr_info = None then " 0"
- else Show.int64_option rd.rd_block_wr_info in
+ let rd_req =
+ if rd.rd_block_rd_reqs = None then " 0"
+ else
+ if block_in_bytes then Show.int64_option rd.rd_block_rd_bytes
+ else Show.int64_option rd.rd_block_rd_reqs in
+ let wr_req =
+ if rd.rd_block_wr_reqs = None then " 0"
+ else
+ if block_in_bytes then Show.int64_option rd.rd_block_wr_bytes
+ else Show.int64_option rd.rd_block_wr_reqs in
let rx_bytes = if rd.rd_net_rx_bytes = None then " 0"
else Show.int64_option rd.rd_net_rx_bytes in
let tx_bytes = if rd.rd_net_tx_bytes = None then " 0"
diff --git a/src/top.ml b/src/top.ml
index 204f3b6..e2a93d6 100644
--- a/src/top.ml
+++ b/src/top.ml
@@ -319,7 +319,7 @@ let rec main_loop ((_, batch_mode, script_mode, csv_enabled, stream_mode, _, _,
while not !quit do
(* Collect stats. *)
- let state = collect setup !block_in_bytes in
+ let state = collect setup in
let pcpu_display =
if !display_mode = PCPUDisplay then Some (collect_pcpu state)
else None in
@@ -331,7 +331,7 @@ let rec main_loop ((_, batch_mode, script_mode, csv_enabled, stream_mode, _, _,
(* Update CSV file. *)
if csv_enabled then
- Csv_output.append_csv setup csv_flags state;
+ Csv_output.append_csv setup csv_flags !block_in_bytes state;
(* Append to stream output file. *)
if stream_mode then
--
2.31.1

@ -0,0 +1,25 @@
From 9af3b4d4667bf96d8c36e440ea11c106ae53a43f Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Mar 2017 13:09:54 +0100
Subject: [PATCH 16/23] Remove unused variable is_calendar2.
Fixes commit effd1ec5897a2cac6e897ae7bce72f6b1e617b90.
---
src/Makefile.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/Makefile.in b/src/Makefile.in
index 64f431e..6a13bef 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -29,7 +29,6 @@ OCAML_PKG_curses = @OCAML_PKG_curses@
OCAML_PKG_xml_light = @OCAML_PKG_xml_light@
OCAML_PKG_csv = @OCAML_PKG_csv@
OCAML_PKG_calendar = @OCAML_PKG_calendar@
-is_calendar2 = @is_calendar2@
OCAML_PKG_gettext = @OCAML_PKG_gettext@
OCAMLCPACKAGES := -package unix,extlib,curses,str,libvirt
--
2.31.1

@ -0,0 +1,343 @@
From 74971ed8c85400929714a7adff5b61c2ebe9fcee Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Mar 2017 13:30:07 +0100
Subject: [PATCH 17/23] Use virConnectGetAllDomainStats API to collect domain
stats (RHBZ#1422795).
This is much faster than using the basic libvirt APIs to collect
stats for each domain individually.
Note this will not work unless you have the latest ocaml-libvirt
package which includes this new API binding.
---
src/collect.ml | 242 +++++++++++++++++++++++++++++++++++-------------
src/collect.mli | 1 +
src/utils.ml | 6 ++
src/utils.mli | 3 +
4 files changed, 190 insertions(+), 62 deletions(-)
diff --git a/src/collect.ml b/src/collect.ml
index 448ce8c..a1e50a1 100644
--- a/src/collect.ml
+++ b/src/collect.ml
@@ -38,6 +38,7 @@ let parse_device_xml : (int -> [>`R] D.t -> string list * string list) ref =
type rd_domain = Inactive | Active of rd_active
and rd_active = {
rd_domid : int; (* Domain ID. *)
+ rd_domuuid : Libvirt.uuid; (* Domain UUID. *)
rd_dom : [`R] D.t; (* Domain object. *)
rd_info : D.info; (* Domain CPU info now. *)
rd_block_stats : (string * D.block_stats) list;
@@ -110,6 +111,16 @@ let last_pcpu_usages = Hashtbl.create 13
let clear_pcpu_display_data () =
Hashtbl.clear last_pcpu_usages
+(* What to get from virConnectGetAllDomainStats. *)
+let what = [
+ D.StatsState; D.StatsCpuTotal; D.StatsBalloon; D.StatsVcpu;
+ D.StatsInterface; D.StatsBlock
+]
+(* Which domains to get. Empty list means return all domains:
+ * active, inactive, persistent, transient etc.
+ *)
+let who = []
+
let collect (conn, _, _, _, _, node_info, _, _) =
(* Number of physical CPUs (some may be disabled). *)
let nr_pcpus = C.maxcpus_of_node_info node_info in
@@ -129,72 +140,179 @@ let collect (conn, _, _, _, _, node_info, _, _) =
(* Get the domains. Match up with their last_info (if any). *)
let doms =
- (* Active domains. *)
- let n = C.num_of_domains conn in
- let ids =
- if n > 0 then Array.to_list (C.list_domains conn n)
- else [] in
- let doms =
- List.filter_map (
- fun id ->
- try
- let dom = D.lookup_by_id conn id in
- let name = D.get_name dom in
- let blkdevs, netifs = get_devices id dom in
+ let doms = D.get_all_domain_stats conn what who in
+ let doms = Array.to_list doms in
+ List.map (
+ fun { D.dom_uuid = uuid; D.params = params } ->
+ let nr_params = Array.length params in
+ let get_param name =
+ let rec loop i =
+ if i = nr_params then None
+ else if fst params.(i) = name then Some (snd params.(i))
+ else loop (i+1)
+ in
+ loop 0
+ in
+ let get_param_int name default =
+ match get_param name with
+ | None -> None
+ | Some (D.TypedFieldInt32 i)
+ | Some (D.TypedFieldUInt32 i) -> Some (Int32.to_int i)
+ | Some (D.TypedFieldInt64 i)
+ | Some (D.TypedFieldUInt64 i) -> Some (Int64.to_int i)
+ | _ -> default
+ in
+ let get_param_int64 name default =
+ match get_param name with
+ | None -> None
+ | Some (D.TypedFieldInt32 i)
+ | Some (D.TypedFieldUInt32 i) -> Some (Int64.of_int32 i)
+ | Some (D.TypedFieldInt64 i)
+ | Some (D.TypedFieldUInt64 i) -> Some i
+ | _ -> default
+ in
- (* Get current CPU, block and network stats. *)
- let info = D.get_info dom in
- let block_stats =
- try List.map (fun dev -> dev, D.block_stats dom dev) blkdevs
- with
- | Libvirt.Not_supported "virDomainBlockStats"
- | Libvirt.Virterror _ -> [] in
- let interface_stats =
- try List.map (fun dev -> dev, D.interface_stats dom dev) netifs
- with
- | Libvirt.Not_supported "virDomainInterfaceStats"
- | Libvirt.Virterror _ -> [] in
+ let dom = D.lookup_by_uuid conn uuid in
+ let id = D.get_id dom in
+ let name = D.get_name dom in
+ let state = get_param_int "state.state" None in
- let prev_info, prev_block_stats, prev_interface_stats =
- try
- let prev_info, prev_block_stats, prev_interface_stats =
- Hashtbl.find last_info id in
- Some prev_info, prev_block_stats, prev_interface_stats
- with Not_found -> None, [], [] in
+ if state = Some 5 (* VIR_DOMAIN_SHUTOFF *) then
+ (name, Inactive)
+ else (
+ (* Active domain. *)
- Some (name,
- Active {
- rd_domid = id; rd_dom = dom; rd_info = info;
- rd_block_stats = block_stats;
- rd_interface_stats = interface_stats;
- rd_prev_info = prev_info;
- rd_prev_block_stats = prev_block_stats;
- rd_prev_interface_stats = prev_interface_stats;
- rd_cpu_time = 0.; rd_percent_cpu = 0.;
- rd_mem_bytes = 0L; rd_mem_percent = 0L;
- rd_block_rd_reqs = None; rd_block_wr_reqs = None;
- rd_block_rd_bytes = None; rd_block_wr_bytes = None;
- rd_net_rx_bytes = None; rd_net_tx_bytes = None;
- })
- with
- Libvirt.Virterror _ -> None (* ignore transient error *)
- ) ids in
+ (* Synthesize a D.info struct out of the data we have
+ * from virConnectGetAllDomainStats. Doing this is an
+ * artifact from the old APIs we used to use to fetch
+ * stats, we could simplify here, and also return the
+ * RSS memory. XXX
+ *)
+ let state =
+ match state with
+ | None | Some 0 -> D.InfoNoState
+ | Some 1 -> D.InfoRunning
+ | Some 2 -> D.InfoBlocked
+ | Some 3 -> D.InfoPaused
+ | Some 4 -> D.InfoShutdown
+ | Some 5 -> D.InfoShutoff
+ | Some 6 -> D.InfoCrashed
+ | Some 7 -> D.InfoPaused (* XXX really VIR_DOMAIN_PMSUSPENDED *)
+ | _ -> D.InfoNoState in
+ let memory =
+ match get_param_int64 "balloon.current" None with
+ | None -> 0_L
+ | Some m -> m in
+ let nr_virt_cpu =
+ match get_param_int "vcpu.current" None with
+ | None -> 1
+ | Some v -> v in
+ let cpu_time =
+ (* NB: libvirt does not return cpu.time for non-root domains. *)
+ match get_param_int64 "cpu.time" None with
+ | None -> 0_L
+ | Some ns -> ns in
+ let info = {
+ D.state = state;
+ max_mem = -1_L; (* not used anywhere in virt-top *)
+ memory = memory;
+ nr_virt_cpu = nr_virt_cpu;
+ cpu_time = cpu_time
+ } in
- (* Inactive domains. *)
- let doms_inactive =
- try
- let n = C.num_of_defined_domains conn in
- let names =
- if n > 0 then Array.to_list (C.list_defined_domains conn n)
- else [] in
- List.map (fun name -> name, Inactive) names
- with
- (* Ignore transient errors, in particular errors from
- * num_of_defined_domains if it cannot contact xend.
- *)
- | Libvirt.Virterror _ -> [] in
+ let nr_block_devs =
+ match get_param_int "block.count" None with
+ | None -> 0
+ | Some i -> i in
+ let block_stats =
+ List.map (
+ fun i ->
+ let dev =
+ match get_param (sprintf "block.%d.name" i) with
+ | None -> sprintf "blk%d" i
+ | Some (D.TypedFieldString s) -> s
+ | _ -> assert false in
+ dev, {
+ D.rd_req =
+ (match get_param_int64 (sprintf "block.%d.rd.reqs" i) None
+ with None -> 0_L | Some v -> v);
+ rd_bytes =
+ (match get_param_int64 (sprintf "block.%d.rd.bytes" i) None
+ with None -> 0_L | Some v -> v);
+ wr_req =
+ (match get_param_int64 (sprintf "block.%d.wr.reqs" i) None
+ with None -> 0_L | Some v -> v);
+ wr_bytes =
+ (match get_param_int64 (sprintf "block.%d.wr.bytes" i) None
+ with None -> 0_L | Some v -> v);
+ errs = 0_L
+ }
+ ) (range 0 (nr_block_devs-1)) in
- doms @ doms_inactive in
+ let nr_interface_devs =
+ match get_param_int "net.count" None with
+ | None -> 0
+ | Some i -> i in
+ let interface_stats =
+ List.map (
+ fun i ->
+ let dev =
+ match get_param (sprintf "net.%d.name" i) with
+ | None -> sprintf "net%d" i
+ | Some (D.TypedFieldString s) -> s
+ | _ -> assert false in
+ dev, {
+ D.rx_bytes =
+ (match get_param_int64 (sprintf "net.%d.rx.bytes" i) None
+ with None -> 0_L | Some v -> v);
+ rx_packets =
+ (match get_param_int64 (sprintf "net.%d.rx.pkts" i) None
+ with None -> 0_L | Some v -> v);
+ rx_errs =
+ (match get_param_int64 (sprintf "net.%d.rx.errs" i) None
+ with None -> 0_L | Some v -> v);
+ rx_drop =
+ (match get_param_int64 (sprintf "net.%d.rx.drop" i) None
+ with None -> 0_L | Some v -> v);
+ tx_bytes =
+ (match get_param_int64 (sprintf "net.%d.tx.bytes" i) None
+ with None -> 0_L | Some v -> v);
+ tx_packets =
+ (match get_param_int64 (sprintf "net.%d.tx.pkts" i) None
+ with None -> 0_L | Some v -> v);
+ tx_errs =
+ (match get_param_int64 (sprintf "net.%d.tx.errs" i) None
+ with None -> 0_L | Some v -> v);
+ tx_drop =
+ (match get_param_int64 (sprintf "net.%d.tx.drop" i) None
+ with None -> 0_L | Some v -> v);
+ }
+ ) (range 0 (nr_interface_devs-1)) in
+
+ let prev_info, prev_block_stats, prev_interface_stats =
+ try
+ let prev_info, prev_block_stats, prev_interface_stats =
+ Hashtbl.find last_info uuid in
+ Some prev_info, prev_block_stats, prev_interface_stats
+ with Not_found -> None, [], [] in
+
+ (name,
+ Active {
+ rd_domid = id; rd_domuuid = uuid; rd_dom = dom;
+ rd_info = info;
+ rd_block_stats = block_stats;
+ rd_interface_stats = interface_stats;
+ rd_prev_info = prev_info;
+ rd_prev_block_stats = prev_block_stats;
+ rd_prev_interface_stats = prev_interface_stats;
+ rd_cpu_time = 0.; rd_percent_cpu = 0.;
+ rd_mem_bytes = 0L; rd_mem_percent = 0L;
+ rd_block_rd_reqs = None; rd_block_wr_reqs = None;
+ rd_block_rd_bytes = None; rd_block_wr_bytes = None;
+ rd_net_rx_bytes = None; rd_net_tx_bytes = None;
+ })
+ )
+ ) doms in
(* Calculate the CPU time (ns) and %CPU used by each domain. *)
let doms =
@@ -329,7 +447,7 @@ let collect (conn, _, _, _, _, node_info, _, _) =
function
| (_, Active rd) ->
let info = rd.rd_info, rd.rd_block_stats, rd.rd_interface_stats in
- Hashtbl.add last_info rd.rd_domid info
+ Hashtbl.add last_info rd.rd_domuuid info
| _ -> ()
) doms;
diff --git a/src/collect.mli b/src/collect.mli
index 9ad3dcb..3c5492f 100644
--- a/src/collect.mli
+++ b/src/collect.mli
@@ -27,6 +27,7 @@ val parse_device_xml :
type rd_domain = Inactive | Active of rd_active
and rd_active = {
rd_domid : int; (* Domain ID. *)
+ rd_domuuid : Libvirt.uuid; (* Domain UUID. *)
rd_dom : [`R] Libvirt.Domain.t; (* Domain object. *)
rd_info : Libvirt.Domain.info; (* Domain CPU info now. *)
rd_block_stats : (string * Libvirt.Domain.block_stats) list;
diff --git a/src/utils.ml b/src/utils.ml
index 5fcc905..4332ff7 100644
--- a/src/utils.ml
+++ b/src/utils.ml
@@ -32,6 +32,12 @@ let (/^) = Int64.div
(* failwithf is a printf-like version of failwith. *)
let failwithf fs = ksprintf failwith fs
+let rec range a b =
+ if a <= b then
+ a :: range (a+1) b
+ else
+ []
+
(* Input a whole file as a list of lines. *)
let input_all_lines chan =
let lines = ref [] in
diff --git a/src/utils.mli b/src/utils.mli
index 6e81215..3c966f8 100644
--- a/src/utils.mli
+++ b/src/utils.mli
@@ -25,6 +25,9 @@ val (//) : string -> string -> string
(* failwithf is a printf-like version of failwith. *)
val failwithf : ('a, unit, string, 'b) format4 -> 'a
+(* Return the list of integers [a..b] (inclusive). *)
+val range : int -> int -> int list
+
(* Read a configuration file as a list of (lineno, key, value) pairs.
* If the config file is missing this returns an empty list.
*)
--
2.31.1

@ -0,0 +1,21 @@
From df68ee432ef350962647f47ca65effbaf7262ebb Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Mar 2017 14:36:07 +0100
Subject: [PATCH 18/23] chmod -x COPYING* files.
---
COPYING | 0
COPYING.LIB | 0
2 files changed, 0 insertions(+), 0 deletions(-)
mode change 100755 => 100644 COPYING
mode change 100755 => 100644 COPYING.LIB
diff --git a/COPYING b/COPYING
old mode 100755
new mode 100644
diff --git a/COPYING.LIB b/COPYING.LIB
old mode 100755
new mode 100644
--
2.31.1

@ -0,0 +1,42 @@
From 2d8ef8a4ca613ad291bc05a4e5ebdc11c3eae6b9 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 18 Nov 2017 12:01:34 +0000
Subject: [PATCH 19/23] Fixes for -safe-string in OCaml 4.06.
---
src/top.ml | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/top.ml b/src/top.ml
index e2a93d6..d4f7697 100644
--- a/src/top.ml
+++ b/src/top.ml
@@ -296,17 +296,20 @@ let millisleep n =
*)
let get_string maxlen =
ignore (echo ());
- let str = String.create maxlen in
- let ok = getstr str in (* Safe because binding calls getnstr. *)
+ let str = Bytes.create maxlen in
+ (* Safe because binding calls getnstr. However the unsafe cast
+ * to string is required because ocaml-curses needs to be fixed.
+ *)
+ let ok = getstr (Obj.magic str) in
ignore (noecho ());
if not ok then ""
else (
(* Chop at first '\0'. *)
try
- let i = String.index str '\000' in
- String.sub str 0 i
+ let i = Bytes.index str '\000' in
+ Bytes.sub_string str 0 i
with
- Not_found -> str (* it is full maxlen bytes *)
+ Not_found -> Bytes.to_string str (* it is full maxlen bytes *)
)
(* Main loop. *)
--
2.31.1

@ -0,0 +1,32 @@
From 2afed7fe878bee73fabab0b1f43aac269bdb3b6a Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 18 Nov 2017 12:01:49 +0000
Subject: [PATCH 20/23] Link with -fPIC runtime.
---
src/Makefile.in | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/Makefile.in b/src/Makefile.in
index 6a13bef..03c6362 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -84,11 +84,14 @@ all: $(BYTE_TARGETS)
opt: $(OPT_TARGETS)
virt-top: $(OBJS)
- ocamlfind ocamlc $(OCAMLCPACKAGES) $(OCAMLCFLAGS) $(OCAMLCLIBS) -o $@ $^
+ ocamlfind ocamlc $(OCAMLCPACKAGES) $(OCAMLCFLAGS) $(OCAMLCLIBS) \
+ -runtime-variant _pic \
+ -o $@ $^
virt-top.opt: $(XOBJS)
ocamlfind ocamlopt \
$(OCAMLOPTPACKAGES) $(OCAMLOPTFLAGS) $(OCAMLOPTLIBS) \
+ -runtime-variant _pic \
-o $@ $^
# Manual page.
--
2.31.1

@ -0,0 +1,58 @@
From 4a69a323aee9d7ab913a8665cddbc63b98804be0 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 20 Sep 2018 13:47:34 +0100
Subject: [PATCH 21/23] build: Pass through CFLAGS and LDFLAGS to ocaml
compiler (RHBZ#1630636).
---
configure.ac | 4 ++++
src/Makefile.in | 6 ++----
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index c9c7e34..a8e757c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,6 +76,10 @@ AC_CHECK_PROG(OCAML_GETTEXT,ocaml-gettext,ocaml-gettext)
dnl Check for msgfmt tool.
AC_CHECK_PROG(MSGFMT,msgfmt,msgfmt)
+dnl Substitute CFLAGS and LDFLAGS if set.
+AC_SUBST([CFLAGS])
+AC_SUBST([LDFLAGS])
+
dnl Write gettext modules for the programs.
dnl http://www.le-gall.net/sylvain+violaine/documentation/ocaml-gettext/html/reference-manual/ch03s04.html
AC_MSG_NOTICE([creating src/opt_gettext.ml])
diff --git a/src/Makefile.in b/src/Makefile.in
index 03c6362..ba4eb1d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -64,8 +64,8 @@ OBJS += main.cmo
XOBJS := $(OBJS:.cmo=.cmx)
-OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
-OCAMLCLIBS := -linkpkg
+OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -ccopt '@CFLAGS@'
+OCAMLCLIBS := -linkpkg -runtime-variant _pic -cclib '@LDFLAGS@'
OCAMLOPTPACKAGES := $(OCAMLCPACKAGES)
OCAMLOPTFLAGS := $(OCAMLCFLAGS)
@@ -85,13 +85,11 @@ opt: $(OPT_TARGETS)
virt-top: $(OBJS)
ocamlfind ocamlc $(OCAMLCPACKAGES) $(OCAMLCFLAGS) $(OCAMLCLIBS) \
- -runtime-variant _pic \
-o $@ $^
virt-top.opt: $(XOBJS)
ocamlfind ocamlopt \
$(OCAMLOPTPACKAGES) $(OCAMLOPTFLAGS) $(OCAMLOPTLIBS) \
- -runtime-variant _pic \
-o $@ $^
# Manual page.
--
2.31.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,40 @@
From eaf468caac06e4b43fafbacc6e70fa5f80ea3051 Mon Sep 17 00:00:00 2001
From: Yuya Higashi <higashi.yuya@fujitsu.com>
Date: Tue, 15 Nov 2022 13:56:21 +0900
Subject: [PATCH 23/23] virt-top: fix to explicitly disconnect from libvirtd
To prevent libvirtd from printing virNetSocketReadWire I/O errors when
the virt-top command exits, explicitly disconnect from libvirtd.
Signed-off-by: Yuya Higashi <higashi.yuya@fujitsu.com>
(cherry picked from commit 4b15ee2440b0e70e3c1eb5e164ded493e2d8f0c8)
---
src/top.ml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/top.ml b/src/top.ml
index d4f7697..35f10b7 100644
--- a/src/top.ml
+++ b/src/top.ml
@@ -313,7 +313,7 @@ let get_string maxlen =
)
(* Main loop. *)
-let rec main_loop ((_, batch_mode, script_mode, csv_enabled, stream_mode, _, _, _)
+let rec main_loop ((conn, batch_mode, script_mode, csv_enabled, stream_mode, _, _, _)
as setup) =
let csv_flags = !csv_cpu, !csv_mem, !csv_block, !csv_net in
@@ -379,7 +379,8 @@ let rec main_loop ((_, batch_mode, script_mode, csv_enabled, stream_mode, _, _,
if not !quit || !end_time <> None then
millisleep delay
)
- done
+ done;
+ C.close conn
and get_key_press setup delay =
(* Read the next key, waiting up to 'delay' milliseconds. *)
--
2.31.1

@ -0,0 +1,65 @@
#!/usr/bin/python3
#
# https://bugzilla.redhat.com/show_bug.cgi?id=665817
#
# Usage:
#
# virt-top --csv data.csv
# processcsv.py < data.csv
#
# Note this OVERWRITES the following files in the current directory:
#
# global.csv # all the global data
# domain<NN>.csv # data for domain ID <NN> (multiple files)
import sys
import csv
rows = csv.reader (sys.stdin)
# Get the header row.
header = next(rows)
# Find the index of the 'Hostname' and 'Time' cols (usually first two).
hostname_i = header.index ("Hostname")
time_i = header.index ("Time")
# Find the index of the 'Domain ID' column (i) and the number of
# columns per domain (w).
i = header.index ("Domain ID")
w = len (header) - i
dom_header = header[i:i+w]
dom_header.insert (0, "Hostname")
dom_header.insert (1, "Time")
gfile = open ("global.csv", "w")
gfile_writer = csv.writer (gfile)
gfile_writer.writerow (header[0:i])
dfiles = dict()
# Process all the remaining data rows.
for data in rows:
# Global data is columns 0..i-1
gfile_writer.writerow (data[0:i])
hostname = data[hostname_i]
time = data[time_i]
# For each domain ...
for j in range(i,len(data),w):
dom = data[j:j+w]
domid = dom[0]
if domid in dfiles:
dfile_writer = dfiles[domid]
else:
dfile = open ("domain%s.csv" % domid, "w")
dfile_writer = csv.writer (dfile)
dfile_writer.writerow (dom_header)
dfiles[domid] = dfile_writer
dom.insert (0, hostname)
dom.insert (1, time)
dfile_writer.writerow (dom)

@ -0,0 +1,64 @@
=head1 NAME
processcsv.py - process virt-top CSV files
=head1 SUMMARY
virt-top --csv data.csv
processcsv.py < data.csv
=head1 DESCRIPTION
virt-top is a L<top(1)>-like utility for showing stats of virtualized
domains.
processcsv.py is a simple Python script that post-processes the output
of C<virt-top --csv>.
It is used like this:
virt-top --csv data.csv
processcsv.py < data.csv
The second command will B<overwrite> the following files in the
current directory:
=over 4
=item C<global.csv>
This contains the global (host) statistics columns from the CSV file.
=item C<domainI<NN>.csv> (multiple files)
For each libvirt domain ID I<NN>, a file is created containing
the per-domain statistics from the CSV file.
=back
=head1 SEE ALSO
L<virt-top(1)>
=head1 AUTHORS
Richard W.M. Jones <rjones @ redhat . com>
=head1 COPYRIGHT
(C) Copyright 2007-2012 Red Hat Inc., Richard W.M. Jones
http://libvirt.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

@ -0,0 +1,442 @@
%global opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
%global debug_package %{nil}
Name: virt-top
Version: 1.0.8
Release: 37%{?dist}
Summary: Utility like top(1) for displaying virtualization stats
License: GPLv2+
URL: http://people.redhat.com/~rjones/virt-top/
Source0: http://people.redhat.com/~rjones/virt-top/files/%{name}-%{version}.tar.gz
# Post-process output of CSV file (RHBZ#665817, RHBZ#912020).
Source1: processcsv.py
Source2: processcsv.py.pod
# Patches are stored here:
# http://git.annexia.org/?p=virt-top.git;a=shortlog;h=refs/heads/rhel-8.8
Patch0001: 0001-virt-top-1.0.4-processcsv-documentation.patch
Patch0002: 0002-Disable-warning-about-immutable-strings-for-OCaml-4..patch
Patch0003: 0003-Move-upstream-translations-from-Tranifex-to-Zanata.patch
Patch0004: 0004-Update-translations-from-Zanata.patch
Patch0005: 0005-build-Add-g-flag-to-ocamlopt.patch
Patch0006: 0006-Rename-source-directory-and-files.patch
Patch0007: 0007-Enable-same-warnings-as-libguestfs.patch
Patch0008: 0008-Remove-x-executable-permission-on-several-source-fil.patch
Patch0009: 0009-Refresh-HACKING-file.patch
Patch0010: 0010-Fix-po-POTFILES-for-new-location-of-source-files.patch
Patch0011: 0011-Update-PO-files.patch
Patch0012: 0012-Remove-support-for-OCaml-Calendar-v1.patch
Patch0013: 0013-src-Fix-some-comments-which-referred-to-the-old-file.patch
Patch0014: 0014-Split-up-huge-Top-module-into-smaller-modules.patch
Patch0015: 0015-Move-block_in_bytes-entirely-to-the-presentation-lay.patch
Patch0016: 0016-Remove-unused-variable-is_calendar2.patch
Patch0017: 0017-Use-virConnectGetAllDomainStats-API-to-collect-domai.patch
Patch0018: 0018-chmod-x-COPYING-files.patch
Patch0019: 0019-Fixes-for-safe-string-in-OCaml-4.06.patch
Patch0020: 0020-Link-with-fPIC-runtime.patch
Patch0021: 0021-build-Pass-through-CFLAGS-and-LDFLAGS-to-ocaml-compi.patch
Patch0022: 0022-Update-configure-for-aarch64-bz-926701.patch
Patch0023: 0023-virt-top-fix-to-explicitly-disconnect-from-libvirtd.patch
# The patches touch configure.ac:
BuildRequires: autoconf
BuildRequires: ocaml >= 3.10.2
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-findlib-devel
# Need the ncurses / ncursesw (--enable-widec) fix.
BuildRequires: ocaml-curses-devel >= 1.0.3-7
BuildRequires: ocaml-extlib-devel
BuildRequires: ocaml-xml-light-devel
BuildRequires: ocaml-csv-devel
BuildRequires: ocaml-calendar-devel
# Need support for virDomainGetCPUStats (fixed in 0.6.1.2)
# and virConnectGetAllDomainStats (post-0.6.1.4).
BuildRequires: ocaml-libvirt-devel >= 0.6.1.4-15
# Tortuous list of BRs for gettext.
BuildRequires: ocaml-gettext-devel >= 0.3.3
BuildRequires: ocaml-fileutils-devel
# For msgfmt:
BuildRequires: gettext
# Non-OCaml BRs.
BuildRequires: libvirt-devel
BuildRequires: perl-interpreter
BuildRequires: perl(Pod::Perldoc)
BuildRequires: gawk
%description
virt-top is a 'top(1)'-like utility for showing stats of virtualized
domains. Many keys and command line options are the same as for
ordinary 'top'.
It uses libvirt so it is capable of showing stats across a variety of
different virtualization systems.
%prep
%setup -q
%if 0%{?rhel} >= 6
%patch0001 -p1
%endif
%patch0002 -p1
%patch0003 -p1
%patch0004 -p1
%patch0005 -p1
%patch0006 -p1
%patch0007 -p1
%patch0008 -p1
%patch0009 -p1
%patch0010 -p1
%patch0011 -p1
%patch0012 -p1
%patch0013 -p1
%patch0014 -p1
%patch0015 -p1
%patch0016 -p1
%patch0017 -p1
%patch0018 -p1
%patch0019 -p1
%patch0020 -p1
%patch0021 -p1
%patch0022 -p1
%patch0023 -p1
autoconf
%build
%configure
make all
%if %opt
make opt
strip src/virt-top.opt
%endif
# Build translations.
make -C po
# Force rebuild of man page.
rm -f src/virt-top.1
make -C src virt-top.1
%if 0%{?rhel} >= 6
# Build processcsv.py.1.
pod2man -c "Virtualization Support" --release "%{name}-%{version}" \
%{SOURCE2} > processcsv.py.1
%endif
%install
make DESTDIR=$RPM_BUILD_ROOT install
# Install translations.
mkdir -p $RPM_BUILD_ROOT%{_datadir}/locale
make -C po install PODIR="$RPM_BUILD_ROOT%{_datadir}/locale"
%find_lang %{name}
# Install virt-top manpage by hand for now.
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
install -m 0644 src/virt-top.1 $RPM_BUILD_ROOT%{_mandir}/man1
%if 0%{?rhel} >= 6
# Install processcsv.py.
install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
# Install processcsv.py(1).
install -m 0644 processcsv.py.1 $RPM_BUILD_ROOT%{_mandir}/man1/
%endif
%files -f %{name}.lang
%doc COPYING README TODO ChangeLog
%{_bindir}/virt-top
%{_mandir}/man1/virt-top.1*
%if 0%{?rhel} >= 6
%{_bindir}/processcsv.py
%{_mandir}/man1/processcsv.py.1*
%endif
%changelog
* Tue Nov 29 2022 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-37
- Fix "Input/output error" in journal
resolves: rhbz#2149139
- Store the patches in an upstream branch in git.
* Thu Jul 04 2019 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-36
- Try installing KVM
related: rhbz#1682780
* Thu Jul 04 2019 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-35
- Try starting libvirtd
related: rhbz#1682780
* Wed Jul 03 2019 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-34
- Build and rebuild to rerun gating tests.
related: rhbz#1682780
* Thu Mar 21 2019 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-33
- Add gating tests resolves: rhbz#1682780
* Tue Oct 16 2018 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-32
- Add upstream patch to pass CFLAGS/LDFLAGS to final binary
resolves: rhbz#1630636
* Wed Aug 01 2018 Charalampos Stratakis <cstratak@redhat.com> - 1.0.8-31
- Rebuild for platform-python
* Wed Mar 28 2018 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-30
- Modify processcsv.py for Python 3.
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.8-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Sat Nov 18 2017 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-28
- OCaml 4.06.0 rebuild.
* Wed Aug 09 2017 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-27
- OCaml 4.05.0 rebuild.
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.8-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.8-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Tue Jun 27 2017 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-24
- OCaml 4.04.2 rebuild.
* Sat May 13 2017 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-23
- OCaml 4.04.1 rebuild.
* Tue Mar 28 2017 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-22
- Include all upstream patches since 1.0.8 was released.
- BR ocaml-libvirt with virConnectGetAllDomainStats API.
- Remove execstack hack, no longer needed on any arch.
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.8-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Nov 09 2016 Dan Horák <dan@danny.cz> - 1.0.8-20
- remove ExcludeArch
* Sat Nov 05 2016 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-19
- Rebuild for OCaml 4.04.0.
- Kill further instances of -warn-error.
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.8-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Tue Jul 28 2015 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-17
- OCaml 4.02.3 rebuild.
* Wed Jun 24 2015 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-16
- ocaml-4.02.2 final rebuild.
* Thu Jun 18 2015 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-15
- ocaml-4.02.2 rebuild.
* Tue Feb 17 2015 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-14
- ocaml-4.02.1 rebuild.
* Sun Aug 31 2014 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-13
- ocaml-4.02.0 final rebuild.
* Sat Aug 23 2014 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-12
- ocaml-4.02.0+rc1 rebuild.
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.8-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Aug 02 2014 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-10
- ocaml-4.02.0-0.8.git10e45753.fc22 rebuild.
* Sat Aug 02 2014 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-9
- Do not warn about immutable strings.
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.8-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Mon Aug 05 2013 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-7
- Bump and rebuild.
* Mon Jul 29 2013 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-6
- Include processcsv.py script and man page, but on RHEL only
(RHBZ#665817, RHBZ#912020)
- Clear executable stack flag on PPC, PPC64 (RHBZ#605124).
* Fri Jun 28 2013 Cole Robinson <crobinso@redhat.com> - 1.0.8-5
- Update configure for aarch64 (bz #926701)
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.8-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Dec 14 2012 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-3
- Rebuild for OCaml 4.00.1.
* Fri Oct 12 2012 Richard W.M. Jones <rjones@redhat.com> - 1.0.8-2
- New upstream version 1.0.8.
- Requires tiny change to ocaml-libvirt, hence dep bump.
- Clean up the spec file.
- Remove explicit BR ocaml-camomile (not used AFAIK).
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Mar 23 2012 Richard W.M. Jones <rjones@redhat.com> - 1.0.7-2
- Require fixed ocaml-libvirt.
* Tue Mar 6 2012 Richard W.M. Jones <rjones@redhat.com> - 1.0.7-1
- New upstream version 1.0.7.
- Includes true physical CPU reporting (when libvirt supports this).
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Fri Aug 12 2011 Richard W.M. Jones <rjones@redhat.com> - 1.0.6-1
- New upstream version 1.0.6.
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Thu Jan 6 2011 Richard W.M. Jones <rjones@redhat.com> - 1.0.5-1
- New upstream version 1.0.5.
- Rebuild against OCaml 3.12.0.
- Project website moved to people.redhat.com.
- Remove upstream patches.
* Wed Dec 30 2009 Richard W.M. Jones <rjones@redhat.com> - 1.0.4-3
- Force rebuild against latest ocaml-gettext 0.3.3 (RHBZ#508197#c10).
* Mon Oct 5 2009 Richard W.M. Jones <rjones@redhat.com> - 1.0.4-2
- New upstream release 1.0.4.
- Includes new translations (RHBZ#493799).
- Overall hardware memory is now displayed in CSV file (RHBZ#521785).
- Several fixes to Japanese support (RHBZ#508197).
- Japanese PO file also has bogus plural forms.
- Additional BR on gettext (for msgfmt).
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Thu Apr 16 2009 S390x secondary arch maintainer <fedora-s390x@lists.fedoraproject.org>
- ExcludeArch sparc64, s390, s390x as we don't have OCaml on those archs
(added sparc64 per request from the sparc maintainer)
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Wed Nov 26 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.3-3
- Rebuild for OCaml 3.11.0+rc1.
* Tue Oct 21 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.3-2
- Fix incorrect sources file.
- Remove bogus Plural-Forms line from zh_CN PO file.
* Tue Oct 21 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.3-1
- New upstream version 1.0.3.
* Mon May 19 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.1-2
- Use RPM percent-configure.
- Add list of BRs for gettext.
- Use find_lang to find PO files.
- Comment out the OCaml dependency generator. Not a library so not
needed.
* Thu May 1 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.1-1
- New upstream release 1.0.1.
- Don't BR ocaml-gettext-devel, it's not used at the moment.
- Don't gzip the manpage, it happens automatically.
- Add BR libvirt-devel.
- Remove spurious executable bit on COPYING.
* Thu Apr 17 2008 Richard W.M. Jones <rjones@redhat.com> - 1.0.0-2
- New upstream release 1.0.0.
- Force rebuild of manpage.
* Tue Mar 18 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.1.1-1
- New upstream release 0.4.1.1.
- Move configure to build section.
- Pass RPM_OPT_FLAGS.
* Tue Mar 4 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.1.0-2
- Fix source URL.
- Install virt-df manpage.
* Tue Mar 4 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.1.0-1
- New upstream release 0.4.1.0.
- Upstream now requires ocaml-dbus >= 0.06, ocaml-lablgtk >= 2.10.0,
ocaml-dbus-devel.
- Enable virt-df.
* Sat Mar 1 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.0.3-3
- Rebuild for ppc64.
* Wed Feb 13 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.0.3-2
- Add BR gtk2-devel
* Tue Feb 12 2008 Richard W.M. Jones <rjones@redhat.com> - 0.4.0.3-1
- New upstream version 0.4.0.3.
- Rebuild for OCaml 3.10.1.
* Tue Nov 20 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.3.4-1
- New upstream release 0.3.3.4.
- Upstream website is now http://libvirt.org/ocaml/
* Fri Oct 19 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.3.0-2
- Mistake: BR is ocaml-calendar-devel.
* Fri Oct 19 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.3.0-1
- New upstream release 0.3.3.0.
- Added support for virt-df, but disabled it by default.
- +BR ocaml-calendar.
* Mon Sep 24 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.8-1
- New upstream release 0.3.2.8.
* Thu Sep 20 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.7-1
- New upstream release 0.3.2.7.
- Ship the upstream ChangeLog file.
* Thu Sep 6 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.6-2
- Force dependency on ocaml >= 3.10.0-7 which has fixed requires/provides
scripts.
* Thu Sep 6 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.6-1
- New upstream version 0.3.2.6.
* Wed Aug 29 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.5-1
- New upstream version 0.3.2.5.
- Keep TODO out of the main package, but add (renamed) TODO.libvirt and
TODO.virt-top to the devel and virt-top packages respectively.
- Add BR gawk.
* Thu Aug 23 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.4-1
- New upstream version 0.3.2.4.
* Thu Aug 23 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.3-2
- build_* macros so we can choose what subpackages to build.
* Thu Aug 23 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.3-1
- Upstream version 0.3.2.3.
- Add missing BR libvirt-devel.
* Wed Aug 22 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.2-1
- Upstream version 0.3.2.2.
* Wed Aug 22 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.1-2
- Fix unclosed if-statement in spec file.
* Wed Aug 22 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.2.1-1
- Upstream version 0.3.2.1.
- Put HTML documentation in -devel package.
* Mon Aug 6 2007 Richard W.M. Jones <rjones@redhat.com> - 0.3.1.2-1
- Initial RPM release.
Loading…
Cancel
Save