First, a traceback; second, diffs of my actuator.py.
thx,  --emk


bosco:work-109-4:/var/svc# pkg uninstall EMK-1
The Boot Environment work-109-4 failed to be updated. A snapshot was taken before the failed attempt and is mounted here /tmp/tmp8usBow. Use 'beadm unmount work-109-5' and then 'beadm activate work-109-5' if you wish to boot to this BE. pkg: An unexpected error happened during uninstallation: Cmd ('/usr/sbin/svcadm', 'disable -s', 'svc:/application/emk/myservice:default') exited with status 2, and output '['Usage: svcadm [-v] [cmd [args ... ]]\n', '\n', '\tsvcadm enable [-rst] <service> ...\t- enable and online service(s)\n', '\tsvcadm disable [-st] <service> ...\t- disable and offline service(s)\n', '\tsvcadm restart <service> ...\t\t- restart specified service(s)\n', '\tsvcadm refresh <service> ...\t\t- re-read service configuration\n', '\tsvcadm mark [-It] <state> <service> ...\t- set maintenance state\n', '\tsvcadm clear <service> ...\t\t- clear maintenance state\n', '\tsvcadm milestone [-d] <milestone>\t- advance to a service milestone\n', '\n', '\tServices can be specified using an FMRI, abbreviation, or fnmatch(5)\n', '\tpattern, as shown in these examples for svc:/network/smtp:sendmail\n', '\n', '\tsvcadm <cmd> svc:/network/smtp:sendmail\n', '\tsvcadm <cmd> network/smtp:sendmail\n', '\tsvcadm <cmd> network/*mail\n', '\tsvcadm <cmd> network/smtp\n', '\tsvcadm <cmd> smtp:sendmail\n', '\tsvcadm <cmd> smtp\n', '\tsvcadm <cmd> sendmail\n']'
Traceback (most recent call last):
 File "/usr/bin/pkg", line 2274, in ?
   __ret = main_func()
 File "/usr/bin/pkg", line 2225, in main_func
   return uninstall(mydir, pargs)
 File "/usr/bin/pkg", line 862, in uninstall
   api_inst.execute_plan()
File "/usr/lib/python2.4/vendor-packages/pkg/client/api.py", line 498, in execute_plan
   self.img.imageplan.execute()
File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 680, in execute
   self.actuators.exec_pre_actuators(self.image)
File "/usr/lib/python2.4/vendor-packages/pkg/client/actuator.py", line 180, in exec_pre_actuators
   self.__call(args + params)
File "/usr/lib/python2.4/vendor-packages/pkg/client/actuator.py", line 298, in __call
   raise NonzeroExitException(args, ret, buf)
NonzeroExitException: Cmd ('/usr/sbin/svcadm', 'disable -s', 'svc:/application/emk/myservice:default') exited with status 2, and output '['Usage: svcadm [-v] [cmd [args ... ]]\n', '\n', '\tsvcadm enable [-rst] <service> ...\t- enable and online service(s)\n', '\tsvcadm disable [-st] <service> ...\t- disable and offline service(s)\n', '\tsvcadm restart <service> ...\t\t- restart specified service(s)\n', '\tsvcadm refresh <service> ...\t\t- re-read service configuration\n', '\tsvcadm mark [-It] <state> <service> ...\t- set maintenance state\n', '\tsvcadm clear <service> ...\t\t- clear maintenance state\n', '\tsvcadm milestone [-d] <milestone>\t- advance to a service milestone\n', '\n', '\tServices can be specified using an FMRI, abbreviation, or fnmatch(5)\n', '\tpattern, as shown in these examples for svc:/network/smtp:sendmail\n', '\n', '\tsvcadm <cmd> svc:/network/smtp:sendmail\n', '\tsvcadm <cmd> network/smtp:sendmail\n', '\tsvcadm <cmd> network/*mail\n', '\tsvcadm <cmd> network/smtp\n', '\tsvcadm <cmd> smtp:sendmail\n', '\tsvcadm <cmd> smtp\n', '\tsvcadm <cmd> sendmail\n']'


pkg: This is an internal error.  Please let the developers know about this
problem by filing a bug at http://defect.opensolaris.org and including the
above traceback and this message.  The version of pkg(5) is '7c5784221914+'.
bosco:work-109-4:/var/svc#

bosco:work-109-4:/usr/lib/python2.4/vendor-packages/pkg/client# diff -c actuator.py actuator.py.7264-fixed
*** actuator.py 2009-03-24 12:50:37.545139558 -0700
--- actuator.py.7264-fixed      2009-03-24 12:47:45.819739393 -0700
***************
*** 166,179 ****
                 self.suspend_fmris = suspend_fmris
                 self.tmp_suspend_fmris = tmp_suspend_fmris
! args = (svcadm_path, "disable", "-st") params = tuple(suspend_fmris | tmp_suspend_fmris) if params:
                         self.__call(args + params)
! args = (svcadm_path, "disable -s")
                 params = tuple(disable_fmris)
if params:
--- 166,179 ----
                 self.suspend_fmris = suspend_fmris
                 self.tmp_suspend_fmris = tmp_suspend_fmris
! args = (svcadm_path, "disable", "-t") params = tuple(suspend_fmris | tmp_suspend_fmris) if params:
                         self.__call(args + params)
! args = (svcadm_path, "disable")
                 params = tuple(disable_fmris)
if params:
bosco:work-109-4:/usr/lib/python2.4/vendor-packages/pkg/client#


Bart Smaalders wrote:
Bart Smaalders wrote:
Ed McKnight wrote:
My package is delivering an smf service to preform self-assembly and teardown:
...
   <exec_method
       type='method'
       name='start'
       exec='/var/emk/svc_method %m'
       timeout_seconds='10' >
   </exec_method>

   <exec_method
       type='method'
       name='stop'
       exec='/var/emk/svc_method %m'
       timeout_seconds='10' >
   </exec_method>
...

The smf manifest, the worker script (/var/emk/svc_method) are delivered in the same IPS package as the 'content' they are to set up and tear down.

...
file /workspace/emk/sc/tinkering/smf-service/myservice.xml mode=0444 owner=root group=sys path=var/svc/manifest/application/emk/myservice.xml restart_fmri=svc:/system/manifest-import:default disable_fmri=svc:/application/emk/myservice:default file /workspace/emk/sc/tinkering/smf-service/svc_method mode=0555 owner=root group=sys path=var/emk/svc_method
...

After install and enable (my start() does all the right things) I have this:

bosco:work-109-4:/var/svc# svcs -a | grep emk
online         19:45:11 svc:/application/emk/myservice:default

When I do pkg uninstall I get this:
...
[ Mar 24 11:12:45 Stopping because service disabled. ]
[ Mar 24 11:12:45 Executing stop method ("/var/emk/svc_method stop"). ]
/sbin/sh[1]: exec: /var/emk/svc_method: not found
[ Mar 24 11:12:45 Method "stop" exited with status 127. ]
...

I'd have expected the stop method to run to completion before files are removed, but seemingly not so..
Am I doing something obviously wrong?


This is likely a bug. Investigating...

- Bart




If you have a working test, could you add "-s" to disable
lines in
/usr/lib/python2.4/vendor-packages/pkg/client/actuator.py
like this:

diff -r 0397a56d195d src/modules/client/actuator.py
--- a/src/modules/client/actuator.py    Tue Mar 24 09:13:15 2009 -0700
+++ b/src/modules/client/actuator.py    Tue Mar 24 10:25:27 2009 -0700
@@ -166,14 +166,14 @@
                 self.suspend_fmris = suspend_fmris
                 self.tmp_suspend_fmris = tmp_suspend_fmris

-                args = (svcadm_path, "disable", "-t")
+                args = (svcadm_path, "disable", "-st")

                 params = tuple(suspend_fmris | tmp_suspend_fmris)

                 if params:
                         self.__call(args + params)

-                args = (svcadm_path, "disable")
+                args = (svcadm_path, "disable",  "-s")
                 params = tuple(disable_fmris)

and see if that resolves your problem?

Thanks-

- Bart

_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to