]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - spl-modules.spec.in
Simplify rpm build rules, added config/rpm.am.
[FreeBSD/FreeBSD.git] / spl-modules.spec.in
1 # The following block is used to allow the source RPM to be rebuilt 
2 # against specific kernels.  It is preferable that rpmbuild define the
3 # require_kver, require_kdir, require_obj constants for us, but if it does not
4 # not we attempt to determine the correct values based on your distro.
5
6 %{?require_kver: %define kver %{require_kver}}
7 %{?require_kdir: %define kdir %{require_kdir}}
8 %{?require_kobj: %define kobj %{require_kobj}}
9
10 # kdir:    Full path to the kernel source headers
11 # kobj:    Full path to the kernel build objects
12 # kver:    Kernel version
13 # kpkg:    Kernel package name
14 # kdevpkg: Kernel devel package name
15 # kverpkg: Kernel package version
16
17 # SLES*:
18 %if %{defined sles_version}
19  %if %{undefined kver}
20   %define klnk           %{_usrsrc}/linux-obj/%{_target_cpu}/%{_target_cpu}
21   %define kver           %((echo X; %{__cat} %{klnk}/.kernelrelease
22                             2>/dev/null) | tail -1)
23  %endif
24  %define kpkg            kernel-%{_target_cpu}
25  %define kdevpkg         kernel-source kernel-syms
26  %define kverpkg         %(echo %{kver} | cut -d'-' -f1-2)
27  %if %{undefined kdir}
28   %define kdir           %{_usrsrc}/linux-%{kverpkg}
29  %endif
30  %if %{undefined kobj}
31   %define kobj           %{kdir}-obj/%{_target_cpu}/%{_target_cpu}
32  %endif
33
34 # CHAOS4:
35 %else
36 %if %{defined ch4}
37  %if %{undefined kver}
38   %define klnk           %{_usrsrc}/kernels/*/include/config
39   %define kver           %((echo X; %{__cat} %{klnk}/kernel.release
40                             2>/dev/null) | tail -1)
41  %endif
42  %define kpkg            chaos-kernel
43  %define kdevpkg         chaos-kernel-devel
44  %define kverpkg         %{kver}
45  %if %{undefined kdir}
46   %define kdir %{_usrsrc}/kernels/%{kver}
47  %endif
48  %if %{undefined kobj}
49   %define kobj           %{kdir}
50  %endif
51
52 # RHEL*/Fedora:
53 %else
54 %if %{defined fedora} || %{defined rhel}
55  %if %{undefined kver}
56   %define klnk           %{_usrsrc}/kernels/*/include/config
57   %define kver           %((echo X; %{__cat} %{klnk}/kernel.release
58                             2>/dev/null) | tail -1)
59  %endif
60  %define kpkg            kernel
61  %define kdevpkg         kernel-devel
62  %define kverpkg         %(echo %{kver} | cut -d'.' -f1-7)
63  %if %{undefined kdir}
64   %define kdir           %{_usrsrc}/kernels/%{kver}
65  %endif
66  %if %{undefined kobj}
67   %define kobj           %{kdir}
68  %endif
69
70 %else
71
72 # Unsupported distro:
73  %if %{undefined kver}
74   %define kver            X
75  %endif
76  %define kpkg             kernel
77  %define kdevpkg          kernel-devel
78  %define kverpkg          %{kver}
79  %if %{undefined kdir}
80   %define kdir           %{_usrsrc}/kernels/%{kver}
81  %endif
82  %if %{undefined kobj}
83   %define kobj           %{kdir}
84  %endif
85
86 %endif
87 %endif
88 %endif
89
90 # Distro agnostic:
91 %define name             @PACKAGE@-modules
92 %define version          @VERSION@
93 %define debug_package    %{nil}
94
95
96 # The kernel version should only be appended to a binary RPM.  When
97 # building a source RPM it must be kernel version agnostic.  This means
98 # the source RPM must never specify a required kernel version, but the
99 # final RPM should be keyed to the kernel version it was built against.
100 %if %{defined build_src_rpm}
101 %define release          @SPL_META_RELEASE@
102 %define requires         %{kpkg}
103 %else
104 %define relext           %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
105 %define release          @SPL_META_RELEASE@_%{relext}
106 %define requires         %{kpkg} = %{kverpkg}
107 %endif
108
109 Summary:         Solaris Porting Layer Modules
110 Group:           Utilities/System
111 Name:            %{name}
112 Version:         %{version}
113 Release:         %{release}
114 License:         @LICENSE@
115 URL:             git://eris.llnl.gov/spl.git
116 BuildRoot:       %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)
117 Source:          @PACKAGE@-%{version}.tar.gz
118 Requires:        %{requires}
119 BuildRequires:   %{kdevpkg}
120
121 %description
122 The %{name} package contains kernel modules for emulating Solaris style
123 primatives in the linux kernel. These include, but are not limited to:
124 atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock,
125 taskq, thread, time, and vnode APIs.
126
127 %package devel
128 Summary:         Solaris Porting Layer Headers and Symbols
129 Group:           Development/Libraries
130 Requires:        %{requires}
131 BuildRequires:   %{kdevpkg}
132
133 %description devel
134 The %{name}-devel package contains the header files and Module{s}.symvers
135 symbols needed for building additional modules which use %{name}.
136
137 %prep
138 %setup -n @PACKAGE@-%{version}
139 %build
140 %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
141            --with-config=kernel
142 make
143
144 %install
145 rm -rf $RPM_BUILD_ROOT
146 make DESTDIR=$RPM_BUILD_ROOT install
147
148 %clean
149 rm -rf $RPM_BUILD_ROOT
150
151 %files
152 %defattr(-, root, root)
153 /lib/modules/*
154
155 %files devel
156 %defattr(-,root,root)
157 %{_prefix}/src/*
158
159 %post
160 if [ -f /boot/System.map-%{kver} ]; then
161         depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
162 else
163         depmod -ae %{kver} || exit 0
164 fi
165
166 %postun
167 if [ -f /boot/System.map-%{kver} ]; then
168         depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
169 else
170         depmod -ae %{kver} || exit 0
171 fi