3914 mkmenu wastes time scanning an entire partition when the first block will do
--- a/usr/src/cmd/slim-install/finish/install-finish Tue Jan 20 15:53:16 2009 -0700
+++ b/usr/src/cmd/slim-install/finish/install-finish Wed Jan 21 07:53:14 2009 -0700
@@ -38,7 +38,7 @@
import getopt
import os
from stat import *
-from osol_install.ict import *
+from ict import *
import platform
# Test to see if running in an automated install environment
--- a/usr/src/cmd/slim-install/finish/mkmenu Tue Jan 20 15:53:16 2009 -0700
+++ b/usr/src/cmd/slim-install/finish/mkmenu Wed Jan 21 07:53:14 2009 -0700
@@ -71,7 +71,7 @@
rdev=$2
root=$3
- sig=`strings $rdev 2> /dev/null | head -1 | awk '{ print $1 }'`
+ sig=`dd if=${rdev} bs=512 count=1 2>/dev/null |strings 2>/dev/null | head -1 | awk '{ print $1 }'`
if [ "$sig" = "NTFS" ] ; then
entry $root "Windows"
else
--- a/usr/src/lib/libict_pymod/ict.py Tue Jan 20 15:53:16 2009 -0700
+++ b/usr/src/lib/libict_pymod/ict.py Wed Jan 21 07:53:14 2009 -0700
@@ -100,6 +100,7 @@
import re
import platform
from pkg.cfgfiles import PasswordFile
+import signal
ICTID = 'ICT'
(
@@ -206,6 +207,13 @@
_dbg_msg('_cmd_out: executing cmd=' + cmd)
status = 0
dfout = []
+ '''Since Python ignores SIGPIPE, according to Python issue 1652,
+ UNIX scripts in subprocesses will also ignore SIGPIPE.
+ Workaround is to save original signal handler, restore default handler,
+ launch script, restore original signal handler
+ '''
+ orig_sigpipe = signal.getsignal(signal.SIGPIPE) #save SIGPIPE signal handler
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL) #restore default signal handler for SIGPIPE
try:
fp = os.popen(cmd)
if fp == None or fp == -1: return ICT_POPEN_FAILED, []
@@ -218,6 +226,7 @@
except:
prerror('system error in launching shell cmd (' + cmd + ')')
status = 1
+ signal.signal(signal.SIGPIPE, orig_sigpipe) #restore original signal handler for SIGPIPE
if status == None: status = 0
if status != 0:
write_log(ICTID, 'shell cmd (' + cmd +
@@ -231,6 +240,14 @@
'''
_dbg_msg('_cmd_status: executing cmd=' + cmd)
exitstatus = None
+
+ '''Since Python ignores SIGPIPE, according to Python issue 1652,
+ UNIX scripts in subprocesses will also ignore SIGPIPE.
+ Workaround is to save original signal handler, restore default handler,
+ launch script, restore original signal handler
+ '''
+ orig_sigpipe = signal.getsignal(signal.SIGPIPE) #save SIGPIPE signal handler
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL) #restore default signal handler for SIGPIPE
try:
fp = os.popen(cmd)
if fp == None or fp == -1: return ICT_POPEN_FAILED
@@ -241,6 +258,7 @@
prerror(traceback.format_exc())
exitstatus = 1
if exitstatus == None: exitstatus = 0
+ signal.signal(signal.SIGPIPE, orig_sigpipe) #restore original signal handler for SIGPIPE
_dbg_msg('_cmd_status: return exitstatus=' + str(exitstatus))
return exitstatus
--- a/usr/src/lib/libtransfer_pymod/libtransfer.c Tue Jan 20 15:53:16 2009 -0700
+++ b/usr/src/lib/libtransfer_pymod/libtransfer.c Wed Jan 21 07:53:14 2009 -0700
@@ -42,7 +42,7 @@
* the PYTHONPATH env variable will be set in this library before
* python is initialized.
*/
-#define PY_PATH "PYTHONPATH=/usr/lib/python2.4/vendor-packages/osol_install"
+#define PY_PATH "PYTHONPATH=/tmp:/usr/lib/python2.4/vendor-packages/osol_install"
static PyObject *tmod_logprogress(PyObject *self, PyObject *args);
static PyObject *tmod_set_callback(PyObject *self, PyObject *args);