Commit Graph

656 Commits

Author SHA1 Message Date
Justin McWilliams ba6588acdd Force Munki to obtain temp directories within /tmp, to avoid rare, intermittent issue where tempfile.mkdtemp() would choose to create a temp dir on an NFS path, such as /home/<username>/tmp/, causing Munki to crash when attempting to chown/etc. 2013-01-09 17:32:31 -05:00
Justin McWilliams 4784ea762b Cleanup readability of pkgid_table generation in makeCatalogDB(). 2012-12-19 16:53:31 -05:00
Greg Neagle cc67bb8ca1 Add 'date' item to INFO_OBJECT for use in conditional_items. This allows for date-based conditions. 2012-12-18 13:08:13 -08:00
Greg Neagle d4f3fed906 Bumping version in version.plist to 0.8.4 for next round of development. 2012-12-04 13:50:23 -08:00
Justin McWilliams 2cc9bd5f11 Don't delete package from cache if installation fails. If the package is corrupt, hash/etags should not match the server and it'll redownload. Furthermore, if the install was actually successful regardless of a non-zero installer exit code, the cached package will be downloaded on the next Munki execution after determining that package is no longer needed.
As discussed here: https://groups.google.com/forum/?fromgroups=#!topic/munki-dev/Q5UxFOf6En8
2012-11-29 15:50:40 -05:00
Justin McWilliams fe3c76dbdb Munki shouldn't crash when attempting to load a non-existent dist file while detecting blocking apps.
Fixes the following traceback:
    File '/usr/local/munki/munkilib/appleupdates.py', line 808, in GetSoftwareUpdateInfo
       blocking_apps = self.GetBlockingApps(update['productKey'])
          File '/usr/local/munki/munkilib/appleupdates.py', line 423, in GetBlockingApps
             dom = minidom.parse(distfile)
                File '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py', line 1914, in parse
                   File '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py', line 922, in parse
                      IOError: [Errno 2] No such file or directory: u'/tmp/munki_swupd_cache/content/downloads/15/38/041-7414/ldfmzmn6psq7re395jmalnyba8ge3xa4cj/041-7414.English.dist'
2012-11-27 16:23:20 -05:00
Greg Neagle b959caddb5 Change tsutton's 'predicate_check' pkginfo key to 'installable_condition' 2012-11-16 16:34:57 -08:00
Greg Neagle f372d6889c Merge branch 'pkginfo-predicates' of https://code.google.com/r/tim-munki
Merge Tim's pkginfo-predicates changes
2012-11-16 16:30:14 -08:00
Greg Neagle ed39d81485 Using the launchd module to call /usr/sbin/installer introduced a bug where we did not capture stderr when an install failed. This commit fixes that; stderr is now correctly logged and reported. 2012-11-15 13:45:18 -08:00
Justin McWilliams b31e82905f When logging/display messages/etc., use arguments instead of explicit string formatting, to avoid the following traceback:
File '/usr/local/munki/munkilib/removepackages.py', line 611, in initDatabase
         munkicommon.display_detail('Importing %s...' % pkg)
         File '/usr/local/munki/munkilib/munkicommon.py', line 393, in display_detail
         log(u' ' + msg)
         UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 36: ordinal not in range(128)

When passing arguments, str_to_ascii (via concat_log_message) drops characters it cannot decode.
2012-11-09 15:26:16 -05:00
Justin McWilliams 85dca9e6de Fix munkicommon.Popen.communicate(); previously, all calls crashed as stdin was always being written to ("input" is a builtin).
Use Popen.communicate(timeout=60) to sanely exit "system_profiler SPApplicationsDataType" calls, which are hanging indefinitely on a small number of clients.
2012-11-09 13:35:49 -05:00
Rob Middleton d73bb1370c Keep parsing stdout after curl exits. Small downloads caused fetch.curl to stop looping before the ETag header was read. Thus the ETag xattr was often not written for small fast downloads. (Fix for issue 208, 204, 161) 2012-11-08 10:32:28 +11:00
ogle 22002c7153 Fix s/munki_common/munkicommon/ typo introduced in e22995c5c4 2012-11-07 21:56:37 +00:00
ogle e22995c5c4 Remove duplicate os.path.exists() calls when checking for real_cache_dir existence. 2012-11-07 17:23:24 +00:00
ogle 5ae3ad5f1a If real_cache_dir exists but is not a dir, log an error. 2012-11-07 17:16:52 +00:00
ogle 83837f6fea If the swupd dir does not exist, create it. 2012-11-07 17:10:14 +00:00
Greg Neagle 1ebd68ebdb Workaround for softwareupdate NSInvalidArgumentException error with OS X 10.8.2 and certain recent Apple updates. 2012-11-06 14:48:11 -08:00
Greg Neagle 39ce59d8fe Merge branch 'master' of https://code.google.com/p/munki 2012-11-06 14:22:29 -08:00
Greg Neagle 0e7c91c266 Like a recent change to reposado, when caching Apple updates, failure to cache a given .dist file is no longer fatal to the caching process 2012-11-06 14:21:58 -08:00
Justin McWilliams 2a020e871b When a user clicks Stop while processing removals, Munki should not crash.
Fixes this traceback:
   Traceback (most recent call last):
   File '/usr/local/munki/managedsoftwareupdate', line 849, in main()
   File '/usr/local/munki/managedsoftwareupdate', line 705, in main
   mustrestart = doInstallTasks()
   File '/usr/local/munki/managedsoftwareupdate', line 225, in doInstallTasks
   need_to_restart = installer.run(only_unattended=only_unattended)
   File '/usr/local/munki/munkilib/installer.py', line 1169, in run
   removallist, only_unattended=only_unattended)
   TypeError: 'bool' object is not iterable
2012-11-05 16:29:21 -05:00
Timothy Sutton ce2abfc967 Rudimentary support for NSPredicate strings to quality a pkginfo via the 'predicate_check' key. 2012-10-24 14:11:20 -04:00
Justin McWilliams 5a4a4f572e Clearly define and use exit status codes in managedsoftwareupdate.
In cases where unknown exceptions are caught for logging purposes, log and reraise the exception so munki crashes with a Python traceback, instead of exiting.
2012-10-24 12:19:22 -04:00
Justin McWilliams cc4ddcfb4d Fix invalid string concatenation for "Failed to unmount" warning.
File "/usr/local/munki/munkilib/munkicommon.py", line 874, in unmountdmg
display_warning('Failed to unmount %s' % (mountpoint, err))
TypeError: not all arguments converted during string formatting
2012-10-24 11:21:20 -04:00
Greg Neagle 6f4e92f3c0 Change default Apple Software Update catalogs from .sucatalog.gz versions to .sucatalog versions to work around an issue with Mountain Lion's softwareupdate. (This may affect Lion as well, but I have no solid data on that) 2012-09-17 12:24:49 -07:00
Greg Neagle bd79a26a84 If a package failure occurs when downloading or installing Apple updates, make _RunSoftwareUpdate return 1 even though /usr/sbin/softwareupdate returns 0 2012-09-13 13:21:43 +02:00
Adam Reed 5c51cefb8f Automate the setting of minimum_os_version to the highest detected OS version dependent upon what we automatically detect from the installer items and / or file item(s) in the following situations:-
* makepkginfo with installer item - set minimum_os_version as detected
* makepkginfo with installer item and file item(s) - set minimum_os_version as detected
* makepkginfo with file item(s) only - do not provide minimum_os_version, regardless of what we detect
* makepkginfo with --minimum_os_version and any of the above options - set minimum_os_version to argument of --minimum_os_version, regardless of what we detect

This patch also sets flat packages to default to 10.5.0 (instead of 10.4.0 which is used for all other items) and requires that if --minimum_os_version is provided that it starts with a digit.
2012-09-05 12:33:35 +10:00
Greg Neagle c78b4a2c4c Capture stderr from xar so it doesn't appear in makepkginfo output 2012-08-23 11:18:53 -07:00
Heig Gregorian a5b265f551 Fixed warning printout formatting 2012-08-22 15:14:35 -07:00
Heig Gregorian b3705ea7b5 Fixes to force unmount call; __CFPREFERENCES_AVOID_DAEMON environment variable set to '1' upon makepkginfo invocation 2012-08-22 14:40:18 -07:00
Heig Gregorian 93fa3f837c Minor doc and formatting update to previous commit; no functional difference 2012-08-22 14:07:59 -07:00
Heig Gregorian ca3786fe8a Fix for cfprefsd interference; ensure that stdout stream only contains pkginfo xml and not messages intended for the user. 2012-08-22 13:49:57 -07:00
Greg Neagle 703c8a7ff0 Use IOKit bindings to assert no idle sleep. Thanks to Michael Lynn, pudquick@github 2012-08-16 12:09:10 -07:00
Greg Neagle 79b5d478d0 Fix spelling of 'Retrieving' 2012-08-15 19:36:10 -07:00
Greg Neagle 8ef3c3ec79 Add doc string to installer.assertNoIdleSleep(); fix use of undefined 'cmd' variable. 2012-08-15 15:41:22 -07:00
Greg Neagle 80cec70612 Add some comments to make clear how the sleep assertion is released. 2012-08-15 15:27:07 -07:00
Greg Neagle 1a9ba0c027 installer.run() now attempts to prevent idle sleep during an install session. 2012-08-15 14:35:47 -07:00
Timothy Sutton d1be50ea42 Added exception handling for case where we invoke os.makedirs() on missing destination_path 2012-08-10 14:04:25 -04:00
Timothy Sutton fad5ea741a Create missing destination directories for copy_from_dmg.
In case a copy_from_dmg's destination directory doesn't exist,
create it and any missing parent directories, setting ownership and permissions based on the first available parent.
2012-07-22 00:05:33 -04:00
Timothy Sutton 93ca31bd3b Further refactoring for hasValid extension check functions
- hasValidPackageExt(), hasValidDiskImageExt() for the appropriate
  extensions, and hasValidInstallerItemExt() to call them
- replace many checks to use the above
- munkiimport.py now uses munkicommon.isApplication() to do the
  equivalent of checking endswith('.app')
- fix an errand merge ancestor from an old unrelated munkiimport
  branch
2012-07-11 13:56:23 -04:00
Greg Neagle 167a5ef810 Don't ignore an unattended_install whose RestartAction is explictly 'None'. 2012-07-07 11:52:03 -07:00
Greg Neagle f723da036e Pylint cleanups 2012-07-02 11:05:46 -07:00
Greg Neagle 1c914a9ead Pylint cleanups 2012-07-02 10:55:05 -07:00
Greg Neagle 084a8d76aa Pylint cleanups 2012-07-02 10:45:08 -07:00
Greg Neagle 0a928661b8 PyLint cleanups 2012-07-02 10:42:59 -07:00
Greg Neagle 422a9fe28a Merge https://code.google.com/r/arjenvanbochoven-munki 2012-07-02 09:40:04 -07:00
Greg Neagle 5faf201872 Merge branch 'installer-copy_as' of https://code.google.com/r/theheig-conditionals 2012-07-02 09:19:50 -07:00
Arjen van Bochoven 0b495c7a14 Changed package_less install flag to installer_type=nopkg 2012-07-02 11:57:38 +02:00
Arjen van Bochoven 6f7ddf7b59 Added ! to installer_item to make it less likely someone uses this as filename 2012-07-01 08:19:26 +02:00
Arjen van Bochoven 01ddeb765d Added packageless_install 2012-06-30 22:52:22 +02:00
Heig Gregorian 6f7699b002 Simplified by determining 'full_destpath' which changes depending on if 'destination_item' has been supplied
Addition of 'full_destpath' cuts down on redundant checks against
'dest_itemname' at various stages in the process.
2012-06-30 10:44:49 -07:00