Return the kernel, initrd, and root files as outputs for this mode when the output format is ext2, so --if-newer will check whether they exist or they are old.
Add a simple test to verify this behaviour. --- src/mode_build.ml | 7 ++++- tests/Makefile.am | 3 +- tests/test-if-newer-ext2.sh | 57 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100755 tests/test-if-newer-ext2.sh diff --git a/src/mode_build.ml b/src/mode_build.ml index 4a58460..ed47366 100644 --- a/src/mode_build.ml +++ b/src/mode_build.ml @@ -468,4 +468,9 @@ and get_outputs packager_config, tmpdir, use_installed, size, include_packagelist) inputs = - [] + match format with + | Chroot -> + (* The content for chroot depends on the packages. *) + [] + | Ext2 -> + [kernel_filename; appliance_filename; initrd_filename] diff --git a/tests/Makefile.am b/tests/Makefile.am index 42d1b82..070f6d9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -28,7 +28,8 @@ TESTS = \ test-execstack.sh \ test-build-bash.sh \ test-binaries-exist.sh \ - test-harder.sh + test-harder.sh \ + test-if-newer-ext2.sh if NETWORK_TESTS TESTS += \ diff --git a/tests/test-if-newer-ext2.sh b/tests/test-if-newer-ext2.sh new file mode 100755 index 0000000..4f49bda --- /dev/null +++ b/tests/test-if-newer-ext2.sh @@ -0,0 +1,57 @@ +#!/bin/bash - +# supermin +# (C) Copyright 2009-2020 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +set -e + +# XXX Hack for Arch. +if [ -f /etc/arch-release ]; then + export SUPERMIN_KERNEL=/boot/vmlinuz-linux +fi + +tmpdir=`mktemp -d` + +d1=$tmpdir/d1 +d2=$tmpdir/d2 + +# We assume 'bash' is a package everywhere. +../src/supermin -v --prepare --use-installed bash -o $d1 + +run_supermin () +{ + ../src/supermin -v --build -f ext2 --if-newer $d1 -o $d2 +} + +# Build the appliance the first time, which will work. +run_supermin + +# No changes, hence nothing to do. +run_supermin | grep 'if-newer: output does not need rebuilding' + +# Try removing any of the files, and check that supermin will detect that. +ext2_files="kernel initrd root" +for ext2_file in $ext2_files +do + rm $d2/$ext2_file + run_supermin + for ext2_file in $ext2_files + do + test -e $d2/$ext2_file + done +done + +rm -rf $tmpdir ||: -- 2.25.1 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs