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

Bug#224509: Don't require a TTY during maintainer script execution



The previous discussion on this bug didn't reach a final consensus on
wording, but I still believe we have a consensus that this is the right
general direction.  Here's an updated patch that includes the permission
suggested by Steve Langasek for maintainer scripts to abort for
high-priority questions without a reasonable default, but with a caution
against setting up that situation.

I'm looking for seconds or further discussion if people don't believe that
this is the right direction to go.

diff --git a/policy.sgml b/policy.sgml
index af00c0e..3f6b82d 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -3557,15 +3557,26 @@ Files:
 	<heading>Controlling terminal for maintainer scripts</heading>
 
 	<p>
-	  The maintainer scripts are guaranteed to run with a
-	  controlling terminal and can interact with the user.
-	  Because these scripts may be executed with standard output
-	  redirected into a pipe for logging purposes, Perl scripts
-	  should set unbuffered output by setting <tt>$|=1</tt> so
-	  that the output is printed immediately rather than being
-	  buffered.
+	  Maintainer scripts are not guaranteed to run with a controlling
+	  terminal and may not be able to interact with the user.  They
+	  must be able to fall back to noninteractive behavior if no
+	  controlling terminal is available.  Maintainer scripts that
+	  prompt via a program conforming to the Debian Configuration
+	  Management Specification (see <ref id="maintscriptprompt">) may
+	  assume that program will handle falling back to noninteractive
+	  behavior.
+	</p>
+
+	<p>
+	  For high-priority prompts without a reasonable default answer,
+	  maintainer scripts may abort if there is no controlling
+	  terminal.  However, this situation should be avoided if at all
+	  possible, since it prevents automated or unattended installs.
+	  In most cases, users will consider this to be a bug in the
+	  package.
 	</p>
       </sect>
+
       <sect id="exitstatus">
 	<heading>Exit status</heading>
 
@@ -9537,9 +9548,9 @@ END-INFO-DIR-ENTRY
 	      </p>
 
 	      <p>
-		The maintainer scripts are guaranteed to run with a
-		controlling terminal and can interact with the user.
-		See <ref id="controllingterminal">.
+		The maintainer scripts are not guaranteed to run with a
+		controlling terminal and may not be able to interact with
+		the user.  See <ref id="controllingterminal">.
 	      </p>
 	    </item>

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>



Reply to: