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

Bug#1035745: marked as done (unblock: dash/0.5.12-4 (preapproval))



Your message dated Wed, 24 May 2023 16:14:02 +0200
with message-id <440f93c3-69cf-a151-b1cd-c9ceb4fb9e6d@debian.org>
and subject line Re: Bug#1035745: unblock: dash/0.5.12-4 (preapproval)
has caused the Debian Bug report #1035745,
regarding unblock: dash/0.5.12-4 (preapproval)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1035745: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1035745
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-debbugs-CC: andrew.shadura@collabora.co.uk

Dear Release Team,

Filing this on request of the dash maintainer. We have recently
implemented a much needed cleanup that removes an unnecessary diversion
on /bin/sh, that makes the essential set nice and clean and diversion-
free, so that it can be set up without complex machinery.

This cleanup has been uploaded last week to experimental with
dash/0.5.12-3. We have tested it and cannot see any issues with it. The
autopkgtest has been enhanced to cover the case, and a new job testing
the downgrade/upgrade paths has been added to Salsa CI.

Given it simplifies an essential package, it is my opinion that it
would be beneficial to ship this in Bookworm, hence we are filing this
book to gather your feedback.

There is one ulterior advantage: in case we decide to finish the
usrmerge transition in Trixie via diverts, this is a necessary fix for
that to work, so having this in place already in Bookworm would make
things easier on that too, in case we go down that path. [1]

dash ticket: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989632

Debdiff from current bookworm to the version in experimental attached.
Note that 0.5.12-4 does not exist yet as this is a pre-approval
request, but it would be a changelog-only upload. The only changes in
the debdiff are in the maintainer scripts to drop the diversion, and in
the added autopkgtest to cover it.

[1] https://lists.debian.org/debian-devel/2023/04/msg00008.html

-- 
Kind regards,
Luca Boccassi
diff -Nru dash-0.5.12/debian/changelog dash-0.5.12/debian/changelog
--- dash-0.5.12/debian/changelog	2023-01-05 13:20:48.000000000 +0000
+++ dash-0.5.12/debian/changelog	2023-04-30 14:53:24.000000000 +0100
@@ -1,3 +1,19 @@
+dash (0.5.12-3) experimental; urgency=medium
+
+  [ Andrej Shadura ]
+  * Fix bug number in the patch description
+
+  [ Helmut Grohne ]
+  * dash.postinst: Remove upgrade path from pre-sarge ash. (Closes:
+    #989419)
+  * Remove unnecessary diversion in case /bin/sh points to dash. (Closes:
+    #989632)
+
+  [ Luca Boccassi ]
+  * dash.postinst: remove unused function
+
+ -- Andrej Shadura <andrewsh@debian.org>  Sun, 30 Apr 2023 15:53:24 +0200
+
 dash (0.5.12-2) unstable; urgency=medium
 
   * Fix the changelog entry.
diff -Nru dash-0.5.12/debian/dash.postinst dash-0.5.12/debian/dash.postinst
--- dash-0.5.12/debian/dash.postinst	2023-01-05 13:20:48.000000000 +0000
+++ dash-0.5.12/debian/dash.postinst	2023-04-30 14:53:24.000000000 +0100
@@ -33,7 +33,7 @@
 	diverter=$(dpkg-divert --listpackage $dfile)
 	truename=$(dpkg-divert --truename $dfile)
 
-	if [ "$diverter" = dash ]; then
+	if [ -z "$diverter" ]; then
 		# good.
 		return
 	fi
@@ -43,9 +43,9 @@
 		return
 	fi
 
-	if [ -n "$diverter" ] && [ "$diverter" != bash ]; then
-		# Let dpkg-divert error out; we are not taking
-		# over the diversion, unless we added it
+	if [ "$diverter" != bash ]; then
+		# Let dpkg-divert error out; we are not removing the
+		# diversion, unless we added it
 		# ourselves on behalf of bash.
 		dpkg-divert --package dash --no-rename --remove $dfile
 		echo "This should never be reached"
@@ -53,7 +53,6 @@
 	fi
 
 	dpkg-divert --package bash --no-rename --remove $dfile
-	dpkg-divert --package dash --no-rename --divert $distrib --add $dfile
 	# remove the old equivalent of $distrib, if it existed.
 	if [ -n "$DPKG_ROOT$truename" ]; then
 	       rm -f "$DPKG_ROOT$truename"
@@ -61,62 +60,23 @@
 	replace_with_link $dfile $ltarget $distrib
 }
 
-unclaim_binsh() {
+drop_obsolete_diversion() {
 	dfile=$1 ltarget=$2 distrib=${3:-$dfile.distrib}
-	diverter=$(dpkg-divert --listpackage $dfile)
-	truename=$(dpkg-divert --truename $dfile)
+	diverter=$(dpkg-divert --listpackage "$dfile")
+	truename=$(dpkg-divert --truename "$dfile")
+	actualtarget=$(readlink "$dfile")
 
-	if [ "$diverter" != dash ]; then
-		# good.
+	if [ "$diverter" != dash ] || [ "$truename" != "$distrib" ] || [ "$actualtarget" != "$ltarget" ]; then
+		# Not our diversion or a non-trivial one.
 		return
 	fi
-
-	# Donate the diversion and sh symlink to the bash package.
-	ltarget=$(echo $ltarget | sed s/dash/bash/)
-	dpkg-divert --package dash --no-rename --remove $dfile
-	dpkg-divert --package bash --no-rename --divert $distrib --add $dfile
-	if [ -n "$truename" ]; then
-		rm -f "$truename"
-	fi
-	replace_with_link $dfile $ltarget $distrib
-}
-
-initial_binsh_setup() {
-	dfile=$1 ltarget=$2 distrib=${3:-$dfile.distrib} ashfile=$4
-	diverter=$(dpkg-divert --listpackage $dfile)
-	truename=$(dpkg-divert --truename $dfile)
-
-	if [ -z "$diverter" ]; then
-		# good.
-		return
-	fi
-
-	if [ "$diverter" = ash ]; then
-		dpkg-divert --package ash --no-rename --remove $dfile
-		dpkg-divert --package dash --no-rename --divert $distrib --add $dfile
-
-		if [ "$truename" != "$distrib" ] && [ -e "$truename" ]; then
-			mv "$truename" "$distrib"
-		fi
-		replace_with_link $dfile $ltarget
-		return
-	fi
-
-	if
-		[ -h $dfile ] &&
-		[ -f $dfile ] &&
-		[ -f $ashfile ] &&
-		cmp $dfile $ashfile
-	then
-		replace_with_link $dfile $ltarget
-	fi
+	dpkg-divert --package dash --no-rename --remove "$dfile"
+	rm -f "$truename"
 }
 
-if [ "$1" = configure ] && [ -z "$2" ]; then
-	initial_binsh_setup /bin/sh dash '' /bin/ash
-	initial_binsh_setup /usr/share/man/man1/sh.1.gz dash.1.gz \
-		/usr/share/man/man1/sh.distrib.1.gz \
-		/usr/share/man/man1/ash.1.gz
+if [ "$1" = configure ] && dpkg --compare-versions "$2" lt 0.5.12-3~; then
+	drop_obsolete_diversion /bin/sh dash
+	drop_obsolete_diversion /usr/share/man/man1/sh.1.gz dash.1.gz /usr/share/man/man1/sh.distrib.1.gz
 fi
 
 claim_binsh /bin/sh dash
diff -Nru dash-0.5.12/debian/gitlab-ci.yml dash-0.5.12/debian/gitlab-ci.yml
--- dash-0.5.12/debian/gitlab-ci.yml	2023-01-05 13:20:48.000000000 +0000
+++ dash-0.5.12/debian/gitlab-ci.yml	2023-04-30 14:53:24.000000000 +0100
@@ -1,3 +1,89 @@
 include:
  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+
+variables:
+  DASH_BULLSEYE: 0.5.11+git20200708+dd9ef66-5
+  DASH_BOOKWORM: 0.5.12-2
+  DASH_VERSIONS: $DASH_BULLSEYE $DASH_BOOKWORM
+
+fetch-snapshots:
+  stage: test
+  image: $SALSA_CI_IMAGES_GENERIC_TESTS
+  script:
+    - apt-get install -qy devscripts
+    - |
+      for v in $DASH_VERSIONS
+      do
+        debsnap -v --binary dash $v --force -a amd64
+      done
+  needs: []
+  artifacts:
+    paths:
+      - binary-dash
+
+.install-snapshots:
+  stage: test
+  image: $SALSA_CI_IMAGES_GENERIC_TESTS
+  script:
+    - echo SEQUENCE=$SEQUENCE
+    - |
+      for v in $SEQUENCE
+      do
+        case "$v" in
+          this)
+            echo === Installing the currently built version
+            apt-get install -qy --allow-downgrades ${WORKING_DIR}/dash_*.deb
+            ;;
+          install-diversion)
+            echo === Setting diversion to bash
+            echo "dash dash/sh boolean false" | debconf-set-selections
+            dpkg-reconfigure dash
+            ;;
+          *)
+            echo === Installing $v
+            apt-get install -qy --allow-downgrades ./binary-dash/dash_$v*.deb
+            ;;
+        esac
+      done
+  variables:
+    GIT_STRATEGY: none
+  needs:
+    - job: build
+      artifacts: true
+    - job: fetch-snapshots
+      artifacts: true
+
+test-upgrade:
+  extends: .install-snapshots
+  parallel:
+    matrix:
+      - SEQUENCE:
+        - $DASH_BULLSEYE $DASH_BOOKWORM this
+        - $DASH_BULLSEYE this
+
+test-downgrade:
+  extends: .install-snapshots
+  parallel:
+    matrix:
+      - SEQUENCE:
+        - this $DASH_BOOKWORM
+        - this $DASH_BULLSEYE
+
+test-upgrade-with-diversion:
+  extends: .install-snapshots
+  parallel:
+    matrix:
+      - SEQUENCE:
+        - $DASH_BULLSEYE install-diversion $DASH_BOOKWORM this
+        - $DASH_BULLSEYE install-diversion this
+
+test-downgrade-with-diversion:
+  extends: .install-snapshots
+  parallel:
+    matrix:
+      - SEQUENCE:
+        - $DASH_BULLSEYE install-diversion $DASH_BOOKWORM this $DASH_BOOKWORM
+        - $DASH_BULLSEYE install-diversion $DASH_BOOKWORM this $DASH_BULLSEYE
+        - $DASH_BULLSEYE install-diversion this $DASH_BOOKWORM
+        - $DASH_BULLSEYE install-diversion this $DASH_BULLSEYE
diff -Nru dash-0.5.12/debian/patches/0020-Update-manpages.patch dash-0.5.12/debian/patches/0020-Update-manpages.patch
--- dash-0.5.12/debian/patches/0020-Update-manpages.patch	2023-01-05 13:20:48.000000000 +0000
+++ dash-0.5.12/debian/patches/0020-Update-manpages.patch	2023-04-30 14:53:24.000000000 +0100
@@ -48,7 +48,7 @@
 man: Document ulimit -w
 
 Bug-Debian: https://bugs.debian.org/558607
-Bug-Debian: https://bugs.debian.org/850202
+Bug-Debian: https://bugs.debian.org/975325
 ---
  src/dash.1    | 97 +++++++++++++++++++++++++++++++++++++++++++----------------
  src/options.c |  2 +-
diff -Nru dash-0.5.12/debian/tests/smoke dash-0.5.12/debian/tests/smoke
--- dash-0.5.12/debian/tests/smoke	2023-01-05 13:20:48.000000000 +0000
+++ dash-0.5.12/debian/tests/smoke	2023-04-30 14:53:24.000000000 +0100
@@ -12,8 +12,8 @@
 ok(-x '/bin/sh', '/bin/sh must be executable');
 ok(-x '/bin/dash', '/bin/dash must be executable');
 ok(-x '/bin/bash', '/bin/bash must be executable');
+ok(! -f '/bin/sh.distrib', '/bin/sh.distrib must not be present');
 diag(qx(ls -l /bin/sh));
-diag(qx(ls -l /bin/sh.distrib));
 diag(qx(ls -l /bin/dash));
 diag(qx(ls -l /bin/bash));
 
@@ -25,17 +25,10 @@
 
 my $diverter = qx(dpkg-divert --listpackage /bin/sh);
 
-if ($diverter eq "dash\n") {
-    like(realpath('/bin/sh'), qr{^(?:/usr)?/bin/dash},
-         '/bin/sh diverted by dash');
-}
-elsif ($diverter eq "bash\n") {
-    like(realpath('/bin/sh'), qr{^(?:/usr)?/bin/dash},
-         '/bin/sh diverted by dash pretending to be bash');
-}
-else {
-    is($diverter, "LOCAL\n", '/bin/sh diverted locally');
-}
+ok($diverter eq "" or $diverter eq "LOCAL\n", '/bin/sh not diverted or local diversion');
+ok($diverter ne "dash\n", '/bin/sh not diverted by dash');
+ok($diverter ne "bash\n", '/bin/sh not diverted by bash');
+ok(like(realpath('/bin/sh'), qr{^(?:/usr)?/bin/dash}));
 
 my $tmpdir = File::Temp->newdir();
 chdir $tmpdir;

Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---
--- Begin Message ---
Hi Luca,

On 08-05-2023 17:54, Luca Boccassi wrote:
Filing this on request of the dash maintainer. We have recently
implemented a much needed cleanup that removes an unnecessary diversion
on /bin/sh, that makes the essential set nice and clean and diversion-
free, so that it can be set up without complex machinery.

Let's do this in trixie. This request has been uneasy since you filed it, that's why it took so long to reply. Today I discussed with Andrej and we agreed this is too late for bookworm.

Paul

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


--- End Message ---

Reply to: