diff options
Diffstat (limited to 'recipes-core/multitech/config-wifi-bt-ap_2.3.bb')
-rw-r--r-- | recipes-core/multitech/config-wifi-bt-ap_2.3.bb | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/recipes-core/multitech/config-wifi-bt-ap_2.3.bb b/recipes-core/multitech/config-wifi-bt-ap_2.3.bb new file mode 100644 index 0000000..c440022 --- /dev/null +++ b/recipes-core/multitech/config-wifi-bt-ap_2.3.bb @@ -0,0 +1,99 @@ +# This package used to be a sub-package of config. +# This broke the Thud build of MTCAP. +# If the main package in a recipe is needed for an image, +# all packages listed in all of the RDEPENDS for the +# recipe are built, even though they are not used +# on the image. This is a problem, because it might not +# be possible to build a recipe for the current +# machine type. +# +# This package cannot be put on an image because it updates /var/config. +# A backup file is created during the package install called: +# /var/config/var-config-wifi-bt-ap-bkup.tar.gz +# This backup is used to restore /var/config if the +# package is removed. +# +DESCRIPTION = "Add wifi-bt Access Point" +SECTION = "base" +LICENSE = "MIT" +RDEPENDS_${PN} += "bash" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +PACKAGE_ARCH = "all" +PR = "r10" +inherit allarch + +FILESEXTRAPATHS_prepend := "${THISDIR}/config:" + +SRC_URI = "\ + file://config-wifi-bt-ap \ +" + +RDEPENDS_${PN} += " bluez5 bluez5-pand hostapd-cfg dnsmasq rs9113-noarch bash" + +do_install () { + cd ${WORKDIR} + + install -d ${D}/usr/share + cp -a ${WORKDIR}/config-wifi-bt-ap/usr ${D}/ + install -m644 ${WORKDIR}/config-wifi-bt-ap/README ${D}/usr/share/config-wifi-bt-ap/README + echo 'List out files' + find ${D}/usr/share/config-wifi-bt-ap -type f + find ${D}/usr/share/config-wifi-bt-ap -type f | xargs chmod 0644 + find ${D}/usr/share/config-wifi-bt-ap | xargs chown root:root + find ${D}/usr/share -type d | xargs chmod 0755 +} + +FILES_${PN} = "/usr/share/config-wifi-bt-ap" + +pkg_postinst_${PN}() { + if [ -n $D ] ; then + echo "ERROR: /var/config should not be on a root image." + exit 1 + fi + US="$D/usr/share/config-wifi-bt-ap" + ND="$D/etc/network" + mkdir ${US}/old + cd /var/config + # Make a backup + tar -T ${US}/backup.list.txt -cf $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz + # Add new interfaces + if ! grep "^auto wifi1$" ${ND}/interfaces ; then + echo >>${ND}/interfaces + cat $US/wifi1.append >>${ND}/interfaces + fi + if ! grep "^auto pan0$" ${ND}/interfaces ; then + echo >>${ND}/interfaces + cat $US/pan0.append >>${ND}/interfaces + fi + + # Copy other files into place + cp -a ${US}/var/config /var + + # Record files we created + md5sum $(cat ${US}/backup.list.txt) >$D/var/config/bkup-wifi-bt-ap.md5 + + # Restart daemons + /etc/init.d/dnsmasq stop + /etc/init.d/bt-pan stop + /etc/init.d/bluetooth stop + /etc/init.d/hostapd stop + /etc/init.d/rs9113 stop + /etc/init.d/rs9113 start + /etc/init.d/bluetooth start + /etc/init.d/hostapd start + /etc/init.d/bt-pan start + /etc/init.d/dnsmasq start +} + +pkg_prerm_${PN}() { + cd /var/config + if md5sum -c $D/var/config/bkup-wifi-bt-ap.md5 ; then + if [ -f $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz ] ; then + tar -xf $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz + else + echo Cannot restore anything because backup is missing + fi + else + echo 'Cannot restore old configuration, because it has changed since the backup' + fi +} |