blob: 4bf1dd8954c640b634e500b4e4b9478bf2e8d29b [file] [log] [blame]
Andrew Geisslerc5535c92023-01-27 16:10:19 -06001SUMMARY = "Lightweight, easy to configure DNS forwarder and DHCP server"
2HOMEPAGE = "http://www.thekelleys.org.uk/dnsmasq/doc.html"
3SECTION = "net"
4# GPLv3 was added in version 2.41 as license option
5LICENSE = "GPL-2.0-only | GPL-3.0-only"
6LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
7 file://COPYING-v3;md5=d32239bcb673463ab874e80d47fae504 \
8 "
Andrew Geissler517393d2023-01-13 08:55:19 -06009
Andrew Geisslerc5535c92023-01-27 16:10:19 -060010DEPENDS += "gettext-native"
11
12#at least versions 2.69 and prior are moved to the archive folder on the server
13SRC_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"
21SRC_URI[sha256sum] = "da9d26aa3f3fc15f3b58b94edbb9ddf744cbce487194ea480bd8e7381b3ca028"
22
23inherit pkgconfig update-rc.d systemd
24
25INITSCRIPT_NAME = "dnsmasq"
26INITSCRIPT_PARAMS = "defaults"
27
28# dnsmasq defaults
29PACKAGECONFIG ?= "auth dhcp dhcp6 dumpfile inotify ipset loop script tftp"
30
31PACKAGECONFIG[auth] = "-DHAVE_AUTH,-DNO_AUTH"
32PACKAGECONFIG[broken-rtc] = "-DHAVE_BROKEN_RTC,"
33PACKAGECONFIG[conntrack] = "-DHAVE_CONNTRACK,,libnetfilter-conntrack"
34PACKAGECONFIG[dbus] = "-DHAVE_DBUS,,dbus"
35PACKAGECONFIG[dhcp] = "-DHAVE_DHCP,-DNO_DHCP"
36PACKAGECONFIG[dhcp6] = "-DHAVE_DHCP6,-DNO_DHCP6"
37PACKAGECONFIG[dnssec] = "-DHAVE_DNSSEC,,nettle"
38PACKAGECONFIG[dumpfile] = "-DHAVE_DUMPFILE,-DNO_DUMPFILE"
39PACKAGECONFIG[idn] = "-DHAVE_LIBIDN,,libidn,,,idn2"
40PACKAGECONFIG[idn2] = "-DHAVE_LIBIDN2,,libidn2,,,idn"
41PACKAGECONFIG[inotify] = "-DHAVE_INOTIFY,-DNO_INOTIFY"
42PACKAGECONFIG[ipset] = "-DHAVE_IPSET,-DNO_IPSET"
43PACKAGECONFIG[loop] = "-DHAVE_LOOP,-DNO_LOOP"
44PACKAGECONFIG[lua] = "-DHAVE_LUASCRIPT -DHAVE_SCRIPT,,lua"
45PACKAGECONFIG[nftset] = "-DHAVE_NFTSET,,nftables"
46PACKAGECONFIG[no-gmp] = "-DNO_GMP,"
47PACKAGECONFIG[no-id] = "-DNO_ID,"
48PACKAGECONFIG[resolvconf] = ",,,resolvconf"
49PACKAGECONFIG[script] = "-DHAVE_SCRIPT,-DNO_SCRIPT"
50PACKAGECONFIG[tftp] = "-DHAVE_TFTP,-DNO_TFTP"
51PACKAGECONFIG[ubus] = "-DHAVE_UBUS,,ubus"
52
53DNSMASQ_LEASEFILE ?= "${localstatedir}/lib/misc/dnsmasq.leases"
54DNSMASQ_CONFFILE ?= "${sysconfdir}/dnsmasq.conf"
55DNSMASQ_RESOLVFILE ?= "${sysconfdir}/resolv.conf"
56
57COPTS = "${PACKAGECONFIG_CONFARGS} \
58 -DLEASEFILE=\"${DNSMASQ_LEASEFILE}\" \
59 -DCONFFILE=\"${DNSMASQ_CONFFILE}\" \
60 -DRESOLVFILE=\"${DNSMASQ_RESOLVFILE}\" \
61 -DLOCALEDIR=\"${localedir}\""
62
63EXTRA_OEMAKE = "\
64 'COPTS=${COPTS}' \
65 'CFLAGS=${CFLAGS}' \
66 'LDFLAGS=${LDFLAGS}' \
Andrew Geissler517393d2023-01-13 08:55:19 -060067"
68
Andrew Geisslerc5535c92023-01-27 16:10:19 -060069SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}"
70
71do_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
79do_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
125CONFFILES:${PN} = "${sysconfdir}/dnsmasq.conf"
126
127RPROVIDES:${PN} += "${PN}-systemd"
128RREPLACES:${PN} += "${PN}-systemd"
129RCONFLICTS:${PN} += "${PN}-systemd"
130SYSTEMD_SERVICE:${PN} = "dnsmasq.service"