Commit 1ceb967f authored by Sam Ravnborg's avatar Sam Ravnborg

[PATCH] fix make rpm

make rpm has been broken in several kernel versions, fix it.  Solves
http://bugme.osdl.org/show_bug.cgi?id=373 which Paolo Ciarrocchi pushed
me to fix.

1) Moved make rpm to the noconfig section, thus allowing it to see
   the clean target.
2) Fixed the commandline for find
3) Use rpmbuild if present
4) In mkspec use the generic all target, and drop the dep target
   This made the build command arch independent
parent 7cfa0dcd
......@@ -194,7 +194,7 @@ depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
noconfig_targets := xconfig menuconfig config oldconfig randconfig \
defconfig allyesconfig allnoconfig allmodconfig \
clean mrproper distclean \
clean mrproper distclean rpm \
help tags TAGS cscope sgmldocs psdocs pdfdocs htmldocs \
checkconfig checkhelp checkincludes
......@@ -571,34 +571,6 @@ define generate-asm-offsets.h
echo "#endif" )
endef
# RPM target
# ---------------------------------------------------------------------------
# If you do a make spec before packing the tarball you can rpm -ta it
spec:
. scripts/mkspec >kernel.spec
# Build a tar ball, generate an rpm from it and pack the result
# There arw two bits of magic here
# 1) The use of /. to avoid tar packing just the symlink
# 2) Removing the .dep files as they have source paths in them that
# will become invalid
rpm: clean spec
find . $(RCS_FIND_IGNORE) \
\( -size 0 -o -name .depend -o -name .hdepend\) \
-type f -print | xargs rm -f
set -e; \
cd $(TOPDIR)/.. ; \
ln -sf $(TOPDIR) $(KERNELPATH) ; \
tar -cvz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/. ; \
rm $(KERNELPATH) ; \
cd $(TOPDIR) ; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > .version ; \
rpm -ta $(TOPDIR)/../$(KERNELPATH).tar.gz ; \
rm $(TOPDIR)/../$(KERNELPATH).tar.gz
else # ifdef include_config
ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
......@@ -630,7 +602,7 @@ ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
# ---------------------------------------------------------------------------
.PHONY: oldconfig xconfig menuconfig config \
make_with_config
make_with_config rpm
scripts/kconfig/conf scripts/kconfig/mconf scripts/kconfig/qconf: scripts/fixdep FORCE
$(Q)$(MAKE) $(build)=scripts/kconfig $@
......@@ -763,6 +735,36 @@ TAGS: FORCE
tags: FORCE
$(call cmd,tags)
# RPM target
# ---------------------------------------------------------------------------
# If you do a make spec before packing the tarball you can rpm -ta it
spec:
. scripts/mkspec >kernel.spec
# Build a tar ball, generate an rpm from it and pack the result
# There arw two bits of magic here
# 1) The use of /. to avoid tar packing just the symlink
# 2) Removing the .dep files as they have source paths in them that
# will become invalid
rpm: clean spec
find . $(RCS_FIND_IGNORE) \
\( -size 0 -o -name .depend -o -name .hdepend \) \
-type f -print | xargs rm -f
set -e; \
cd $(TOPDIR)/.. ; \
ln -sf $(TOPDIR) $(KERNELPATH) ; \
tar -cvz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/. ; \
rm $(KERNELPATH) ; \
cd $(TOPDIR) ; \
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > .version ; \
RPM=`which rpmbuild`; \
if [ -z "$$RPM" ]; then RPM=rpm; fi; \
$$RPM -ta $(TOPDIR)/../$(KERNELPATH).tar.gz ; \
rm $(TOPDIR)/../$(KERNELPATH).tar.gz
# Brief documentation of the typical targets used
# ---------------------------------------------------------------------------
......
......@@ -45,24 +45,18 @@ echo "%prep"
echo "%setup -q"
echo ""
echo "%build"
# This is the first 'disagreement' between x86 and other archs.
if [ $PC = 1 ]; then
echo "make oldconfig dep clean bzImage modules"
else
echo "make oldconfig dep clean vmlinux modules"
fi
# Back on track
echo "make clean oldconfig all"
echo ""
echo "%install"
echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib $RPM_BUILD_ROOT/lib/modules'
echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make modules_install'
# And that's the second
# This is the first disagreement between i386 and most others
if [ $PC = 1 ]; then
echo 'cp arch/i386/boot/bzImage $RPM_BUILD_ROOT'"/boot/vmlinuz-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
else
echo 'cp vmlinux $RPM_BUILD_ROOT'"/boot/vmlinux-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
fi
# Back on track, again
# Back on track
echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
echo 'cp .config $RPM_BUILD_ROOT'"/boot/config-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
echo ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment