2 # - module-build and source subpackages
5 # /usr/bin/ld:arch/um/kernel/vmlinux.lds:1: ignoring invalid character `#' in expression
6 # /usr/bin/ld:arch/um/kernel/vmlinux.lds:1: syntax error
7 # collect2: ld returned 1 exit status
8 # KSYM .tmp_kallsyms1.S
9 # nm: '.tmp_vmlinux1': No such file
12 %define basever 2.6.27
14 %define alt_kernel uml
15 Summary: User Mode Linux
16 Summary(pl.UTF-8): Linux w przestrzeni użytkownika
18 Version: %{basever}%{postver}
22 Group: Applications/Emulators
23 Source0: http://www.kernel.org/pub/linux/kernel/v2.6/linux-%{basever}.tar.bz2
24 # Source0-md5: b3e78977aa79d3754cb7f8143d7ddabd
25 Source1: http://www.kernel.org/pub/linux/kernel/v2.6/patch-%{version}.bz2
26 # Source1-md5: 53981d997d85d4a65e086fd1cada61a0
27 Source2: %{name}-config
28 URL: http://user-mode-linux.sourceforge.net/
29 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
31 %define localversion %{release}
32 %define kernel_release %{version}-%{alt_kernel}-%{localversion}
34 %define defconfig arch/um/defconfig
36 %define topdir %{_builddir}/%{name}-%{version}
37 %define srcdir %{topdir}/linux-%{basever}
39 %define CommonOpts HOSTCC="%{kgcc}" HOSTCFLAGS="-Wall -Wstrict-prototypes %{rpmcflags} -fomit-frame-pointer"
40 %define MakeOpts %{CommonOpts} ARCH=um CC="%{kgcc}" LDFLAGS=-L/lib
41 %define DepMod /bin/true
43 %define _kernelsrcdir /usr/src/linux-%{version}-%{alt_kernel}
45 %define CrossOpts ARCH=um LDFLAGS=-L/lib CC="%{__cc}"
50 %description -l pl.UTF-8
51 Linux w przestrzeni użytkownika.
54 Summary: User Mode Linux modules
55 Summary(pl.UTF-8): Moduły Linuksa w przestrzeni użytkownika
56 Group: Applications/Emulators
59 Modules for User Mode Linux.
61 %description modules -l pl.UTF-8
62 Moduły Linuksa w przestrzeni użytkownika.
65 Summary: Linux documentaion
66 Summary(pl.UTF-8): Dokumentacja Linuksa
72 %description doc -l pl.UTF-8
73 Dokumentacja systemu Linux.
80 %if "%{postver}" != "%{nil}"
81 %{__bzip2} -dc %{SOURCE1} | patch -p1 -s
84 # Fix EXTRAVERSION in main Makefile
85 sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{postver}-%{alt_kernel}#g' Makefile
87 # cleanup backups after patching
88 find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
96 cat $RPM_SOURCE_DIR/umlinux-config > %{defconfig}
98 %{?debug:sed -i "s:# CONFIG_DEBUG_SLAB is not set:CONFIG_DEBUG_SLAB=y:" %{defconfig}}
99 %{?debug:sed -i "s:# CONFIG_DEBUG_SLAB_LEAK is not set:CONFIG_DEBUG_SLAB_LEAK=y:" %{defconfig}}
100 %{?debug:sed -i "s:# CONFIG_DEBUG_PREEMPT is not set:CONFIG_DEBUG_PREEMPT=y:" %{defconfig}}
101 %{?debug:sed -i "s:# CONFIG_RT_DEADLOCK_DETECT is not set:CONFIG_RT_DEADLOCK_DETECT=y:" %{defconfig}}
107 echo "Building kernel $1 ..."
108 %{__make} %CrossOpts mrproper \
109 RCS_FIND_IGNORE='-name build-done -prune -o'
110 ln -sf %{defconfig} .config
112 %{__make} %CrossOpts clean \
113 RCS_FIND_IGNORE='-name build-done -prune -o'
114 %{__make} %CrossOpts include/linux/version.h \
117 %{__make} %CrossOpts scripts/mkcompile_h \
120 %{__make} %CrossOpts \
125 %{__make} %CrossOpts modules_install \
126 %{?with_verbose:V=1} \
128 INSTALL_MOD_PATH=$KERNEL_INSTALL_DIR \
129 KERNELRELEASE=%{kernel_release}
131 # You'd probabelly want to make it somewhat different
132 install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}
133 install Module.symvers $KERNEL_INSTALL_DIR%{_kernelsrcdir}/Module.symvers-dist
135 echo "CHECKING DEPENDENCIES FOR KERNEL MODULES"
136 if [ %DepMod = /sbin/depmod ]; then
137 /sbin/depmod --basedir $KERNEL_INSTALL_DIR -ae -F $KERNEL_INSTALL_DIR/boot/System.map-%{kernel_release} -r %{kernel_release} || :
139 touch $KERNEL_INSTALL_DIR/lib/modules/%{kernel_release}/modules.dep
140 echo "KERNEL RELEASE %{kernel_release} DONE"
143 KERNEL_BUILD_DIR=`pwd`
144 echo "-%{localversion}" > localversion
146 KERNEL_INSTALL_DIR="$KERNEL_BUILD_DIR/build-done/kernel"
147 rm -rf $KERNEL_INSTALL_DIR
149 ln -sf %{defconfig} .config
150 install -d $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux
151 rm -f include/linux/autoconf.h
152 %{__make} %CrossOpts include/linux/autoconf.h
153 install include/linux/autoconf.h \
154 $KERNEL_INSTALL_DIR%{_kernelsrcdir}/include/linux/autoconf-dist.h
156 $KERNEL_INSTALL_DIR%{_kernelsrcdir}/config-dist
160 %{__make} %CrossOpts include/linux/utsrelease.h
161 cp include/linux/utsrelease.h{,.save}
162 cp include/linux/version.h{,.save}
163 cp scripts/mkcompile_h{,.save}
166 rm -rf $RPM_BUILD_ROOT
168 install -d $RPM_BUILD_ROOT{%{_bindir},/lib/modules/%{kernel_release}/misc,%{_kernelsrcdir}}
171 install linux $RPM_BUILD_ROOT%{_bindir}/linux
172 %{__make} ARCH=um modules_install INSTALL_MOD_PATH=$RPM_BUILD_ROOT
174 cp -a Documentation $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
176 cd %{topdir}/linux-%{basever}
179 %depmod %{kernel_release}
182 rm -rf $RPM_BUILD_ROOT
185 %defattr(644,root,root,755)
186 %attr(755,root,root) %{_bindir}/linux
189 %defattr(644,root,root,755)
190 %dir /lib/modules/%{kernel_release}
191 /lib/modules/%{kernel_release}/kernel
192 /lib/modules/%{kernel_release}/misc
193 %ghost /lib/modules/%{kernel_release}/modules.*
196 %defattr(644,root,root,755)
197 %{_kernelsrcdir}/Documentation