Remove deprecated GObject bindings

These were marked as deprecated in a57f6b8e2. Time to remove them

Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson
2026-02-10 12:50:32 -05:00
parent eed58cc443
commit 955ea8882b
28 changed files with 11 additions and 2329 deletions

View File

@@ -59,7 +59,7 @@ jobs:
- name: Compile the code
run: |
autoreconf -fiv
./configure --disable-gobject --enable-werror
./configure --enable-werror
make -j
- name: Run the quick test
@@ -136,7 +136,7 @@ jobs:
run: |
su -c '
autoreconf -fiv &&
./configure CFLAGS="-fPIC -g -O2" --disable-gobject --enable-werror &&
./configure CFLAGS="-fPIC -g -O2" --enable-werror &&
make -j
' guestfs

6
.gitignore vendored
View File

@@ -209,12 +209,6 @@ Makefile.in
/generator/stamp-generator
/.gitattributes
/.git-module-status
/gobject/bindtests.js
/gobject/Guestfs-1.0.gir
/gobject/Guestfs-1.0.typelib
/gobject/guestfs-gobject.3
/gobject/libguestfs-gobject-1.0.vapi
/gobject/stamp-guestfs-gobject.pod
/golang/bindtests/bindtests.go
/golang/examples/guestfs-golang.3
/golang/examples/stamp-guestfs-golang.pod

View File

@@ -88,9 +88,6 @@ endif
if HAVE_LUA
SUBDIRS += lua lua/examples
endif
if HAVE_GOBJECT
SUBDIRS += gobject
endif
if HAVE_GOLANG
SUBDIRS += golang golang/examples
endif
@@ -214,7 +211,7 @@ dist-hook: docs/C_SOURCE_FILES po/POTFILES
docs/C_SOURCE_FILES: configure.ac
rm -f $@ $@-t
find $(DIST_SUBDIRS) -name '*.[ch]' | \
grep -v -E '^(builder/index-parse\.|builder/index-scan\.|examples/|gobject/|java/com_redhat_et_libguestfs|perl/|php/extension/config\.h|ruby/ext/guestfs/extconf\.h|tests/|test-data/)' | \
grep -v -E '^(builder/index-parse\.|builder/index-scan\.|examples/|java/com_redhat_et_libguestfs|perl/|php/extension/config\.h|ruby/ext/guestfs/extconf\.h|tests/|test-data/)' | \
grep -v -E '/(guestfs|rc)_protocol\.' | \
grep -v -E '.*/errnostring\.' | \
grep -v -E '.*-gperf\.' | \

View File

@@ -156,10 +156,16 @@ HEADING([Checking for Lua])
m4_include([m4/guestfs-lua.m4])
HEADING([Checking for Go])
m4_include([m4/guestfs-golang.m4])
HEADING([Checking for GObject Introspection])
m4_include([m4/guestfs-gobject.m4])
HEADING([Checking for Rust])
m4_include([m4/guestfs-rust.m4])
HEADING([Checking for GObject Introspection])
dnl GObject introspection is needed for Vala bindings.
m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
GOBJECT_INTROSPECTION_CHECK([1.30.0])
],[
AM_CONDITIONAL([HAVE_INTROSPECTION], [false])
])
HEADING([Checking for Vala])
VAPIGEN_CHECK
@@ -239,8 +245,6 @@ AC_CONFIG_FILES([Makefile
fuse/Makefile
generator/Makefile
gnulib/lib/Makefile
gobject/libguestfs-gobject-1.0.pc
gobject/Makefile
golang/Makefile
golang/examples/Makefile
haskell/Makefile
@@ -334,8 +338,6 @@ feature "PHP bindings" test "x$HAVE_PHP_TRUE" = "x"
feature "Erlang bindings" test "x$HAVE_ERLANG_TRUE" = "x"
feature "Lua bindings" test "x$HAVE_LUA_TRUE" = "x"
feature "Go bindings" test "x$HAVE_GOLANG_TRUE" = "x"
feature "gobject bindings" test "x$HAVE_GOBJECT_TRUE" = "x"
feature "gobject introspection" test "x$HAVE_INTROSPECTION_TRUE" = "x"
feature "Vala bindings" test "x$ENABLE_VAPIGEN_TRUE" = "x"
feature "bash completion" test "x$HAVE_BASH_COMPLETION_TRUE" = "x"
feature "Rust bindings" test "x$HAVE_RUST_TRUE" = "x"

View File

@@ -307,10 +307,6 @@ Optional. Used to build the PHP bindings.
=item gobject-introspection
=item gjs
Optional. Used to build and test the GObject bindings.
=item vala
Optional. Used to build the Vala bindings.
@@ -502,8 +498,6 @@ See L</USING A PREBUILT BINARY APPLIANCE> below.
=item B<--disable-erlang>
=item B<--disable-gobject>
=item B<--disable-golang>
=item B<--disable-haskell>

View File

@@ -324,8 +324,6 @@ The L<http://libguestfs.org> website files.
=item F<erlang>
=item F<gobject>
=item F<golang>
=item F<haskell>

File diff suppressed because it is too large Load Diff

View File

@@ -1,28 +0,0 @@
(* libguestfs
* Copyright (C) 2009-2025 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
*)
val generate_gobject_header : unit -> unit
val generate_gobject_makefile : unit -> unit
val generate_gobject_optargs_header : string -> string -> Types.action -> unit -> unit
val generate_gobject_optargs_source : string -> string -> Types.optargt list -> Types.action -> unit -> unit
val generate_gobject_session_header : unit -> unit
val generate_gobject_session_source : unit -> unit
val generate_gobject_struct_header : string -> string -> (string * Types.field) list -> unit -> unit
val generate_gobject_struct_source : string -> string -> unit -> unit
val generate_gobject_tristate_header : unit -> unit
val generate_gobject_tristate_source : unit -> unit

View File

@@ -73,8 +73,6 @@ sources = \
fish.mli \
fish_commands.ml \
fish_commands.mli \
GObject.ml \
GObject.mli \
golang.ml \
golang.mli \
haskell.ml \
@@ -164,7 +162,6 @@ objects = \
php.cmo \
erlang.cmo \
lua.cmo \
GObject.cmo \
golang.cmo \
rust.cmo \
bindtests.cmo \
@@ -209,9 +206,6 @@ stamp-generator: generator
mkdir -p $(top_srcdir)/ruby/ext/guestfs
mkdir -p $(top_srcdir)/java/com/redhat/et/libguestfs
mkdir -p $(top_srcdir)/csharp
mkdir -p $(top_srcdir)/gobject/src
mkdir -p $(top_srcdir)/gobject/include
mkdir -p $(top_srcdir)/gobject/include/guestfs-gobject
cd $(top_srcdir) && $(abs_builddir)/generator
touch $@

View File

@@ -639,66 +639,6 @@ main = do
pr " putStrLn \"EOF\"\n"
and generate_gobject_js_bindtests () =
generate_header CPlusPlusStyle GPLv2plus;
pr {|const Guestfs = imports.gi.Guestfs;
var g = new Guestfs.Session();
var o;
|};
let mkoptargs = function
| Some optargs ->
"o = new Guestfs.InternalTest({" ^
(
String.concat ", " (
List.map (
function
| CallOBool (n, v) -> n ^ ": " ^ (if v then "true" else "false")
| CallOInt (n, v) -> n ^ ": " ^ (string_of_int v)
| CallOInt64 (n, v) -> n ^ ": " ^ Int64.to_string v
| CallOString (n, v) -> n ^ ": \"" ^ v ^ "\""
| CallOStringList (n, xs) -> "" (* not implemented XXX *)
(*
| CallOStringList (n, xs) ->
n ^ ": " ^
"[" ^ String.concat "," (List.map (sprintf "\"%s\"") xs) ^ "]"
*)
) optargs
)
) ^
"});"
| None ->
"o = null;"
in
let mkargs args =
String.concat ", " (
(List.map (
function
| CallString s -> "\"" ^ s ^ "\""
| CallOptString None -> "null"
| CallOptString (Some s) -> "\"" ^ s ^ "\""
| CallStringList xs ->
"[" ^ String.concat "," (List.map (sprintf "\"%s\"") xs) ^ "]"
| CallInt i -> string_of_int i
| CallInt64 i -> Int64.to_string i
| CallBool true -> "true"
| CallBool false -> "false"
| CallBuffer s -> "\"" ^ c_quote s ^ "\""
) args)
@ ["o"; "null"]
)
in
generate_lang_bindtests (
fun f args optargs ->
pr "%s\ng.%s(%s);\n" (mkoptargs optargs) f (mkargs args)
);
pr "\nprint(\"EOF\");\n"
and generate_erlang_bindtests () =
pr "#!/usr/bin/env escript\n";
pr "%%! -smp enable -sname create_disk debug verbose\n";

View File

@@ -19,7 +19,6 @@
val generate_bindtests : unit -> unit
val generate_erlang_bindtests : unit -> unit
val generate_golang_bindtests : unit -> unit
val generate_gobject_js_bindtests : unit -> unit
val generate_haskell_bindtests : unit -> unit
val generate_java_bindtests : unit -> unit
val generate_lua_bindtests : unit -> unit

View File

@@ -302,49 +302,6 @@ Run it from the top source directory using the command
output_to "golang/bindtests/bindtests.go"
Bindtests.generate_golang_bindtests;
output_to "gobject/bindtests.js"
Bindtests.generate_gobject_js_bindtests;
output_to "gobject/Makefile.inc"
GObject.generate_gobject_makefile;
output_to "gobject/include/guestfs-gobject.h"
GObject.generate_gobject_header;
List.iter (
fun { s_name = typ; s_cols = cols } ->
let short = sprintf "struct-%s" typ in
let filename =
sprintf "gobject/include/guestfs-gobject/%s.h" short in
output_to filename
(GObject.generate_gobject_struct_header short typ cols);
let filename = sprintf "gobject/src/%s.c" short in
output_to filename
(GObject.generate_gobject_struct_source short typ)
) external_structs;
delete_except_generated "gobject/include/guestfs-gobject/struct-*.h";
delete_except_generated "gobject/src/struct-*.c";
List.iter (
function
| ({ name; style = (_, _, (_::_ as optargs)) } as f) ->
let short = sprintf "optargs-%s" name in
let filename =
sprintf "gobject/include/guestfs-gobject/%s.h" short in
output_to filename
(GObject.generate_gobject_optargs_header short name f);
let filename = sprintf "gobject/src/%s.c" short in
output_to filename
(GObject.generate_gobject_optargs_source short name optargs f)
| { style = _, _, [] } -> ()
) (actions |> external_functions |> sort);
delete_except_generated "gobject/include/guestfs-gobject/optargs-*.h";
delete_except_generated "gobject/src/optargs-*.c";
output_to "gobject/include/guestfs-gobject/tristate.h"
GObject.generate_gobject_tristate_header;
output_to "gobject/src/tristate.c"
GObject.generate_gobject_tristate_source;
output_to "gobject/include/guestfs-gobject/session.h"
GObject.generate_gobject_session_header;
output_to "gobject/src/session.c"
GObject.generate_gobject_session_source;
(* mlcustomize may not be shipped in this source. *)
if is_regular_file "common/mlcustomize/Makefile.am" then (
output_to "common/mlcustomize/customize_cmdline.mli"

4
gobject/.gitignore vendored
View File

@@ -1,4 +0,0 @@
# Generated sources
/include
/libguestfs-gobject-1.0.pc
/src

View File

@@ -1,142 +0,0 @@
# libguestfs
# Copyright (C) 2012 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.
include $(top_srcdir)/subdir-rules.mk
include $(srcdir)/Makefile.inc
generator_built = \
$(guestfs_gobject_headers) \
$(guestfs_gobject_sources) \
bindtests.js
BUILT_SOURCES = $(generator_built)
EXTRA_DIST = \
$(generator_built) \
TODO.txt \
.gitignore \
bindtests-retvalues.js \
guestfs-gobject.pod \
libguestfs-gobject-1.0.deps \
tests-misc.js \
run-tests \
run-tests-retvalues \
run-live-tests
# Remove the old generated files which were directly in the gobject/
# directory. These have now moved into gobject/src/
CLEANFILES += \
guestfs-gobject*.c
libname = libguestfs-gobject-1.0.la
lib_LTLIBRARIES = $(libname)
libguestfs_gobject_1_0_ladir = $(includedir)/guestfs-gobject
libguestfs_gobject_1_0_la_HEADERS = $(guestfs_gobject_headers)
libguestfs_gobject_1_0_la_SOURCES = $(guestfs_gobject_sources)
libguestfs_gobject_1_0_la_CFLAGS = -I$(top_srcdir)/lib \
-I$(top_srcdir)/include \
-I$(srcdir)/include \
-DGUESTFS_PRIVATE=1 \
$(GOBJECT_CFLAGS)
libguestfs_gobject_1_0_la_LDFLAGS = $(LDFLAGS) -L$(top_builddir)/lib
libguestfs_gobject_1_0_la_LIBADD = $(top_builddir)/lib/libguestfs.la $(GOBJECT_LIBS) $(GIO_LIBS)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libguestfs-gobject-1.0.pc
# All the headers except <guestfs-gobject.h> should be installed
# in the subdirectory.
install-data-hook:
rm $(DESTDIR)$(includedir)/guestfs-gobject/guestfs-gobject.h
install -m 0644 $(srcdir)/include/guestfs-gobject.h $(DESTDIR)$(includedir)
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS =
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
if HAVE_INTROSPECTION
introspection_sources = \
$(libguestfs_gobject_1_0_la_HEADERS) \
$(libguestfs_gobject_1_0_la_SOURCES)
Guestfs-1.0.gir: $(libname)
Guestfs_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
Guestfs_1_0_gir_CFLAGS = $(INCLUDES) -I$(srcdir)/include
Guestfs_1_0_gir_LIBS = $(libname) $(top_builddir)/lib/libguestfs.la
Guestfs_1_0_gir_FILES = $(patsubst %,$(srcdir)/%,$(introspection_sources))
INTROSPECTION_GIRS += Guestfs-1.0.gir
girdir = $(datadir)/gir-1.0
gir_DATA = $(INTROSPECTION_GIRS)
typelibdir = $(libdir)/girepository-1.0
typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
# Tests.
TESTS = \
run-tests \
run-tests-retvalues
if ENABLE_APPLIANCE
TESTS += run-live-tests
endif ENABLE_APPLIANCE
TESTS_ENVIRONMENT = $(top_builddir)/run --test
$(TESTS): $(typelib_DATA)
CLEANFILES += $(gir_DATA) $(typelib_DATA)
if ENABLE_VAPIGEN
-include $(VAPIGEN_MAKEFILE)
libguestfs-gobject-1.0.vapi: Guestfs-1.0.gir libguestfs-gobject-1.0.deps
VAPIGEN_VAPIS = libguestfs-gobject-1.0.vapi
libguestfs_gobject_1_0_vapi_DEPS = gobject-2.0 gio-2.0
libguestfs_gobject_1_0_vapi_METADATADIRS = $(srcdir)
libguestfs_gobject_1_0_vapi_FILES = Guestfs-1.0.gir
vapidir = $(datadir)/vala/vapi
vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps)
endif
endif HAVE_INTROSPECTION
# Documentation.
man_MANS = guestfs-gobject.3
noinst_DATA = $(top_builddir)/website/guestfs-gobject.3.html
guestfs-gobject.3 $(top_builddir)/website/guestfs-gobject.3.html: stamp-guestfs-gobject.pod
stamp-guestfs-gobject.pod: guestfs-gobject.pod
$(PODWRAPPER) \
--section 3 \
--man guestfs-gobject.3 \
--html $(top_builddir)/website/guestfs-gobject.3.html \
--license examples \
$<
touch $@

View File

@@ -1,216 +0,0 @@
# libguestfs generated file
# WARNING: THIS FILE IS GENERATED FROM THE FOLLOWING FILES:
# generator/gobject.ml
# and from the code in the generator/ subdirectory.
# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
#
# Copyright (C) 2009-2025 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.
guestfs_gobject_headers= \
include/guestfs-gobject.h \
include/guestfs-gobject/session.h \
include/guestfs-gobject/tristate.h \
include/guestfs-gobject/struct-application.h \
include/guestfs-gobject/struct-application2.h \
include/guestfs-gobject/struct-btrfsbalance.h \
include/guestfs-gobject/struct-btrfsqgroup.h \
include/guestfs-gobject/struct-btrfsscrub.h \
include/guestfs-gobject/struct-btrfssubvolume.h \
include/guestfs-gobject/struct-dirent.h \
include/guestfs-gobject/struct-hivex_node.h \
include/guestfs-gobject/struct-hivex_value.h \
include/guestfs-gobject/struct-inotify_event.h \
include/guestfs-gobject/struct-int_bool.h \
include/guestfs-gobject/struct-isoinfo.h \
include/guestfs-gobject/struct-lvm_lv.h \
include/guestfs-gobject/struct-lvm_pv.h \
include/guestfs-gobject/struct-lvm_vg.h \
include/guestfs-gobject/struct-mdstat.h \
include/guestfs-gobject/struct-partition.h \
include/guestfs-gobject/struct-stat.h \
include/guestfs-gobject/struct-statns.h \
include/guestfs-gobject/struct-statvfs.h \
include/guestfs-gobject/struct-tsk_dirent.h \
include/guestfs-gobject/struct-utsname.h \
include/guestfs-gobject/struct-version.h \
include/guestfs-gobject/struct-xattr.h \
include/guestfs-gobject/struct-xfsinfo.h \
include/guestfs-gobject/struct-yara_detection.h \
include/guestfs-gobject/optargs-add_domain.h \
include/guestfs-gobject/optargs-add_drive.h \
include/guestfs-gobject/optargs-add_drive_scratch.h \
include/guestfs-gobject/optargs-add_libvirt_dom.h \
include/guestfs-gobject/optargs-aug_transform.h \
include/guestfs-gobject/optargs-btrfs_filesystem_defragment.h \
include/guestfs-gobject/optargs-btrfs_filesystem_resize.h \
include/guestfs-gobject/optargs-btrfs_fsck.h \
include/guestfs-gobject/optargs-btrfs_image.h \
include/guestfs-gobject/optargs-btrfs_scrub_full.h \
include/guestfs-gobject/optargs-btrfs_subvolume_create.h \
include/guestfs-gobject/optargs-btrfs_subvolume_snapshot.h \
include/guestfs-gobject/optargs-compress_device_out.h \
include/guestfs-gobject/optargs-compress_out.h \
include/guestfs-gobject/optargs-copy_attributes.h \
include/guestfs-gobject/optargs-copy_device_to_device.h \
include/guestfs-gobject/optargs-copy_device_to_file.h \
include/guestfs-gobject/optargs-copy_file_to_device.h \
include/guestfs-gobject/optargs-copy_file_to_file.h \
include/guestfs-gobject/optargs-cpio_out.h \
include/guestfs-gobject/optargs-cryptsetup_open.h \
include/guestfs-gobject/optargs-disk_create.h \
include/guestfs-gobject/optargs-download_blocks.h \
include/guestfs-gobject/optargs-e2fsck.h \
include/guestfs-gobject/optargs-fstrim.h \
include/guestfs-gobject/optargs-glob_expand.h \
include/guestfs-gobject/optargs-grep.h \
include/guestfs-gobject/optargs-hivex_open.h \
include/guestfs-gobject/optargs-inspect_get_icon.h \
include/guestfs-gobject/optargs-internal_test.h \
include/guestfs-gobject/optargs-internal_test_63_optargs.h \
include/guestfs-gobject/optargs-internal_test_only_optargs.h \
include/guestfs-gobject/optargs-is_blockdev.h \
include/guestfs-gobject/optargs-is_chardev.h \
include/guestfs-gobject/optargs-is_dir.h \
include/guestfs-gobject/optargs-is_fifo.h \
include/guestfs-gobject/optargs-is_file.h \
include/guestfs-gobject/optargs-is_socket.h \
include/guestfs-gobject/optargs-md_create.h \
include/guestfs-gobject/optargs-mke2fs.h \
include/guestfs-gobject/optargs-mkfs.h \
include/guestfs-gobject/optargs-mkfs_btrfs.h \
include/guestfs-gobject/optargs-mksquashfs.h \
include/guestfs-gobject/optargs-mkswap.h \
include/guestfs-gobject/optargs-mktemp.h \
include/guestfs-gobject/optargs-mount_9p.h \
include/guestfs-gobject/optargs-mount_local.h \
include/guestfs-gobject/optargs-ntfs_chmod.h \
include/guestfs-gobject/optargs-ntfsclone_out.h \
include/guestfs-gobject/optargs-ntfsfix.h \
include/guestfs-gobject/optargs-ntfsresize.h \
include/guestfs-gobject/optargs-remount.h \
include/guestfs-gobject/optargs-rsync.h \
include/guestfs-gobject/optargs-rsync_in.h \
include/guestfs-gobject/optargs-rsync_out.h \
include/guestfs-gobject/optargs-selinux_relabel.h \
include/guestfs-gobject/optargs-set_e2attrs.h \
include/guestfs-gobject/optargs-setfiles.h \
include/guestfs-gobject/optargs-syslinux.h \
include/guestfs-gobject/optargs-tar_in.h \
include/guestfs-gobject/optargs-tar_out.h \
include/guestfs-gobject/optargs-tune2fs.h \
include/guestfs-gobject/optargs-umount.h \
include/guestfs-gobject/optargs-umount_local.h \
include/guestfs-gobject/optargs-xfs_admin.h \
include/guestfs-gobject/optargs-xfs_growfs.h \
include/guestfs-gobject/optargs-xfs_repair.h
guestfs_gobject_sources= \
src/session.c \
src/tristate.c \
src/struct-application.c \
src/struct-application2.c \
src/struct-btrfsbalance.c \
src/struct-btrfsqgroup.c \
src/struct-btrfsscrub.c \
src/struct-btrfssubvolume.c \
src/struct-dirent.c \
src/struct-hivex_node.c \
src/struct-hivex_value.c \
src/struct-inotify_event.c \
src/struct-int_bool.c \
src/struct-isoinfo.c \
src/struct-lvm_lv.c \
src/struct-lvm_pv.c \
src/struct-lvm_vg.c \
src/struct-mdstat.c \
src/struct-partition.c \
src/struct-stat.c \
src/struct-statns.c \
src/struct-statvfs.c \
src/struct-tsk_dirent.c \
src/struct-utsname.c \
src/struct-version.c \
src/struct-xattr.c \
src/struct-xfsinfo.c \
src/struct-yara_detection.c \
src/optargs-add_domain.c \
src/optargs-add_drive.c \
src/optargs-add_drive_scratch.c \
src/optargs-add_libvirt_dom.c \
src/optargs-aug_transform.c \
src/optargs-btrfs_filesystem_defragment.c \
src/optargs-btrfs_filesystem_resize.c \
src/optargs-btrfs_fsck.c \
src/optargs-btrfs_image.c \
src/optargs-btrfs_scrub_full.c \
src/optargs-btrfs_subvolume_create.c \
src/optargs-btrfs_subvolume_snapshot.c \
src/optargs-compress_device_out.c \
src/optargs-compress_out.c \
src/optargs-copy_attributes.c \
src/optargs-copy_device_to_device.c \
src/optargs-copy_device_to_file.c \
src/optargs-copy_file_to_device.c \
src/optargs-copy_file_to_file.c \
src/optargs-cpio_out.c \
src/optargs-cryptsetup_open.c \
src/optargs-disk_create.c \
src/optargs-download_blocks.c \
src/optargs-e2fsck.c \
src/optargs-fstrim.c \
src/optargs-glob_expand.c \
src/optargs-grep.c \
src/optargs-hivex_open.c \
src/optargs-inspect_get_icon.c \
src/optargs-internal_test.c \
src/optargs-internal_test_63_optargs.c \
src/optargs-internal_test_only_optargs.c \
src/optargs-is_blockdev.c \
src/optargs-is_chardev.c \
src/optargs-is_dir.c \
src/optargs-is_fifo.c \
src/optargs-is_file.c \
src/optargs-is_socket.c \
src/optargs-md_create.c \
src/optargs-mke2fs.c \
src/optargs-mkfs.c \
src/optargs-mkfs_btrfs.c \
src/optargs-mksquashfs.c \
src/optargs-mkswap.c \
src/optargs-mktemp.c \
src/optargs-mount_9p.c \
src/optargs-mount_local.c \
src/optargs-ntfs_chmod.c \
src/optargs-ntfsclone_out.c \
src/optargs-ntfsfix.c \
src/optargs-ntfsresize.c \
src/optargs-remount.c \
src/optargs-rsync.c \
src/optargs-rsync_in.c \
src/optargs-rsync_out.c \
src/optargs-selinux_relabel.c \
src/optargs-set_e2attrs.c \
src/optargs-setfiles.c \
src/optargs-syslinux.c \
src/optargs-tar_in.c \
src/optargs-tar_out.c \
src/optargs-tune2fs.c \
src/optargs-umount.c \
src/optargs-umount_local.c \
src/optargs-xfs_admin.c \
src/optargs-xfs_growfs.c \
src/optargs-xfs_repair.c

View File

@@ -1,11 +0,0 @@
Tasks required before the GObject bindings can be considered complete:
* Fix the problem of inspect_get_type
- This is addressed here: https://bugzilla.gnome.org/show_bug.cgi?id=671218
The fix will hopefully make it upstream soon. No changes are required in
libguestfs.
* Bind the libguestfs events API
Tasks which would improve the usability of the GObject bindings:
* Implement _async versions of all apis

View File

@@ -1,110 +0,0 @@
// libguestfs manually written gobject binding tests
// Copyright (C) 2012 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.
const Guestfs = imports.gi.Guestfs;
var fail = false;
function check_error(f) {
var threw = false;
try {
g[f]();
} catch (error) {
threw = true;
if (!error.message.match(/error$/)) {
print(f + " threw unexpected error: " + error.message);
fail = true;
}
}
if (!threw) {
print(f + " failed to throw an error");
fail = true;
}
}
function eq_fail(f, v) {
print(f + " returned unexpected value: " + v);
fail = true;
}
var g = new Guestfs.Session();
var v;
var eq;
v = g.internal_test_rint('1');
v == 1 || eq_fail('internal_test_rint', v);
check_error('internal_test_rinterr');
v = g.internal_test_rint64('1');
v == 1 || eq_fail('internal_test_rint64', v);
check_error('internal_test_rint64err');
v = g.internal_test_rbool('true');
v == 1 || eq_fail('internal_test_rbool', v);
check_error('internal_test_rboolerr');
v = g.internal_test_rconststring('1');
v == 'static string' || eq_fail('internal_test_rconststring', v);
check_error('internal_test_rconststringerr');
v = g.internal_test_rconstoptstring('1');
v == 'static string' || eq_fail('internal_test_rconstoptstring', v);
//check_error('internal_test_rconstoptstringerr');
v = g.internal_test_rstring('string');
v == 'string' || eq_fail('internal_test_rstring', v);
check_error('internal_test_rstringerr');
v = g.internal_test_rstringlist('5');
eq = v.length == 5;
for (var i = 0; eq && i < 5; i++) {
if (v[i] != i) eq = false;
}
eq || eq_fail('internal_test_rstringlist', v.join(' '));
check_error('internal_test_rstringlisterr');
v = g.internal_test_rstruct('1');
v.pv_size == 0 || eq_fail('internal_test_rstruct', v);
check_error('internal_test_rstructerr');
v = g.internal_test_rstructlist('5');
eq = v.length == 5;
for (var i = 0; eq && i < 5; i++) {
if (v[i].pv_size != i) eq = false;
}
eq || eq_fail('internal_test_rstructlist', v);
check_error('internal_test_rstructlisterr');
v = g.internal_test_rhashtable('5');
eq = true;
for (var i = 0; eq && i < 5; i++) {
if (v[i] != i) eq = false;
}
eq || eq_fail('internal_test_rhashtable', v);
check_error('internal_test_rhashtableerr');
v = g.internal_test_rbufferout("01234");
eq = v.length == 5;
for (var i = 0; i < v.length; i++) {
if (v[i] != 48 + i) eq = false; // 48 = ascii '0'
}
eq || eq_fail('internal_test_rbufferout', v);
check_error('internal_test_rbufferouterr');
fail ? 1 : 0;

View File

@@ -1,68 +0,0 @@
=head1 NAME
guestfs-gobject - How to use libguestfs with the GObject bindings
=head1 DEPRECATED
These bindings are deprecated and will be removed in libguestfs 1.58.
=head1 SYNOPSIS
From Javascript using gjs:
const Guestfs = imports.gi.Guestfs;
var g = new Guestfs.Session();
g.add_drive('disk.img', null);
g.launch();
g.close();
=head1 DESCRIPTION
This manual page documents how to call libguestfs using GObject
bindings, especially from Javascript.
Note that the GObject bindings have problems handling 64 bit values.
You should not use the GObject bindings if there are native bindings
for your language. For example, to use libguestfs from Python you are
strongly advised to use the Python native bindings instead (see
L<guestfs-python(3)>).
This page just documents the differences from the C API and gives some
examples. If you are not familiar with using libguestfs, you also
need to read L<guestfs(3)>.
=head1 JAVASCRIPT
Using gjs, you can write a C<.js> file containing:
const Guestfs = imports.gi.Guestfs;
var g = new Guestfs.Session();
g.add_drive('disk.img', null);
g.launch();
g.close();
and then run it using:
gjs program.js
=head1 SEE ALSO
L<guestfs(3)>,
L<guestfs-examples(3)>,
L<guestfs-erlang(3)>,
L<guestfs-golang(3)>,
L<guestfs-java(3)>,
L<guestfs-lua(3)>,
L<guestfs-perl(3)>,
L<guestfs-python(3)>,
L<guestfs-recipes(1)>,
L<guestfs-ruby(3)>,
L<http://libguestfs.org/>.
=head1 AUTHORS
Richard W.M. Jones (C<rjones at redhat dot com>)
=head1 COPYRIGHT
Copyright (C) 2012-2025 Red Hat Inc.

View File

@@ -1,2 +0,0 @@
gobject-2.0
gio-2.0

View File

@@ -1,11 +0,0 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: libguestfs-gobject-1.0
Version: @VERSION@
Description: gobject bindings for the libguestfs library
Requires: libguestfs,gobject-2.0,gio-2.0
Cflags: -I${includedir}
Libs: -L${libdir} -lguestfs-gobject-1.0

View File

@@ -1,27 +0,0 @@
#!/bin/bash -
# libguestfs GObject bindings
# Copyright (C) 2012 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.
source ../tests/functions.sh
set -e
set -x
skip_if_skipped
skip_unless_environment_variable_set GJS
skip_unless_phony_guest fedora.img
$GJS $srcdir/tests-misc.js

View File

@@ -1,34 +0,0 @@
#!/bin/bash -
# libguestfs GObject bindings
# Copyright (C) 2012 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.
source ../tests/functions.sh
set -e
set -x
skip_if_skipped
skip_unless_environment_variable_set GJS
# This test is disabled until we fix 64 bit support.
skip_because "Int64, OInt64 and OStringList are all broken"
rm -f bindtests.tmp
$GJS $srcdir/bindtests.js > bindtests.tmp
diff -u ${srcdir}/../bindtests bindtests.tmp
rm bindtests.tmp

View File

@@ -1,28 +0,0 @@
#!/bin/bash -
# libguestfs GObject bindings
# Copyright (C) 2012-2025 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.
source ../tests/functions.sh
set -e
set -x
skip_if_skipped
skip_unless_environment_variable_set GJS
skip_because "deprecated and currently broken"
$GJS $srcdir/bindtests-retvalues.js

View File

@@ -1,74 +0,0 @@
// libguestfs miscellaneous gobject binding tests
// Copyright (C) 2012 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.
const Guestfs = imports.gi.Guestfs;
var fail = false;
var g = new Guestfs.Session();
var progress_detected = false;
var trace_detected = false;
// Test events
g.connect('progress', function(session, params) {
if (params.array_len == 4) {
// Look for the final progress notification where position = total
if (params.array[2] == params.array[3] && params.array[2] != 0) {
progress_detected = true;
}
}
});
g.connect('trace', function(session, params) {
if (params.buf == 'launch') {
trace_detected = true;
}
});
g.add_drive('../test-data/phony-guests/fedora.img', null);
g.set_trace(true);
g.launch();
// Fake progress messages for a 5 second event. We do this as launch() will not
// generate any progress messages unless it takes at least 5 seconds.
g.debug('progress', ['5']);
if (!trace_detected) {
print("failed to detect trace message for launch");
fail = true;
}
if (!progress_detected) {
print("failed to detect progress message for launch");
fail = true;
}
// Test close()
g.close();
var threw = false;
try {
var v = g.internal_test_rconstoptstring('1');
} catch (error) {
threw = true;
if (!error.message.match(/closed/)) {
print("call after close threw unexpected error: " + error.message);
fail = true;
}
}
if (!threw) {
print("call after closed failed to throw an error");
fail = true;
}
fail ? 1 : 0;

View File

@@ -1,61 +0,0 @@
# libguestfs
# Copyright (C) 2009-2025 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.
dnl gobject library
AC_ARG_ENABLE([gobject],
AS_HELP_STRING([--disable-gobject], [disable GObject bindings]),
[],
[enable_gobject=yes])
AS_IF([test "x$enable_gobject" != "xno"],[
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.26.0],[
AC_SUBST([GOBJECT_CFLAGS])
AC_SUBST([GOBJECT_LIBS])
AC_DEFINE([HAVE_GOBJECT],[1],
[GObject library found at compile time.])
],
[AC_MSG_WARN([gobject library not found, gobject binding will be disabled])])
PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26.0],[
AC_SUBST([GIO_CFLAGS])
AC_SUBST([GIO_LIBS])
AC_DEFINE([HAVE_GIO],[1],
[gio library found at compile time.])
],
[AC_MSG_WARN([gio library not found, gobject binding will be disabled])])
])
AM_CONDITIONAL([HAVE_GOBJECT],
[test "x$GOBJECT_LIBS" != "x" -a "x$GIO_LIBS" != "x"])
AC_CHECK_PROG([GJS],[gjs],[gjs])
AS_IF([test "x$GJS" = "x"],
[AC_MSG_WARN([gjs not found, gobject bindtests will not run])])
dnl gobject introspection
m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
GOBJECT_INTROSPECTION_CHECK([1.30.0])
dnl The above check automatically sets HAVE_INTROSPECTION, but we
dnl want this to be conditional on gobject also being
dnl available. We can't move the above check inside the gobject if
dnl block above or HAVE_INTROSPECTION ends up undefined, so we
dnl recheck it here.
AM_CONDITIONAL([HAVE_INTROSPECTION],
[test "x$HAVE_INTROSPECTION_TRUE" = "x" &&
test "x$HAVE_GOBJECT_TRUE" = "x"])
],[
AM_CONDITIONAL([HAVE_INTROSPECTION], [false])
])

View File

@@ -58,7 +58,6 @@ fish/virt-tar-in.pod
fish/virt-tar-out.pod
fuse/guestmount.pod
fuse/guestunmount.pod
gobject/guestfs-gobject.pod
golang/examples/guestfs-golang.pod
java/examples/guestfs-java.pod
lib/guestfs-actions.pod

View File

@@ -222,101 +222,6 @@ gnulib/lib/xstrtoll.c
gnulib/lib/xstrtoul.c
gnulib/lib/xstrtoull.c
gnulib/lib/xstrtoumax.c
gobject/src/optargs-add_domain.c
gobject/src/optargs-add_drive.c
gobject/src/optargs-add_drive_scratch.c
gobject/src/optargs-add_libvirt_dom.c
gobject/src/optargs-aug_transform.c
gobject/src/optargs-btrfs_filesystem_defragment.c
gobject/src/optargs-btrfs_filesystem_resize.c
gobject/src/optargs-btrfs_fsck.c
gobject/src/optargs-btrfs_image.c
gobject/src/optargs-btrfs_scrub_full.c
gobject/src/optargs-btrfs_subvolume_create.c
gobject/src/optargs-btrfs_subvolume_snapshot.c
gobject/src/optargs-compress_device_out.c
gobject/src/optargs-compress_out.c
gobject/src/optargs-copy_attributes.c
gobject/src/optargs-copy_device_to_device.c
gobject/src/optargs-copy_device_to_file.c
gobject/src/optargs-copy_file_to_device.c
gobject/src/optargs-copy_file_to_file.c
gobject/src/optargs-cpio_out.c
gobject/src/optargs-cryptsetup_open.c
gobject/src/optargs-disk_create.c
gobject/src/optargs-download_blocks.c
gobject/src/optargs-e2fsck.c
gobject/src/optargs-fstrim.c
gobject/src/optargs-glob_expand.c
gobject/src/optargs-grep.c
gobject/src/optargs-hivex_open.c
gobject/src/optargs-inspect_get_icon.c
gobject/src/optargs-internal_test.c
gobject/src/optargs-internal_test_63_optargs.c
gobject/src/optargs-internal_test_only_optargs.c
gobject/src/optargs-is_blockdev.c
gobject/src/optargs-is_chardev.c
gobject/src/optargs-is_dir.c
gobject/src/optargs-is_fifo.c
gobject/src/optargs-is_file.c
gobject/src/optargs-is_socket.c
gobject/src/optargs-md_create.c
gobject/src/optargs-mke2fs.c
gobject/src/optargs-mkfs.c
gobject/src/optargs-mkfs_btrfs.c
gobject/src/optargs-mksquashfs.c
gobject/src/optargs-mkswap.c
gobject/src/optargs-mktemp.c
gobject/src/optargs-mount_9p.c
gobject/src/optargs-mount_local.c
gobject/src/optargs-ntfs_chmod.c
gobject/src/optargs-ntfsclone_out.c
gobject/src/optargs-ntfsfix.c
gobject/src/optargs-ntfsresize.c
gobject/src/optargs-remount.c
gobject/src/optargs-rsync.c
gobject/src/optargs-rsync_in.c
gobject/src/optargs-rsync_out.c
gobject/src/optargs-selinux_relabel.c
gobject/src/optargs-set_e2attrs.c
gobject/src/optargs-setfiles.c
gobject/src/optargs-syslinux.c
gobject/src/optargs-tar_in.c
gobject/src/optargs-tar_out.c
gobject/src/optargs-tune2fs.c
gobject/src/optargs-umount.c
gobject/src/optargs-umount_local.c
gobject/src/optargs-xfs_admin.c
gobject/src/optargs-xfs_growfs.c
gobject/src/optargs-xfs_repair.c
gobject/src/session.c
gobject/src/struct-application.c
gobject/src/struct-application2.c
gobject/src/struct-btrfsbalance.c
gobject/src/struct-btrfsqgroup.c
gobject/src/struct-btrfsscrub.c
gobject/src/struct-btrfssubvolume.c
gobject/src/struct-dirent.c
gobject/src/struct-hivex_node.c
gobject/src/struct-hivex_value.c
gobject/src/struct-inotify_event.c
gobject/src/struct-int_bool.c
gobject/src/struct-isoinfo.c
gobject/src/struct-lvm_lv.c
gobject/src/struct-lvm_pv.c
gobject/src/struct-lvm_vg.c
gobject/src/struct-mdstat.c
gobject/src/struct-partition.c
gobject/src/struct-stat.c
gobject/src/struct-statns.c
gobject/src/struct-statvfs.c
gobject/src/struct-tsk_dirent.c
gobject/src/struct-utsname.c
gobject/src/struct-version.c
gobject/src/struct-xattr.c
gobject/src/struct-xfsinfo.c
gobject/src/struct-yara_detection.c
gobject/src/tristate.c
java/actions-0.c
java/actions-1.c
java/actions-2.c

6
run.in
View File

@@ -107,10 +107,8 @@ prepend PATH "$b/tools"
export PATH
# Set LD_LIBRARY_PATH and DYLD_LIBRARY_PATH to contain library.
prepend LD_LIBRARY_PATH "$b/gobject/.libs"
prepend LD_LIBRARY_PATH "$b/java/.libs"
prepend LD_LIBRARY_PATH "$b/lib/.libs"
prepend DYLD_LIBRARY_PATH "$b/gobject/.libs"
prepend DYLD_LIBRARY_PATH "$b/java/.libs"
prepend DYLD_LIBRARY_PATH "$b/lib/.libs"
export LD_LIBRARY_PATH
@@ -208,10 +206,6 @@ else
fi
export RUSTFLAGS
# For GObject, Javascript and friends.
export GJS="@GJS@"
prepend GI_TYPELIB_PATH "$b/gobject"
export GI_TYPELIB_PATH
# Be friendly to valgrind (https://live.gnome.org/Valgrind)
export G_SLICE=always-malloc
export G_DEBUG=gc-friendly