2014-01-15 18:48:04 +04:00
#!/bin/bash
#
# Copyright (C) 2011,2014 Colin Walters <walters@verbum.org>
#
2018-01-30 22:26:26 +03:00
# SPDX-License-Identifier: LGPL-2.0+
#
2014-01-15 18:48:04 +04:00
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
2021-12-07 04:20:55 +03:00
# License along with this library. If not, see <https://www.gnu.org/licenses/>.
2014-01-15 18:48:04 +04:00
2016-01-27 19:44:10 +03:00
set -euo pipefail
2014-01-15 18:48:04 +04:00
. $( dirname $0 ) /libtest.sh
2015-07-14 20:30:05 +03:00
# Exports OSTREE_SYSROOT so --sysroot not needed.
2017-09-01 23:15:33 +03:00
setup_os_repository "archive" "syslinux"
2014-01-15 18:48:04 +04:00
2017-08-23 19:15:46 +03:00
extra_admin_tests = 3
2014-01-15 18:48:04 +04:00
. $( dirname $0 ) /admin-test.sh
2017-08-04 22:58:41 +03:00
2017-08-15 18:22:21 +03:00
# Test the legacy dirs
for test_bootdir in "boot" "usr/lib/ostree-boot" ; do
cd ${ test_tmpdir }
rm httpd osdata testos-repo sysroot -rf
setup_os_repository "archive" "syslinux" $test_bootdir
2021-05-07 17:42:37 +03:00
${ CMD_PREFIX } ostree --repo= sysroot/ostree/repo pull-local --remote= testos testos-repo testos/buildmain/x86_64-runtime
rev = $( ${ CMD_PREFIX } ostree --repo= sysroot/ostree/repo rev-parse testos/buildmain/x86_64-runtime)
${ CMD_PREFIX } ostree admin deploy --karg= root = LABEL = MOO --karg= quiet --os= testos testos:testos/buildmain/x86_64-runtime
2018-06-27 17:45:43 +03:00
assert_file_has_content sysroot/boot/loader/entries/ostree-1-testos.conf 'options.* root=LABEL=MOO'
assert_file_has_content sysroot/boot/loader/entries/ostree-1-testos.conf 'options.* quiet'
2017-08-15 18:22:21 +03:00
assert_file_has_content sysroot/boot/ostree/testos-${ bootcsum } /vmlinuz-3.6.0 'a kernel'
2017-08-19 03:51:10 +03:00
assert_file_has_content sysroot/boot/ostree/testos-${ bootcsum } /initramfs-3.6.0.img 'an initramfs'
2017-08-15 18:22:21 +03:00
# kernel/initrams should also be in the tree's /boot with the checksum
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${ rev } .0/$test_bootdir /vmlinuz-3.6.0-${ bootcsum } 'a kernel'
2017-08-19 03:51:10 +03:00
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${ rev } .0/$test_bootdir /initramfs-3.6.0.img-${ bootcsum } 'an initramfs'
2017-08-15 18:22:21 +03:00
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${ rev } .0/etc/os-release 'NAME=TestOS'
assert_file_has_content sysroot/ostree/boot.1/testos/${ bootcsum } /0/etc/os-release 'NAME=TestOS'
${ CMD_PREFIX } ostree admin status
validate_bootloader
echo " ok kernel in $test_bootdir "
done
# And test that legacy overrides /usr/lib/modules
2017-08-04 22:58:41 +03:00
cd ${ test_tmpdir }
rm httpd osdata testos-repo sysroot -rf
2017-08-15 18:22:21 +03:00
setup_os_repository "archive" "syslinux" "usr/lib/ostree-boot"
cd osdata
echo "this is a kernel without an initramfs like Fedora 26" > usr/lib/modules/3.6.0/vmlinuz
usrlib_modules_bootcsum = $( cat usr/lib/modules/3.6.0/vmlinuz | sha256sum | cut -f 1 -d ' ' )
2021-05-07 17:42:37 +03:00
${ CMD_PREFIX } ostree --repo= ${ test_tmpdir } /testos-repo commit --add-metadata-string version = 1.0.9 -b testos/buildmain/x86_64-runtime -s "Build"
2017-08-15 18:22:21 +03:00
cd ${ test_tmpdir }
2021-05-07 17:42:37 +03:00
${ CMD_PREFIX } ostree --repo= sysroot/ostree/repo pull-local --remote= testos testos-repo testos/buildmain/x86_64-runtime
rev = $( ${ CMD_PREFIX } ostree --repo= sysroot/ostree/repo rev-parse testos/buildmain/x86_64-runtime)
${ CMD_PREFIX } ostree admin deploy --karg= root = LABEL = MOO --karg= quiet --os= testos testos:testos/buildmain/x86_64-runtime
2018-06-27 17:45:43 +03:00
assert_file_has_content sysroot/boot/loader/entries/ostree-1-testos.conf 'options.* root=LABEL=MOO'
2017-08-04 22:58:41 +03:00
assert_file_has_content sysroot/boot/ostree/testos-${ bootcsum } /vmlinuz-3.6.0 'a kernel'
2017-08-19 03:51:10 +03:00
assert_file_has_content sysroot/boot/ostree/testos-${ bootcsum } /initramfs-3.6.0.img 'an initramfs'
2017-08-15 18:22:21 +03:00
# Note this bootcsum shouldn't be the modules one
assert_not_streq " ${ bootcsum } " " ${ usrlib_modules_bootcsum } "
echo "ok kernel in /usr/lib/modules and /usr/lib/ostree-boot"