dhcp.inc 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. SECTION = "console/network"
  2. SUMMARY = "Internet Software Consortium DHCP package"
  3. DESCRIPTION = "DHCP (Dynamic Host Configuration Protocol) is a protocol \
  4. which allows individual devices on an IP network to get their own \
  5. network configuration information from a server. DHCP helps make it \
  6. easier to administer devices."
  7. HOMEPAGE = "http://www.isc.org/"
  8. LICENSE = "ISC"
  9. LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;md5=613211e713c4ffc489ec370e1caceabb"
  10. DEPENDS = "openssl bind"
  11. SRC_URI = "http://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \
  12. file://init-relay file://default-relay \
  13. file://init-server file://default-server \
  14. file://dhclient.conf file://dhcpd.conf \
  15. file://dhclient-systemd-wrapper \
  16. file://dhclient.service \
  17. file://dhcpd.service file://dhcrelay.service \
  18. file://dhcpd6.service \
  19. "
  20. UPSTREAM_CHECK_URI = "http://ftp.isc.org/isc/dhcp/"
  21. UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/"
  22. inherit autotools-brokensep systemd useradd update-rc.d
  23. USERADD_PACKAGES = "${PN}-server"
  24. USERADD_PARAM:${PN}-server = "--system --no-create-home --home-dir /var/run/${BPN} --shell /bin/false --user-group ${BPN}"
  25. SYSTEMD_PACKAGES = "${PN}-server ${PN}-relay ${PN}-client"
  26. SYSTEMD_SERVICE:${PN}-server = "dhcpd.service dhcpd6.service"
  27. SYSTEMD_AUTO_ENABLE:${PN}-server = "disable"
  28. SYSTEMD_SERVICE:${PN}-relay = "dhcrelay.service"
  29. SYSTEMD_AUTO_ENABLE:${PN}-relay = "disable"
  30. SYSTEMD_SERVICE:${PN}-client = "dhclient.service"
  31. SYSTEMD_AUTO_ENABLE:${PN}-client = "disable"
  32. INITSCRIPT_PACKAGES = "dhcp-server"
  33. INITSCRIPT_NAME:dhcp-server = "dhcp-server"
  34. INITSCRIPT_PARAMS:dhcp-server = "defaults"
  35. CFLAGS += "-D_GNU_SOURCE"
  36. EXTRA_OECONF = "--with-srv-lease-file=${localstatedir}/lib/dhcp/dhcpd.leases \
  37. --with-srv6-lease-file=${localstatedir}/lib/dhcp/dhcpd6.leases \
  38. --with-cli-lease-file=${localstatedir}/lib/dhcp/dhclient.leases \
  39. --with-cli6-lease-file=${localstatedir}/lib/dhcp/dhclient6.leases \
  40. --enable-paranoia --disable-static \
  41. --with-randomdev=/dev/random \
  42. \
  43. --enable-libtool \
  44. "
  45. PACKAGECONFIG[system-libbind] = "--with-libbind=${STAGING_DIR_HOST},--without-libbind,bind"
  46. #Enable shared libs per dhcp README
  47. do_configure:prepend () {
  48. cp configure.ac+lt configure.ac
  49. }
  50. do_install:append () {
  51. install -d ${D}${sysconfdir}/init.d
  52. install -d ${D}${sysconfdir}/default
  53. install -d ${D}${sysconfdir}/dhcp
  54. install -m 0755 ${WORKDIR}/init-relay ${D}${sysconfdir}/init.d/dhcp-relay
  55. install -m 0644 ${WORKDIR}/default-relay ${D}${sysconfdir}/default/dhcp-relay
  56. install -m 0755 ${WORKDIR}/init-server ${D}${sysconfdir}/init.d/dhcp-server
  57. install -m 0644 ${WORKDIR}/default-server ${D}${sysconfdir}/default/dhcp-server
  58. rm -f ${D}${sysconfdir}/dhclient.conf*
  59. rm -f ${D}${sysconfdir}/dhcpd.conf*
  60. install -m 0644 ${WORKDIR}/dhclient.conf ${D}${sysconfdir}/dhcp/dhclient.conf
  61. install -m 0644 ${WORKDIR}/dhcpd.conf ${D}${sysconfdir}/dhcp/dhcpd.conf
  62. install -d ${D}${base_sbindir}/
  63. if [ "${sbindir}" != "${base_sbindir}" ]; then
  64. mv ${D}${sbindir}/dhclient ${D}${base_sbindir}/
  65. fi
  66. install -m 0755 ${S}/client/scripts/linux ${D}${base_sbindir}/dhclient-script
  67. # Install systemd unit files
  68. install -d ${D}${systemd_unitdir}/system
  69. install -m 0644 ${WORKDIR}/dhcpd.service ${D}${systemd_unitdir}/system
  70. install -m 0644 ${WORKDIR}/dhcpd6.service ${D}${systemd_unitdir}/system
  71. install -m 0644 ${WORKDIR}/dhcrelay.service ${D}${systemd_unitdir}/system
  72. sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/dhcpd*.service ${D}${systemd_unitdir}/system/dhcrelay.service
  73. sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
  74. sed -i -e 's,@base_bindir@,${base_bindir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
  75. sed -i -e 's,@localstatedir@,${localstatedir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
  76. sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
  77. install -d ${D}${base_sbindir}
  78. install -m 0755 ${WORKDIR}/dhclient-systemd-wrapper ${D}${base_sbindir}/dhclient-systemd-wrapper
  79. install -m 0644 ${WORKDIR}/dhclient.service ${D}${systemd_unitdir}/system
  80. sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhclient.service
  81. sed -i -e 's,@BASE_SBINDIR@,${base_sbindir},g' ${D}${systemd_unitdir}/system/dhclient.service
  82. }
  83. PACKAGES += "dhcp-libs dhcp-server dhcp-server-config dhcp-client dhcp-relay dhcp-omshell"
  84. PACKAGES:remove = "${PN}"
  85. RDEPENDS:${PN}-client += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'iproute2', '', d)}"
  86. RDEPENDS:${PN}-dev = ""
  87. RDEPENDS:${PN}-staticdev = ""
  88. FILES:${PN}-libs = "${libdir}/libdhcpctl.so.0* ${libdir}/libomapi.so.0* ${libdir}/libdhcp.so.0*"
  89. FILES:${PN}-server = "${sbindir}/dhcpd ${sysconfdir}/init.d/dhcp-server"
  90. RRECOMMENDS:${PN}-server = "dhcp-server-config"
  91. FILES:${PN}-server-config = "${sysconfdir}/default/dhcp-server ${sysconfdir}/dhcp/dhcpd.conf"
  92. FILES:${PN}-relay = "${sbindir}/dhcrelay ${sysconfdir}/init.d/dhcp-relay ${sysconfdir}/default/dhcp-relay"
  93. FILES:${PN}-client = "${base_sbindir}/dhclient \
  94. ${base_sbindir}/dhclient-script \
  95. ${sysconfdir}/dhcp/dhclient.conf \
  96. ${base_sbindir}/dhclient-systemd-wrapper \
  97. "
  98. FILES:${PN}-omshell = "${bindir}/omshell"
  99. pkg_postinst:dhcp-server() {
  100. mkdir -p $D/${localstatedir}/lib/dhcp
  101. touch $D/${localstatedir}/lib/dhcp/dhcpd.leases
  102. touch $D/${localstatedir}/lib/dhcp/dhcpd6.leases
  103. }
  104. pkg_postinst:dhcp-client() {
  105. mkdir -p $D/${localstatedir}/lib/dhcp
  106. }
  107. pkg_postrm:dhcp-server() {
  108. rm -f $D/${localstatedir}/lib/dhcp/dhcpd.leases
  109. rm -f $D/${localstatedir}/lib/dhcp/dhcpd6.leases
  110. if ! rmdir $D/${localstatedir}/lib/dhcp 2>/dev/null; then
  111. echo "Not removing ${localstatedir}/lib/dhcp as it is non-empty."
  112. fi
  113. }
  114. pkg_postrm:dhcp-client() {
  115. rm -f $D/${localstatedir}/lib/dhcp/dhclient.leases
  116. rm -f $D/${localstatedir}/lib/dhcp/dhclient6.leases
  117. if ! rmdir $D/${localstatedir}/lib/dhcp 2>/dev/null; then
  118. echo "Not removing ${localstatedir}/lib/dhcp as it is non-empty."
  119. fi
  120. }