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

Bug#492861: Progress bar rewinds when running pre-pkgsel.d/10popcon



On Wed, Aug 20, 2008 at 07:41:05AM +0200, Frans Pop wrote:
> Attached (tested) patch is what I had in mind (based on similar code in 
> base-installer). It assigns 1% of the progress bar to each hook script 
> with a maximum of 10% for all hook scripts. For popcon I've just dropped 
> the advancement of the progress bar by d-a-p as it's not really worth it 
> anyway.

Both sounds good to me. :)

> The patch, even though fairly big, is IMO the least invasive way to fix 
> the issue while preserving relevant existing functionality. […]

Attached you will find a broken down version of your patch (result is
identical after applying them all).

After breaking it down, the patch do not appear so big and I would
be in favour of commiting these changes.

Cheers,
-- 
Jérémy Bobbio                        .''`. 
lunar@debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
commit 5dfbe010b93d2eea9df39f16937409e60e35e45e
Author: Jérémy Bobbio <lunar@debian.org>
Date:   Wed Aug 20 14:53:50 2008 +0000

    Drop the advancement of the progress bar in pre-pkgsel.d/10popcon
    
    (Closes: #492861)

diff --git a/packages/pkgsel/debian/changelog b/packages/pkgsel/debian/changelog
index 90361c5..a524861 100644
--- a/packages/pkgsel/debian/changelog
+++ b/packages/pkgsel/debian/changelog
@@ -5,6 +5,8 @@ pkgsel (0.22) UNRELEASED; urgency=low
     incompatible with the Etch version of aptitude. Closes: #492593.
   * There is no need to run debconf-apt-progress --config as in-target already
     sets the correct environment.
+  * Drop the advancement of the progress bar in pre-pkgsel.d/10popcon.
+    (Closes: #492861)
 
   [ Jérémy Bobbio ]
   * Add missing warning() definition in postinst script.
diff --git a/packages/pkgsel/pre-pkgsel.d/10popcon b/packages/pkgsel/pre-pkgsel.d/10popcon
index fbee737..1110a06 100755
--- a/packages/pkgsel/pre-pkgsel.d/10popcon
+++ b/packages/pkgsel/pre-pkgsel.d/10popcon
@@ -4,7 +4,7 @@ set -e
 
 # Install popularity-contest but remove it if the user decides not to
 # participate.
-if in-target sh -c "debconf-apt-progress --from 1 --to 5 --logstderr -- apt-get -o APT::Install-Recommends=false -q -y -f install popularity-contest"; then
+if in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -o APT::Install-Recommends=false -q -y -f install popularity-contest"; then
 	if ! grep -q '^PARTICIPATE=\"*yes\"*' /target/etc/popularity-contest.conf; then
 		in-target dpkg --purge popularity-contest
 	fi

commit 5308acf67887a1d23426564b4a4acf33b0fd0a07
Author: Jérémy Bobbio <lunar@debian.org>
Date:   Wed Aug 20 14:40:33 2008 +0000

    Fix style in pkgsel postinst

diff --git a/packages/pkgsel/debian/postinst b/packages/pkgsel/debian/postinst
index 4a90f14..76926a0 100755
--- a/packages/pkgsel/debian/postinst
+++ b/packages/pkgsel/debian/postinst
@@ -15,7 +15,7 @@ warning() {
 	log "warning: $@"
 }
 
-cleanup () {
+cleanup() {
 	for divert in $DIVERTS; do
 		rm -f "/target$divert"
 		log-output -t pkgsel chroot /target dpkg-divert \
@@ -23,7 +23,7 @@ cleanup () {
 	done
 }
 
-aptfailed () {
+aptfailed() {
 	ret=$?
 	if [ "$ret" != 0 ]; then
 		# In case packages failed to install, try to clean up.
@@ -92,13 +92,13 @@ fi
 
 partsdir="/usr/lib/pre-pkgsel.d"
 if [ -d "$partsdir" ]; then
-	for script in `ls "$partsdir"/* 2>/dev/null`; do
+	for script in $(ls "$partsdir"/* 2>/dev/null); do
 		base=$(basename $script | sed 's/[0-9]*//')
 		if ! db_progress INFO pkgsel/progress/$base; then
 			db_subst pkgsel/progress/fallback SCRIPT "$base"
 			db_progress INFO pkgsel/progress/fallback
 		fi
-		if [ -x "$script" ] ; then
+		if [ -x "$script" ]; then
 			# be careful to preserve exit code
 			if log-output -t pkgsel "$script"; then
 				:

commit 439b9236cda2cd821c2dd89a7a69f2be5ebacae1
Author: Jérémy Bobbio <lunar@debian.org>
Date:   Wed Aug 20 14:45:52 2008 +0000

    Multiply progress steps by 10 in pkgsel postinst
    
    This will make room for stepping the progress bar when running
    pre-pkgsel.d scripts.

diff --git a/packages/pkgsel/debian/changelog b/packages/pkgsel/debian/changelog
index a524861..9dd94cd 100644
--- a/packages/pkgsel/debian/changelog
+++ b/packages/pkgsel/debian/changelog
@@ -7,6 +7,7 @@ pkgsel (0.22) UNRELEASED; urgency=low
     sets the correct environment.
   * Drop the advancement of the progress bar in pre-pkgsel.d/10popcon.
     (Closes: #492861)
+  * Multiply progress steps by 10 in postinst script.
 
   [ Jérémy Bobbio ]
   * Add missing warning() definition in postinst script.
diff --git a/packages/pkgsel/debian/postinst b/packages/pkgsel/debian/postinst
index 76926a0..f56164a 100755
--- a/packages/pkgsel/debian/postinst
+++ b/packages/pkgsel/debian/postinst
@@ -46,7 +46,7 @@ load_install_cd() {
 	fi
 }
 
-db_progress START 0 100 debian-installer/pkgsel/title
+db_progress START 0 1000 debian-installer/pkgsel/title
 db_progress INFO pkgsel/progress/init
 
 # d-i debconf variables used by packages
@@ -61,7 +61,7 @@ for divert in $DIVERTS; do
 	ln -sf /bin/true "/target$divert"
 done
 
-db_progress STEP 1
+db_progress STEP 10
 
 # Unmount the installation CD to allow CD changing; as it may be needed
 # again after pkgsel, make sure it is reloaded before exiting
@@ -80,14 +80,14 @@ suite=$RET
 
 db_get pkgsel/upgrade
 if [ "$RET" = none ] || [ "$suite" = etch ]; then
-	tasksel_start=5
+	tasksel_start=50
 else
 	upgrade_type="$RET"
 	db_progress INFO pkgsel/progress/upgrade
 	sleep 2 # allow the message to be seen
 
-	in-target sh -c "debconf-apt-progress --from 5 --to 10 --logstderr -- aptitude -q --without-recommends -y -o DPkg::options=--force-confnew '$upgrade_type'" || aptfailed
-	tasksel_start=10
+	in-target sh -c "debconf-apt-progress --from 50 --to 100 --logstderr -- aptitude -q --without-recommends -y -o DPkg::options=--force-confnew '$upgrade_type'" || aptfailed
+	tasksel_start=100
 fi
 
 partsdir="/usr/lib/pre-pkgsel.d"
@@ -113,9 +113,9 @@ fi
 
 db_get pkgsel/include
 if [ "$RET" ]; then
-	tasksel_end=90
+	tasksel_end=900
 else
-	tasksel_end=95
+	tasksel_end=950
 fi
 
 db_progress INFO pkgsel/progress/tasksel
@@ -126,7 +126,7 @@ if [ "$RET" ]; then
 	# Allow comma-separation so that this can more easily be preseeded
 	# at the kernel command line.
 	RET="$(printf '%s' "$RET" | sed 's/,/ /g')"
-	in-target sh -c "debconf-apt-progress --from 90 --to 95 --logstderr -- aptitude -q --without-recommends -y install -- $RET" || aptfailed
+	in-target sh -c "debconf-apt-progress --from 900 --to 950 --logstderr -- aptitude -q --without-recommends -y install -- $RET" || aptfailed
 fi
 
 db_progress INFO pkgsel/progress/cleanup
@@ -134,7 +134,7 @@ if ! cleanup; then
 	log "cleanup failed"
 fi
 
-db_progress STEP 2
+db_progress STEP 20
 
 if [ -x /target/usr/bin/scrollkeeper-update ]; then
 	log-output -t pkgsel chroot /target scrollkeeper-update -q || true
@@ -144,7 +144,7 @@ if [ -x /target/usr/bin/fc-cache ]; then
 		|| true
 fi
 
-db_progress STEP 3
+db_progress STEP 30
 db_progress STOP
 
 load_install_cd

commit 21f53b1a904c065f1b5eda3c31c2e7ff5d9b48d3
Author: Jérémy Bobbio <lunar@debian.org>
Date:   Wed Aug 20 14:50:07 2008 +0000

    Advance progress bar when running pre-pkgsel.d scripts

diff --git a/packages/pkgsel/debian/changelog b/packages/pkgsel/debian/changelog
index 9dd94cd..3c31606 100644
--- a/packages/pkgsel/debian/changelog
+++ b/packages/pkgsel/debian/changelog
@@ -8,6 +8,7 @@ pkgsel (0.22) UNRELEASED; urgency=low
   * Drop the advancement of the progress bar in pre-pkgsel.d/10popcon.
     (Closes: #492861)
   * Multiply progress steps by 10 in postinst script.
+  * Advance progress bar when running pre-pkgsel.d scripts.
 
   [ Jérémy Bobbio ]
   * Add missing warning() definition in postinst script.
diff --git a/packages/pkgsel/debian/postinst b/packages/pkgsel/debian/postinst
index f56164a..ff7b6af 100755
--- a/packages/pkgsel/debian/postinst
+++ b/packages/pkgsel/debian/postinst
@@ -92,6 +92,16 @@ fi
 
 partsdir="/usr/lib/pre-pkgsel.d"
 if [ -d "$partsdir" ]; then
+	scriptcount=$(ls "$partsdir"/* 2>/dev/null | wc -l)
+	if [ $scriptcount -lt 10 ]; then
+		scripts_range=$(($scriptcount * 10))
+	else
+		scripts_range=100
+	fi
+	scripts_start=$tasksel_start
+	tasksel_start=$(($scripts_start + $scripts_range))
+
+	scriptcur=0
 	for script in $(ls "$partsdir"/* 2>/dev/null); do
 		base=$(basename $script | sed 's/[0-9]*//')
 		if ! db_progress INFO pkgsel/progress/$base; then
@@ -108,6 +118,10 @@ if [ -d "$partsdir" ]; then
 		else
 			error "Unable to execute $script"
 		fi
+
+		# Advance progress bar
+		scriptcur=$(($scriptcur + 1))
+		db_progress SET $(($scripts_start + $scripts_range * $scriptcur / $scriptcount))
 	done
 fi
 

Attachment: signature.asc
Description: Digital signature


Reply to: