summaryrefslogtreecommitdiffstats
path: root/abs/core/udev/PKGBUILD
blob: 2f71d2865a3456dedec38b3a604f0337a0dbb3b4 (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# $Id: PKGBUILD 85315 2010-07-12 05:13:37Z tpowa $
# Maintainer: Aaron Griffin <aaron@archlinux.org>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Bächler <thomas@archlinux.org>

pkgbase="udev"
pkgname=('udev' 'udev-compat')
pkgver=160
pkgrel=1
arch=(i686 x86_64)
url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
license=('GPL')
groups=('base')
# older initscripts versions required start_udev
options=(!makeflags !libtool)
makedepends=('glibc' 'coreutils' 'util-linux' 'libusb' 'glib2' 'kernel26' 'gperf' 'libxslt' 'gobject-introspection')
source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.bz2
        81-arch.rules load-modules.sh cdsymlinks.sh root-link.sh
        arch-udev-rules.patch
        logitech-rules.patch)
md5sums=('65459a1f090082c0471bf4e5112208d7'
         '6393ee81993f8b9beb776ca904005864'
         'f91fddc67609b45b244a624977c4247b'
         '2e808ee78d237c478b57af2a68d43769'
         '2d6dc6842464f107bccc68cd505a6c31'
         '70198227b7bbe3852e1cd2299693af66'
         '817537bdcfc1a4fa79e853fd38df4528')

build() {
  cd $srcdir/$pkgname-$pkgver
  # fix logitech rules
  patch -Np0 -i $srcdir/logitech-rules.patch 
  ./configure --prefix="" --mandir=/usr/share/man\
                          --includedir=/usr/include\
                          --libexecdir=/lib/udev\
                          --datarootdir=/usr/share
  make
}
  
package_udev() {
  pkgdesc="The userspace dev tools (udev)"
  depends=('glibc' 'coreutils' 'util-linux' 'libusb' 'glib2'
           'module-init-tools>=3.11')
  install=udev.install
  backup=(etc/udev/udev.conf
          etc/modprobe.d/framebuffer_blacklist.conf)
  conflicts=('pcmcia-cs' 'hotplug' 'initscripts<2009.07')
  replaces=('devfsd')
  
  cd $srcdir/$pkgname-$pkgver
  make DESTDIR=${pkgdir} install
  # Fix pkgconfig path
  install -d -m755 $pkgdir/usr/lib
  mv $pkgdir/lib/pkgconfig $pkgdir/usr/lib
  # Fix ConsoleKit path
  mv $pkgdir/lib/ConsoleKit $pkgdir/usr/lib
  # Install our rule for permissions and symlinks
  install -D -m644 $srcdir/81-arch.rules $pkgdir/lib/udev/rules.d/81-arch.rules
  # install our module loading subsystem
  install -D -m755 $srcdir/load-modules.sh $pkgdir/lib/udev/load-modules.sh
  # install cdsymlinks.sh
  install -D -m755 $srcdir/cdsymlinks.sh $pkgdir/lib/udev/cdsymlinks.sh
  # install root-link.sh
  install -D -m755 $srcdir/root-link.sh $pkgdir/lib/udev/root-link.sh
  # disable error logging to prevent startup failures printed to vc on boot
  sed -i -e 's|udev_log="err"|udev_log="0"|g' $pkgdir/etc/udev/udev.conf
  # fix standard udev rules to fit to arch
  cd $pkgdir/lib/udev/rules.d/
  patch -Np1 -i $srcdir/arch-udev-rules.patch
  # remove .orig files
  rm -f $pkgdir/lib/udev/rules.d/*.orig
  # disable persistent cdromsymlinks and network by default 
  # and move it to /etc/udev/rules.d
  mv $pkgdir/lib/udev/rules.d/75-persistent-net-generator.rules \
     $pkgdir/etc/udev/rules.d/75-persistent-net-generator.rules.optional
  mv $pkgdir/lib/udev/rules.d/75-cd-aliases-generator.rules \
     $pkgdir/etc/udev/rules.d/75-cd-aliases-generator.rules.optional

  # create framebuffer blacklist
  mkdir -p $pkgdir/etc/modprobe.d/
  for mod in $(find /lib/modules/*/kernel/drivers/video -name '*fb.ko' -exec basename {} .ko \;); do 
	echo "blacklist $mod" >> $pkgdir/etc/modprobe.d/framebuffer_blacklist.conf
  done

  # create static devices in /lib/udev/devices/
  mkdir ${pkgdir}/lib/udev/devices/pts
  mkdir ${pkgdir}/lib/udev/devices/shm

  mknod -m 0600 ${pkgdir}/lib/udev/devices/console c 5 1
  mknod -m 0666 ${pkgdir}/lib/udev/devices/null c 1 3
  mknod -m 0660 ${pkgdir}/lib/udev/devices/zero c 1 5
  mknod -m 0666 ${pkgdir}/lib/udev/devices/kmsg c 1 11

  ln -snf /proc/self/fd ${pkgdir}/lib/udev/devices/fd
  ln -snf /proc/self/fd/0 ${pkgdir}/lib/udev/devices/stdin
  ln -snf /proc/self/fd/1 ${pkgdir}/lib/udev/devices/stdout
  ln -snf /proc/self/fd/2 ${pkgdir}/lib/udev/devices/stderr
  ln -snf /proc/kcore ${pkgdir}/lib/udev/devices/core

  # these static devices are created for convenience, to autoload the modules if necessary
  # /dev/loop0
  mknod -m 0660 ${pkgdir}/lib/udev/devices/loop0 b 7 0
  chgrp disk ${pkgdir}/lib/udev/devices/loop0
  # /dev/net/tun
  mkdir ${pkgdir}/lib/udev/devices/net
  mknod -m 0666 ${pkgdir}/lib/udev/devices/net/tun c 10 200
  # /dev/fuse
  mknod -m 0666 ${pkgdir}/lib/udev/devices/fuse c 10 229 
  # /dev/ppp
  mknod -m 0600 ${pkgdir}/lib/udev/devices/ppp c 108 0

  # Replace dialout group in rules with uucp group
  for i in $pkgdir/lib/udev/rules.d/*.rules; do
    sed -i -e 's#GROUP="dialout"#GROUP="uucp"#g' $i
  done

  mv "${pkgdir}/lib/girepository-1.0" "${pkgdir}/usr/lib/"
}

package_udev-compat() {
  pkgdesc="The userspace dev tools (udev) - additional rules for older kernels"
  depends=('udev')
  groups=('')
  cd $srcdir/$pkgname-$pkgver
  install -d -m755 ${pkgdir}/lib/${pkgname}/rules.d
  install -D -m644 ${srcdir}/${pkgname}-${pkgver}/rules/misc/30-kernel-compat.rules ${pkgdir}/lib/udev/rules.d/30-kernel-compat.rules
}