summaryrefslogtreecommitdiffstats
path: root/meta/classes/rootfs_rpm.bbclass
blob: 7f305f51ca2acbfae377c4e4e22fff899bace0f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#
# Creates a root filesystem out of rpm packages
#

ROOTFS_PKGMANAGE = "rpm dnf"

# dnf is using our custom distutils, and so will fail without these
export STAGING_INCDIR
export STAGING_LIBDIR

# Add 100Meg of extra space for dnf
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("PACKAGE_INSTALL", "dnf", " + 102400", "" ,d)}"

# Dnf is python based, so be sure python3-native is available to us.
EXTRANATIVEPATH += "python3-native"

# opkg is needed for update-alternatives
RPMROOTFSDEPENDS = "rpm-native:do_populate_sysroot \
    dnf-native:do_populate_sysroot \
    createrepo-c-native:do_populate_sysroot \
    opkg-native:do_populate_sysroot"

do_rootfs[depends] += "${RPMROOTFSDEPENDS}"
do_populate_sdk[depends] += "${RPMROOTFSDEPENDS}"

do_rootfs[recrdeptask] += "do_package_write_rpm"
do_rootfs[vardeps] += "PACKAGE_FEED_URIS"

python () {
    if d.getVar('BUILD_IMAGES_FROM_FEEDS'):
        flags = d.getVarFlag('do_rootfs', 'recrdeptask')
        flags = flags.replace("do_package_write_rpm", "")
        flags = flags.replace("do_deploy", "")
        flags = flags.replace("do_populate_sysroot", "")
        d.setVarFlag('do_rootfs', 'recrdeptask', flags)
        d.setVar('RPM_PREPROCESS_COMMANDS', '')
        d.setVar('RPM_POSTPROCESS_COMMANDS', '')

}
0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# There are a number of modifiers that are allowed to be used in some
# of the different fields. They provide the following subsitutions:
#
# %n the "kernel number" of the device.
#    For example, 'sda3' has a "kernel number" of '3'
# %e the smallest number for that name which does not matches an existing node
# %k the kernel name for the device
# %M the kernel major number for the device
# %m the kernel minor number for the device
# %b the bus id for the device
# %c the string returned by the PROGRAM
# %s{filename} the content of a sysfs attribute
# %% the '%' char itself
#

# workaround for devices which do not report media changes
SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
	ENV{ID_MODEL}=="IOMEGA_ZIP*",	NAME="%k", OPTIONS+="all_partitions"
SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
	OPTIONS+="all_partitions"

# SCSI devices
SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*",	NAME="scd%n", SYMLINK+="sr%n"

# USB devices
SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*",	NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*",	NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="dabusb*",		NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="hiddev*",		NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="legousbtower*",	NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*",		NAME="usb/%k"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
	ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
					SYMLINK+="pilot"

# usbfs-like devices
SUBSYSTEM=="usb_device",	PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
				NAME="%c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",	NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"

# serial devices
KERNEL=="capi",			NAME="capi20", SYMLINK+="isdn/capi20"
KERNEL=="capi[0-9]*",		NAME="capi/%n"

# video devices
KERNEL=="dvb*",			PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
				NAME="%c"
KERNEL=="card[0-9]*",		NAME="dri/%k"

# misc devices
KERNEL=="hw_random",		NAME="hwrng"
KERNEL=="tun",			NAME="net/%k"
KERNEL=="evtchn",		NAME="xen/%k"

KERNEL=="cdemu[0-9]*",		NAME="cdemu/%n"
KERNEL=="pktcdvd[0-9]*",	NAME="pktcdvd/%n"
KERNEL=="pktcdvd",		NAME="pktcdvd/control"

KERNEL=="cpu[0-9]*",		NAME="cpu/%n/cpuid"
KERNEL=="msr[0-9]*",		NAME="cpu/%n/msr"
KERNEL=="microcode",		NAME="cpu/microcode"

KERNEL=="umad*",		NAME="infiniband/%k"
KERNEL=="issm*",		NAME="infiniband/%k"
KERNEL=="uverbs*",		NAME="infiniband/%k"
KERNEL=="ucm*",			NAME="infiniband/%k"
KERNEL=="rdma_ucm",		NAME="infiniband/%k"

# ALSA devices
KERNEL=="controlC[0-9]*",	NAME="snd/%k"
KERNEL=="hwC[D0-9]*",		NAME="snd/%k"
KERNEL=="pcmC[D0-9cp]*",	NAME="snd/%k"
KERNEL=="midiC[D0-9]*",		NAME="snd/%k"
KERNEL=="timer",		NAME="snd/%k"
KERNEL=="seq",			NAME="snd/%k"

# ieee1394 devices       
KERNEL=="dv1394*",		NAME="dv1394/%n"
KERNEL=="video1394*",		NAME="video1394/%n"

# input devices
KERNEL=="mice",			NAME="input/%k"
KERNEL=="mouse[0-9]*",		NAME="input/%k"
KERNEL=="event[0-9]*",		NAME="input/%k"
KERNEL=="js[0-9]*",		NAME="input/%k"
KERNEL=="ts[0-9]*",		NAME="input/%k"
KERNEL=="uinput",		NAME="input/%k"

# Zaptel
KERNEL=="zapctl",		NAME="zap/ctl"
KERNEL=="zaptimer",		NAME="zap/timer"
KERNEL=="zapchannel",		NAME="zap/channel"
KERNEL=="zappseudo",		NAME="zap/pseudo"
KERNEL=="zap[0-9]*",		NAME="zap/%n"

# AOE character devices
SUBSYSTEM=="aoe", KERNEL=="discover",	NAME="etherd/%k"
SUBSYSTEM=="aoe", KERNEL=="err",	NAME="etherd/%k"
SUBSYSTEM=="aoe", KERNEL=="interfaces",	NAME="etherd/%k"
SUBSYSTEM=="aoe", KERNEL=="revalidate",	NAME="etherd/%k"

# device mapper creates its own device nodes, so ignore these
KERNEL=="dm-[0-9]*",		OPTIONS+="ignore_device"
KERNEL=="device-mapper",	NAME="mapper/control"

KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"

# Firmware Helper
ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"

# Samsung UARTS
KERNEL=="s3c2410_serial[0-9]",   NAME="ttySAC%n"

# MXC UARTs
KERNEL=="ttymxc[0-4]",   NAME="ttymxc%n"