Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 1 | SUMMARY = "Lightweight, easy to configure DNS forwarder and DHCP server" |
| 2 | HOMEPAGE = "http://www.thekelleys.org.uk/dnsmasq/doc.html" |
| 3 | SECTION = "net" |
| 4 | # GPLv3 was added in version 2.41 as license option |
| 5 | LICENSE = "GPL-2.0-only | GPL-3.0-only" |
| 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ |
| 7 | file://COPYING-v3;md5=d32239bcb673463ab874e80d47fae504 \ |
| 8 | " |
Andrew Geissler | 517393d | 2023-01-13 08:55:19 -0600 | [diff] [blame] | 9 | |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 10 | DEPENDS += "gettext-native" |
| 11 | |
| 12 | #at least versions 2.69 and prior are moved to the archive folder on the server |
| 13 | SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV').split('.')[1]) > 69]}dnsmasq-${PV}.tar.gz \ |
| 14 | file://lua.patch \ |
| 15 | file://init \ |
| 16 | file://dnsmasq.conf \ |
| 17 | file://dnsmasq-resolvconf.service \ |
| 18 | file://dnsmasq-noresolvconf.service \ |
| 19 | file://dnsmasq-resolved.conf \ |
| 20 | " |
| 21 | SRC_URI[sha256sum] = "da9d26aa3f3fc15f3b58b94edbb9ddf744cbce487194ea480bd8e7381b3ca028" |
| 22 | |
| 23 | inherit pkgconfig update-rc.d systemd |
| 24 | |
| 25 | INITSCRIPT_NAME = "dnsmasq" |
| 26 | INITSCRIPT_PARAMS = "defaults" |
| 27 | |
| 28 | # dnsmasq defaults |
| 29 | PACKAGECONFIG ?= "auth dhcp dhcp6 dumpfile inotify ipset loop script tftp" |
| 30 | |
| 31 | PACKAGECONFIG[auth] = "-DHAVE_AUTH,-DNO_AUTH" |
| 32 | PACKAGECONFIG[broken-rtc] = "-DHAVE_BROKEN_RTC," |
| 33 | PACKAGECONFIG[conntrack] = "-DHAVE_CONNTRACK,,libnetfilter-conntrack" |
| 34 | PACKAGECONFIG[dbus] = "-DHAVE_DBUS,,dbus" |
| 35 | PACKAGECONFIG[dhcp] = "-DHAVE_DHCP,-DNO_DHCP" |
| 36 | PACKAGECONFIG[dhcp6] = "-DHAVE_DHCP6,-DNO_DHCP6" |
| 37 | PACKAGECONFIG[dnssec] = "-DHAVE_DNSSEC,,nettle" |
| 38 | PACKAGECONFIG[dumpfile] = "-DHAVE_DUMPFILE,-DNO_DUMPFILE" |
| 39 | PACKAGECONFIG[idn] = "-DHAVE_LIBIDN,,libidn,,,idn2" |
| 40 | PACKAGECONFIG[idn2] = "-DHAVE_LIBIDN2,,libidn2,,,idn" |
| 41 | PACKAGECONFIG[inotify] = "-DHAVE_INOTIFY,-DNO_INOTIFY" |
| 42 | PACKAGECONFIG[ipset] = "-DHAVE_IPSET,-DNO_IPSET" |
| 43 | PACKAGECONFIG[loop] = "-DHAVE_LOOP,-DNO_LOOP" |
| 44 | PACKAGECONFIG[lua] = "-DHAVE_LUASCRIPT -DHAVE_SCRIPT,,lua" |
| 45 | PACKAGECONFIG[nftset] = "-DHAVE_NFTSET,,nftables" |
| 46 | PACKAGECONFIG[no-gmp] = "-DNO_GMP," |
| 47 | PACKAGECONFIG[no-id] = "-DNO_ID," |
| 48 | PACKAGECONFIG[resolvconf] = ",,,resolvconf" |
| 49 | PACKAGECONFIG[script] = "-DHAVE_SCRIPT,-DNO_SCRIPT" |
| 50 | PACKAGECONFIG[tftp] = "-DHAVE_TFTP,-DNO_TFTP" |
| 51 | PACKAGECONFIG[ubus] = "-DHAVE_UBUS,,ubus" |
| 52 | |
| 53 | DNSMASQ_LEASEFILE ?= "${localstatedir}/lib/misc/dnsmasq.leases" |
| 54 | DNSMASQ_CONFFILE ?= "${sysconfdir}/dnsmasq.conf" |
| 55 | DNSMASQ_RESOLVFILE ?= "${sysconfdir}/resolv.conf" |
| 56 | |
| 57 | COPTS = "${PACKAGECONFIG_CONFARGS} \ |
| 58 | -DLEASEFILE=\"${DNSMASQ_LEASEFILE}\" \ |
| 59 | -DCONFFILE=\"${DNSMASQ_CONFFILE}\" \ |
| 60 | -DRESOLVFILE=\"${DNSMASQ_RESOLVFILE}\" \ |
| 61 | -DLOCALEDIR=\"${localedir}\"" |
| 62 | |
| 63 | EXTRA_OEMAKE = "\ |
| 64 | 'COPTS=${COPTS}' \ |
| 65 | 'CFLAGS=${CFLAGS}' \ |
| 66 | 'LDFLAGS=${LDFLAGS}' \ |
Andrew Geissler | 517393d | 2023-01-13 08:55:19 -0600 | [diff] [blame] | 67 | " |
| 68 | |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 69 | SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}" |
| 70 | |
| 71 | do_compile () { |
| 72 | oe_runmake all-i18n |
| 73 | if ${@bb.utils.contains_any('PACKAGECONFIG', ['dhcp', 'dhcp6'], 'true', 'false', d)}; then |
| 74 | # build dhcp_release |
| 75 | oe_runmake -C ${S}/contrib/lease-tools |
| 76 | fi |
| 77 | } |
| 78 | |
| 79 | do_install () { |
| 80 | oe_runmake "PREFIX=${D}${prefix}" \ |
| 81 | "BINDIR=${D}${bindir}" \ |
| 82 | "MANDIR=${D}${mandir}" \ |
| 83 | install-i18n |
| 84 | install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d ${D}${sysconfdir}/dnsmasq.d |
| 85 | install -m 644 ${WORKDIR}/dnsmasq.conf ${D}${sysconfdir}/ |
| 86 | install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq |
| 87 | |
| 88 | install -d ${D}${systemd_unitdir}/system |
| 89 | |
| 90 | if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then |
| 91 | install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service |
| 92 | else |
| 93 | install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service |
| 94 | fi |
| 95 | |
| 96 | if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then |
| 97 | install -d ${D}${sysconfdir}/systemd/resolved.conf.d/ |
| 98 | install -m 0644 ${WORKDIR}/dnsmasq-resolved.conf ${D}${sysconfdir}/systemd/resolved.conf.d/ |
| 99 | fi |
| 100 | |
| 101 | if [ "${@bb.utils.filter('PACKAGECONFIG', 'dhcp', d)}" ]; then |
| 102 | install -m 0755 ${S}/contrib/lease-tools/dhcp_release ${D}${bindir} |
| 103 | install -m 0755 ${S}/contrib/lease-tools/dhcp_lease_time ${D}${bindir} |
| 104 | fi |
| 105 | |
| 106 | if [ "${@bb.utils.filter('PACKAGECONFIG', 'dhcp6', d)}" ]; then |
| 107 | install -m 0755 ${S}/contrib/lease-tools/dhcp_release6 ${D}${bindir} |
| 108 | fi |
| 109 | |
| 110 | if [ "${@bb.utils.filter('PACKAGECONFIG', 'dbus', d)}" ]; then |
| 111 | install -d ${D}${sysconfdir}/dbus-1/system.d |
| 112 | install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/ |
| 113 | fi |
| 114 | |
| 115 | if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then |
| 116 | install -d ${D}${sysconfdir}/resolvconf/update.d/ |
| 117 | install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq |
| 118 | |
| 119 | install -d ${D}${sysconfdir}/default/volatiles |
| 120 | install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles |
| 121 | install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir} |
| 122 | fi |
| 123 | } |
| 124 | |
| 125 | CONFFILES:${PN} = "${sysconfdir}/dnsmasq.conf" |
| 126 | |
| 127 | RPROVIDES:${PN} += "${PN}-systemd" |
| 128 | RREPLACES:${PN} += "${PN}-systemd" |
| 129 | RCONFLICTS:${PN} += "${PN}-systemd" |
| 130 | SYSTEMD_SERVICE:${PN} = "dnsmasq.service" |