Richard W.M. Jones
2016-Dec-07 14:04 UTC
[Libguestfs] [PATCH 0/3] Miscellaneous improvements to supermin.
Document what each module does, using *.mli files. Remove the --dtb option, it's obsolete. Rename modules according to their purpose. Rich.
Add documentation for the modules making up supermin. This is just documentation, there is no code change. --- src/Makefile.am | 9 +++++++++ src/build.mli | 23 +++++++++++++++++++++++ src/chroot.mli | 25 +++++++++++++++++++++++++ src/dpkg.mli | 22 ++++++++++++++++++++++ src/ext2.mli | 29 +++++++++++++++++++++++++++++ src/ext2_initrd.mli | 31 +++++++++++++++++++++++++++++++ src/kernel.mli | 35 +++++++++++++++++++++++++++++++++++ src/pacman.mli | 22 ++++++++++++++++++++++ src/prepare.mli | 23 +++++++++++++++++++++++ src/rpm.mli | 22 ++++++++++++++++++++++ 10 files changed, 241 insertions(+) create mode 100644 src/build.mli create mode 100644 src/chroot.mli create mode 100644 src/dpkg.mli create mode 100644 src/ext2.mli create mode 100644 src/ext2_initrd.mli create mode 100644 src/kernel.mli create mode 100644 src/pacman.mli create mode 100644 src/prepare.mli create mode 100644 src/rpm.mli diff --git a/src/Makefile.am b/src/Makefile.am index 767117f..c0e9656 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -52,14 +52,23 @@ SOURCES = \ package_handler.ml \ package_handler.mli \ rpm.ml \ + rpm.mli \ dpkg.ml \ + dpkg.mli \ pacman.ml \ + pacman.mli \ prepare.ml \ + prepare.mli \ chroot.ml \ + chroot.mli \ kernel.ml \ + kernel.mli \ ext2_initrd.ml \ + ext2_initrd.mli \ ext2.ml \ + ext2.mli \ build.ml \ + build.mli \ supermin.ml # Can't use filter for this because of automake brokenness. diff --git a/src/build.mli b/src/build.mli new file mode 100644 index 0000000..6feb4f8 --- /dev/null +++ b/src/build.mli @@ -0,0 +1,23 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** Implements the [--build] subcommand. *) + +val build : int -> (bool * string option * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit +(** [build debug (args...) inputs outputdir] performs the + [supermin --build] subcommand. *) diff --git a/src/chroot.mli b/src/chroot.mli new file mode 100644 index 0000000..5bd81c7 --- /dev/null +++ b/src/chroot.mli @@ -0,0 +1,25 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** Implements [--build -f chroot]. *) + +val build_chroot : int -> Package_handler.file list -> string -> string option -> unit +(** [build_chroot debug files outputdir packagelist_file] copies the + list of [files] into the chroot at [outputdir]. The optional + [packagelist] controls creation of [/packagelist] within the + chroot. *) diff --git a/src/dpkg.mli b/src/dpkg.mli new file mode 100644 index 0000000..c21327c --- /dev/null +++ b/src/dpkg.mli @@ -0,0 +1,22 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** dpkg package handler + + Nothing is exported. This module registers callbacks when it + is loaded. *) diff --git a/src/ext2.mli b/src/ext2.mli new file mode 100644 index 0000000..66cf5c2 --- /dev/null +++ b/src/ext2.mli @@ -0,0 +1,29 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** Implements [--build -f chroot]. *) + +val build_ext2 : int -> string -> Package_handler.file list -> string -> string -> string -> int64 option -> string option -> unit +(** [build_ext2 debug basedir files modpath kernel_version appliance size + packagelist_file] copies all the files from [basedir] plus the + list of [files] into a newly created ext2 filesystem called [appliance]. + + Kernel modules are also copied in from the local [modpath] + to the fixed path in the appliance [/lib/modules/<kernel_version>]. + + libext2fs is used to populate the ext2 filesystem. *) diff --git a/src/ext2_initrd.mli b/src/ext2_initrd.mli new file mode 100644 index 0000000..d03ee23 --- /dev/null +++ b/src/ext2_initrd.mli @@ -0,0 +1,31 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** Implements [--build -f ext2] minimal initrd which is required + to mount the ext2 filesystem at runtime. + + See also the {!Ext2} module. *) + +val build_initrd : int -> string -> string -> string -> unit +(** [build_initrd debug tmpdir modpath initrd] creates the minimal + initrd required to mount the ext2 filesystem at runtime. + + A small, whitelisted selection of kernel modules is taken + from [modpath], just enough to mount the appliance. + + The output is the file [initrd]. *) diff --git a/src/kernel.mli b/src/kernel.mli new file mode 100644 index 0000000..36b4ab7 --- /dev/null +++ b/src/kernel.mli @@ -0,0 +1,35 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** For [--build -f ext2] this module chooses a kernel to use + and either links to it or copies it. + + See also the {!Ext2} module. *) + +val build_kernel : int -> string -> string option -> bool -> string -> string -> string * string +(** [build_kernel debug host_cpu dtb_wildcard copy_kernel kernel dtb] + chooses the kernel to use and links to it or copies it into the + appliance directory. + + The output is written to the file [kernel]. + + The function returns the [kernel_version, modpath] tuple as a + side-effect of locating the kernel. + + The [--dtb] option is also handled here, but that support is + now effectively obsolete and will be removed in future. *) diff --git a/src/pacman.mli b/src/pacman.mli new file mode 100644 index 0000000..5b9be12 --- /dev/null +++ b/src/pacman.mli @@ -0,0 +1,22 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** pacman package handler. + + Nothing is exported. This module registers callbacks when it + is loaded. *) diff --git a/src/prepare.mli b/src/prepare.mli new file mode 100644 index 0000000..404302a --- /dev/null +++ b/src/prepare.mli @@ -0,0 +1,23 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** Implements the [--prepare] subcommand. *) + +val prepare : int -> (bool * string option * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit +(** [prepare debug (args...) inputs outputdir] performs the + [supermin --prepare] subcommand. *) diff --git a/src/rpm.mli b/src/rpm.mli new file mode 100644 index 0000000..8b55ad4 --- /dev/null +++ b/src/rpm.mli @@ -0,0 +1,22 @@ +(* supermin 5 + * Copyright (C) 2009-2016 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 + *) + +(** RPM package handler + + Nothing is exported. This module registers callbacks when it + is loaded. *) -- 2.10.2
Richard W.M. Jones
2016-Dec-07 14:04 UTC
[Libguestfs] [PATCH 2/3] Remove the --dtb option and all supporting code.
It used to be necessary to specify a DTB manually back in very old versions of qemu on armv7. However qemu has constructed a correct DTB for a very long time and it's almost certainly a mistake if you are using the supermin --dtb parameter to override that. (For this reason, supermin will intentionally give an error now if you try to use --dtb). libguestfs stopped using this parameter in commit af762e43424382d895d3a10aa6632adc601fdbad (2015-03-05). --- src/build.ml | 5 ++-- src/build.mli | 2 +- src/kernel.ml | 70 +------------------------------------------------------- src/kernel.mli | 9 +++----- src/prepare.ml | 2 +- src/prepare.mli | 2 +- src/supermin.ml | 7 ++---- src/supermin.pod | 44 +++-------------------------------- 8 files changed, 14 insertions(+), 127 deletions(-) diff --git a/src/build.ml b/src/build.ml index 83a0d98..43aedc4 100644 --- a/src/build.ml +++ b/src/build.ml @@ -58,7 +58,7 @@ and string_of_file_content = function | Excludefiles -> "excludefiles" let rec build debug - (copy_kernel, dtb_wildcard, format, host_cpu, + (copy_kernel, format, host_cpu, packager_config, tmpdir, use_installed, size, include_packagelist) inputs outputdir @@ -222,11 +222,10 @@ let rec build debug | Ext2 -> let kernel = outputdir // "kernel" - and dtb = outputdir // "dtb" and appliance = outputdir // "root" and initrd = outputdir // "initrd" in let kernel_version, modpath - Kernel.build_kernel debug host_cpu dtb_wildcard copy_kernel kernel dtb in + Kernel.build_kernel debug host_cpu copy_kernel kernel in Ext2.build_ext2 debug basedir files modpath kernel_version appliance size packagelist_file; Ext2_initrd.build_initrd debug tmpdir modpath initrd diff --git a/src/build.mli b/src/build.mli index 6feb4f8..0f8b956 100644 --- a/src/build.mli +++ b/src/build.mli @@ -18,6 +18,6 @@ (** Implements the [--build] subcommand. *) -val build : int -> (bool * string option * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit +val build : int -> (bool * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit (** [build debug (args...) inputs outputdir] performs the [supermin --build] subcommand. *) diff --git a/src/kernel.ml b/src/kernel.ml index b4e89da..5d1ae66 100644 --- a/src/kernel.ml +++ b/src/kernel.ml @@ -39,7 +39,7 @@ let patt_of_cpu host_cpu in List.map (fun model -> sprintf "vmlinu?-*-%s" model) models -let rec build_kernel debug host_cpu dtb_wildcard copy_kernel kernel dtb +let rec build_kernel debug host_cpu copy_kernel kernel (* Locate the kernel. *) let kernel_file, kernel_name, kernel_version, modpath try @@ -84,13 +84,6 @@ let rec build_kernel debug host_cpu dtb_wildcard copy_kernel kernel dtb ) else find_kernel debug host_cpu kernel in - (* If the user passed --dtb option, locate dtb. *) - (match dtb_wildcard with - | None -> () - | Some wildcard -> - find_dtb debug copy_kernel kernel_name wildcard dtb - ); - if debug >= 1 then ( printf "supermin: kernel: kernel_version %s\n" kernel_version; printf "supermin: kernel: modules %s\n%!" modpath; @@ -161,67 +154,6 @@ installed, try installing a fullvirt kernel (only for supermin use, you shouldn't boot the Xen guest with it)." host_cpu -and find_dtb debug copy_kernel kernel_name wildcard dtb - let dtb_file - try - let dtb_file = getenv "SUPERMIN_DTB" in - if debug >= 1 then - printf "supermin: kernel: SUPERMIN_DTB environment variable = %s\n%!" - dtb_file; - dtb_file - with Not_found -> - (* Replace vmlinuz- with dtb- *) - if not (string_prefix "vmlinuz-" kernel_name) && - not (string_prefix "vmlinuz-" kernel_name) then - no_dtb_dir kernel_name; - let dtb_dir - try - List.find dir_exists ( - List.map (fun prefix -> - prefix ^ String.sub kernel_name 8 (String.length kernel_name - 8) - ) ["/boot/dtb-"; "/usr/lib/linux-image-"]) - with Not_found -> - no_dtb_dir kernel_name; "" - in - - let all_files = Sys.readdir dtb_dir in - let all_files = Array.to_list all_files in - - let files - List.filter (fun filename -> fnmatch wildcard filename [FNM_NOESCAPE]) - all_files in - if files = [] then - no_dtb dtb_dir wildcard; - - let dtb_name = List.hd files in - let dtb_file = dtb_dir // dtb_name in - if debug >= 1 then - printf "supermin: kernel: picked dtb %s\n%!" dtb_file; - dtb_file in - - copy_or_symlink_file copy_kernel dtb_file dtb - -and no_dtb_dir kernel_name - error "\ -failed to find a dtb (device tree) directory. - -I expected to take '%s' and to -replace vmlinuz- with dtb- to form a directory. - -You can set SUPERMIN_KERNEL, SUPERMIN_MODULES and SUPERMIN_DTB -to override automatic selection. See supermin(1)." - kernel_name - -and no_dtb dtb_dir wildcard - error "\ -failed to find a matching device tree. - -I looked for a file matching '%s' in directory '%s'. - -You can set SUPERMIN_KERNEL, SUPERMIN_MODULES and SUPERMIN_DTB -to override automatic selection. See supermin(1)." - wildcard dtb_dir - and find_modpath debug kernel_version try let modpath = getenv "SUPERMIN_MODULES" in diff --git a/src/kernel.mli b/src/kernel.mli index 36b4ab7..35a1273 100644 --- a/src/kernel.mli +++ b/src/kernel.mli @@ -21,15 +21,12 @@ See also the {!Ext2} module. *) -val build_kernel : int -> string -> string option -> bool -> string -> string -> string * string -(** [build_kernel debug host_cpu dtb_wildcard copy_kernel kernel dtb] +val build_kernel : int -> string -> bool -> string -> string * string +(** [build_kernel debug host_cpu copy_kernel kernel] chooses the kernel to use and links to it or copies it into the appliance directory. The output is written to the file [kernel]. The function returns the [kernel_version, modpath] tuple as a - side-effect of locating the kernel. - - The [--dtb] option is also handled here, but that support is - now effectively obsolete and will be removed in future. *) + side-effect of locating the kernel. *) diff --git a/src/prepare.ml b/src/prepare.ml index 830b620..e8cf058 100644 --- a/src/prepare.ml +++ b/src/prepare.ml @@ -21,7 +21,7 @@ open Printf open Package_handler open Utils -let prepare debug (copy_kernel, dtb_wildcard, format, host_cpu, +let prepare debug (copy_kernel, format, host_cpu, packager_config, tmpdir, use_installed, size, include_packagelist) inputs outputdir diff --git a/src/prepare.mli b/src/prepare.mli index 404302a..e2d677a 100644 --- a/src/prepare.mli +++ b/src/prepare.mli @@ -18,6 +18,6 @@ (** Implements the [--prepare] subcommand. *) -val prepare : int -> (bool * string option * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit +val prepare : int -> (bool * Types.format * string * string option * string * bool * int64 option * bool) -> string list -> string -> unit (** [prepare debug (args...) inputs outputdir] performs the [supermin --prepare] subcommand. *) diff --git a/src/supermin.ml b/src/supermin.ml index a09b498..6dd75b2 100644 --- a/src/supermin.ml +++ b/src/supermin.ml @@ -86,7 +86,6 @@ let main () let copy_kernel = ref false in let debug = ref 0 in - let dtb_wildcard = ref "" in let format = ref None in let host_cpu = ref Config.host_cpu in let if_newer = ref false in @@ -134,7 +133,6 @@ or upgrade to libguestfs >= 1.26. let argspec = Arg.align [ "--build", Arg.Unit set_build_mode, " Build a full appliance"; "--copy-kernel", Arg.Set copy_kernel, " Copy kernel instead of symlinking"; - "--dtb", Arg.Set_string dtb_wildcard, "WILDCARD Find device tree matching wildcard"; "-f", Arg.String set_format, "chroot|ext2 Set output format"; "--format", Arg.String set_format, ditto; "--host-cpu", Arg.Set_string host_cpu, "ARCH Set host CPU architecture"; @@ -160,7 +158,6 @@ or upgrade to libguestfs >= 1.26. let copy_kernel = !copy_kernel in let debug = !debug in - let dtb_wildcard = match !dtb_wildcard with "" -> None | s -> Some s in let host_cpu = !host_cpu in let if_newer = !if_newer in let inputs = List.rev !inputs in @@ -191,7 +188,7 @@ or upgrade to libguestfs >= 1.26. else outputdir in debug, mode, if_newer, inputs, lockfile, outputdir, - (copy_kernel, dtb_wildcard, format, host_cpu, + (copy_kernel, format, host_cpu, packager_config, tmpdir, use_installed, size, include_packagelist) in @@ -201,7 +198,7 @@ or upgrade to libguestfs >= 1.26. * This fails with an error if one could not be located. *) let () - let (_, _, _, _, packager_config, tmpdir, _, _, _) = args in + let (_, _, _, packager_config, tmpdir, _, _, _) = args in let settings = { debug = debug; tmpdir = tmpdir; diff --git a/src/supermin.pod b/src/supermin.pod index 8c9aca7..4581201 100644 --- a/src/supermin.pod +++ b/src/supermin.pod @@ -143,40 +143,6 @@ the kernel in F</boot>. This is fractionally slower, but is necessary if you want to change the permissions or SELinux label on the kernel or device tree. -=item B<--dtb> WILDCARD - -(I<--build> mode only) - -If specified, search for a device tree which is compatible with the -selected kernel and the name of which matches the given wildcard. You -can use a wildcard such as C<vexpress-*a9*.dtb> which would match -F<vexpress-v2p-ca9.dtb>. - -Notes: - -=over 4 - -=item * - -You may need to quote the wildcard to prevent it from being expanded -by your shell. - -=item * - -If no I<--dtb> option is given, no device tree will be looked for. - -=item * - -You only need a device tree on architectures such as ARM and PowerPC -which use them. On other architectures, don't use this option. - -=item * - -If you use this option and no compatible device tree can be found, -supermin will exit with an error. - -=back - =item B<-f> FORMAT =item B<--format> FORMAT @@ -202,15 +168,15 @@ This is called a C<chroot> because you could literally L<chroot(1)> into this directory afterwards, although it's a better idea to use a container technology (LXC, etc.). -No kernel, initrd or dtb is generated in this mode because it is +No kernel or initrd is generated in this mode because it is assumed that you will be running the appliance using the host kernel. =item ext2 An ext2 filesystem disk image. -The output kernel is written to F<OUTPUTDIR/kernel>, the device tree -(if using) to F<OUTPUTDIR/dtb>, a small initramfs which can mount the +The output kernel is written to F<OUTPUTDIR/kernel>, +a small initramfs which can mount the appliance to F<OUTPUTDIR/initrd>, and the ext2 filesystem image to F<OUTPUTDIR/root>. (Where F<OUTPUTDIR> is specified by the I<-o> option). @@ -543,10 +509,6 @@ This specifies the kernel modules directory to use. The environment variable should point to a module directory, eg. F</lib/modules/3.0.x86_64/> -=item SUPERMIN_DTB - -Force the given device tree file to be used. - =item SUPERMIN_KERNEL_VERSION On non-x86 architectures, you may need to set this environment -- 2.10.2
Richard W.M. Jones
2016-Dec-07 14:04 UTC
[Libguestfs] [PATCH 3/3] Group and rename modules according to their purpose.
The two mode modules are called Mode_prepare and Mode_build. The two format modules are called Format_chroot and Format_ext2*. The package handler implementations are called Ph_*. This is entirely code motion, except that I removed three 'open' statements in order to make the source location of some functions clearer. --- .gitignore | 2 +- src/Makefile.am | 74 ++++++++++++------------- src/{ext2init-c.c => format-ext2-init-c.c} | 0 src/{chroot.ml => format_chroot.ml} | 0 src/{chroot.mli => format_chroot.mli} | 0 src/{ext2.ml => format_ext2.ml} | 0 src/{ext2.mli => format_ext2.mli} | 0 src/{ext2init.ml => format_ext2_init.ml} | 0 src/{ext2init.mli => format_ext2_init.mli} | 0 src/{ext2_initrd.ml => format_ext2_initrd.ml} | 3 +- src/{ext2_initrd.mli => format_ext2_initrd.mli} | 2 +- src/{kernel.ml => format_ext2_kernel.ml} | 0 src/{kernel.mli => format_ext2_kernel.mli} | 2 +- src/{build.ml => mode_build.ml} | 10 ++-- src/{build.mli => mode_build.mli} | 0 src/{prepare.ml => mode_prepare.ml} | 0 src/{prepare.mli => mode_prepare.mli} | 0 src/{dpkg.ml => ph_dpkg.ml} | 0 src/{dpkg.mli => ph_dpkg.mli} | 0 src/{pacman.ml => ph_pacman.ml} | 0 src/{pacman.mli => ph_pacman.mli} | 0 src/{rpm.ml => ph_rpm.ml} | 0 src/{rpm.mli => ph_rpm.mli} | 0 src/supermin.ml | 6 +- 24 files changed, 48 insertions(+), 51 deletions(-) rename src/{ext2init-c.c => format-ext2-init-c.c} (100%) rename src/{chroot.ml => format_chroot.ml} (100%) rename src/{chroot.mli => format_chroot.mli} (100%) rename src/{ext2.ml => format_ext2.ml} (100%) rename src/{ext2.mli => format_ext2.mli} (100%) rename src/{ext2init.ml => format_ext2_init.ml} (100%) rename src/{ext2init.mli => format_ext2_init.mli} (100%) rename src/{ext2_initrd.ml => format_ext2_initrd.ml} (99%) rename src/{ext2_initrd.mli => format_ext2_initrd.mli} (96%) rename src/{kernel.ml => format_ext2_kernel.ml} (100%) rename src/{kernel.mli => format_ext2_kernel.mli} (96%) rename src/{build.ml => mode_build.ml} (97%) rename src/{build.mli => mode_build.mli} (100%) rename src/{prepare.ml => mode_prepare.ml} (100%) rename src/{prepare.mli => mode_prepare.mli} (100%) rename src/{dpkg.ml => ph_dpkg.ml} (100%) rename src/{dpkg.mli => ph_dpkg.mli} (100%) rename src/{pacman.ml => ph_pacman.ml} (100%) rename src/{pacman.mli => ph_pacman.mli} (100%) rename src/{rpm.ml => ph_rpm.ml} (100%) rename src/{rpm.mli => ph_rpm.mli} (100%) diff --git a/.gitignore b/.gitignore index ff3680e..288950e 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,7 @@ pod2htm?.tmp /snippet/ /src/.depend /src/config.ml -/src/ext2init-bin.S +/src/format-ext2-init-bin.S /src/supermin /src/supermin.1 /src/supermin-link.sh diff --git a/src/Makefile.am b/src/Makefile.am index c0e9656..5670a0d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,9 +28,6 @@ SOURCES = \ ext2fs-c.c \ ext2fs.ml \ ext2fs.mli \ - ext2init-c.c \ - ext2init.ml \ - ext2init.mli \ fnmatch-c.c \ fnmatch.ml \ fnmatch.mli \ @@ -51,30 +48,32 @@ SOURCES = \ os_release.mli \ package_handler.ml \ package_handler.mli \ - rpm.ml \ - rpm.mli \ - dpkg.ml \ - dpkg.mli \ - pacman.ml \ - pacman.mli \ - prepare.ml \ - prepare.mli \ - chroot.ml \ - chroot.mli \ - kernel.ml \ - kernel.mli \ - ext2_initrd.ml \ - ext2_initrd.mli \ - ext2.ml \ - ext2.mli \ - build.ml \ - build.mli \ + ph_rpm.ml \ + ph_rpm.mli \ + ph_dpkg.ml \ + ph_dpkg.mli \ + ph_pacman.ml \ + ph_pacman.mli \ + mode_prepare.ml \ + mode_prepare.mli \ + format_chroot.ml \ + format_chroot.mli \ + format-ext2-init-c.c \ + format_ext2_init.ml \ + format_ext2_init.mli \ + format_ext2_initrd.ml \ + format_ext2_initrd.mli \ + format_ext2_kernel.ml \ + format_ext2_kernel.mli \ + format_ext2.ml \ + format_ext2.mli \ + mode_build.ml \ + mode_build.mli \ supermin.ml # Can't use filter for this because of automake brokenness. SOURCES_ML = \ ext2fs.ml \ - ext2init.ml \ fnmatch.ml \ glob.ml \ realpath.ml \ @@ -84,20 +83,21 @@ SOURCES_ML = \ types.ml \ os_release.ml \ package_handler.ml \ - rpm.ml \ - dpkg.ml \ - pacman.ml \ - prepare.ml \ - chroot.ml \ - kernel.ml \ - ext2_initrd.ml \ - ext2.ml \ - build.ml \ + ph_rpm.ml \ + ph_dpkg.ml \ + ph_pacman.ml \ + mode_prepare.ml \ + format_chroot.ml \ + format_ext2_init.ml \ + format_ext2_initrd.ml \ + format_ext2_kernel.ml \ + format_ext2.ml \ + mode_build.ml \ supermin.ml SOURCES_C = \ ext2fs-c.c \ - ext2init-c.c \ + format-ext2-init-c.c \ fnmatch-c.c \ glob-c.c \ librpm-c.c \ @@ -132,9 +132,9 @@ OBJECTS = $(XOBJECTS) BEST = opt endif -supermin_DEPENDENCIES = $(OBJECTS) ext2init-bin.o +supermin_DEPENDENCIES = $(OBJECTS) format-ext2-init-bin.o -supermin_LDADD = ext2init-bin.o ../lib/libgnu.a +supermin_LDADD = format-ext2-init-bin.o ../lib/libgnu.a supermin_LINK = \ ./supermin-link.sh \ @@ -148,12 +148,12 @@ supermin_LINK = \ .ml.cmx: $(OCAMLFIND) ocamlopt $(OCAMLFLAGS) $(OCAMLPACKAGES) -c $< -o $@ -CLEANFILES += ext2init-bin.S +CLEANFILES += format-ext2-init-bin.S -ext2init-bin.o: ext2init-bin.S +format-ext2-init-bin.o: format-ext2-init-bin.S $(CC) -o $@ -c $< -ext2init-bin.S: ../init/init $(srcdir)/bin2s.pl +format-ext2-init-bin.S: ../init/init $(srcdir)/bin2s.pl strip --strip-all $< ls -l $< @file $< | grep -isq static || \ diff --git a/src/ext2init-c.c b/src/format-ext2-init-c.c similarity index 100% rename from src/ext2init-c.c rename to src/format-ext2-init-c.c diff --git a/src/chroot.ml b/src/format_chroot.ml similarity index 100% rename from src/chroot.ml rename to src/format_chroot.ml diff --git a/src/chroot.mli b/src/format_chroot.mli similarity index 100% rename from src/chroot.mli rename to src/format_chroot.mli diff --git a/src/ext2.ml b/src/format_ext2.ml similarity index 100% rename from src/ext2.ml rename to src/format_ext2.ml diff --git a/src/ext2.mli b/src/format_ext2.mli similarity index 100% rename from src/ext2.mli rename to src/format_ext2.mli diff --git a/src/ext2init.ml b/src/format_ext2_init.ml similarity index 100% rename from src/ext2init.ml rename to src/format_ext2_init.ml diff --git a/src/ext2init.mli b/src/format_ext2_init.mli similarity index 100% rename from src/ext2init.mli rename to src/format_ext2_init.mli diff --git a/src/ext2_initrd.ml b/src/format_ext2_initrd.ml similarity index 99% rename from src/ext2_initrd.ml rename to src/format_ext2_initrd.ml index d4a4e2f..b67bb55 100644 --- a/src/ext2_initrd.ml +++ b/src/format_ext2_initrd.ml @@ -21,7 +21,6 @@ open Printf open Utils open Ext2fs -open Ext2init open Fnmatch module StringSet = Set.Make (String) @@ -155,7 +154,7 @@ let rec build_initrd debug tmpdir modpath initrd printf "supermin: ext2: wrote %d modules to minimal initrd\n%!" (StringSet.cardinal !visited); (* This is the binary blob containing the init "script". *) - let init = binary_init () in + let init = Format_ext2_init.binary_init () in let initfile = initdir // "init" in let chan = open_out initfile in output_string chan init; diff --git a/src/ext2_initrd.mli b/src/format_ext2_initrd.mli similarity index 96% rename from src/ext2_initrd.mli rename to src/format_ext2_initrd.mli index d03ee23..328a75c 100644 --- a/src/ext2_initrd.mli +++ b/src/format_ext2_initrd.mli @@ -19,7 +19,7 @@ (** Implements [--build -f ext2] minimal initrd which is required to mount the ext2 filesystem at runtime. - See also the {!Ext2} module. *) + See also the {!Format_ext2} module. *) val build_initrd : int -> string -> string -> string -> unit (** [build_initrd debug tmpdir modpath initrd] creates the minimal diff --git a/src/kernel.ml b/src/format_ext2_kernel.ml similarity index 100% rename from src/kernel.ml rename to src/format_ext2_kernel.ml diff --git a/src/kernel.mli b/src/format_ext2_kernel.mli similarity index 96% rename from src/kernel.mli rename to src/format_ext2_kernel.mli index 35a1273..32919bc 100644 --- a/src/kernel.mli +++ b/src/format_ext2_kernel.mli @@ -19,7 +19,7 @@ (** For [--build -f ext2] this module chooses a kernel to use and either links to it or copies it. - See also the {!Ext2} module. *) + See also the {!Format_ext2} module. *) val build_kernel : int -> string -> bool -> string -> string * string (** [build_kernel debug host_cpu copy_kernel kernel] diff --git a/src/build.ml b/src/mode_build.ml similarity index 97% rename from src/build.ml rename to src/mode_build.ml index 43aedc4..2a46dd8 100644 --- a/src/build.ml +++ b/src/mode_build.ml @@ -218,17 +218,17 @@ let rec build debug (match format with | Chroot -> (* chroot doesn't need an external kernel or initrd *) - Chroot.build_chroot debug files outputdir packagelist_file + Format_chroot.build_chroot debug files outputdir packagelist_file | Ext2 -> let kernel = outputdir // "kernel" and appliance = outputdir // "root" and initrd = outputdir // "initrd" in let kernel_version, modpath - Kernel.build_kernel debug host_cpu copy_kernel kernel in - Ext2.build_ext2 debug basedir files modpath kernel_version appliance size - packagelist_file; - Ext2_initrd.build_initrd debug tmpdir modpath initrd + Format_ext2_kernel.build_kernel debug host_cpu copy_kernel kernel in + Format_ext2.build_ext2 debug basedir files modpath kernel_version + appliance size packagelist_file; + Format_ext2_initrd.build_initrd debug tmpdir modpath initrd ) and read_appliance debug basedir appliance = function diff --git a/src/build.mli b/src/mode_build.mli similarity index 100% rename from src/build.mli rename to src/mode_build.mli diff --git a/src/prepare.ml b/src/mode_prepare.ml similarity index 100% rename from src/prepare.ml rename to src/mode_prepare.ml diff --git a/src/prepare.mli b/src/mode_prepare.mli similarity index 100% rename from src/prepare.mli rename to src/mode_prepare.mli diff --git a/src/dpkg.ml b/src/ph_dpkg.ml similarity index 100% rename from src/dpkg.ml rename to src/ph_dpkg.ml diff --git a/src/dpkg.mli b/src/ph_dpkg.mli similarity index 100% rename from src/dpkg.mli rename to src/ph_dpkg.mli diff --git a/src/pacman.ml b/src/ph_pacman.ml similarity index 100% rename from src/pacman.ml rename to src/ph_pacman.ml diff --git a/src/pacman.mli b/src/ph_pacman.mli similarity index 100% rename from src/pacman.mli rename to src/ph_pacman.mli diff --git a/src/rpm.ml b/src/ph_rpm.ml similarity index 100% rename from src/rpm.ml rename to src/ph_rpm.ml diff --git a/src/rpm.mli b/src/ph_rpm.mli similarity index 100% rename from src/rpm.mli rename to src/ph_rpm.mli diff --git a/src/supermin.ml b/src/supermin.ml index 6dd75b2..014df88 100644 --- a/src/supermin.ml +++ b/src/supermin.ml @@ -21,8 +21,6 @@ open Printf open Types open Utils -open Prepare -open Build open Package_handler type mode = Prepare | Build @@ -249,8 +247,8 @@ or upgrade to libguestfs >= 1.26. ignore (Sys.command cmd)); (match mode with - | Prepare -> prepare debug args inputs new_outputdir - | Build -> build debug args inputs new_outputdir + | Prepare -> Mode_prepare.prepare debug args inputs new_outputdir + | Build -> Mode_build.build debug args inputs new_outputdir ); (* Delete the old output directory if it exists. *) -- 2.10.2
Pino Toscano
2016-Dec-07 15:01 UTC
Re: [Libguestfs] [PATCH 0/3] Miscellaneous improvements to supermin.
On Wednesday, 7 December 2016 14:04:43 CET Richard W.M. Jones wrote:> Document what each module does, using *.mli files. > > Remove the --dtb option, it's obsolete. > > Rename modules according to their purpose.Generally LGTM. The only note is about the removal of --dtb: wouldn't it better to leave a stub option? It would explicitly print out it was removed, so when specified it's clearer it was not a typo but intentional functionality drop/change. -- Pino Toscano
Richard W.M. Jones
2016-Dec-07 15:04 UTC
Re: [Libguestfs] [PATCH 0/3] Miscellaneous improvements to supermin.
On Wed, Dec 07, 2016 at 04:01:50PM +0100, Pino Toscano wrote:> On Wednesday, 7 December 2016 14:04:43 CET Richard W.M. Jones wrote: > > Document what each module does, using *.mli files. > > > > Remove the --dtb option, it's obsolete. > > > > Rename modules according to their purpose. > > Generally LGTM. > > The only note is about the removal of --dtb: wouldn't it better to > leave a stub option? It would explicitly print out it was removed, > so when specified it's clearer it was not a typo but intentional > functionality drop/change.OK I'll modify this and then push. Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top
Possibly Parallel Threads
- [PATCH 0/3] Miscellaneous improvements to supermin.
- [PATCH 0/3] supermin: miscellaneous cleanups
- Re: [PATCH 0/8] Miscellaneous cleanups to Windows registry code.
- [PATCH supermin v4] Supermin 5 rewrite.
- Re: [supermin PATCH 3/4] Extend modes with list of outputs