Show More
@@ -514,6 +514,22 b' bail:' | |||
|
514 | 514 | } |
|
515 | 515 | #endif |
|
516 | 516 | |
|
517 | #ifdef __APPLE__ | |
|
518 | #import <ApplicationServices/ApplicationServices.h> | |
|
519 | ||
|
520 | static PyObject *isgui(PyObject *self) | |
|
521 | { | |
|
522 | CFDictionaryRef dict = CGSessionCopyCurrentDictionary(); | |
|
523 | ||
|
524 | if (dict != NULL) { | |
|
525 | CFRelease(dict); | |
|
526 | return Py_True; | |
|
527 | } else { | |
|
528 | return Py_False; | |
|
529 | } | |
|
530 | } | |
|
531 | #endif | |
|
532 | ||
|
517 | 533 | static char osutil_doc[] = "Native operating system services."; |
|
518 | 534 | |
|
519 | 535 | static PyMethodDef methods[] = { |
@@ -524,6 +540,12 b' static PyMethodDef methods[] = {' | |||
|
524 | 540 | "Open a file with POSIX-like semantics.\n" |
|
525 | 541 | "On error, this function may raise either a WindowsError or an IOError."}, |
|
526 | 542 | #endif |
|
543 | #ifdef __APPLE__ | |
|
544 | { | |
|
545 | "isgui", (PyCFunction)isgui, METH_NOARGS, | |
|
546 | "Is a CoreGraphics session available?" | |
|
547 | }, | |
|
548 | #endif | |
|
527 | 549 | {NULL, NULL} |
|
528 | 550 | }; |
|
529 | 551 |
@@ -769,7 +769,18 b' def splitpath(path):' | |||
|
769 | 769 | |
|
770 | 770 | def gui(): |
|
771 | 771 | '''Are we running in a GUI?''' |
|
772 | return os.name == "nt" or os.name == "mac" or os.environ.get("DISPLAY") | |
|
772 | if sys.platform == 'darwin': | |
|
773 | if 'SSH_CONNECTION' in os.environ: | |
|
774 | # handle SSH access to a box where the user is logged in | |
|
775 | return False | |
|
776 | elif getattr(osutil, 'isgui', None): | |
|
777 | # check if a CoreGraphics session is available | |
|
778 | return osutil.isgui() | |
|
779 | else: | |
|
780 | # pure build; use a safe default | |
|
781 | return True | |
|
782 | else: | |
|
783 | return os.name == "nt" or os.environ.get("DISPLAY") | |
|
773 | 784 | |
|
774 | 785 | def mktempcopy(name, emptyok=False, createmode=None): |
|
775 | 786 | """Create a temporary file with the same contents from name |
@@ -314,11 +314,17 b' extmodules = [' | |||
|
314 | 314 | Extension('mercurial.parsers', ['mercurial/parsers.c']), |
|
315 | 315 | ] |
|
316 | 316 | |
|
317 | osutil_ldflags = [] | |
|
318 | ||
|
319 | if sys.platform == 'darwin': | |
|
320 | osutil_ldflags += ['-framework', 'ApplicationServices'] | |
|
321 | ||
|
317 | 322 | # disable osutil.c under windows + python 2.4 (issue1364) |
|
318 | 323 | if sys.platform == 'win32' and sys.version_info < (2, 5, 0, 'final'): |
|
319 | 324 | pymodules.append('mercurial.pure.osutil') |
|
320 | 325 | else: |
|
321 |
extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'] |
|
|
326 | extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'], | |
|
327 | extra_link_args=osutil_ldflags)) | |
|
322 | 328 | |
|
323 | 329 | if sys.platform == 'linux2' and os.uname()[2] > '2.6': |
|
324 | 330 | # The inotify extension is only usable with Linux 2.6 kernels. |
General Comments 0
You need to be logged in to leave comments.
Login now