xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1SUMMARY = "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                    "
9
10#at least versions 2.69 and prior are moved to the archive folder on the server
11SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV').split('.')[1]) > 69]}dnsmasq-${PV}.tar.gz;name=dnsmasq-${PV} \
12           file://init \
13           file://dnsmasq.conf \
14           file://dnsmasq-resolvconf.service \
15           file://dnsmasq-noresolvconf.service \
16           file://dnsmasq-resolved.conf \
17           file://CVE-2023-28450.patch \
18"
19
20inherit pkgconfig update-rc.d systemd
21
22INITSCRIPT_NAME = "dnsmasq"
23INITSCRIPT_PARAMS = "defaults"
24
25PACKAGECONFIG ?= ""
26PACKAGECONFIG[dbus] = ",,dbus"
27PACKAGECONFIG[idn] = ",,libidn"
28PACKAGECONFIG[conntrack] = ",,libnetfilter-conntrack"
29PACKAGECONFIG[lua] = ",,lua"
30PACKAGECONFIG[resolvconf] = ",,,resolvconf"
31EXTRA_OEMAKE = "\
32    'COPTS=${@bb.utils.contains('PACKAGECONFIG', 'dbus', '-DHAVE_DBUS', '', d)} \
33           ${@bb.utils.contains('PACKAGECONFIG', 'idn', '-DHAVE_IDN', '', d)} \
34           ${@bb.utils.contains('PACKAGECONFIG', 'conntrack', '-DHAVE_CONNTRACK', '', d)} \
35           ${@bb.utils.contains('PACKAGECONFIG', 'lua', '-DHAVE_LUASCRIPT', '', d)}' \
36    'CFLAGS=${CFLAGS}' \
37    'LDFLAGS=${LDFLAGS}' \
38"
39
40SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}"
41
42do_compile:append() {
43    # build dhcp_release
44    cd ${S}/contrib/lease-tools
45    oe_runmake
46}
47
48do_install () {
49    oe_runmake "PREFIX=${D}${prefix}" \
50               "BINDIR=${D}${bindir}" \
51               "MANDIR=${D}${mandir}" \
52               install
53    install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d ${D}${sysconfdir}/dnsmasq.d
54    install -m 644 ${WORKDIR}/dnsmasq.conf ${D}${sysconfdir}/
55    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq
56
57    install -d ${D}${systemd_unitdir}/system
58
59    if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then
60        install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
61    else
62        install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
63    fi
64    install -d ${D}${sysconfdir}/systemd/resolved.conf.d/
65    install -m 0644 ${WORKDIR}/dnsmasq-resolved.conf ${D}${sysconfdir}/systemd/resolved.conf.d/
66
67    install -m 0755 ${S}/contrib/lease-tools/dhcp_release ${D}${bindir}
68
69    if [ "${@bb.utils.filter('PACKAGECONFIG', 'dbus', d)}" ]; then
70        install -d ${D}${sysconfdir}/dbus-1/system.d
71        install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/
72    fi
73    if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then
74        install -d ${D}${sysconfdir}/resolvconf/update.d/
75        install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq
76
77        install -d ${D}${sysconfdir}/default/volatiles
78        install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles
79        install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir}
80    fi
81}
82
83CONFFILES:${PN} = "${sysconfdir}/dnsmasq.conf"
84
85RPROVIDES:${PN} += "${PN}-systemd"
86RREPLACES:${PN} += "${PN}-systemd"
87RCONFLICTS:${PN} += "${PN}-systemd"
88SYSTEMD_SERVICE:${PN} = "dnsmasq.service"
89