Tasks: * Rewrite cache file handling. - Make a new library module with the following functions: * ob_init_cache file * ob_read_cache * ob_set_cache_var name value - Use ob_set_cache_var in _ob_set_{source,binary}_parameter. - Remove code to read cache file from ob_parse_package_metadata. - Remove code to write cache file from ob_parse_package_metadata. - TODO: Should ob_{init,read}_cache ever be called automatically? * If not, `ob_parse_package_metadata -c FILE` could be: - `ob_init_cache_file FILE; ob_read_cache || ob_parse_package_metadata` * Fix ob-applypatches to not fall over when it runs too much. - Current behavior: "I've been here already! What do? *trip*" - Track applied patches in ob-applypatches. * Use ob_set_cache_var to cache the list of patches. * General code auditing and cleanup: - Switch to using printf (safer and more portable than echo) for everything. - Protect against command operands beginning with "-", e.g.: * `[ "x${foo}" = 'xbar' ]` instead of `[ "${foo}" = 'bar' ]` * `mkdir -p -- "${foo}"` instead of `mkdir -p "${foo}"` - Add more error handling. - Review "IFS=... cmd ..." commands. * "IFS=... read" is fine. - Review eval commands. * Finish ob-checkbuilddeps. * Write ob-genchanges. * See if ob-installdocs can/should handle non-directory non-regular files. * Write manual pages for functions and utilities. * Support package signing (requires opkg to be built with GnuPG and GPGME).