]> git.pld-linux.org Git - SPECS.git/blob - umlinux.spec
SPECS updated Wed 28 Jul 14:48:01 CEST 2021
[SPECS.git] / umlinux.spec
1 # TODO
2 # - module-build and source subpackages
3 # - does not build:
4 #   LD      .tmp_vmlinux1
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
10 #   No valid symbol.
11
12 %define basever 2.6.27
13 %define postver .25
14 %define alt_kernel uml
15 Summary:        User Mode Linux
16 Summary(pl.UTF-8):      Linux w przestrzeni użytkownika
17 Name:           umlinux
18 Version:        %{basever}%{postver}
19 Release:        0.1
20 Epoch:          0
21 License:        GPL
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)
30
31 %define         localversion %{release}
32 %define         kernel_release %{version}-%{alt_kernel}-%{localversion}
33
34 %define         defconfig       arch/um/defconfig
35
36 %define         topdir          %{_builddir}/%{name}-%{version}
37 %define         srcdir          %{topdir}/linux-%{basever}
38
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
42
43 %define         _kernelsrcdir   /usr/src/linux-%{version}-%{alt_kernel}
44
45 %define CrossOpts ARCH=um LDFLAGS=-L/lib CC="%{__cc}"
46
47 %description
48 User Mode Linux.
49
50 %description -l pl.UTF-8
51 Linux w przestrzeni użytkownika.
52
53 %package modules
54 Summary:        User Mode Linux modules
55 Summary(pl.UTF-8):      Moduły Linuksa w przestrzeni użytkownika
56 Group:          Applications/Emulators
57
58 %description modules
59 Modules for User Mode Linux.
60
61 %description modules -l pl.UTF-8
62 Moduły Linuksa w przestrzeni użytkownika.
63
64 %package doc
65 Summary:        Linux documentaion
66 Summary(pl.UTF-8):      Dokumentacja Linuksa
67 Group:          Documentation
68
69 %description doc
70 Linux documentation.
71
72 %description doc -l pl.UTF-8
73 Dokumentacja systemu Linux.
74
75 %prep
76 %setup -qc
77
78 cd linux-%{basever}
79
80 %if "%{postver}" != "%{nil}"
81 %{__bzip2} -dc %{SOURCE1} | patch -p1 -s
82 %endif
83
84 # Fix EXTRAVERSION in main Makefile
85 sed -i 's#EXTRAVERSION =.*#EXTRAVERSION = %{postver}-%{alt_kernel}#g' Makefile
86
87 # cleanup backups after patching
88 find '(' -name '*~' -o -name '*.orig' -o -name '.gitignore' ')' -print0 | xargs -0 -r -l512 rm -f
89
90 %build
91
92 cd linux-%{basever}
93
94 BuildConfig() {
95         %{?debug:set -x}
96         cat $RPM_SOURCE_DIR/umlinux-config > %{defconfig}
97
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}}
102
103 }
104
105 BuildKernel() {
106         %{?debug:set -x}
107         echo "Building kernel $1 ..."
108         %{__make} %CrossOpts mrproper \
109                 RCS_FIND_IGNORE='-name build-done -prune -o'
110         ln -sf %{defconfig} .config
111
112         %{__make} %CrossOpts clean \
113                 RCS_FIND_IGNORE='-name build-done -prune -o'
114         %{__make} %CrossOpts include/linux/version.h \
115                 %{?with_verbose:V=1}
116
117         %{__make} %CrossOpts scripts/mkcompile_h \
118                 %{?with_verbose:V=1}
119
120         %{__make} %CrossOpts \
121                 %{?with_verbose:V=1}
122 }
123
124 PreInstallKernel() {
125         %{__make} %CrossOpts modules_install \
126                 %{?with_verbose:V=1} \
127                 DEPMOD=%DepMod \
128                 INSTALL_MOD_PATH=$KERNEL_INSTALL_DIR \
129                 KERNELRELEASE=%{kernel_release}
130
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
134
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} || :
138         fi
139         touch $KERNEL_INSTALL_DIR/lib/modules/%{kernel_release}/modules.dep
140         echo "KERNEL RELEASE %{kernel_release} DONE"
141 }
142
143 KERNEL_BUILD_DIR=`pwd`
144 echo "-%{localversion}" > localversion
145
146 KERNEL_INSTALL_DIR="$KERNEL_BUILD_DIR/build-done/kernel"
147 rm -rf $KERNEL_INSTALL_DIR
148 BuildConfig
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
155 install .config \
156         $KERNEL_INSTALL_DIR%{_kernelsrcdir}/config-dist
157 BuildKernel
158 PreInstallKernel
159
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}
164
165 %install
166 rm -rf $RPM_BUILD_ROOT
167
168 install -d $RPM_BUILD_ROOT{%{_bindir},/lib/modules/%{kernel_release}/misc,%{_kernelsrcdir}}
169
170 cd linux-%{basever}
171 install linux $RPM_BUILD_ROOT%{_bindir}/linux
172 %{__make} ARCH=um modules_install INSTALL_MOD_PATH=$RPM_BUILD_ROOT
173
174 cp -a Documentation $RPM_BUILD_ROOT%{_kernelsrcdir}/Documentation
175
176 cd %{topdir}/linux-%{basever}
177
178 %post modules
179 %depmod %{kernel_release}
180
181 %clean
182 rm -rf $RPM_BUILD_ROOT
183
184 %files
185 %defattr(644,root,root,755)
186 %attr(755,root,root) %{_bindir}/linux
187
188 %files modules
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.*
194
195 %files doc
196 %defattr(644,root,root,755)
197 %{_kernelsrcdir}/Documentation
This page took 1.428839 seconds and 3 git commands to generate.