]>
 
 
git.ozlabs.org Git - petitboot/log 
 
 
 
 
 
 
Neelesh Gupta  [Mon, 28 Oct 2013 07:15:08 +0000  (12:45 +0530)] 
 
lib/url: Export is_url() function 
 
Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>  
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 6 Nov 2013 08:33:23 +0000  (16:33 +0800)] 
 
discover: Allocate contexts with talloc_zero 
 
Ensure all pointers from the context are NULL. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 1 Nov 2013 02:33:02 +0000  (10:33 +0800)] 
 
lib/log: Always flush after writing logs 
 
We're currently seeing empty log files from the discover server. Rather 
than only flishing if the server was compiled with debugging enabled, 
always perform the fflush. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 1 Nov 2013 02:31:00 +0000  (10:31 +0800)] 
 
logging: Clean up debug logs 
 
We have quite a few pb_logs which should be pb_debug. This change moves 
developer-specific info to pb_debug. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 25 Oct 2013 06:34:30 +0000  (14:34 +0800)] 
 
discover/network: Allow for arbitrary-sized netlink messages 
 
Currently, we drop any netlink data beyond our 4096-byte buffer. This 
means that we can only parse a limited number of network interfaces. 
 
This change uses recvmsg with MSG_PEEK to determine the size of an 
incoming netlink message before doing the actual recvmsg. This way, we 
can realloc our buffer to suit. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 28 Oct 2013 07:34:42 +0000  (15:34 +0800)] 
 
lib/pb-config/powerpc-nvram: Use talloc_zero for interface configs 
 
We're seeing a problem where ifconf->ignore isn't initialised; use 
talloc_zero instead. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 24 Oct 2013 06:05:17 +0000  (14:05 +0800)] 
 
discover/file: Fix invalid free in replace_file 
 
We talloced tempfile, we should be freeing with talloc_free. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 18 Oct 2013 05:26:23 +0000  (13:26 +0800)] 
 
discover: cleanup allocated data 
 
We have a few allocations hanging around at the end of pb-discover; free 
them. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 18 Oct 2013 03:34:27 +0000  (11:34 +0800)] 
 
discover/file: Fix invalid free vs talloc_free 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 18 Oct 2013 03:31:57 +0000  (11:31 +0800)] 
 
discover/network: Ensure dns config buffer contains a trailling nul 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 18 Oct 2013 05:20:57 +0000  (13:20 +0800)] 
 
discover/parser: free parsers on exit 
 
Allocate parsers against a context, and free that context on exit. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 18 Oct 2013 05:10:58 +0000  (13:10 +0800)] 
 
discover/sysinfo: Fix talloc against uninitialised server var 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 21 Oct 2013 03:08:01 +0000  (11:08 +0800)] 
 
discover/grub2: Clean lexer.[ch] 
 
`make distcheck` fails with a couple of failes remaining after clean. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 15 Oct 2013 02:25:23 +0000  (10:25 +0800)] 
 
discover: Don't free clients on write failure 
 
Currently, if we see an error when writing to a client, we free the 
client immediately. This means that any pending reads will be discarded. 
Additionally, if a client disconnects before we have finished the writes in 
discover_server_process_connection, we won't register the waiter to read 
from the socket. 
 
Instead of freeing the client on write failure, this change sets a flag 
(se we don't continue to write), and we rely on the read EOF to free the 
client. This means we don't drop incoming messages. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 14 Oct 2013 05:29:31 +0000  (13:29 +0800)] 
 
discover: Allow an in-progress boot to be cancelled 
 
Currently, once the boot() function is called, the boot process will 
ignore any cancellations. 
 
This change allows boot() to be cancelled, via boot_cancel(). 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 14 Oct 2013 05:10:38 +0000  (13:10 +0800)] 
 
discover: Add load_url_cancel 
 
We'd like a way to cancel pending loads, as part of aborting the boot 
process. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 14 Oct 2013 07:21:14 +0000  (15:21 +0800)] 
 
discover/grub2: Allow URL resources 
 
Allow URL-format specifiers for GRUB2 resources. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 11 Oct 2013 08:35:09 +0000  (16:35 +0800)] 
 
ui/ncurses: Use OK & Cancel buttons for boot editor completion 
 
Rather than using enter to complete a boot_editor session, add OK and 
Cancel buttons. Enter will move between fields. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 11 Oct 2013 07:16:39 +0000  (15:16 +0800)] 
 
ui/ncurses: Use 'x' as exit key 
 
Because terminals will send escape-sequences starting with escape, 
ncurses will pause after receiving a signle escape, to detect 
these sequences. This introduces a 1-second delay when exiting the 
petitboot UI. 
 
Instead, use 'x'. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 10 Oct 2013 08:00:17 +0000  (16:00 +0800)] 
 
ui/ncurses: Allow booting custom boot options 
 
Currently, we can't boot user-created boot options, as they have no 
option ID associated. This change removes the check for option ID. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 10 Oct 2013 07:35:35 +0000  (15:35 +0800)] 
 
ui/ncurses: Defer item creation until boot editor is done 
 
Currently, when creating new menu entries, we create an empty item, add 
it to the menu, then run the boot editor. This means that cancelling the 
edit will leave an empty item in the menu. 
 
This change defers the creation until the boot editor is done. To do 
this, we modify the on_open callback to take a menu rather than an item, 
and pass NULL boot data to the editor. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 13:34:53 +0000  (21:34 +0800)] 
 
ui/ncurses: Use 'New' instead of 'Open' 
 
"Open" is ambiguous in the context of the boot menu; use "new" instead. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 10 Oct 2013 08:01:42 +0000  (16:01 +0800)] 
 
discover: Allow device_handler_boot with no option 
 
Only call find_boot_option_by_id if we have an ID. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 13:29:06 +0000  (21:29 +0800)] 
 
discover: remove register_parser printf 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 08:48:38 +0000  (16:48 +0800)] 
 
ui/ncurses: Display sysinfo type & identifier 
 
Hook into the sysinfo updates to display the type & id at the top of the 
petitboot main menu. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 07:40:42 +0000  (15:40 +0800)] 
 
discover/sysinfo: Add helper script to populate sysinfo identifiers 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 04:02:08 +0000  (12:02 +0800)] 
 
Add system info messages 
 
Add a little infrastructure for communicating information about the 
system to the petitboot UIs. We just send some identifying info (type 
and identifier), as well as the interfaces. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 08:50:22 +0000  (16:50 +0800)] 
 
utils/pb-udhcp: Don't add a new option on renew 
 
Otherwise we'll keep collecting new options every $lease_time period. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 08:38:56 +0000  (16:38 +0800)] 
 
discover/udev: dup property values returned from udev 
 
The property strings are managed by the udev code, so we need to strdup. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 08:37:25 +0000  (16:37 +0800)] 
 
discover/device-handler: Fix use-after-free when unmounting 
 
We need to do the rmdir after clearing mount_path. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 9 Oct 2013 05:19:58 +0000  (13:19 +0800)] 
 
discover: Don't call config_set_autoboot before config_init
Change 
f611bde3  shifted the config_init until after process_init, as we
need to run processes during config init. We also needed to move the
config_set_autoboot invocation too.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org> 
 
Jeremy Kerr  [Fri, 4 Oct 2013 04:43:58 +0000  (12:43 +0800)] 
 
discover/grub2: Fix uninitialised yylineno 
 
Valgrind reports an invalid usage of an uninitialised var in yyerror, 
causing testcase failures. 
 
Initialise lineno before we start parsing. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 4 Oct 2013 03:10:18 +0000  (11:10 +0800)] 
 
discover/grub2: Implement save_env command 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 4 Oct 2013 03:09:10 +0000  (11:09 +0800)] 
 
test/parser: Add check_file_contents 
 
We want to test grub2's save_env command, which requires a new function 
to check the contents of a file. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 27 Sep 2013 06:21:53 +0000  (14:21 +0800)] 
 
discover/grub2: Implement load_env 
 
Use the new parser_request_file API to access the GRUB environment 
block. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 1 Oct 2013 04:42:57 +0000  (12:42 +0800)] 
 
discover/grub2: strdup strings used in the environment 
 
Use a copy of the name & value pairs that we pass to the environment, as 
the data loaded from load_env will be talloc_free-ed. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 09:32:47 +0000  (17:32 +0800)] 
 
discover/grub2: Add default prefix 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 1 Oct 2013 04:27:35 +0000  (12:27 +0800)] 
 
discover: Add device_{request,release}_write 
 
Add a pair of functions to the parser API to allow write access to the 
underlying device. We'll use this in the GRUB2 parser to implement 
environment persistence. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 27 Sep 2013 06:19:20 +0000  (14:19 +0800)] 
 
discover: Add parser_request_file 
 
Add a function to allow parsers to access files on a local device. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 27 Sep 2013 06:16:10 +0000  (14:16 +0800)] 
 
discover: Add test_data member to struct discover_context 
 
We have parsers passing discover_contexts around, which we want to hook 
into the test framework. Add a void * member, which the test code can 
use to reference the test. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 1 Oct 2013 03:03:48 +0000  (11:03 +0800)] 
 
discover: Don't continue discovery if mount fails 
 
Check the return value from mount_device and abort the discover on 
failure. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 1 Oct 2013 02:42:04 +0000  (10:42 +0800)] 
 
discover: Allow for already-mounted devices 
 
When we start the discover server, we may find that devices are already 
mounted. In this case, mount_device will fail, and we'll abort the 
parse. 
 
This change uses /proc/self/mounts to check if new devices are already 
mounted, and uses the existing mount point. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 07:45:58 +0000  (15:45 +0800)] 
 
discover/grub2: Clean up error-handling for grub2 parser & lexer 
 
Rather than printf() & exit(), use the pb logging functions and abort 
the parse. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 07:45:15 +0000  (15:45 +0800)] 
 
test/parser: Enable logging to stdout 
 
We may as well show the logs while testing. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 03:45:39 +0000  (11:45 +0800)] 
 
tests/urls: Run URL tests under valgrind 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 03:58:11 +0000  (11:58 +0800)] 
 
discover/resource: create_url_resource should take ownership of url 
 
The URL needs to share the lifetime of resource, so talloc_steal it in 
create_url_resource. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 03:44:33 +0000  (11:44 +0800)] 
 
lib/url: talloc from new URL in pb_url_copy 
 
We're ending up with members of new_url being allocated from the old 
URL's context. We should be tallocing from the new_url instead. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 07:15:29 +0000  (15:15 +0800)] 
 
discover/paths: Check local file URLs in load_url 
 
Make the error case for local files the same as for remotes. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 02:32:18 +0000  (10:32 +0800)] 
 
lib/system: Don't modify dir parameter to pb_rmdir_recursive 
 
We're modifying dir rather than cur (the local copy of dir), so the 
caller-provided (const!) string is no longer const. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 25 Sep 2013 09:04:04 +0000  (17:04 +0800)] 
 
discover/boot: Log boot status updates 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Thu, 26 Sep 2013 05:51:10 +0000  (13:51 +0800)] 
 
discover/boot: Download resources in parallel 
 
Now that we can download asynchronously, we can download boot resources 
in parallel. This also means we don't need a state machine; we're either 
not done (loads are still pending) or done. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 03:03:11 +0000  (11:03 +0800)] 
 
discover: Add struct load_url_result and load_task 
 
Currently, load_url and load_url_async return a filename parameter and a 
tempfile flag (indicating whether the file needs to be cleaned after 
use). 
 
Instead, encapsulate this data in a struct load_url_result, which the 
caller (and async callbacks) can read the status, filename and clean 
parameters. 
 
For internal use in load_url and helpers, we add a struct load_task to 
hold a pointer to the load_url_result and async data. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Wed, 25 Sep 2013 06:23:39 +0000  (14:23 +0800)] 
 
discover: Don't depend on tftp failure for type detection 
 
Rather than always trying both TFTP client types, do a runtime detection 
on first invocation. This can be fixed at build-time with 
--with-tftp=TYPE. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 03:04:25 +0000  (11:04 +0800)] 
 
discover/boot: Store clean_* in the boot task 
 
... otherwise we won't clean up local files from earlier boot stages. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 02:58:16 +0000  (10:58 +0800)] 
 
discover/boot: Check for failed loads in boot() 
 
Use the status argument to the URL load callback to check for load 
failures. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 02:39:03 +0000  (10:39 +0800)] 
 
discover: load_url_async callback should take an int status 
 
We don't need a pointer here, just the status value. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Neelesh Gupta  [Thu, 12 Sep 2013 14:26:32 +0000  (19:56 +0530)] 
 
discover/boot: Implement asynchronous boot() process 
 
The current boot process handled by boot() function is implemented such 
that it blocks on the boot resources being downloaded which blocks 
the discover process until the download completes. This patch 
re-implements the boot() function using callback mechanism and 
asynchronous notifications so that boot() returns to continue the 
discover process while the download is in progress. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>  
Neelesh Gupta  [Thu, 12 Sep 2013 14:26:54 +0000  (19:56 +0530)] 
 
discover: Add an asynchronous version of load_url 
 
A new load_url_async() function handles retrieving the resources by 
forking an external process which currently blocks the parent waiting 
for the process to complete. This patch modifies the load_*() functions 
to handle it asynchronously by providing the exit callback and returning 
without waiting for the child process to exit. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>  
Jeremy Kerr  [Wed, 25 Sep 2013 00:37:50 +0000  (08:37 +0800)] 
 
discover/grub2: Reimplement default options 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 09:31:50 +0000  (17:31 +0800)] 
 
discover: Check for devices with duplicate serial properties 
 
If we have multipath devices present in the system, we'll end up with 
duplicate mounts, parse results and boot options. This change adds a 
check to see if we've encountered a device with this serial number 
previously. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 09:01:58 +0000  (17:01 +0800)] 
 
pb-udhcpc: use plain kernel names for dhcp events 
 
No need to prefix with /net/ 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 08:11:43 +0000  (16:11 +0800)] 
 
discover/grub2: Fix uninitialised op variable 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:16:38 +0000  (14:16 +0800)] 
 
test/parser: Add test-grub2-single-line-if test 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:15:59 +0000  (14:15 +0800)] 
 
discover/grub2: Support var=value assignments 
 
We want to allow assignments outside of the 'set' builtin. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:09:06 +0000  (14:09 +0800)] 
 
test/parser: Allow double-quotes in embedded config 
 
We need to escape any double-quotes. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:08:46 +0000  (14:08 +0800)] 
 
discover/grub2: Add true & false builtins 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:01:43 +0000  (14:01 +0800)] 
 
test/parser: Allow checks for NULL boot_args 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 06:00:24 +0000  (14:00 +0800)] 
 
test/parser: Add variable expansion in Ubuntu conf file test 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 05:59:43 +0000  (13:59 +0800)] 
 
discover/grub2/lexer: Require 1+ spaces for a TOKEN_DELIM 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 05:59:24 +0000  (13:59 +0800)] 
 
discover/grub2: Add linux16 command 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 05:55:57 +0000  (13:55 +0800)] 
 
discover/grub2: Allow both delimiters and EOLs after a "then" reserved word 
 
Putting an if-statement on one line should be possible: 
 
 if true; then echo "true"; else echo "false"; fi 
 
To do this, we'll need to allow both EOLs and TOKEN_DELIM after then and 
else. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 24 Sep 2013 05:17:02 +0000  (13:17 +0800)] 
 
test/parser: Fix spacing in grub2-f18-ppc64 test 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 13:54:38 +0000  (21:54 +0800)] 
 
discover/grub2: Implement test builtin 
 
A faily simple implementation now, and could do with some testing... 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 07:09:41 +0000  (15:09 +0800)] 
 
discover/grub2: Add nops for unnecessary builtins 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 07:04:19 +0000  (15:04 +0800)] 
 
discover/grub2: Implement statement_block_execute 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:51:23 +0000  (14:51 +0800)] 
 
discover/grub2: unknown commands should fail 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:51:02 +0000  (14:51 +0800)] 
 
discover/grub2: Populate option ids 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:38:42 +0000  (14:38 +0800)] 
 
discover/grub2: Allow EOF as a statement terminator 
 
Files may not have a trailing newline. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:38:06 +0000  (14:38 +0800)] 
 
discover/grub2: Add print_token 
 
For better trace output. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:36:43 +0000  (14:36 +0800)] 
 
discover/grub2: fix comment handling 
 
Remove '#' from the list of word chars. Also, don't need the '$' char in 
the comment regex 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 06:35:38 +0000  (14:35 +0800)] 
 
discover/grub2: Implement 'elif' 
 
Rather than just having one conditional in an if statement, we use a 
list of conditionals instead. This allows us to implement elif. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 05:02:05 +0000  (13:02 +0800)] 
 
discover/grub2: Create 'conditional' statements 
 
Rather than holding the condition and conditional-statements in struct 
grub2_statment_if, create a new conditional type that contains these. We 
can then use this to implement elif statements. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 03:29:27 +0000  (11:29 +0800)] 
 
discover/grub2: Allow empty statements 
 
Re-arrange the script/statements parse rules to allow empty statements. 
We also move the EOL token out of the 'statement' definition, and use 
it to separate 'statements'. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 03:14:18 +0000  (11:14 +0800)] 
 
discover/grub2: Implement submenu 
 
Just recurse into the submenu items, as we flatten everything into the 
one menu. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 01:36:11 +0000  (09:36 +0800)] 
 
discover/grub2: Add function support 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Tue, 17 Sep 2013 01:34:34 +0000  (09:34 +0800)] 
 
discover/grub2: Improve error handling 
 
Only run the script if the parse succeeded, and and improve the 
error reporting by enabling verbose errors and line numbers. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 08:58:30 +0000  (16:58 +0800)] 
 
discover/grub2: Implement 'else' blocks 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 08:53:22 +0000  (16:53 +0800)] 
 
discover/grub2: Implement 'search' command 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 08:47:17 +0000  (16:47 +0800)] 
 
discover/grub2: Implement 'linux' & 'initrd' commands 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 08:26:46 +0000  (16:26 +0800)] 
 
discover/grub2: Function infrastructure improvements 
 
For user-defined functions, we'll need a data pointer to the function's 
execution callback. Add this as a void *, and change references from 
'command' to 'function'. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 08:02:09 +0000  (16:02 +0800)] 
 
discover/grub2: Add option state in menuentry processing 
 
This will allow menuentry-specific commands to populate boot option 
data. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 07:51:53 +0000  (15:51 +0800)] 
 
discover/grub2: Add a reference to the context from grub2_script 
 
We'll need the context to add boot options. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 07:12:13 +0000  (15:12 +0800)] 
 
discover/grub2: Hook up flex/bison parser to discover server 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 06:22:27 +0000  (14:22 +0800)] 
 
discover/grub2: Move parser-api definitions to parser.y 
 
No need for a separate file here. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Mon, 16 Sep 2013 02:40:21 +0000  (10:40 +0800)] 
 
discover/grub2: Implement multiple-arv variable splitting 
 
If we expand a variable containing word-delimiter chars, we need to 
create new argv items. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 13 Sep 2013 08:33:58 +0000  (16:33 +0800)] 
 
discover/grub2: Add initial command execution 
 
.. with a simple 'set' command to update the environment 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 13 Sep 2013 07:30:58 +0000  (15:30 +0800)] 
 
discover/grub2: Add menuentry execution 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 13 Sep 2013 07:25:33 +0000  (15:25 +0800)] 
 
discover/grub2: Fix word append 
 
The parser was setting word->next on the top-level word, resulting in 
word chains of a maximum length of 2. Instead, use a last pointer to 
always append to the last word. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 13 Sep 2013 06:50:19 +0000  (14:50 +0800)] 
 
discover/grub2: Handle var tokens in lexer 
 
Rather than post-processing to expand variables, use the lexer to 
identify variable tokens as a type of grub2_word. 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>  
Jeremy Kerr  [Fri, 13 Sep 2013 05:45:58 +0000  (13:45 +0800)] 
 
discover/grub2: Remove debug printfs 
 
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>