DESCRIPTION = "Provides default system config files and /var/config fs" SECTION = "base" LICENSE = "MIT" RDEPENDS_${PN} += "bash" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PACKAGE_ARCH = "all" PR = "r10" PACKAGES =+ "${PN}-mths ${PN}-wifi-bt-ap" inherit update-rc.d inherit allarch INITSCRIPT_NAME = "config" INITSCRIPT_PARAMS = "start 31 S ." FILESEXTRAPATHS_prepend := "${THISDIR}/config:" FILESEXTRAPATHS_prepend_${PN} := "${THISDIR}/mths_config:" SRC_URI = "\ file://network \ file://ppp \ file://config.init \ file://config-mths \ file://config-wifi-bt-ap \ file://chat_wrapper \ file://chat_wrapper.default \ file://99_radio \ " RDEPENDS_${PN}-mths += "${PN}" RDEPENDS_${PN}-wifi-bt-ap += " bluez5 bluez5-pand hostapd-cfg dnsmasq rs9113-noarch " CONFFILES_${PN} += "${sysconfdir}/defaults.tar.gz" CONFIGFILES = "network/interfaces ppp" CONFIGFILES_MTHS = "config-mths" fakeroot do_install () { cd ${WORKDIR} # default config files rm -f defaults.tar.gz chown root:root -R ${CONFIGFILES} tar czf defaults.tar.gz ${CONFIGFILES} install -d ${D}${sysconfdir} install -m 0644 ${WORKDIR}/defaults.tar.gz ${D}${sysconfdir}/defaults.tar.gz # save root password for resetting to defaults echo -n '${ROOT_PASSWORD_HASH}' > ${D}${sysconfdir}/default_pass chmod 400 ${D}${sysconfdir}/default_pass # init script install -d ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/config.init ${D}${sysconfdir}/init.d/config # mths adjustments tar -C ${CONFIGFILES_MTHS} -czf defaults-mths.tar.gz . install -m 0644 ${WORKDIR}/defaults-mths.tar.gz ${D}${sysconfdir}/defaults-mths.tar.gz install -d ${D}${sysconfdir}/default install -d ${D}${sysconfdir}/default/volatiles install -d ${D}${libexecdir}/ppp install -m 0755 ${WORKDIR}/chat_wrapper ${D}${libexecdir}/ppp/ install -m 0644 ${WORKDIR}/chat_wrapper.default ${D}${sysconfdir}/default/chat_wrapper install -m 0644 ${WORKDIR}/99_radio ${D}${sysconfdir}/default/volatiles install -d ${D}/usr/share cp -a ${WORKDIR}/config-wifi-bt-ap/* ${D}/ # README does not usually go on an embedded device. rm ${D}/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} = "${sysconfdir}/defaults.tar.gz ${sysconfdir}/default_pass" FILES_${PN} += "${sysconfdir}/init.d/config ${sysconfdir}/default ${libexecdir}/ppp/chat_wrapper" FILES_${PN} += "${sysconfdir}/default/volatiles" FILES_${PN}-mths = "${sysconfdir}/defaults-mths.tar.gz" FILES_${PN}-wifi-bt-ap = "/usr/share/config-wifi-bt-ap" # Create the hotspot version of defaults.tar.gz pkg_postinst_${PN}-mths() { X=$D/tmp/mths mkdir -p $X export X ( set -x if tar -tf $D${sysconfdir}/defaults.tar.gz | grep dnsmasq ; then : else tb=$X/tarball # Tarball directory mkdir $tb tar -C $tb -xf $D/etc/defaults.tar.gz tar -C $tb -xf $D/etc/defaults-mths.tar.gz if ! grep '^auto wifi1' $tb/network/interfaces ; then cat $tb/network/interfaces $tb/network/interfaces.mths >$tb/network/interfaces.new mv $tb/network/interfaces $tb/network/interfaces.old mv $tb/network/interfaces.new $tb/network/interfaces fi tar -C $tb -cf $D/etc/defaults.tar.gz . fi ) >$X/postinsttrace.txt 2>&1 # Comment out the final line for a trace. rm -rf $X } pkg_postinst_${PN}-wifi-bt-ap() { 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}-wifi-bt-ap() { 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 }