Mer/Proposals/Community Firmware

This is a proposal how community firmware images as mentioned in Task:Community_firmware_image_distribution could be done in practice

Permissions needed from Nokia to maemo.org:


 * Permission to distribute the resulting firmware image of merged Nokia-closed software and Mer software, through maemo.org, behind validation of MAC address (for N8x0(W) users) and EULA specified by Nokia
 * Permission to download from the Diablo update repositories, binary packages (.deb files), which are Nokia-closed software. Current initial list we would like to use:
 * hald-addon-bme - for retrieving battery information
 * (more to come)
 * Permission to optionally patch scripts/package information (not binaries) in the Nokia-closed packages in order to fit them into Mer, by fixing incompatibility problems.

Need to check if this is needed:


 * Permission to develop patches (recipes) which may contain snippets of Nokia-closed scripts/package information as to be able to perform the patching operation correctly.
 * Permission to store these patches publically.

Requirements on maemo.org:
 * QEMU-ARM instance modelled on http://people.debian.org/~aurel32/qemu/armel/
 * This virtual machine will through a script, with following input:
 * A tar.gz with a Mer rootfs
 * A list of packages L (with exact URL to Diablo update repositories), along with an URL to optional patch to be run with 'patch'
 * Do the following:
 * Download each package X into directory nokia-closed/ with patching script P listed in L
 * mkdir -p package-X/DEBIAN
 * dpkg-deb -x package-X-deb-file package-X
 * dpkg-deb -e package-X-deb-file package-X/DEBIAN
 * cd package-X
 * execute patch script P if exists
 * cd ..
 * dpkg-deb --build nokia-closed-patched/package-X-deb-file package-X
 * tar pzxf the tar.gz into mer-rootfs
 * in mer-rootfs, temporarily move /usr/sbin/invoke-rc.d to /usr/sbin/invoke-rc.d.REAL and /sbin/start-stop-daemon to /sbin/start-stop-daemon.REAL, and ln -s /bin/true /usr/sbin/invoke-rc.d /sbin/start-stop-daemon
 * export LC_ALL=C
 * copy nokia-closed-patched/ into mer-rootfs/nokia-closed-patched
 * for each package X
 * chroot nokia-closed-patched dpkg -i /nokia-closed-patched/package-X-deb-file
 * remove mer-rootfs/nokia-closed-patched directory
 * remove mer-rootfs/usr/sbin/invoke-rc.d, mer-rootfs/sbin/start-stop-daemon
 * mv /sbin/start-stop-daemon.REAL /sbin/start-stop-daemon
 * mv /usr/sbin/invoke-rc.d.REAL /usr/sbin/invoke-rc.d
 * tar.gz up mer-rootfs (without mer-rootfs prefix), and make accessible behind a EULA from maemo.org to worthy MAC addresses.