virt-top/virt-top.patch

204 lines
4.7 KiB
Diff

--- /dev/null
+++ b/build.sh
@@ -0,0 +1,6 @@
+set -ex
+pkg=virt-top
+DESTDIR=/dev/shm/$PPID
+dune build --verbose --for-release-of-packages=${pkg} @install
+dune install --verbose --for-release-of-packages=${pkg} --prefix=/usr --libdir=$(ocamlc -where) --destdir=${DESTDIR} ${pkg}
+find ${DESTDIR} -ls
--- /dev/null
+++ b/dune-project
@@ -0,0 +1,31 @@
+(lang dune 1.11)
+
+(version 1.1.1)
+
+(generate_opam_files false)
+
+(license "GPL-2.0-or-later")
+
+(authors "Richard W.M. Jones <rjones@redhat.com>")
+
+(maintainers "Richard W.M. Jones <rjones@redhat.com>")
+
+(homepage "http://people.redhat.com/~rjones/virt-top/")
+
+(source
+ (uri "git://git.annexia.org/virt-top.git"))
+
+(package
+ (name virt-top)
+ (synopsis "top-like utility")
+ (description
+ "virt-top is a top-like utility for showing stats of virtualized domains. Many keys and command line options are the same as for ordinary top.")
+ (depends
+ (ocaml
+ (>= 4.02.0))
+ (dune
+ (>= 1.11))
+ calendar
+ curses
+ dune.configurator
+ gettext))
--- /dev/null
+++ b/src/config/discover.ml
@@ -0,0 +1,25 @@
+module C = Configurator.V1
+
+let () =
+ C.main ~name:"virt-top" (fun c ->
+ let no_pkgconfig : C.Pkg_config.package_conf =
+ { libs = [ "-lxml" ]; cflags = [] }
+ in
+
+ let conf =
+ match C.Pkg_config.get c with
+ | None -> no_pkgconfig
+ | Some pc -> (
+ match
+ C.Pkg_config.query_expr_err pc ~package:"libxml-2.0"
+ ~expr:"libxml-2.0"
+ with
+ | Ok c -> c
+ | Error err -> C.die "%s" err)
+ in
+
+ let config_h = [] in
+
+ C.C_define.gen_header_file c ~fname:"config.h" config_h;
+ C.Flags.write_sexp "c_flags.sexp" (List.rev_append [ "-I." ] conf.cflags);
+ C.Flags.write_sexp "c_library_flags.sexp" conf.libs)
--- /dev/null
+++ b/src/config/dune
@@ -0,0 +1,3 @@
+(executable
+ (name discover)
+ (libraries dune.configurator))
--- /dev/null
+++ b/src/dune
@@ -0,0 +1,51 @@
+(library
+ (name xml)
+ (modules xml)
+ (libraries libvirt)
+ (c_names xml-c)
+ (c_flags
+ (:include c_flags.sexp))
+ (c_library_flags
+ (:include c_library_flags.sexp)))
+
+(executable
+ (name main)
+ (public_name virt-top)
+ (modules
+ collect
+ csv_output
+ main
+ opt_calendar
+ opt_gettext
+ redraw
+ screen
+ stream_output
+ top
+ types
+ utils
+ version)
+ (libraries calendar curses gettext gettext-stub libvirt str xml))
+
+(rule
+ (target version.ml)
+ (action
+ (write-file %{target} "let version = \"%{version:virt-top}\"")))
+
+(rule
+ (targets c_flags.sexp c_library_flags.sexp config.h)
+ (deps
+ (:discover config/discover.exe))
+ (action
+ (run %{discover})))
+
+(install
+ (files virt-top.1)
+ (section man)
+ (package virt-top))
+
+(rule
+ (target virt-top.1)
+ (deps virt-top.pod)
+ (action
+ (system
+ "pod2man -u -s 1 -c 'Virtualization Support' -r '%{version:virt-top}' %{deps} %{target}")))
--- a/src/opt_calendar.ml
+++ b/src/opt_calendar.ml
@@ -25,7 +25,8 @@ open Printf
open Opt_gettext.Gettext ;;
-Top.parse_date_time :=
+(* this is not optional *)
+let parse_date_time =
fun time ->
let cal : Calendar.t =
(* time is "+something" *)
--- /dev/null
+++ b/src/opt_calendar.mli
@@ -0,0 +1 @@
+val parse_date_time : (string -> float)
--- /dev/null
+++ b/src/opt_gettext.ml
@@ -0,0 +1,9 @@
+module Gettext =
+ Gettext.Program
+ (struct
+ let textdomain = "virt-top"
+ let codeset = None
+ let dir = None
+ let dependencies = Gettext.init
+ end)
+ (GettextStub.Native)
--- a/src/top.ml
+++ b/src/top.ml
@@ -20,6 +20,7 @@
open Printf
open Curses
+open Opt_calendar
open Opt_gettext.Gettext
open Utils
open Types
@@ -32,13 +33,6 @@ module N = Libvirt.Network
let rcfile = ".virt-toprc"
-(* Hook for calendar support (see [opt_calendar.ml]). *)
-let parse_date_time : (string -> float) ref =
- ref (
- fun _ ->
- failwith (s_"virt-top was compiled without support for dates and times")
- )
-
(* Init file. *)
type init_file = NoInitFile | DefaultInitFile | InitFile of string
@@ -81,7 +75,7 @@ let start_up () =
csv_enabled := true
and no_init_file () = init_file := NoInitFile
and set_init_file filename = init_file := InitFile filename
- and set_end_time time = end_time := Some ((!parse_date_time) time)
+ and set_end_time time = end_time := Some ((Opt_calendar.parse_date_time) time)
and display_version () =
printf "virt-top %s ocaml-libvirt %s\n"
Version.version Libvirt_version.version;
--- a/src/top.mli
+++ b/src/top.mli
@@ -17,8 +17,5 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*)
-(* Hook for [Opt_calendar] to override (if present). *)
-val parse_date_time : (string -> float) ref
-
val start_up : unit -> Types.setup
val main_loop : Types.setup -> unit