petitboot
6 years agopb-console: Read /etc/environment and /etc/locale
Jeremy Kerr [Tue, 9 Jul 2013 07:24:38 +0000 (15:24 +0800)]
pb-console: Read /etc/environment and /etc/locale

Since we're starting from no environment on the consoles, allow
specifying an initial environment.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add test_set_conf_source()
Jeremy Kerr [Thu, 4 Jul 2013 07:27:01 +0000 (15:27 +0800)]
test/parser: Add test_set_conf_source()

For non-local parsers (ie, PXE), we need to have the conf_url set. This
change adds a function to provide the originating URL.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/pxe-parser: All options are name <space> value pairs
Jeremy Kerr [Thu, 4 Jul 2013 07:25:51 +0000 (15:25 +0800)]
discover/pxe-parser: All options are name <space> value pairs

Abort the pair parse if we don't have both a name and a value.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/device-handler: hook up autoboot_enabled config var
Jeremy Kerr [Tue, 2 Jul 2013 03:24:10 +0000 (11:24 +0800)]
discover/device-handler: hook up autoboot_enabled config var

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoconfig/powerpc-nvram: Fix nvram line parsing
Jeremy Kerr [Tue, 2 Jul 2013 02:47:35 +0000 (10:47 +0800)]
config/powerpc-nvram: Fix nvram line parsing

We have a couple of issues with the nvram output parser; lines aren't
being broken up correctly.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoconfig/powerpc-nvram: Don't require petitboot, prefix on all params
Jeremy Kerr [Tue, 2 Jul 2013 02:36:47 +0000 (10:36 +0800)]
config/powerpc-nvram: Don't require petitboot, prefix on all params

Currently, we only store nvram params with a "petitboot," prefix, so
that we don't grow the config list to an unbound size. However,
the "auto-boot?" param has no prefix.

Instead, remove the requirement for the "petitboot," prefix, and use an
array of known parameters instead.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Fix automake warnings
Geoff Levand [Sun, 30 Jun 2013 20:45:58 +0000 (13:45 -0700)]
discover: Fix automake warnings

Change the Makfile.am relocatable output files from automake _LIBRARIES
to automake _PROGRAMS.  Also, change the output file name extension
from .o to .ro to better show these are relocatable files.

Fixes automake warnings like these:

  discover/Makefile.am: `libparser.o' is not a standard library name
  discover/Makefile.am: did you mean `libparser.a'?

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Cleanup Makefile.am
Geoff Levand [Sun, 30 Jun 2013 20:31:32 +0000 (13:31 -0700)]
test/parser: Cleanup Makefile.am

General cleanup of Makefile.am.  This cleanup should retain the same
makefile behavior.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/ncurses: Remove unused 'cod' variable
Jeremy Kerr [Mon, 24 Jun 2013 05:03:14 +0000 (13:03 +0800)]
ui/ncurses: Remove unused 'cod' variable

When configured with --disable-debug, we get an unused variable warning:

  ui/ncurses/nc-cui.c: In function 'cui_device_remove':
  ui/ncurses/nc-cui.c:439:24: error: unused variable 'cod'
  cc1: all warnings being treated as errors

This change just removes the temporary variable.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/hooks: Add sample update-dtb hook.
Jeremy Kerr [Fri, 21 Jun 2013 02:43:49 +0000 (10:43 +0800)]
utils/hooks: Add sample update-dtb hook.

Provide an example for writing a pre-boot hook to update the dtb.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/boot: Allow boot hooks to alter boot data
Jeremy Kerr [Thu, 20 Jun 2013 06:04:29 +0000 (14:04 +0800)]
discover/boot: Allow boot hooks to alter boot data

By exiting with status == 2, boot hooks can update boot data by
printing name=value to stdout.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/hooks: Add create-dtb hook
Jeremy Kerr [Thu, 20 Jun 2013 06:19:24 +0000 (14:19 +0800)]
utils/hooks: Add create-dtb hook

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/system: Add pb_run_cmd_pipe
Jeremy Kerr [Thu, 20 Jun 2013 05:27:16 +0000 (13:27 +0800)]
lib/system: Add pb_run_cmd_pipe

Add a function to run a command and capture the output into a buffer.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/event: Fix incorrect calculation of param data length
Jeremy Kerr [Thu, 20 Jun 2013 04:00:26 +0000 (12:00 +0800)]
discover/event: Fix incorrect calculation of param data length

We're not accounting for the action in the event header (only the device
string) when we pass the length of param data to event_parse_params.
This means we walk past the end of the event data while parsing params.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils: Add busybox reboot script
Jeremy Kerr [Thu, 20 Jun 2013 02:56:04 +0000 (10:56 +0800)]
utils: Add busybox reboot script

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/boot: Add boot hooks
Jeremy Kerr [Thu, 20 Jun 2013 02:33:29 +0000 (10:33 +0800)]
discover/boot: Add boot hooks

Add a method of running pre-boot hooks. Executable files in
/etc/petitboot/boot.d/ are run (in order) before we start the boot
process.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/boot: Put all boot params into a struct boot_task
Jeremy Kerr [Thu, 20 Jun 2013 01:31:40 +0000 (09:31 +0800)]
discover/boot: Put all boot params into a struct boot_task

This keeps all the boot-specific details in one place.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoAdd pkgsysconfdir
Jeremy Kerr [Wed, 19 Jun 2013 07:28:22 +0000 (15:28 +0800)]
Add pkgsysconfdir

We'll need a sysconf dir to store the boot hooks.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoAdd initial dtb support
Geoff Levand [Mon, 15 Apr 2013 22:23:05 +0000 (15:23 -0700)]
Add initial dtb support

Updates & fixes by Jeremy Kerr <jk@ozlabs.org>.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: bring network interfaces down in network_shutdown
Jeremy Kerr [Sat, 1 Jun 2013 09:50:00 +0000 (19:50 +1000)]
discover: bring network interfaces down in network_shutdown

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add network handling
Jeremy Kerr [Thu, 30 May 2013 06:25:26 +0000 (16:25 +1000)]
discover: Add network handling

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib: Add pb-config module
Jeremy Kerr [Wed, 29 May 2013 07:24:42 +0000 (17:24 +1000)]
lib: Add pb-config module

Add a library for (name, value) configuration.

Different storage backends are allowed (although currently hardcoded to
powerpc nvram), and config is read-only at present.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add logging for default boot option behaviour
Jeremy Kerr [Tue, 21 May 2013 06:39:32 +0000 (14:39 +0800)]
discover: Add logging for default boot option behaviour

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/event: Allow empty param values
Jeremy Kerr [Tue, 21 May 2013 06:33:15 +0000 (14:33 +0800)]
discover/event: Allow empty param values

Useful for specifying defaults:

 pb-event add@defaults name='Netboot' \
   image=http://192.168.0.1/vmlinuz \
  default

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: Add cancel-default reporting
Jeremy Kerr [Tue, 21 May 2013 06:26:12 +0000 (14:26 +0800)]
ui/ncurses: Add cancel-default reporting

When we first see key input, we can tell the discover server to cancel
the default boot.

Untested on ps3.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/common: Add code to send cancel-default messages
Jeremy Kerr [Tue, 21 May 2013 06:20:51 +0000 (14:20 +0800)]
ui/common: Add code to send cancel-default messages

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui: implement timers with waitsets
Jeremy Kerr [Tue, 21 May 2013 04:43:36 +0000 (12:43 +0800)]
ui: implement timers with waitsets

A temporary change to the timers; we'll eventually remove these from the
ui code.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add "cancel default boot" messages
Jeremy Kerr [Tue, 21 May 2013 06:16:35 +0000 (14:16 +0800)]
discover: Add "cancel default boot" messages

Allow the default boot process to be cancelled, via a message with
action PB_PROTOCOL_ACTION_CANCEL_DEFAULT.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/event: Allow user events to be defaults
Jeremy Kerr [Tue, 21 May 2013 06:14:23 +0000 (14:14 +0800)]
discover/event: Allow user events to be defaults

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add countdown before default boot
Jeremy Kerr [Tue, 21 May 2013 05:57:56 +0000 (13:57 +0800)]
discover: Add countdown before default boot

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: implement default booting
Jeremy Kerr [Tue, 21 May 2013 05:33:46 +0000 (13:33 +0800)]
discover: implement default booting

When we see a boot option with is_default set, store it in the handler
and register a timeout waiter.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/boot: Allow null boot command
Jeremy Kerr [Tue, 21 May 2013 05:32:11 +0000 (13:32 +0800)]
discover/boot: Allow null boot command

If we're booting from a default option, we don't have a boot command.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/waiter: Add timeout waiters
Jeremy Kerr [Tue, 21 May 2013 03:52:00 +0000 (11:52 +0800)]
lib/waiter: Add timeout waiters

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/grub2: Add default option parsing
Jeremy Kerr [Tue, 21 May 2013 02:13:28 +0000 (10:13 +0800)]
discover/grub2: Add default option parsing

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/test: print default status of boot options
Jeremy Kerr [Tue, 21 May 2013 07:23:55 +0000 (15:23 +0800)]
ui/test: print default status of boot options

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotypes: Add is_default to struct boot_option
Jeremy Kerr [Fri, 17 May 2013 03:41:04 +0000 (11:41 +0800)]
types: Add is_default to struct boot_option

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoautotools: Fix make maintainer-clean
Geoff Levand [Wed, 29 May 2013 21:00:25 +0000 (14:00 -0700)]
autotools: Fix make maintainer-clean

Fixes to make maintainer-clean work properly.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Remove gawk specifics
Geoff Levand [Wed, 29 May 2013 20:42:16 +0000 (13:42 -0700)]
test/parser: Remove gawk specifics

Remove the GNU awk specifics to allow the use of a standard
awk program.  Fixes build errors on older distros.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Send options to client in order
Geoff Levand [Tue, 21 May 2013 13:27:24 +0000 (21:27 +0800)]
discover: Send options to client in order

Send the boot options to the client in the order discovered.  This
change  is in follow up to inverting the order that the server
saves the options internally.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover/grub2: remove uuid log message
Jeremy Kerr [Tue, 21 May 2013 02:14:35 +0000 (10:14 +0800)]
discover/grub2: remove uuid log message

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/test: Add boot status messages to test client
Jeremy Kerr [Tue, 21 May 2013 07:14:15 +0000 (15:14 +0800)]
ui/test: Add boot status messages to test client

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: implement global keys
Jeremy Kerr [Fri, 17 May 2013 02:26:05 +0000 (10:26 +0800)]
ui/ncurses: implement global keys

Add process_global_keys to handle global key events. Using this,
implement ctrl+l to refresh.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: move getch() out of process_key callbacks
Jeremy Kerr [Fri, 17 May 2013 02:02:41 +0000 (10:02 +0800)]
ui/ncurses: move getch() out of process_key callbacks

All process_key callbacks will want to query the key that was pressed,
so do the getch() once in cui_process_key, and pass the result to the
callback.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/waiter: Ensure waiters are consistent during waiter_poll
Jeremy Kerr [Fri, 17 May 2013 01:38:07 +0000 (09:38 +0800)]
lib/waiter: Ensure waiters are consistent during waiter_poll

We have a bug at the moment: if the waitset's->waiters array is updated
duing waiter_poll() (eg, a client connection is closed, and the client's
callback performs a waiter_remove()), then we may invoke callbacks for
incorrect waiters.

This change uses a consistent waiters array duing execution of
waiter_poll, so that any pollfds returned from poll() will result in
correct callback invocations.

This assumes that a waiter will only ever remove *itself* from the
waitset; otherwise, we may call a free()ed waiter.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/waiter: allocate waiters separately from set->waiters
Jeremy Kerr [Thu, 16 May 2013 12:39:27 +0000 (20:39 +0800)]
lib/waiter: allocate waiters separately from set->waiters

Since we reallocate set->waiters, we can't hand out pointers to within
that array.

Instead, this change allocates the 'struct waiter's separately from the
set->waiters array.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: fix error handling from failed client writes
Jeremy Kerr [Thu, 16 May 2013 08:40:39 +0000 (16:40 +0800)]
discover: fix error handling from failed client writes

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Fix accept() return value check
Jeremy Kerr [Thu, 16 May 2013 08:23:19 +0000 (16:23 +0800)]
discover: Fix accept() return value check

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: destroy client if message read failed
Jeremy Kerr [Thu, 16 May 2013 08:09:37 +0000 (16:09 +0800)]
discover: destroy client if message read failed

When a client disconnects, the read from the client's fd will return
EOF. We should destroy the client in this situation.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/pb-console: use getty rather than exec
Jeremy Kerr [Thu, 16 May 2013 05:55:03 +0000 (13:55 +0800)]
utils/pb-console: use getty rather than exec

exec is a bit flaky for starting on consoles, so use getty instead.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/pbconsole: Use here-document for usage text
Jeremy Kerr [Mon, 20 May 2013 02:42:08 +0000 (10:42 +0800)]
utils/pbconsole: Use here-document for usage text

Allows for cleaner usage message in the source.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: cleanup parser allocations on exit
Jeremy Kerr [Mon, 20 May 2013 02:28:23 +0000 (10:28 +0800)]
test/parser: cleanup parser allocations on exit

We should talloc_free the parser list once we're done, enabling
valgrind's leak check. Before:

 [jk@pablo parser]$ valgrind ./test-null
 ...
 ==9330== HEAP SUMMARY:
 ==9330==     in use at exit: 288 bytes in 3 blocks
 ==9330==   total heap usage: 11 allocs, 8 frees, 1,177 bytes allocated

After:

 [jk@pablo parser]$ valgrind ./test-null
 ...
 ==9940== HEAP SUMMARY:
 ==9940==     in use at exit: 0 bytes in 0 blocks
 ==9940==   total heap usage: 11 allocs, 11 frees, 1,177 bytes allocated
 ==9940==
 ==9940== All heap blocks were freed -- no leaks are possible

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutil/pb-console: Packaging updates
Geoff Levand [Sun, 19 May 2013 13:07:02 +0000 (21:07 +0800)]
util/pb-console: Packaging updates

In preparation for packaging add a man page, a help option, and some
comments to the script.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Add check_not_present_resource
Geoff Levand [Sat, 18 May 2013 01:57:07 +0000 (09:57 +0800)]
test/parser: Add check_not_present_resource

Add a new routine check_not_present_resource() to check
that a resource is not present.  This is typically used
to check that an initrd entry has not been found.

Also add any needed checks for no initrd to the existing
tests.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoparser: Use list to hold parsers
Geoff Levand [Fri, 17 May 2013 05:55:18 +0000 (13:55 +0800)]
parser: Use list to hold parsers

Now that we dynamically add parsers, we can use a list to
hold them.  Also simplifies the test_run_parser() routine.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Add ubuntu grub tests
Geoff Levand [Fri, 17 May 2013 09:09:01 +0000 (17:09 +0800)]
test/parser: Add ubuntu grub tests

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Better message output
Geoff Levand [Fri, 17 May 2013 09:07:43 +0000 (17:07 +0800)]
test/parser: Better message output

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoparser/grub2: Add parse for linux16
Geoff Levand [Fri, 17 May 2013 07:11:10 +0000 (15:11 +0800)]
parser/grub2: Add parse for linux16

Ubuntu uses the linux16 symbol in thier conf files for memory test entries.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoparser/grub2: Better menuentry parsing
Geoff Levand [Fri, 17 May 2013 06:28:45 +0000 (14:28 +0800)]
parser/grub2: Better menuentry parsing

Grub2 menuentry entry text can use double or single quotes.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoconfigure: Add check for libncurses
Geoff Levand [Sun, 12 May 2013 14:16:51 +0000 (22:16 +0800)]
configure: Add check for libncurses

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/parser: Add grub2 multiple resolution test
Jeremy Kerr [Fri, 10 May 2013 04:00:23 +0000 (12:00 +0800)]
test/parser: Add grub2 multiple resolution test

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/grub2: handle search commands to specify root filesystems
Jeremy Kerr [Wed, 8 May 2013 08:46:26 +0000 (16:46 +0800)]
discover/grub2: handle search commands to specify root filesystems

Add a resource type for grub, allowing us to parse search parameters.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/resource: Provide resolve_resource_against_device
Jeremy Kerr [Wed, 8 May 2013 08:39:58 +0000 (16:39 +0800)]
discover/resource: Provide resolve_resource_against_device

Any other implementation of resources will need to resolve againsst
particular devices, so make resolve_devpath_against_device
publically-accessible, and rename to not be devpath-specific.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: log cleanup
Jeremy Kerr [Thu, 9 May 2013 08:12:24 +0000 (16:12 +0800)]
discover: log cleanup

Remove some of the more noisy log messages, and add some information
pertinent to device resolution events.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add yaboot test from a ppc64 RH8 machine
Jeremy Kerr [Thu, 9 May 2013 08:08:32 +0000 (16:08 +0800)]
test/parser: Add yaboot test from a ppc64 RH8 machine

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add f18 grub config test
Jeremy Kerr [Wed, 8 May 2013 04:45:58 +0000 (12:45 +0800)]
test/parser: Add f18 grub config test

Add a real-world config file from a f18 ppc64 machine.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add simple GRUB2 parser test
Jeremy Kerr [Wed, 8 May 2013 03:26:46 +0000 (11:26 +0800)]
test/parser: Add simple GRUB2 parser test

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add simple kboot test
Jeremy Kerr [Mon, 6 May 2013 03:11:37 +0000 (11:11 +0800)]
test/parser: Add simple kboot test

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add yaboot test for external devices
Jeremy Kerr [Wed, 15 May 2013 08:58:38 +0000 (16:58 +0800)]
test/parser: Add yaboot test for external devices

Add a yaboot test to add boot options for an external device, then
hotplug that device.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add simple yaboot test
Jeremy Kerr [Wed, 15 May 2013 08:52:34 +0000 (16:52 +0800)]
test/parser: Add simple yaboot test

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add test device hotplug functions
Jeremy Kerr [Wed, 15 May 2013 08:41:56 +0000 (16:41 +0800)]
test/parser: Add test device hotplug functions

Add a function, test_hotplug_device(), to simulate the addition of
devices during tests. This should make it possible to observe boot
options' resources changing from unresolved state to resolved.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add resource check helpers
Jeremy Kerr [Wed, 15 May 2013 08:36:34 +0000 (16:36 +0800)]
test/parser: Add resource check helpers

Add check_resolved_local_resource and check_unresolved_resource to
check the resources returned from parsers.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add check_name helper
Jeremy Kerr [Wed, 8 May 2013 04:52:47 +0000 (12:52 +0800)]
test/parser: Add check_name helper

Simple function to check a boot_option's name.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add check_args helper
Jeremy Kerr [Mon, 6 May 2013 03:10:36 +0000 (11:10 +0800)]
test/parser: Add check_args helper

Add a small helper to check boot option arguments.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Add check_boot_option_count helper & get_boot_option
Jeremy Kerr [Thu, 9 May 2013 08:49:59 +0000 (16:49 +0800)]
test/parser: Add check_boot_option_count helper & get_boot_option

Add a helper function to check the expected boot option counts, and
print the boot option details if the check fails.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Error on invalid parser name
Jeremy Kerr [Mon, 6 May 2013 03:09:31 +0000 (11:09 +0800)]
test/parser: Error on invalid parser name

We should error-out if we didn't find a valid parser, so it doesn't look
like we found no boot options.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Allow raw config data in test .c files
Jeremy Kerr [Wed, 15 May 2013 05:11:43 +0000 (13:11 +0800)]
test/parser: Allow raw config data in test .c files

Add a little post-processing script (extract-config.awk) to allow us to
put the config data directly into the test .c files, without having to
quote the C string.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/parser: Allow tests to provide pre-loaded config data
Jeremy Kerr [Wed, 15 May 2013 08:01:14 +0000 (16:01 +0800)]
test/parser: Allow tests to provide pre-loaded config data

Some tests may want to use an existing buffer as config data, so add
test_read_config_data() to allow this.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest: Replace parser tests with empty framework
Jeremy Kerr [Wed, 15 May 2013 07:28:57 +0000 (15:28 +0800)]
test: Replace parser tests with empty framework

This change is a major rework of the parser tests. Currently, the parser
tests just run the parsers on each subdir of data/, but we don't
actually check the results.

Rather than just running parsers and expecting a certain fixed output,
the new tests are arbitraty (short!) C programs. This allows us to set
up the device configuration / discover context etc in whatever manner
necessary, and check that the boot options that the parsers emit are
correct.

This change removes all of the old tests, and adds a new "null" test.
Actual tests will be added in subsequent changes.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Make device handler a little more testable
Jeremy Kerr [Fri, 3 May 2013 06:31:55 +0000 (14:31 +0800)]
discover: Make device handler a little more testable

This change moves some of the device-handler code into an #ifdef-ed
section, so we can easily drop the stuff that's not required for
testing.

Although the change is quite large, most of it is moving entire
functions around.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/url: Add pb_url_to_string
Jeremy Kerr [Thu, 2 May 2013 09:46:56 +0000 (17:46 +0800)]
lib/url: Add pb_url_to_string

Add a function to unparse a URL, to make comparisons in tests easy.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Allow devices with no device_path
Jeremy Kerr [Mon, 13 May 2013 02:08:47 +0000 (10:08 +0800)]
discover: Allow devices with no device_path

Devices that have been added via the user path may not have a device
path. In this case, don't segfault in device_match_path, and break out
of mount_device early.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Always associate resources with a boot option
Jeremy Kerr [Mon, 13 May 2013 01:16:00 +0000 (09:16 +0800)]
discover: Always associate resources with a boot option

We should always be tallocing resources to a boot option context;
anything else (for example, the discover context) may have a different
lifetime.

In order to enforce this, we change the void *ctx argument to the
context_create functions to a struct discover_boot_option.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Don't access bytes before the start of empty strings
Jeremy Kerr [Fri, 10 May 2013 04:01:06 +0000 (12:01 +0800)]
discover: Don't access bytes before the start of empty strings

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Always add a NUL byte to config data
Jeremy Kerr [Fri, 10 May 2013 02:47:24 +0000 (10:47 +0800)]
discover: Always add a NUL byte to config data

conf_get_pair will read one-byte past the end of the conf buffer, so
always NUL-terminate.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/yaboot: Fix boot option state
Jeremy Kerr [Fri, 10 May 2013 02:16:48 +0000 (10:16 +0800)]
discover/yaboot: Fix boot option state

We're only picking up every second boot option.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/udev: use devname (not devpath) for device IDs
Jeremy Kerr [Fri, 10 May 2013 01:42:36 +0000 (09:42 +0800)]
discover/udev: use devname (not devpath) for device IDs

devnames are unique, and much shorter.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/grub2: Add grub2/grub.cfg config file
Jeremy Kerr [Wed, 8 May 2013 09:01:13 +0000 (17:01 +0800)]
discover/grub2: Add grub2/grub.cfg config file

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/Makefile: pb-console is dist_
Jeremy Kerr [Wed, 15 May 2013 06:35:01 +0000 (14:35 +0800)]
utils/Makefile: pb-console is dist_

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/nc: Don't segfault if we can't open log_file
Jeremy Kerr [Tue, 7 May 2013 07:01:53 +0000 (15:01 +0800)]
ui/nc: Don't segfault if we can't open log_file

Fallback to logging to /dev/null.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/nc: Handle cui_opt_data with no boot option more gracefully
Jeremy Kerr [Tue, 7 May 2013 06:36:51 +0000 (14:36 +0800)]
ui/nc: Handle cui_opt_data with no boot option more gracefully

We can currently segfault petitboot by escaping from the option editor
(before entering any details), then trying to boot the new, empty
option.

This change adds some sanity checks to prevent a segfault.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: Simplify menu item names
Jeremy Kerr [Tue, 7 May 2013 06:28:11 +0000 (14:28 +0800)]
ui/ncurses: Simplify menu item names

Just use the item name, rather than including boot option details.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils: Add pb-console util
Jeremy Kerr [Tue, 7 May 2013 07:39:53 +0000 (15:39 +0800)]
utils: Add pb-console util

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agopb-udhcpc: Look for more boot options
Jeremy Kerr [Mon, 6 May 2013 07:54:23 +0000 (15:54 +0800)]
pb-udhcpc: Look for more boot options

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/pb-udhcpc: Use command-line format of pb-event
Jeremy Kerr [Mon, 6 May 2013 06:55:36 +0000 (14:55 +0800)]
utils/pb-udhcpc: Use command-line format of pb-event

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agopb-event: move send code to a separate function
Jeremy Kerr [Mon, 6 May 2013 06:23:17 +0000 (14:23 +0800)]
pb-event: move send code to a separate function

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoutils/pb-event: handle event data on command line
Jeremy Kerr [Mon, 6 May 2013 02:15:36 +0000 (10:15 +0800)]
utils/pb-event: handle event data on command line

It'd be nice to avoid using printf just for the \0 characters, so allow
parsing events from the command line.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: handle boot_option->device_id entirely within handler
Jeremy Kerr [Wed, 8 May 2013 13:09:05 +0000 (21:09 +0800)]
discover: handle boot_option->device_id entirely within handler

No need for parsers to populate (or forget to populate, in the case of
most parsers) opt->device_id, as we should do it on finalise.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/udev: Setup event params from udev properties
Jeremy Kerr [Wed, 8 May 2013 12:36:37 +0000 (20:36 +0800)]
discover/udev: Setup event params from udev properties

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/event: Add event_set_param
Jeremy Kerr [Wed, 8 May 2013 12:36:14 +0000 (20:36 +0800)]
discover/event: Add event_set_param

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/udev: Don't print properties of skipped devices
Jeremy Kerr [Wed, 8 May 2013 12:21:59 +0000 (20:21 +0800)]
discover/udev: Don't print properties of skipped devices

This cleans up the log output a little.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>