[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#324748: Improved localudebs handling



Package: debian-installer
Severity: minor
Tags: patch

During testing builds for sparc64 dual boot (2.6 and 2.4) I ran into a 
problem with the handling in localudebs: kernel udebs that are marked as 
optional are skipped by pkg-list if they are only available from 
localudebs (and not apt-gettable).

I also noticed the wishlist item about making an apt source of localudebs, 
and the attached patch will do that.

I've used dpkg-scanpackages (from dpkg-dev) to create a Packages.gz and 
set it so that Packages.gz will be recreated if a rebuild is called or 
after a clean.
If there are no localudebs, that file will be empty; this works.
A sources line for localudebs is always added to sources.list.udeb.

Please check the changes in Makefile, as my skills there are extremely 
basic.

TODO:
- maybe localudebs support can be removed in some other places now,
  but it seemed that that would take them out of "needed" lists which
  would change behavior.
- I noticed config/dir has "LOCALUDEBDIR = localudebs", but this is
  not actually used in the Makefile or anywhere...
- add dpkg-dev to build dependencies

Index: Makefile
===================================================================
--- Makefile	(revision 30142)
+++ Makefile	(working copy)
@@ -231,6 +231,7 @@
 	rm -f $(TEMP)/diskusage.txt
 	rm -f $(TEMP)/all.utf
 	rm -f $(TEMP)/unifont.bdf $(TREE)/lib/unifont.bgf
+	rm -f localudebs/Packages.gz
 	rm -f pkg-lists/standard-udebs pkg-lists/kernel-module-udebs
 	rm -rf $(TARGET)
 	rm -rf $(TEMP)
@@ -500,16 +501,21 @@
 UDEBS = $(shell set -e; get-packages udeb update >&2; pkg-list $(TYPE) "$(DRIVER_FOR)" $(KERNEL_FLAVOUR) $(KERNELMAJOR) "$(SUBARCH)" $(KERNELIMAGEVERSION)) $(EXTRAS)
 
 # Get all required udebs and put them in UDEBDIR.
-$(STAMPS)get_udebs-$(targetstring)-stamp: sources.list.udeb
+$(STAMPS)get_udebs-$(targetstring)-stamp: localudebs/Packages.gz sources.list.udeb
 	dh_testroot
 	@rm -f $@
 	get-packages udeb $(UDEBS)
 	@touch $@
 
+localudebs/Packages.gz:
+	# rebuild Packages.gz for localudebs
+	dpkg-scanpackages -u localudebs /dev/null | gzip >localudebs/Packages.gz
+
 # Auto-generate a sources.list.type
 sources.list.udeb:
 	(set -e; \
 	echo "# This file is automatically generated, edit $@.local instead."; \
+	echo "deb file:$$(pwd)/ localudebs/"; \
 	if [ "$(MIRROR)x" != "x" ]; then \
 		echo "deb $(MIRROR) $(SUITE) main/debian-installer"; \
 	else \

Attachment: pgp_zHZ4toenD.pgp
Description: PGP signature


Reply to: