1SUMMARY = "Miscellaneous files for the base system" 2DESCRIPTION = "The base-files package creates the basic system directory structure and provides a small set of key configuration files for the system." 3SECTION = "base" 4LICENSE = "GPL-2.0-only" 5LIC_FILES_CHKSUM = "file://licenses/GPL-2;md5=94d55d512a9ba36caa9b7df079bae19f" 6# Removed all license related tasks in this recipe as license.bbclass 7# now deals with this. In order to get accurate licensing on to the image: 8# Set COPY_LIC_MANIFEST to just copy just the license.manifest to the image 9# For the manifest and the license text for each package: 10# Set COPY_LIC_MANIFEST and COPY_LIC_DIRS 11 12SRC_URI = "file://rotation \ 13 file://nsswitch.conf \ 14 file://motd \ 15 file://hosts \ 16 file://host.conf \ 17 file://profile \ 18 file://shells \ 19 file://fstab \ 20 file://issue.net \ 21 file://issue \ 22 file://share/dot.bashrc \ 23 file://share/dot.profile \ 24 file://licenses/GPL-2 \ 25 " 26SRC_URI:append:libc-glibc = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd systemd-resolved', ' file://0001-add-nss-resolve-to-nsswitch.patch', '', d)}" 27 28S = "${WORKDIR}" 29 30INHIBIT_DEFAULT_DEPS = "1" 31 32docdir:append = "/${P}" 33dirs1777 = "/tmp ${localstatedir}/volatile/tmp" 34dirs2775 = "" 35dirs555 = "/sys /proc" 36dirs755 = "/boot /dev ${base_bindir} ${base_sbindir} ${base_libdir} \ 37 ${sysconfdir} ${sysconfdir}/default \ 38 ${sysconfdir}/skel ${nonarch_base_libdir} /mnt ${ROOT_HOME} /run \ 39 ${prefix} ${bindir} ${docdir} /usr/games ${includedir} \ 40 ${libdir} ${sbindir} ${datadir} \ 41 ${datadir}/common-licenses ${datadir}/dict ${infodir} \ 42 ${mandir} ${datadir}/misc ${localstatedir} \ 43 ${localstatedir}/backups ${localstatedir}/lib \ 44 ${localstatedir}/lib/misc ${localstatedir}/spool \ 45 ${localstatedir}/volatile \ 46 ${localstatedir}/${@'volatile/' if oe.types.boolean('${VOLATILE_LOG_DIR}') else ''}log \ 47 /home ${prefix}/src ${localstatedir}/local \ 48 /media" 49 50dirs755-lsb = "/srv \ 51 ${prefix}/local ${prefix}/local/bin ${prefix}/local/games \ 52 ${prefix}/local/include ${prefix}/local/lib ${prefix}/local/sbin \ 53 ${prefix}/local/share ${prefix}/local/src \ 54 ${prefix}/lib/locale" 55dirs2775-lsb = "/var/mail" 56 57volatiles = "${@'log' if oe.types.boolean('${VOLATILE_LOG_DIR}') else ''} tmp" 58conffiles = "${sysconfdir}/debian_version ${sysconfdir}/host.conf \ 59 ${sysconfdir}/issue /${sysconfdir}/issue.net \ 60 ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile \ 61 ${sysconfdir}/default" 62 63# By default the hostname is the machine name. If the hostname is unset then a 64# /etc/hostname file isn't written, suitable for environments with dynamic 65# hostnames. 66# 67# The hostname can be changed outside of this recipe by using 68# hostname:pn-base-files = "my-host-name". 69hostname = "${MACHINE}" 70 71BASEFILESISSUEINSTALL ?= "do_install_basefilesissue" 72 73# In previous versions of base-files, /run was a softlink to /var/run and the 74# directory was located in /var/volatlie/run. Also, /var/lock was a softlink 75# to /var/volatile/lock which is where the real directory was located. Now, 76# /run and /run/lock are the real directories. If we are upgrading, we may 77# need to remove the symbolic links first before we create the directories. 78# Otherwise the directory creation will fail and we will have circular symbolic 79# links. 80# 81pkg_preinst:${PN} () { 82 #!/bin/sh -e 83 if [ x"$D" = "x" ]; then 84 if [ -h "/var/lock" ]; then 85 # Remove the symbolic link 86 rm -f /var/lock 87 fi 88 89 if [ -h "/run" ]; then 90 # Remove the symbolic link 91 rm -f /run 92 fi 93 fi 94} 95 96do_install () { 97 for d in ${dirs555}; do 98 install -m 0555 -d ${D}$d 99 done 100 for d in ${dirs755}; do 101 install -m 0755 -d ${D}$d 102 done 103 for d in ${dirs1777}; do 104 install -m 1777 -d ${D}$d 105 done 106 for d in ${dirs2775}; do 107 install -m 2775 -d ${D}$d 108 done 109 for d in ${volatiles}; do 110 ln -sf volatile/$d ${D}${localstatedir}/$d 111 done 112 113 ln -snf ../run ${D}${localstatedir}/run 114 ln -snf ../run/lock ${D}${localstatedir}/lock 115 116 install -m 0644 ${WORKDIR}/hosts ${D}${sysconfdir}/hosts 117 ${BASEFILESISSUEINSTALL} 118 119 rotation=`cat ${WORKDIR}/rotation` 120 if [ "$rotation" != "0" ]; then 121 install -m 0644 ${WORKDIR}/rotation ${D}${sysconfdir}/rotation 122 fi 123 124 install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab 125 install -m 0644 ${WORKDIR}/profile ${D}${sysconfdir}/profile 126 sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}${sysconfdir}/profile 127 sed -i 's#@BINDIR@#${bindir}#g' ${D}${sysconfdir}/profile 128 install -m 0644 ${WORKDIR}/shells ${D}${sysconfdir}/shells 129 install -m 0755 ${WORKDIR}/share/dot.profile ${D}${sysconfdir}/skel/.profile 130 install -m 0755 ${WORKDIR}/share/dot.bashrc ${D}${sysconfdir}/skel/.bashrc 131 install -m 0644 ${WORKDIR}/host.conf ${D}${sysconfdir}/host.conf 132 install -m 0644 ${WORKDIR}/motd ${D}${sysconfdir}/motd 133 134 ln -sf /proc/mounts ${D}${sysconfdir}/mtab 135 136 # deal with hostname 137 if [ "${hostname}" ]; then 138 echo ${hostname} > ${D}${sysconfdir}/hostname 139 echo "127.0.1.1 ${hostname}" >> ${D}${sysconfdir}/hosts 140 fi 141 142 if ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'false', 'true', d)}; then 143 sed -i '/^::1/s/ localhost//' ${D}${sysconfdir}/hosts 144 fi 145} 146 147do_install:append:libc-glibc () { 148 install -m 0644 ${WORKDIR}/nsswitch.conf ${D}${sysconfdir}/nsswitch.conf 149} 150 151DISTRO_VERSION[vardepsexclude] += "DATE" 152do_install_basefilesissue () { 153 install -m 644 ${WORKDIR}/issue* ${D}${sysconfdir} 154 if [ -n "${DISTRO_NAME}" ]; then 155 printf "${DISTRO_NAME} " >> ${D}${sysconfdir}/issue 156 printf "${DISTRO_NAME} " >> ${D}${sysconfdir}/issue.net 157 if [ -n "${DISTRO_VERSION}" ]; then 158 distro_version_nodate="${@d.getVar('DISTRO_VERSION').replace('snapshot-${DATE}','snapshot').replace('${DATE}','')}" 159 printf "%s " $distro_version_nodate >> ${D}${sysconfdir}/issue 160 printf "%s " $distro_version_nodate >> ${D}${sysconfdir}/issue.net 161 fi 162 printf "\\\n \\\l\n" >> ${D}${sysconfdir}/issue 163 echo >> ${D}${sysconfdir}/issue 164 echo "%h" >> ${D}${sysconfdir}/issue.net 165 echo >> ${D}${sysconfdir}/issue.net 166 fi 167} 168do_install_basefilesissue[vardepsexclude] += "DATE" 169 170do_install:append:linuxstdbase() { 171 for d in ${dirs755-lsb}; do 172 install -m 0755 -d ${D}$d 173 done 174 175 for d in ${dirs2775-lsb}; do 176 install -m 2775 -d ${D}$d 177 done 178} 179 180SYSROOT_DIRS += "${sysconfdir}/skel" 181 182PACKAGES = "${PN}-doc ${PN} ${PN}-dev ${PN}-dbg" 183FILES:${PN} = "/" 184FILES:${PN}-doc = "${docdir} ${datadir}/common-licenses" 185 186PACKAGE_ARCH = "${MACHINE_ARCH}" 187 188CONFFILES:${PN} = "${sysconfdir}/fstab ${@['', '${sysconfdir}/hostname ${sysconfdir}/hosts'][(d.getVar('hostname') != '')]} ${sysconfdir}/shells" 189CONFFILES:${PN} += "${sysconfdir}/motd ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile" 190 191INSANE_SKIP:${PN} += "empty-dirs" 192