Initital import (769832)

This commit is contained in:
Jon Masters 2011-12-23 02:12:52 -05:00
parent 7a3238ce4a
commit d6f4ce67e5
4 changed files with 238 additions and 0 deletions

1
.gitignore vendored
View File

@ -0,0 +1 @@
/kmod-2.tar.xz

View File

@ -0,0 +1,106 @@
diff -urNp kmod-2_orig/configure kmod-2/configure
--- kmod-2_orig/configure 2011-12-20 20:48:00.170160687 -0500
+++ kmod-2/configure 2011-12-22 19:39:11.899001373 -0500
@@ -621,6 +621,7 @@ required_private_libs
zlib_libs
BUILD_TOOLS_FALSE
BUILD_TOOLS_TRUE
+rootlibdir
rootprefix
OTOOL64
OTOOL
@@ -745,6 +746,7 @@ with_gnu_ld
with_sysroot
enable_libtool_lock
with_rootprefix
+with_rootlibdir
enable_tools
enable_logging
enable_zlib
@@ -1405,6 +1407,7 @@ Optional Packages:
(or the compiler's sysroot if not specified).
--with-rootprefix=DIR rootfs directory prefix for config files and kernel
modules
+ --with-rootlibdir=DIR rootfs directory to install shared libraries
Some influential environment variables:
CC C compiler command
@@ -13233,6 +13236,17 @@ fi
rootprefix=$with_rootprefix
+
+# Check whether --with-rootlibdir was given.
+if test "${with_rootlibdir+set}" = set; then :
+ withval=$with_rootlibdir;
+else
+ with_rootlibdir=$libdir
+fi
+
+rootlibdir=$with_rootlibdir
+
+
# Check whether --enable-tools was given.
if test "${enable_tools+set}" = set; then :
enableval=$enable_tools;
@@ -15828,6 +15842,7 @@ fi
rootprefix: ${rootprefix}
sysconfdir: ${sysconfdir}
libdir: ${libdir}
+ rootlibdir: ${rootlibdir}
includedir: ${includedir}
bindir: ${bindir}
@@ -15848,6 +15863,7 @@ $as_echo "
rootprefix: ${rootprefix}
sysconfdir: ${sysconfdir}
libdir: ${libdir}
+ rootlibdir: ${rootlibdir}
includedir: ${includedir}
bindir: ${bindir}
diff -urNp kmod-2_orig/configure.ac kmod-2/configure.ac
--- kmod-2_orig/configure.ac 2011-12-20 20:36:37.036701029 -0500
+++ kmod-2/configure.ac 2011-12-22 19:39:11.980007591 -0500
@@ -32,6 +32,11 @@ AC_ARG_WITH([rootprefix],
[], [with_rootprefix=""])
AC_SUBST([rootprefix], [$with_rootprefix])
+AC_ARG_WITH([rootlibdir],
+ AS_HELP_STRING([--with-rootlibdir=DIR], [rootfs directory to install shared libraries]),
+ [], [with_rootlibdir=$libdir])
+AC_SUBST([rootlibdir], [$with_rootlibdir])
+
AC_ARG_ENABLE([tools],
AS_HELP_STRING([--disable-tools], [disable building tools that provide same functionality as module-init-tools @<:@default=enabled@:>@]),
[], enable_tools=yes)
@@ -134,6 +139,7 @@ AC_MSG_RESULT([
rootprefix: ${rootprefix}
sysconfdir: ${sysconfdir}
libdir: ${libdir}
+ rootlibdir: ${rootlibdir}
includedir: ${includedir}
bindir: ${bindir}
diff -urNp kmod-2_orig/Makefile.am kmod-2/Makefile.am
--- kmod-2_orig/Makefile.am 2011-12-20 20:36:21.337897292 -0500
+++ kmod-2/Makefile.am 2011-12-22 19:39:11.980007591 -0500
@@ -53,6 +53,18 @@ libkmod_libkmod_la_LIBADD = @zlib_libs@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libkmod/libkmod.pc
+install-exec-hook:
+ if test "$(libdir)" != "$(rootlibdir)"; then \
+ mkdir -p $(DESTDIR)$(rootlibdir) && \
+ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libkmod.so) && \
+ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \
+ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libkmod.so && \
+ mv $(DESTDIR)$(libdir)/libkmod.so.* $(DESTDIR)$(rootlibdir); \
+ fi
+
+uninstall-hook:
+ rm -f $(DESTDIR)$(rootlibdir)/libkmod.so*
+
if BUILD_TOOLS
bin_PROGRAMS = tools/kmod-insmod tools/kmod-rmmod tools/kmod-lsmod \
tools/kmod-modprobe tools/kmod-modinfo

130
kmod.spec Normal file
View File

@ -0,0 +1,130 @@
Name: kmod
Version: 2
Release: 4%{?dist}
Summary: Linux kernel module management utilities
Group: System Environment/Kernel
License: GPLv2+
#TODO: Change the following URLs once there is wiki write access
#URL: http://modules.wiki.kernel.org/
URL: http://git.profusion.mobi/cgit.cgi/kmod.git/
#TODO: The following URL will be moving to kernel.org eventually
Source0: http://packages.profusion.mobi/kmod/%{name}-%{version}.tar.xz
Patch0: kmod-2-with-rootlibdir.patch
Exclusiveos: Linux
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: zlib-devel chrpath
# TODO: Investigate the following and determine prefered policy guide
# Fedora Renaming/Replacing Existing Packages policy (review/FIXME)
#Provides: module-init-tools = 4.0-1
#Obsoletes: module-init-tools < 4.0-1
%description
The kmod package provides various programs needed for automatic
loading and unloading of modules under 2.6, 3.x, and later kernels, as well
as other module management programs. Device drivers and filesystems are two
examples of loaded and unloaded modules.
%package libs
Summary: Libraries to handle kernel module loading and unloading
License: LGPLv2+
Group: System Environment/Libraries
%description libs
The kmod-libs package provides runtime libraries for any application that
wishes to load or unload Linux kernel modules from the running system.
%package devel
Summary: Header files for kmod development
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
The kmod-devel package provides header files used for development of
applications that wish to load or unload Linux kernel modules.
%prep
%setup -q
%patch0 -p1 -b .rootlibdir
%build
# Initially configure into /sbin in line with existing tools. This may well
# move into /usr as part of the planned changes to filesystem layout soon.
%configure --disable-static --bindir=/bin --with-rootlibdir=/%{_lib}
make %{?_smp_mflags}
# TODO: add a doc target here
%install
rm -rf $RPM_BUILD_ROOT
# TODO: Initially these are installed in /sbin like module-init-tools
# TODO: That *cannot* change for the moment (but explicitly noted here)
make install DESTDIR=$RPM_BUILD_ROOT
rm -rf $RPM_BUILD_ROOT%{_libdir}/*.la
# TODO: Fix the upstream rpath issues to avoid doing this (just for now)
chrpath --delete $RPM_BUILD_ROOT/bin/kmod-insmod
chrpath --delete $RPM_BUILD_ROOT/bin/kmod-lsmod
chrpath --delete $RPM_BUILD_ROOT/bin/kmod-modinfo
chrpath --delete $RPM_BUILD_ROOT/bin/kmod-modprobe
chrpath --delete $RPM_BUILD_ROOT/bin/kmod-rmmod
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
# New configuration files we ship (if any) should go into /lib/modprobe.d
# in order to allow the local sysadmin to customize /etc/modprobe.d
# NOTE: These do not use macros because we always want "/lib" (no multilib)
mkdir -p $RPM_BUILD_ROOT/lib
mkdir -p $RPM_BUILD_ROOT/lib/modprobe.d
mkdir -p $RPM_BUILD_ROOT/etc/depmod.d
# We used to create a depmod "dist.conf" but do not use that any more
%clean
rm -rf $RPM_BUILD_ROOT
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
# TODO: Add documentation files and man pages
%dir %{_sysconfdir}/depmod.d
%dir %{_sysconfdir}/modprobe.d
# NOTE: always /lib even on systems with /lib64 (there is no macro available)
%dir /lib/modprobe.d
/bin/kmod-insmod
/bin/kmod-lsmod
/bin/kmod-modinfo
/bin/kmod-modprobe
/bin/kmod-rmmod
%doc NEWS README TODO COPYING
%files libs
/%{_lib}/libkmod.so*
%files devel
%{_includedir}/libkmod.h
%{_libdir}/pkgconfig/libkmod.pc
/%{_libdir}/libkmod.so*
%changelog
* Thu Dec 22 2011 Jon Masters <jcm@jonmasters.org> - 2-4
- There is no generic macro for non-multilib "/lib", hardcode like others
* Thu Dec 22 2011 Jon Masters <jcm@jonmasters.org> - 2-3
- Update package incorporating fixes from initial review feedback
- Cleaups to SPEC, rpath, documentation, library and binary locations
* Thu Dec 22 2011 Jon Masters <jcm@jonmasters.org> - 2-2
- Update package for posting to wider test audience (initial review submitted)
* Thu Dec 22 2011 Jon Masters <jcm@jonmasters.org> - 2-1
- Initial Fedora package for module-init-tools replacement (kmod) library

View File

@ -0,0 +1 @@
6017364434377f6724f749d7a28c5d7a kmod-2.tar.xz